����JFIFXX�����    $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222����"��4�� ���,�PG"Z_�4�˷����kjز�Z�,F+��_z�,�© �����zh6�٨�ic�fu���#ډb���_�N�?��wQ���5-�~�I���8����TK<5o�Iv-�����k�_U_�����~b�M��d����Ӝ�U�Hh��?]��E�w��Q���k�{��_}qFW7HTՑ��Y��F�?_�'ϔ��_�Ջt��=||I ��6�έ"�����D���/[�k�9���Y�8ds|\���Ҿp6�Ҵ���]��.����6�z<�v��@]�i%��$j��~�g��J>��no����pM[me�i$[����s�o�ᘨ�˸ nɜG-�ĨU�ycP�3.DB�li�;��hj���x7Z^�N�h������N3u{�:j�x�힞��#M&��jL P@_���� P��&��o8������9�����@Sz6�t7#O�ߋ �s}Yf�T���lmr����Z)'N��k�۞p����w\�Tȯ?�8`�O��i{wﭹW�[�r�� ��Q4F�׊���3m&L�=��h3����z~��#�\�l :�F,j@�� ʱ�wQT����8�"kJO���6�֚l����}���R�>ډK���]��y����&����p�}b��;N�1�m�r$�|��7�>e�@B�TM*-iH��g�D�)� E�m�|�ؘbҗ�a��Ҿ����t4���o���G��*oCN�rP���Q��@z,|?W[0�����:�n,jWiE��W��$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S����VN;�}�s?.����� w�9��˟<���Mq4�Wv'��{)0�1mB��V����W[�����8�/<� �%���wT^�5���b��)iM� pg�N�&ݝ��VO~�q���u���9� ����!��J27����$O-���! �:�%H��� ـ����y�ΠM=t{!S�� oK8������t<����è:a������[�����ա�H���~��w��Qz`�po�^ ����Q��n� �,uu�C�$ ^���,������8�#��:�6��e�|~���!�3�3.�\0��q��o�4`.|� ����y�Q�`~;�d�ׯ,��O�Zw�������`73�v�܋�<���Ȏ�� ـ4k��5�K�a�u�=9Yd��$>x�A�&�� j0� ���vF��� Y�|�y��� ~�6�@c��1vOp�Ig����4��l�OD���L����� R���c���j�_�uX6��3?nk��Wy�f;^*B� ��@�~a�`��Eu������+���6�L��.ü>��}y���}_�O�6�͐�:�YrG�X��kG�����l^w���~㒶sy��Iu�!� W ��X��N�7BV��O��!X�2����wvG�R�f�T#�����t�/?���%8�^�W�aT��G�cL�M���I��(J����1~�8�?aT ���]����AS�E��(��*E}� 2��#I/�׍qz��^t�̔���b�Yz4x���t�){ OH��+(E��A&�N�������XT��o��"�XC��'���)}�J�z�p� ��~5�}�^����+�6����w��c��Q�|Lp�d�H��}�(�.|����k��c4^�"�����Z?ȕ ��a<�L�!039C� �Eu�C�F�Ew�ç ;�n?�*o���B�8�bʝ���'#Rqf���M}7����]����s2tcS{�\icTx;�\��7K���P���ʇ Z O-��~��c>"��?�������P��E��O�8��@�8��G��Q�g�a�Վ���󁶠�䧘��_%#r�>�1�z�a��eb��qcPѵ��n���#L��� =��׀t� L�7�`��V���A{�C:�g���e@�w1 Xp3�c3�ġ����p��M"'-�@n4���fG��B3�DJ�8[Jo�ߐ���gK)ƛ��$���� ���8�3�����+���� �����6�ʻ���� ���S�kI�*KZlT _`���?��K����QK�d����B`�s}�>���`��*�>��,*@J�d�oF*����弝��O}�k��s��]��y�ߘ��c1G�V���<=�7��7����6�q�PT��tXԀ�!9*4�4Tހ3XΛex�46���Y��D ����� �BdemDa����\�_l,��G�/���֌7���Y�](�xTt^%�GE�����4�}bT���ڹ�����;Y)���B�Q��u��>J/J �⮶.�XԄ��j�ݳ�+E��d ��r�5�_D�1 ��o�� �B�x�΢�#���<��W�����8���R6�@g�M�.��� dr�D��>(otU��@x=��~v���2� ӣ�d�oBd��3�eO�6�㣷�����ݜ6��6Y��Qz`��S��{���\P�~z m5{J/L��1������<�e�ͅPu�b�]�ϔ���'������f�b� Zpw��c`"��i���BD@:)ִ�:�]��hv�E�w���T�l��P���"Ju�}��وV J��G6��. J/�Qgl߭�e�����@�z�Zev2u�)]կ�����7x���s�M�-<ɯ�c��r�v�����@��$�ޮ}lk���a���'����>x��O\�ZFu>�����ck#��&:��`�$�ai�>2Δ����l���oF[h��lE�ܺ�Πk:)���`�� $[6�����9�����kOw�\|���8}������ބ:��񶐕��I�A1/�=�2[�,�!��.}gN#�u����b��� ~��݊��}34q����d�E��Lc��$��"�[q�U�硬g^��%B �z���r�pJ�ru%v\h1Y�ne`ǥ:g���pQM~�^�Xi� ��`S�:V29.�P���V�?B�k�� AEvw%�_�9C�Q����wKekPؠ�\�;Io d�{ ߞo�c1eP����\� `����E=���@K<�Y���eڼ�J���w����{av�F�'�M�@/J��+9p���|]�����Iw &`��8���&M�hg��[�{��Xj��%��Ӓ�$��(����ʹN���<>�I���RY���K2�NPlL�ɀ)��&e����B+ь����( � �JTx���_?EZ� }@ 6�U���뙢ط�z��dWI�n` D����噥�[��uV��"�G&Ú����2g�}&m��?ċ�"����Om#��������� ��{�ON��"S�X��Ne��ysQ���@Fn��Vg���dX�~nj�]J�<�K]:��FW��b�������62�=��5f����JKw��bf�X�55��~J �%^����:�-�QIE��P��v�nZum� z � ~ə ���� ���ة����;�f��\v���g�8�1��f24;�V���ǔ�)����9���1\��c��v�/'Ƞ�w�������$�4�R-��t���� e�6�/�ġ �̕Ecy�J���u�B���<�W�ַ~�w[B1L۲�-JS΂�{���΃������A��20�c#��@ 0!1@AP"#2Q`$3V�%45a6�FRUq��� ����^7ׅ,$n�������+��F�`��2X'��0vM��p�L=������5��8������u�p~���.�`r�����\���O��,ư�0oS ��_�M�����l���4�kv\JSd���x���SW�<��Ae�IX����������$I���w�:S���y���›R��9�Q[���,�5�;�@]�%���u�@ *ro�lbI �� ��+���%m:�͇ZV�����u�̉����θau<�fc�.����{�4Ա� �Q����*�Sm��8\ujqs]{kN���)qO�y�_*dJ�b�7���yQqI&9�ԌK!�M}�R�;������S�T���1���i[U�ɵz�]��U)V�S6���3$K{�ߊ<�(� E]Զ[ǼENg�����'�\?#)Dkf��J���o��v���'�%ƞ�&K�u�!��b�35LX�Ϸ��63$K�a�;�9>,R��W��3�3� d�JeTYE.Mϧ��-�o�j3+y��y^�c�������VO�9NV\nd�1 ��!͕_)a�v;����թ�M�lWR1��)El��P;��yوÏ�u 3�k�5Pr6<�⒲l�!˞*��u־�n�!�l:����UNW ��%��Chx8vL'��X�@��*��)���̮��ˍ��� ���D-M�+J�U�kvK����+�x8��cY������?�Ԡ��~3mo��|�u@[XeY�C�\Kp�x8�oC�C�&����N�~3-H���� ��MX�s�u<`���~"WL��$8ξ��3���a�)|:@�m�\���^�`�@ҷ)�5p+��6���p�%i)P M���ngc�����#0Aruz���RL+xSS?���ʮ}()#�t��mˇ!��0}}y����<�e� �-ή�Ԩ��X������ MF���ԙ~l L.3���}�V뽺�v�����멬��Nl�)�2����^�Iq��a��M��qG��T�����c3#������3U�Ǎ���}��לS�|qa��ڃ�+���-��2�f����/��bz��ڐ�� �ݼ[2�ç����k�X�2�* �Z�d���J�G����M*9W���s{��w���T��x��y,�in�O�v��]���n����P�$�JB@=4�OTI�n��e�22a\����q�d���%�$��(���:���: /*�K[PR�fr\nڙdN���F�n�$�4�[�� U�zƶ����� �mʋ���,�ao�u 3�z� �x��Kn����\[��VFmbE;�_U��&V�Gg�]L�۪&#n%�$ɯ�dG���D�TI=�%+AB�Ru#��b4�1�»x�cs�YzڙJG��f��Il��d�eF'T� iA��T���uC�$����Y��H?����[!G`}���ͪ� �纤Hv\������j�Ex�K���!���OiƸ�Yj�+u-<���'q����uN�*�r\��+�]���<�wOZ.fp�ێ��,-*)V?j-kÊ#�`�r��dV����(�ݽBk�����G�ƛk�QmUڗe��Z���f}|����8�8��a���i��3'J�����~G_�^���d�8w������ R�`(�~�.��u���l�s+g�bv���W���lGc}��u���afE~1�Ue������Z�0�8�=e�� f@/�jqEKQQ�J��oN��J���W5~M>$6�Lt�;$ʳ{���^��6�{����v6���ķܰg�V�cnn �~z�x�«�,2�u�?cE+Ș�H؎�%�Za�)���X>uW�Tz�Nyo����s���FQƤ��$��*�&�LLXL)�1�" L��eO��ɟ�9=���:t��Z���c��Ž���Y?�ӭV�wv�~,Y��r�ۗ�|�y��GaF�����C�����.�+� ���v1���fήJ�����]�S��T��B��n5sW}y�$��~z�'�c ��8 ��� ,! �p��VN�S��N�N�q��y8z˱�A��4��*��'������2n<�s���^ǧ˭P�Jޮɏ�U�G�L�J�*#��<�V��t7�8����TĜ>��i}K%,���)[��z�21z ?�N�i�n1?T�I�R#��m-�����������������1����lA�`��fT5+��ܐ�c�q՝��ʐ��,���3�f2U�եmab��#ŠdQ�y>\��)�SLY����w#��.���ʑ�f��� ,"+�w�~�N�'�c�O�3F�������N<���)j��&��,-� �љ���֊�_�zS���TǦ����w�>��?�������n��U仆�V���e�����0���$�C�d���rP �m�׈e�Xm�Vu� �L��.�bֹ��� �[Դaզ���*��\y�8�Է:�Ez\�0�Kq�C b��̘��cө���Q��=0Y��s�N��S.���3.���O�o:���#���v7�[#߫ ��5�܎�L���Er4���9n��COWlG�^��0k�%<���ZB���aB_���������'=��{i�v�l�$�uC���mƎҝ{�c㱼�y]���W�i ��ߧc��m�H� m�"�"�����;Y�ߝ�Z�Ǔ�����:S#��|}�y�,/k�Ld� TA�(�AI$+I3��;Y*���Z��}|��ӧO��d�v��..#:n��f>�>���ȶI�TX��� 8��y����"d�R�|�)0���=���n4��6ⲑ�+��r<�O�܂~zh�z����7ܓ�HH�Ga롏���nCo�>������a ���~]���R���̲c?�6(�q�;5%� |�uj�~z8R=X��I�V=�|{v�Gj\gc��q����z�؋%M�ߍ����1y��#��@f^���^�>N�����#x#۹��6�Y~�?�dfPO��{��P�4��V��u1E1J �*|���%���JN��`eWu�zk M6���q t[�� ��g�G���v��WIG��u_ft����5�j�"�Y�:T��ɐ���*�;� e5���4����q$C��2d�}���� _S�L#m�Yp��O�.�C�;��c����Hi#֩%+) �Ӎ��ƲV���SYź��g |���tj��3�8���r|���V��1#;.SQ�A[���S������#���`n�+���$��$I �P\[�@�s��(�ED�z���P��])8�G#��0B��[ى��X�II�q<��9�~[Z멜�Z�⊔IWU&A>�P~�#��dp<�?����7���c��'~���5 ��+$���lx@�M�dm��n<=e�dyX��?{�|Aef ,|n3�<~z�ƃ�uۧ�����P��Y,�ӥQ�*g�#먙R�\���;T��i,��[9Qi歉����c>]9�� ��"�c��P�� �Md?٥��If�ت�u��k��/����F��9�c*9��Ǎ:�ØF���z�n*�@|I�ށ9����N3{'��[�'ͬ�Ҳ4��#}��!�V� Fu��,�,mTIk���v C�7v���B�6k�T9��1�*l� '~��ƞF��lU��'�M ����][ΩũJ_�{�i�I�n��$���L�� j��O�dx�����kza۪��#�E��Cl����x˘�o�����V���ɞ�ljr��)�/,�߬h�L��#��^��L�ф�,íMƁe�̩�NB�L�����iL����q�}��(��q��6IçJ$�W�E$��:������=#����(�K�B����zђ <��K(�N�۫K�w��^O{!����)�H���>x�������lx�?>Պ�+�>�W���,Ly!_�D���Ō�l���Q�!�[ �S����J��1��Ɛ�Y}��b,+�Lo�x�ɓ)����=�y�oh�@�꥟/��I��ѭ=��P�y9��� �ۍYӘ�e+�p�Jnϱ?V\SO%�(�t� ���=?MR�[Ș�����d�/ ��n�l��B�7j� ��!�;ӥ�/�[-���A�>�dN�sLj ��,ɪv��=1c�.SQ�O3�U���ƀ�ܽ�E����������̻��9G�ϷD�7(�}��Ävӌ\�y�_0[w ���<΍>����a_��[0+�L��F.�޺��f�>oN�T����q;���y\��bՃ��y�jH�<|q-eɏ�_?_9+P���Hp$�����[ux�K w�Mw��N�ی'$Y2�=��q���KB��P��~������Yul:�[<����F1�2�O���5=d����]Y�sw:���Ϯ���E��j,_Q��X��z`H1,#II ��d�wr��P˂@�ZJV����y$�\y�{}��^~���[:N����ߌ�U�������O��d�����ؾe��${p>G��3c���Ė�lʌ�� ת��[��`ϱ�-W����dg�I��ig2��� ��}s ��ؤ(%#sS@���~���3�X�nRG�~\jc3�v��ӍL��M[JB�T��s3}��j�Nʖ��W����;7��ç?=X�F=-�=����q�ߚ���#���='�c��7���ڑW�I(O+=:uxq�������������e2�zi+�kuG�R��������0�&e�n���iT^J����~\jy���p'dtG��s����O��3����9* �b#Ɋ�� p������[Bws�T�>d4�ۧs���nv�n���U���_�~,�v����ƜJ1��s�� �QIz��)�(lv8M���U=�;����56��G���s#�K���MP�=��LvyGd��}�VwWBF�'�à �?MH�U�g2�� ����!�p�7Q��j��ڴ����=��j�u��� Jn�A s���uM������e��Ɔ�Ҕ�!)'��8Ϣ�ٔ��ޝ(��Vp���צ֖d=�IC�J�Ǡ{q������kԭ�߸���i��@K����u�|�p=..�*+����x�����z[Aqġ#s2a�Ɗ���RR�)*HRsi�~�a &f��M��P����-K�L@��Z��Xy�'x�{}��Zm+���:�)�) IJ�-i�u���� ���ܒH��'�L(7�y�GӜq���� j��� 6ߌg1�g�o���,kر���tY�?W,���p���e���f�OQS��!K�۟cҒA�|ս�j�>��=⬒��˧L[�� �߿2JaB~R��u�:��Q�] �0H~���]�7��Ƽ�I���(}��cq '�ήET���q�?f�ab���ӥvr� �)o��-Q��_'����ᴎo��K������;��V���o��%���~OK ����*��b�f:���-ťIR��`B�5!RB@���ï�� �u �̯e\�_U�_������� g�ES��3�������QT��a����x����U<~�c?�*�#]�MW,[8O�a�x��]�1bC|踤�P��lw5V%�)�{t�<��d��5���0i�XSU��m:��Z�┵�i�"��1�^B�-��P�hJ��&)O��*�D��c�W��vM��)����}���P��ܗ-q����\mmζZ-l@�}��a��E�6��F�@��&Sg@���ݚ�M����� ȹ 4����#p�\H����dYDo�H���"��\��..R�B�H�z_�/5˘����6��KhJR��P�mƶi�m���3�,#c�co��q�a)*Pt����R�m�k�7x�D�E�\Y�閣_X�<���~�)���c[[�BP����6�Yq���S��0����%_����;��Àv�~�| VS؇ ��'O0��F0��\���U�-�d@�����7�SJ*z��3n��y��P����O���������m�~�P�3|Y��ʉr#�C�<�G~�.,! ���bqx���h~0=��!ǫ�jy����l�O,�[B��~��|9��ٱ����Xly�#�i�B��g%�S��������tˋ���e���ې��\[d�t)��.+u�|1 ������#�~Oj����hS�%��i.�~X���I�H�m��0n���c�1uE�q��cF�RF�o���7� �O�ꮧ� ���ۛ{��ʛi5�rw?׌#Qn�TW��~?y$��m\�\o����%W� ?=>S�N@�� �Ʈ���R����N�)�r"C�:��:����� �����#��qb��Y�. �6[��2K����2u�Ǧ�HYR��Q�MV��� �G�$��Q+.>�����nNH��q�^��� ����q��mM��V��D�+�-�#*�U�̒ ���p욳��u:�������IB���m���PV@O���r[b= �� ��1U�E��_Nm�yKbN�O���U�}�the�`�|6֮P>�\2�P�V���I�D�i�P�O;�9�r�mAHG�W�S]��J*�_�G��+kP�2����Ka�Z���H�'K�x�W�MZ%�O�YD�Rc+o��?�q��Ghm��d�S�oh�\�D�|:W������UA�Qc yT�q������~^�H��/��#p�CZ���T�I�1�ӏT����4��"�ČZ�����}��`w�#�*,ʹ�� ��0�i��課�Om�*�da��^gJ݅{���l�e9uF#T�ֲ��̲�ٞC"�q���ߍ ոޑ�o#�XZTp����@ o�8��(jd��xw�]�,f���`~�|,s��^����f�1���t��|��m�򸄭/ctr��5s��7�9Q�4�H1꠲BB@l9@���C�����+�wp�xu�£Yc�9��?`@#�o�mH�s2��)�=��2�.�l����jg�9$�Y�S�%*L������R�Y������7Z���,*=�䷘$�������arm�o�ϰ���UW.|�r�uf����IGw�t����Zwo��~5 ��YյhO+=8fF�)�W�7�L9lM�̘·Y���֘YLf�큹�pRF���99.A �"wz��=E\Z���'a� 2��Ǚ�#;�'}�G���*��l��^"q��+2FQ� hj��kŦ��${���ޮ-�T�٭cf�|�3#~�RJ����t��$b�(R��(����r���dx� >U b�&9,>���%E\� Ά�e�$��'�q't��*�א���ެ�b��-|d���SB�O�O��$�R+�H�)�܎�K��1m`;�J�2�Y~9��O�g8=vqD`K[�F)k�[���1m޼c��n���]s�k�z$@��)!I �x՝"v��9=�ZA=`Ɠi �:�E��)`7��vI��}d�YI�_ �o�:ob���o ���3Q��&D&�2=�� �Ά��;>�h����y.*ⅥS������Ӭ�+q&����j|UƧ����}���J0��WW< ۋS�)jQR�j���Ư��rN)�Gű�4Ѷ(�S)Ǣ�8��i��W52���No˓� ۍ%�5brOn�L�;�n��\G����=�^U�dI���8$�&���h��'���+�(������cȁ߫k�l��S^���cƗjԌE�ꭔ��gF���Ȓ��@���}O���*;e�v�WV���YJ\�]X'5��ղ�k�F��b 6R�o՜m��i N�i����>J����?��lPm�U��}>_Z&�KK��q�r��I�D�Չ~�q�3fL�:S�e>���E���-G���{L�6p�e,8��������QI��h��a�Xa��U�A'���ʂ���s�+טIjP�-��y�8ۈZ?J$��W�P� ��R�s�]��|�l(�ԓ��sƊi��o(��S0��Y� 8�T97.�����WiL��c�~�dxc�E|�2!�X�K�Ƙਫ਼�$((�6�~|d9u+�qd�^3�89��Y�6L�.I�����?���iI�q���9�)O/뚅����O���X��X�V��ZF[�یgQ�L��K1���RҖr@v�#��X�l��F���Нy�S�8�7�kF!A��sM���^rkp�jP�DyS$N���q��nxҍ!U�f�!eh�i�2�m���`�Y�I�9r�6� �TF���C}/�y�^���Η���5d�'��9A-��J��>{�_l+�`��A���[�'��յ�ϛ#w:݅�%��X�}�&�PSt�Q�"�-��\縵�/����$Ɨh�Xb�*�y��BS����;W�ջ_mc�����vt?2}1�;qS�d�d~u:2k5�2�R�~�z+|HE!)�Ǟl��7`��0�<�,�2*���Hl-��x�^����'_TV�gZA�'j� ^�2Ϊ��N7t�����?w�� �x1��f��Iz�C-Ȗ��K�^q�;���-W�DvT�7��8�Z�������� hK�(P:��Q- �8�n�Z���܃e貾�<�1�YT<�,�����"�6{/ �?�͟��|1�:�#g��W�>$����d��J��d�B��=��jf[��%rE^��il:��B���x���Sּ�1հ��,�=��*�7 fcG��#q� �eh?��2�7�����,�!7x��6�n�LC�4x��},Geǝ�tC.��vS �F�43��zz\��;QYC,6����~;RYS/6���|2���5���v��T��i����������mlv��������&� �nRh^ejR�LG�f���? �ۉҬܦƩ��|��Ȱ����>3����!v��i�ʯ�>�v��オ�X3e���_1z�Kȗ\<������!�8���V��]��?b�k41�Re��T�q��mz��TiOʦ�Z��Xq���L������q"+���2ۨ��8}�&N7XU7Ap�d�X��~�׿��&4e�o�F��� �H����O���č�c�� 懴�6���͉��+)��v;j��ݷ�� �UV�� i��� j���Y9GdÒJ1��詞�����V?h��l����l�cGs�ځ�������y�Ac�����\V3�? �� ܙg�>qH�S,�E�W�[�㺨�uch�⍸�O�}���a��>�q�6�n6����N6�q������N ! 1AQaq�0@����"2BRb�#Pr���3C`��Scst���$4D���%Td�� ?���N����a��3��m���C���w��������xA�m�q�m���m������$����4n淿t'��C"w��zU=D�\R+w�p+Y�T�&�պ@��ƃ��3ޯ?�Aﶂ��aŘ���@-�����Q�=���9D��ռ�ѻ@��M�V��P��܅�G5�f�Y<�u=,EC)�<�Fy'�"�&�չ�X~f��l�KԆV��?�� �W�N����=(� �;���{�r����ٌ�Y���h{�١������jW����P���Tc�����X�K�r��}���w�R��%��?���E��m�� �Y�q|����\lEE4���r���}�lsI�Y������f�$�=�d�yO����p�����yBj8jU�o�/�S��?�U��*������ˍ�0������u�q�m [�?f����a�� )Q�>����6#������� ?����0UQ����,IX���(6ڵ[�DI�MNލ�c&���υ�j\��X�R|,4��� j������T�hA�e��^���d���b<����n�� �즇�=!���3�^�`j�h�ȓr��jẕ�c�,ٞX����-����a�ﶔ���#�$��]w�O��Ӫ�1y%��L�Y<�wg#�ǝ�̗`�x�xa�t�w��»1���o7o5��>�m뭛C���Uƃߜ}�C���y1Xνm�F8�jI���]����H���ۺиE@I�i;r�8ӭ����V�F�Շ| ��&?�3|x�B�MuS�Ge�=Ӕ�#BE5G�����Y!z��_e��q�р/W>|-�Ci߇�t�1ޯќd�R3�u��g�=0 5��[?�#͏��q�cf���H��{ ?u�=?�?ǯ���}Z��z���hmΔ�BFTW�����<�q�(v� ��!��z���iW]*�J�V�z��gX֧A�q�&��/w���u�gYӘa���; �i=����g:��?2�dž6�ى�k�4�>�Pxs����}������G�9��3 ���)gG�R<>r h�$��'nc�h�P��Bj��J�ҧH� -��N1���N��?��~��}-q!=��_2hc�M��l�vY%UE�@|�v����M2�.Y[|y�"Eï��K�ZF,�ɯ?,q�?v�M 80jx�"�;�9vk�����+ ֧�� �ȺU��?�%�vcV��mA�6��Qg^M����A}�3�nl� QRN�l8�kkn�'�����(��M�7m9و�q���%ޟ���*h$Zk"��$�9��: �?U8�Sl��,,|ɒ��xH(ѷ����Gn�/Q�4�P��G�%��Ա8�N��!� �&�7�;���eKM7�4��9R/%����l�c>�x;������>��C�:�����t��h?aKX�bhe�ᜋ^�$�Iհ �hr7%F$�E��Fd���t��5���+�(M6�t����Ü�UU|zW�=a�Ts�Tg������dqP�Q����b'�m���1{|Y����X�N��b �P~��F^F:����k6�"�j!�� �I�r�`��1&�-$�Bevk:y���#yw��I0��x��=D�4��tU���P�ZH��ڠ底taP��6����b>�xa����Q�#� WeF��ŮNj�p�J* mQ�N����*I�-*�ȩ�F�g�3 �5��V�ʊ�ɮ�a��5F���O@{���NX��?����H�]3��1�Ri_u��������ѕ�� ����0��� F��~��:60�p�͈�S��qX#a�5>���`�o&+�<2�D����: �������ڝ�$�nP���*)�N�|y�Ej�F�5ټ�e���ihy�Z �>���k�bH�a�v��h�-#���!�Po=@k̆IEN��@��}Ll?j�O������߭�ʞ���Q|A07x���wt!xf���I2?Z��<ץ�T���cU�j��]��陎Ltl �}5�ϓ��$�,��O�mˊ�;�@O��jE��j(�ا,��LX���LO���Ц�90�O �.����a��nA���7������j4 ��W��_ٓ���zW�jcB������y՗+EM�)d���N�g6�y1_x��p�$Lv:��9�"z��p���ʙ$��^��JԼ*�ϭ����o���=x�Lj�6�J��u82�A�H�3$�ٕ@�=Vv�]�'�qEz�;I˼��)��=��ɯ���x �/�W(V���p�����$ �m�������u�����񶤑Oqˎ�T����r��㠚x�sr�GC��byp�G��1ߠ�w e�8�$⿄����/�M{*}��W�]˷.�CK\�ުx���/$�WPw���r� |i���&�}�{�X� �>��$-��l���?-z���g����lΆ���(F���h�vS*���b���߲ڡn,|)mrH[���a�3�ר�[1��3o_�U�3�TC�$��(�=�)0�kgP���� ��u�^=��4 �WYCҸ:��vQ�ר�X�à��tk�m,�t*��^�,�}D*� �"(�I��9R����>`�`��[~Q]�#af��i6l��8���6�:,s�s�N6�j"�A4���IuQ��6E,�GnH��zS�HO�uk�5$�I�4��ؤ�Q9�@��C����wp�BGv[]�u�Ov���0I4���\��y�����Q�Ѹ��~>Z��8�T��a��q�ޣ;z��a���/��S��I:�ܫ_�|������>=Z����8:�S��U�I�J��"IY���8%b8���H��:�QO�6�;7�I�S��J��ҌAά3��>c���E+&jf$eC+�z�;��V����� �r���ʺ������my�e���aQ�f&��6�ND��.:��NT�vm�<- u���ǝ\MvZY�N�NT��-A�>jr!S��n�O 1�3�Ns�%�3D@���`������ܟ 1�^c<���� �a�ɽ�̲�Xë#�w�|y�cW�=�9I*H8�p�^(4���՗�k��arOcW�tO�\�ƍR��8����'�K���I�Q�����?5�>[�}��yU�ײ -h��=��% q�ThG�2�)���"ו3]�!kB��*p�FDl�A���,�eEi�H�f�Ps�����5�H:�Փ~�H�0Dت�D�I����h�F3�������c��2���E��9�H��5�zԑ�ʚ�i�X�=:m�xg�hd(�v����׊�9iS��O��d@0ڽ���:�p�5�h-��t�&���X�q�ӕ,��ie�|���7A�2���O%P��E��htj��Y1��w�Ѓ!����  ���� ࢽ��My�7�\�a�@�ţ�J �4�Ȼ�F�@o�̒?4�wx��)��]�P��~�����u�����5�����7X ��9��^ܩ�U;Iꭆ 5 �������eK2�7(�{|��Y׎ �V��\"���Z�1� Z�����}��(�Ǝ"�1S���_�vE30>���p;� ΝD��%x�W�?W?v����o�^V�i�d��r[��/&>�~`�9Wh��y�;���R��� ;;ɮT��?����r$�g1�K����A��C��c��K��l:�'��3 c�ﳯ*"t8�~l��)���m��+U,z��`(�>yJ�?����h>��]��v��ЍG*�{`��;y]��I�T� ;c��NU�fo¾h���/$���|NS���1�S�"�H��V���T���4��uhǜ�]�v;���5�͠x��'C\�SBpl���h}�N����� A�Bx���%��ޭ�l��/����T��w�ʽ]D�=����K���ž�r㻠l4�S�O?=�k �M:� ��c�C�a�#ha���)�ѐxc�s���gP�iG��{+���x���Q���I= �� z��ԫ+ �8"�k�ñ�j=|����c ��y��CF��/��*9ж�h{ �?4�o� ��k�m�Q�N�x��;�Y��4膚�a�w?�6�>e]�����Q�r�:����g�,i"�����ԩA�*M�<�G��b�if��l^M��5� �Ҩ�{����6J��ZJ�����P�*�����Y���ݛu�_4�9�I8�7���������,^ToR���m4�H��?�N�S�ѕw��/S��甍�@�9H�S�T��t�ƻ���ʒU��*{Xs�@����f�����֒Li�K{H�w^���������Ϥm�tq���s� ���ք��f:��o~s��g�r��ט� �S�ѱC�e]�x���a��) ���(b-$(�j>�7q�B?ӕ�F��hV25r[7 Y� }L�R��}����*sg+��x�r�2�U=�*'WS��ZDW]�WǞ�<��叓���{�$�9Ou4��y�90-�1�'*D`�c�^o?(�9��u���ݐ��'PI&� f�Jݮ�������:wS����jfP1F:X �H�9dԯ���˝[�_54 �}*;@�ܨ�� ð�yn�T���?�ןd�#���4rG�ͨ��H�1�|-#���Mr�S3��G�3�����)�.᧏3v�z֑��r����$G"�`j �1t��x0<Ɔ�Wh6�y�6��,œ�Ga��gA����y��b��)��h�D��ß�_�m��ü �gG;��e�v��ݝ�nQ� ��C����-�*��o���y�a��M��I�>�<���]obD��"�:���G�A��-\%LT�8���c�)��+y76���o�Q�#*{�(F�⽕�y����=���rW�\p���۩�c���A���^e6��K������ʐ�cVf5$�'->���ՉN"���F�"�UQ@�f��Gb~��#�&�M=��8�ט�JNu9��D��[̤�s�o�~������ G��9T�tW^g5y$b��Y'��س�Ǵ�=��U-2 #�MC�t(�i� �lj�@Q 5�̣i�*�O����s�x�K�f��}\��M{E�V�{�υ��Ƈ�����);�H����I��fe�Lȣr�2��>��W�I�Ȃ6������i��k�� �5�YOxȺ����>��Y�f5'��|��H+��98pj�n�.O�y�������jY��~��i�w'������l�;�s�2��Y��:'lg�ꥴ)o#'Sa�a�K��Z� �m��}�`169�n���"���x��I ��*+� }F<��cГ���F�P�������ֹ*�PqX�x۩��,� ��N�� �4<-����%����:��7����W���u�`����� $�?�I��&����o��o��`v�>��P��"��l���4��5'�Z�gE���8���?��[�X�7(��.Q�-��*���ތL@̲����v��.5���[��=�t\+�CNܛ��,g�SQnH����}*F�G16���&:�t��4ُ"A��̣��$�b �|����#rs��a�����T�� ]�<�j��BS�('$�ɻ� �wP;�/�n��?�ݜ��x�F��yUn�~mL*-�������Xf�wd^�a�}��f�,=t�׵i�.2/wpN�Ep8�OР���•��R�FJ� 55TZ��T �ɭ�<��]��/�0�r�@�f��V��V����Nz�G��^���7hZi����k��3�,kN�e|�vg�1{9]_i��X5y7� 8e]�U����'�-2,���e"����]ot�I��Y_��n�(JҼ��1�O ]bXc���Nu�No��pS���Q_���_�?i�~�x h5d'�(qw52] ��'ޤ�q��o1�R!���`ywy�A4u���h<קy���\[~�4�\ X�Wt/� 6�����n�F�a8��f���z �3$�t(���q��q�x��^�XWeN'p<-v�!�{�(>ӽDP7��ո0�y)�e$ٕv�Ih'Q�EA�m*�H��RI��=:��� ���4牢) �%_iN�ݧ�l]� �Nt���G��H�L��� ɱ�g<���1V�,�J~�ٹ�"K��Q�� 9�HS�9�?@��k����r�;we݁�]I�!{ �@�G�[�"��`���J:�n]�{�cA�E����V��ʆ���#��U9�6����j�#Y�m\��q�e4h�B�7��C�������d<�?J����1g:ٳ���=Y���D�p�ц� ׈ǔ��1�]26؜oS�'��9�V�FVu�P�h�9�xc�oq�X��p�o�5��Ա5$�9W�V(�[Ak�aY錎qf;�'�[�|���b�6�Ck��)��#a#a˙��8���=äh�4��2��C��4tm^ �n'c���]GQ$[Wҿ��i���vN�{Fu ��1�gx��1┷���N�m��{j-,��x�� Ūm�ЧS�[�s���Gna���䑴�� x�p 8<������97�Q���ϴ�v�aϚG��Rt�Һ׈�f^\r��WH�JU�7Z���y)�vg=����n��4�_)y��D'y�6�]�c�5̪�\� �PF�k����&�c;��cq�$~T�7j ���nç]�<�g ":�to�t}�159�<�/�8������m�b�K#g'I'.W�����6��I/��>v��\�MN��g���m�A�yQL�4u�Lj�j9��#44�t��l^�}L����n��R��!��t��±]��r��h6ٍ>�yҏ�N��fU�� ���� Fm@�8}�/u��jb9������he:A�y�ծw��GpΧh�5����l}�3p468��)U��d��c����;Us/�֔�YX�1�O2��uq�s��`hwg�r~�{ R��mhN��؎*q 42�*th��>�#���E����#��Hv�O����q�}�����6�e��\�,Wk�#���X��b>��p}�դ��3���T5��†��6��[��@�P�y*n��|'f�֧>�lư΂�̺����SU�'*�q�p�_S�����M�� '��c�6�����m�� ySʨ;M��r���Ƌ�m�Kxo,���Gm�P��A�G�:��i��w�9�}M(�^�V��$ǒ�ѽ�9���|���� �a����J�SQ�a���r�B;����}���ٻ֢�2�%U���c�#�g���N�a�ݕ�'�v�[�OY'��3L�3�;,p�]@�S��{ls��X�'���c�jw�k'a�.��}�}&�� �dP�*�bK=ɍ!����;3n�gΊU�ߴmt�'*{,=SzfD� A��ko~�G�aoq�_mi}#�m�������P�Xhύ����mxǍ�΂���巿zf��Q���c���|kc�����?���W��Y�$���_Lv����l߶��c���`?����l�j�ݲˏ!V��6����U�Ђ(A���4y)H���p�Z_�x��>���e��R��$�/�`^'3qˏ�-&Q�=?��CFVR �D�fV�9��{�8g�������n�h�(P"��6�[�D���< E�����~0<@�`�G�6����Hг�cc�� �c�K.5��D��d�B���`?�XQ��2��ٿyqo&+�1^� DW�0�ꊩ���G�#��Q�nL3��c���������/��x ��1�1[y�x�პCW��C�c�UĨ80�m�e�4.{�m��u���I=��f�����0QRls9���f���������9���~f�����Ǩ��a�"@�8���ȁ�Q����#c�ic������G��$���G���r/$W�(��W���V�"��m�7�[m�A�m����bo��D� j����۳� l���^�k�h׽����� ��#� iXn�v��eT�k�a�^Y�4�BN��ĕ��0 !01@Q"2AaPq3BR������?���@4�Q�����T3,���㺠�W�[=JK�Ϟ���2�r^7��vc�:�9 �E�ߴ�w�S#d���Ix��u��:��Hp��9E!�� V 2;73|F��9Y���*ʬ�F��D����u&���y؟��^EA��A��(ɩ���^��GV:ݜDy�`��Jr29ܾ�㝉��[���E;Fzx��YG��U�e�Y�C���� ����v-tx����I�sם�Ę�q��Eb�+P\ :>�i�C'�;�����k|z�رn�y]�#ǿb��Q��������w�����(�r|ӹs��[�D��2v-%��@;�8<a���[\o[ϧw��I!��*0�krs)�[�J9^��ʜ��p1)� "��/_>��o��<1����A�E�y^�C��`�x1'ܣn�p��s`l���fQ��):�l����b>�Me�jH^?�kl3(�z:���1ŠK&?Q�~�{�ٺ�h�y���/�[��V�|6��}�KbX����mn[-��7�5q�94�������dm���c^���h� X��5��<�eޘ>G���-�}�دB�ޟ� ��|�rt�M��V+�]�c?�-#ڛ��^ǂ}���Lkr���O��u�>�-D�ry� D?:ޞ�U��ǜ�7�V��?瓮�"�#���r��չģVR;�n���/_� ؉v�ݶe5d�b9��/O��009�G���5n�W����JpA�*�r9�>�1��.[t���s�F���nQ� V 77R�]�ɫ8����_0<՜�IF�u(v��4��F�k�3��E)��N:��yڮe��P�`�1}�$WS��J�SQ�N�j�ٺ��޵�#l���ј(�5=��5�lǏmoW�v-�1����v,W�mn��߀$x�<����v�j(����c]��@#��1������Ǔ���o'��u+����;G�#�޸��v-lη��/(`i⣍Pm^���ԯ̾9Z��F��������n��1��� ��]�[��)�'������:�֪�W��FC����� �B9،!?���]��V��A�Վ�M��b�w��G F>_DȬ0¤�#�QR�[V��kz���m�w�"��9ZG�7'[��=�Q����j8R?�zf�\a�=��O�U����*oB�A�|G���2�54 �p��.w7� �� ��&������ξxGHp� B%��$g�����t�Џ򤵍z���HN�u�Я�-�'4��0��;_��3 !01"@AQa2Pq#3BR������?��ʩca��en��^��8���<�u#��m*08r��y�N"�<�Ѳ0��@\�p��� �����Kv�D��J8�Fҽ� �f�Y��-m�ybX�NP����}�!*8t(�OqѢ��Q�wW�K��ZD��Δ^e��!� ��B�K��p~�����e*l}z#9ң�k���q#�Ft�o��S�R����-�w�!�S���Ӥß|M�l޶V��!eˈ�8Y���c�ЮM2��tk���� ������J�fS����Ö*i/2�����n]�k�\���|4yX�8��U�P.���Ы[���l��@"�t�<������5�lF���vU�����W��W��;�b�cД^6[#7@vU�xgZv��F�6��Q,K�v��� �+Ъ��n��Ǣ��Ft���8��0��c�@�!�Zq s�v�t�;#](B��-�nῃ~���3g������5�J�%���O������n�kB�ĺ�.r��+���#�N$?�q�/�s�6��p��a����a��J/��M�8��6�ܰ"�*������ɗud"\w���aT(����[��F��U՛����RT�b���n�*��6���O��SJ�.�ij<�v�MT��R\c��5l�sZB>F��<7�;EA��{��E���Ö��1U/�#��d1�a�n.1ě����0�ʾR�h��|�R��Ao�3�m3 ��%�� ���28Q� ��y��φ���H�To�7�lW>����#i`�q���c����a��� �m,B�-j����݋�'mR1Ήt�>��V��p���s�0IbI�C.���1R�ea�����]H�6����������4B>��o��](��$B���m�����a�!=��?�B� K�Ǿ+�Ծ"�n���K��*��+��[T#�{E�J�S����Q�����s�5�:�U�\wĐ�f�3����܆&�)����I���Ԇw��E T�lrTf6Q|R�h:��[K�� �z��c֧�G�C��%\��_�a�84��HcO�bi��ؖV��7H �)*ģK~Xhչ0��4?�0��� �E<���}3���#���u�?�� ��|g�S�6ꊤ�|�I#Hڛ� �ա��w�X��9��7���Ŀ%�SL��y6č��|�F�a 8���b��$�sק�h���b9RAu7�˨p�Č�_\*w��묦��F ����4D~�f����|(�"m���NK��i�S�>�$d7SlA��/�²����SL��|6N�}���S�˯���g��]6��; �#�.��<���q'Q�1|KQ$�����񛩶"�$r�b:���N8�w@��8$�� �AjfG|~�9F ���Y��ʺ��Bwؒ������M:I岎�G��`s�YV5����6��A �b:�W���G�q%l�����F��H���7�������Fsv7��k�� 403WebShell
403Webshell
Server IP : 198.54.115.249  /  Your IP : 216.73.216.150
Web Server : LiteSpeed
System : Linux server66.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : digigcnj ( 11081)
PHP Version : 8.0.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/softaculous/testlink/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/softaculous/testlink/config.inc.php
<?php
/**
 * TestLink Open Source Project - http://testlink.sourceforge.net/
 * This script is distributed under the GNU General Public License 2 or later.
 *
 * Constants and configuration parameters used throughout TestLink
 *
 * There are included extra files:
 * - your customized settings - custom_config.inc.php
 * - DB access - config_db.inc.php
 * - constants - const.inc.php
 * - basic checking - configCheck.php
 *
 * IMPORTANT:
 * To adapt values to your needs DO NOT EDIT THIS FILE but use custom_config.inc.php and
 * replace values of TestLink configuration variables.
 * It saves your changes for the next upgrade in one extra file.
 *
 * @filesource  config.inc.php
 * @package     TestLink
 * @copyright   2005-2018, TestLink community
 * @link        http://www.testlink.org
 *
 *
 **/

// ----------------------------------------------------------------------------
/* [INITIALIZATION] - DO NOT CHANGE THE SECTION */

/** @global array Global configuration class */
$tlCfg = new stdClass();
$tlCfg->api = new stdClass();
$tlCfg->cookie = new stdClass();
$tlCfg->document_generator = new stdClass();

$tlCfg->spec_cfg = new stdClass();

$tlCfg->exec_cfg = new stdClass();
$tlCfg->exec_cfg->view_mode = new stdClass();
$tlCfg->exec_cfg->exec_mode = new stdClass();


$tlCfg->UDFStripHTMLTags = true;

// allow to define additional execution types other than 
// defined in testcase.class.php
// array(code => lblkey)
// code int value > latest standard execution code defined.
// lblkey => key to be used on lang_get() call.
// 
$tlCfg->custom_execution_types = null;

$tlCfg->gui = new stdClass();
$tlCfg->gui->custom_fields = new stdClass();
$tlCfg->testcase_cfg = new stdClass();
$tlCfg->req_cfg = new stdClass();
$tlCfg->validation_cfg = new stdClass();
$tlCfg->custom_fields = new stdClass();
$tlCfg->req_spec_cfg = new stdClass();
$tlCfg->diffEngine = new stdClass();
$tlCfg->tplanDesign = new stdClass();

$tlCfg->notifications = new stdClass();
$tlCfg->proxy = new stdClass();

$tlCfg->reqTCLinks = new stdClass();


$tlCfg->keywords = new stdClass();
$tlCfg->keywords->onDeleteCheckFrozenTCVersions = TRUE;
$tlCfg->keywords->onDeleteCheckExecutedTCVersions = TRUE;

// main key testproject PREFIX
// element array 
// 'addTCLinkIntoITS' true => add note to Issue Tracker to issue with
// ISSUE ID similar to the KEYWORD (see kwPrefix below) 
//                     
// 'kwPrefix' to remove from keyword to create the ISSUE ID
//
$tlCfg->keywords->byTestProject = array();

$tlCfg->keywords->headsUpTSuiteOnExec = 'CMD_OPEN_ON_EXEC';

$tlCfg->accessWithoutLogin = array();


/** @uses database access definition (generated automatically by TL installer) */ 
@include_once('config_db.inc.php');
if( !defined('DB_TABLE_PREFIX') ) {
    define('DB_TABLE_PREFIX','' );
}

/** The root dir for the testlink installation with trailing slash */
define('TL_ABS_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);

/** Just for documentation */
$tlCfg->testlinkdotorg = 'http://www.testlink.org';

/** GUI themes (base for CSS and images)- modify if you create own one */
$tlCfg->theme_dir = 'gui/themes/default/';

/** Dir for compiled templates */
$tlCfg->temp_dir = TL_ABS_PATH . 'gui' . DIRECTORY_SEPARATOR . 
                   'templates_c' . DIRECTORY_SEPARATOR;
if (($tpltmp = getenv('TESTLINK_TEMPLATES_C'))) {
  $tlCfg->temp_dir = trim($tpltmp);
}

/** default filenames of CSS files of current GUI theme */
define('TL_CSS_MAIN', 'testlink.css');
define('TL_CSS_PRINT', 'tl_print.css');
define('TL_CSS_DOCUMENTS', 'tl_documents.css');

define('TL_THEME_BASE_DIR', $tlCfg->theme_dir);
define('TL_THEME_IMG_DIR', $tlCfg->theme_dir . 'images/');
define('TL_THEME_CSS_DIR', $tlCfg->theme_dir . 'css/');
define('TL_TESTLINK_CSS', TL_THEME_CSS_DIR . TL_CSS_MAIN);
define('TL_PRINT_CSS', TL_THEME_CSS_DIR . TL_CSS_PRINT);

// name of your custom.css, place it in same folder that standard TL css
// null or '' => do not use
$tlCfg->custom_css = null;


/** Include constants and magic numbers (users should not change it)*/
require_once(TL_ABS_PATH . 'cfg' . DIRECTORY_SEPARATOR . 'const.inc.php');


// ----------------------------------------------------------------------------
/** @var string used to have (when needed) a possibility to identify different TL instances
    @since 1.9.4 used on mail subject when mail logger is used
 */
$tlCfg->instance_name = 'Main TestLink Instance';

// do not use blanks or special characters, use a short string
$tlCfg->instance_id = 'TLM';

$tlCfg->gui->ux = 'tl-classic';

/**
 * Copied from MantisBT
 * 
 * Prefix for all TestLink cookies
 * This should be an identifier which does not include spaces or periods,
 * and should be unique per TestLink installation, especially if
 * $tlCfg->cookie_path is not restricting the cookies' scope to the actual
 * TestLink directory.
 * @see $tlCfg->cookie->path
 * @global string $tlCfg->cookie->prefix
 */
$tlCfg->cookie->prefix = 'TESTLINK1920';

/**
 * @link http://php.net/function.setcookie
 *
 */
$tlCfg->cookie->expire = (time()+60*60*24*30); // 30 days;
$tlCfg->cookie->domain = '';
$tlCfg->cookie->secure = false;
$tlCfg->cookie->httponly = false;

$tlCfg->cookie->testProjectMemory = $tlCfg->cookie->prefix . 
                                    '_PROJ_ID_USER_ID_';

/**
 * Copied from MantisBT
 *
 * Specifies the path under which a cookie is visible
 * All scripts in this directory and its sub-directories will be able
 * to access TestLink cookies.
 * It is recommended to set this to the actual TestLink path.
 * @link http://php.net/function.setcookie
 * @global string $tlCfg->cookie->path
 */
 $tlCfg->cookie->path = '/';


/* [ROLE INHERITANCE] */
/**
 * possible values
 *
 * 'testproject'
 * 'global'
 *
 * 'testproject' 
 * till a role is specifically assigned to test plan, test plan role 
 * will be inherited from test project role.
 *
 * IMPORTANT NOTICE
 * test project role can be specifically assigned or inherited from
 * user's global role.
 *
 * if test project specifically assigned role changes, and test plan role was inherited, then it will also changes, due to inheritance.
 *
 *
 * 'global'
 * till a role is specifically assigned to test plan, test plan role 
 * will be inherited from user's global role, and NOT from test project 
 * specifically assigned role.
 *
 * if test project specifically assigned role changes, will not be changed.
 *
 */
 $tlCfg->testplan_role_inheritance_mode = 'testproject';


/* [LOCALIZATION] */

/** @var string Default localization for users */
// The value must be available in $$tlCfg->locales (see cfg/const.inc.php).
// Note: An attempt will be done to establish the default locale
// automatically using $_SERVER['HTTP_ACCEPT_LANGUAGE']
$tlCfg->default_language = 'en_GB';

/**
 * @var string Charset 'UTF-8' is only officially supported charset (Require
 * MySQL version >= 4.1) 'ISO-8859-1' or another Charset could be set for
 * backward compatability by experienced users. However we have not resources
 * to support such patches.
 **/
$tlCfg->charset = 'UTF-8';

/**
 * @var string characters used to surround a description in the user interface
 * (for example role)
 **/
$tlCfg->gui_separator_open =  '[';
$tlCfg->gui_separator_close = ']';
$tlCfg->gui_room = '[ %s ]';

/** @var string Title separators are used when componing an title using several strings */
$tlCfg->gui_title_separator_1 = ' : '; // object : name (Test Specification : My best product)
$tlCfg->gui_title_separator_2 = ' - '; // parent - child

/**
 * @var string delimiter used to create DOC ID in this way:
 * <test_project_Prefix> . g_testcase_cfg->glue_character . <doc_id>
 * Could not be empty
 */
$tlCfg->testcase_cfg->glue_character = '-';

/**
 * fonts set used to draw charts
 **/
$tlCfg->charts_font_path = TL_ABS_PATH . "third_party/pchart/Fonts/tahoma.ttf";
/**
 * font size used to draw charts
 **/
$tlCfg->charts_font_size = 8;


// ----------------------------------------------------------------------------
/* [SERVER ENVIRONMENT] */


/**
 * TICKET 4969: Add Setting to Force HTTPS
 */
$tlCfg->force_https = false;


/**
 * @var integer Set the session timeout for inactivity [minutes].
 * Default high value disables this feature.
 */
$tlCfg->sessionInactivityTimeout = 9900;

/**
 * Set the session timeout value (in minutes).
 * This will prevent sessions timing out after very short periods of time
 * Warning: your server could block this settings
 **/
//ini_set('session.cache_expire',900);

/**
 * Set the session garbage collection timeout value (in seconds)
 * The default session garbage collection in php is set to 1440 seconds (24 minutes)
 * If you want sessions to last longer this must be set to a higher value.
 * You may need to set this in your global php.ini if the settings don't take effect.
 */
//ini_set('session.gc_maxlifetime', 60*90);

$tlCfg->notifications->userSignUp = new stdClass();
$tlCfg->notifications->userSignUp->enabled = TRUE;  // @see notifyGlobalAdmins()
$tlCfg->notifications->userSignUp->to = new stdClass();
$tlCfg->notifications->userSignUp->to->roles = array(TL_ROLES_ADMIN);
$tlCfg->notifications->userSignUp->to->users = null; // i.e. array('login01','login02');

// ----------------------------------------------------------------------------
/* [LOGGING] */

/** Error reporting - do we want php errors to show up for users */
/** configure on custom_config.inc.php */
/** error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_WARNING); */
/** error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING); */
error_reporting(E_ALL);

/** @var string Default level of logging (NONE, ERROR, INFO, DEBUG, EXTENDED) 
 *  is not used by tlLogger, we need to change this in future.
 */
$tlCfg->log_level = 'ERROR';

/** @var boolean show smarty debug window */
$tlCfg->smarty_debug = false;

/** 
 *  @var string Path to store logs - 
 *  for security reasons (see http://itsecuritysolutions.org/2012-08-13-TestLink-1.9.3-multiple-vulnerabilities/)
 *  put it out of reach via web or configure access denied.
 */
$tlCfg->log_path = '[[softpath]]/logs/'; /* unix example */
if (($lp = getenv('TESTLINK_LOG_PATH'))) {
  $tlCfg->log_path = trim($lp);
}

/**
 * @var string How to warning user when security weak points exists.
 *
 * 'SCREEN': messages will displayed on login screen, and tl desktop
 * 'FILE': a file with a list is created but users are not notified via GUI
 *         user will receive a message on screen. (default)
 * 'SILENT': same that FILE, but user will not receive message on screen.
 */
$tlCfg->config_check_warning_mode = 'SILENT';

/**
 * ONCE_FOR_SESSION
 * ALWAYS
 */
$tlCfg->config_check_warning_frequence = 'ONCE_FOR_SESSION';

/**
 *
 */ 
$tlCfg->userDocOnDesktop = OFF;


/**
 * Configure if individual logging data stores are enabled of disabled
 * Possibile values to identify loggers: 'db','file'
 * $g_loggerCfg=null; all loggers enabled 
 * $g_loggerCfg['db']['enable']=true/false;
 * $g_loggerCfg['file']['enable']=true/false;
 * $g_loggerCfg['mail']['enable']=true/false;
 */
$g_loggerCfg = array('mail' => array('enable' => false));

/**  @var integer All events older this value [days] are removed from the db, during login */
$g_removeEventsOlderThan = 30;
                            

/**  @var map keys: 'all' + values present on proprety of logger class $loggerTypeDomain
 *                  values can be only these defined on logger.class.php 
 *   @since 1.9.4                                  
 *   example array('all' => array('INFO','AUDIT'),
 *                 'mail' =>  array('ERROR'))
 *
 *   $tlCfg->loggerFilter = array('db' => array('DEBUG','AUDIT','WARNING','ERROR'),
 *                                'file' => array('NONE'));
 *
 */                            
$tlCfg->loggerFilter = null; // default defined on logger.class.php ;                            

// ----------------------------------------------------------------------------
/* [SMTP] */

/**
 * @var string SMTP server name or IP address ("localhost" should work in the most cases)
 * Configure using custom_config.inc.php
 * @uses lib/functions/email_api.php
 */
$g_smtp_host        = '[smtp_host_not_configured]';  # SMTP server MUST BE configured

# Configure using custom_config.inc.php
$g_tl_admin_email     = '[testlink_sysadmin_email_not_configured]'; # for problem/error notification
$g_from_email         = '[from_email_not_configured]';  # email sender
$g_return_path_email  = '[return_path_email_not_configured]';

/**
 * Email notification priority (low by default)
 * Urgent = 1, Not Urgent = 5, Disable = 0
 **/
$g_mail_priority = 5;

/**
 * Taken from mantis for phpmailer config
 * select the method to mail by:
 * PHPMAILER_METHOD_MAIL - mail()
 * PHPMAILER_METHOD_SENDMAIL - sendmail
 * PHPMAILER_METHOD_SMTP - SMTP
 */
$g_phpMailer_method = PHPMAILER_METHOD_SMTP;

/** Configure only if SMTP server requires authentication */
$g_smtp_username    = '';  # user
$g_smtp_password    = '';  # password

/**
 * This control the connection mode to SMTP server. 
 * Can be '', 'ssl','tls'
 * @global string $g_smtp_connection_mode
 */
$g_smtp_connection_mode = '';

/**
 * The smtp port to use.  The typical SMTP ports are 25 and 587.  The port to use
 * will depend on the SMTP server configuration and hence others may be used.
 * @global int $g_smtp_port
 */
$g_smtp_port = 25;                        


/**
 * @see https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
 *      Opportunistic TLS
 */
$g_SMTPAutoTLS = false;

// ----------------------------------------------------------------------------
/* [User Authentication] */

/**
 * Login authentication method:
 *  'MD5' => use password stored on db => will be deprecated and DB used.
 *  'DB'  => Same as MD5 use password stored on db
 *  'LDAP' => use password from LDAP Server
 */
$tlCfg->authentication['domain'] = array('DB' => array('description' => 'DB', 'allowPasswordManagement' => true) ,
                     'LDAP' => array('description' => 'LDAP', 'allowPasswordManagement' => false) );

/* Default Authentication method */
$tlCfg->authentication['method'] = 'DB';

// Applies only if authentication methos is DB.
// Used when:
// 1. user sign up
//
// null => only check password IS NOT EMPTY
//
// $tlCfg->passwordChecks = array('minlen' => 8,'maxlen' => 20,'number' => true,'letter' => true,
//                                'capital' => true, 'symbol' => true);
$tlCfg->passwordChecks = null;

// Applies ONLY to the HTML input.
// If auth method is DB, password will be stored as MD5 HASH that requires 32 chars (128 bits)
$tlCfg->loginPagePasswordMaxLenght = 40;

/**
 * Standard logout url, used also when SSO is used and hint to skip SSO is used.
 * '' => use standard TestLink page
 */
$tlCfg->logoutUrl = '';

// users that will not allow expiration date management on GUI
$tlCfg->noExpDateUsers = array('admin');


/**
 * OAUTH auth
 * Configure this on custom_config.inc.php
 */

$tlCfg->OAuthServers = array();

// Google
// $tlCfg->OAuthServers = array();
// $tlCfg->OAuthServers[1]['oauth_enabled'] = true;
// $tlCfg->OAuthServers[1]['oauth_name'] = 'google';

// Get from /gui/themes/default/images
// $tlCfg->OAuthServers[1]['oauth_client_id'] = 'CLIENT_ID';
// $tlCfg->OAuthServers[1]['oauth_client_secret'] = 'CLIENT_SECRET';
// Can be authorization_code (by default), client_credentials or password
// $tlCfg->OAuthServers[1]['oauth_grant_type'] = 'authorization_code';  
// $tlCfg->OAuthServers[1]['oauth_url'] = 'https://accounts.google.com/o/oauth2/auth';
// $tlCfg->OAuthServers[1]['token_url'] = 'https://accounts.google.com/o/oauth2/token';
// false => then the only user will be selected automatically (applied for google)
// $tlCfg->OAuthServers[1]['oauth_force_single'] = false; 
// the domain you want to whitelist
// $tlCfg->OAuthServers[1]['oauth_domain'] = 'google.com'; 
// $tlCfg->OAuthServers[1]['oauth_profile'] = 'https://www.googleapis.com/oauth2/v1/userinfo';
// $tlCfg->OAuthServers[1]['oauth_scope'] = 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile';

// Github
// $tlCfg->OAuthServers[2]['oauth_enabled'] = true;
// $tlCfg->OAuthServers[2]['oauth_name'] = 'github';
// $tlCfg->OAuthServers[2]['oauth_client_id'] = 'CLIENT_ID';
// $tlCfg->OAuthServers[2]['oauth_client_secret'] = 'CLIENT_SECRET';

// Can be authorization_code (by default), client_credentials or password
// $tlCfg->OAuthServers[2]['oauth_grant_type'] = 'authorization_code';  
// $tlCfg->OAuthServers[2]['oauth_url'] = 'https://github.com/login/oauth/authorize';

// $tlCfg->OAuthServers[2]['token_url'] = 'https://github.com/login/oauth/access_token';
// false => then the only user will be selected automatically (applied for google)
// $tlCfg->OAuthServers[2]['oauth_force_single'] = false; 
// $tlCfg->OAuthServers[2]['oauth_profile'] = 'https://api.github.com/user';
// $tlCfg->OAuthServers[2]['oauth_scope'] = 'user:email';

//Microsoft
//$tlCfg->OAuthServers[1]['oauth_enabled'] = true;
//$tlCfg->OAuthServers[1]['oauth_name'] = 'microsoft';
//$tlCfg->OAuthServers[1]['oauth_client_id'] = 'CLIENT_ID';
//$tlCfg->OAuthServers[1]['oauth_client_secret'] = 'CLIENT_SECRET';

// Can be authorization_code (by default), client_credentials or password
//$tlCfg->OAuthServers[1]['oauth_grant_type'] = 'authorization_code';
//$tlCfg->OAuthServers[1]['oauth_url'] = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize';

//$tlCfg->OAuthServers[1]['token_url'] = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
//$tlCfg->OAuthServers[1]['oauth_force_single'] = true;
//$tlCfg->OAuthServers[1]['oauth_profile'] = 'https://graph.microsoft.com/v1.0/me';
//$tlCfg->OAuthServers[1]['oauth_scope'] = 'User.Read';

//$tlCfg->OAuthServers[1]['redirect_uri'] = 'TESTLINKURL/microsoftoauth.php';


// Azure AD 
// Fill in CLIENT_ID,CLIENT_SECRET,YOURTESTLINKSERVER and TENANTID with your information
// See this article for registering an application: https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code
// Make sure, you grant admint consent for it: https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/configure-user-consent

// $tlCfg->OAuthServers[1]['oauth_enabled'] = true;
// $tlCfg->OAuthServers[1]['oauth_name'] = 'azuread'; //do not change this

// $tlCfg->OAuthServers[1]['oauth_client_id'] = 'CLIENT_ID';
// $tlCfg->OAuthServers[1]['oauth_client_secret'] = 'CLIENT_SECRET';
// $tlCfg->OAuthServers[1]['redirect_uri'] = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . '/login.php';

// $tlCfg->OAuthServers[1]['oauth_force_single'] = true; 

// $tlCfg->OAuthServers[1]['oauth_grant_type'] = 'authorization_code';  
// $tlCfg->OAuthServers[1]['oauth_url'] = 'https://login.microsoftonline.com/TENANTID/oauth2/authorize';
// $tlCfg->OAuthServers[1]['token_url'] = 'https://login.microsoftonline.com/TENANTID/oauth2/token';
// the domain you want to whitelist (email domains)
// $tlCfg->OAuthServers[1]['oauth_domain'] = 'autsoft.hu'; 
// $tlCfg->OAuthServers[1]['oauth_profile'] = 'https://login.microsoftonline.com/TENANTID/openid/userinfo';
// $tlCfg->OAuthServers[1]['oauth_scope'] = 'https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read openid profile email';

/**
 * Single Sign On authentication
 *
 * SSO_method: CLIENT_CERTIFICATE, tested with Apache Webserver
 * SSP_method: WEBSERVER_VAR, tested with Apache and Shibboleth Service Provider.
 */
$tlCfg->authentication['SSO_enabled'] = false; 
$tlCfg->authentication['SSO_logout_destination'] = 'YOUR LOGOUT DESTINATION';

// Tested with Apache Webserver
//$tlCfg->authentication['SSO_method'] = 'CLIENT_CERTIFICATE';
//$tlCfg->authentication['SSO_uid_field'] = 'SSL_CLIENT_S_DN_Email';

// Tested with Apache and Shibboleth Service Provider 
//$tlCfg->authentication['SSO_method'] = 'WEBSERVER_VAR';
//$tlCfg->authentication['SSO_uid_field'] = 'REMOTE_USER';
//$tlCfg->authentication['SSO_user_target_dbfield'] = 'email';


/**
 * LDAP authentication credentials, Multiple LDAP Servers can be used. 
 * User will be authenticaded against each server (one after other using array index order)
 * till authentication succeed or all servers have been used.
 */
$tlCfg->authentication['ldap'] = array();
$tlCfg->authentication['ldap'][1]['ldap_server'] = 'localhost';
$tlCfg->authentication['ldap'][1]['ldap_port'] = '389';
$tlCfg->authentication['ldap'][1]['ldap_version'] = '3'; // could be '2' in some cases
$tlCfg->authentication['ldap'][1]['ldap_root_dn'] = 'dc=mycompany,dc=com';
$tlCfg->authentication['ldap'][1]['ldap_bind_dn'] = ''; // Left empty for anonymous LDAP binding
$tlCfg->authentication['ldap'][1]['ldap_bind_passwd'] = ''; // Left empty for anonymous LDAP binding
$tlCfg->authentication['ldap'][1]['ldap_tls'] = false; // true -> use tls

// Following configuration parameters are used to build 
// ldap filter and ldap attributes used by ldap_search()
//
// filter => "(&$t_ldap_organization($t_ldap_uid_field=$t_username))";
// attributess => array( $t_ldap_uid_field, 'dn' );
// 
// This can be used to manage situation like explained on post on forum:
// ActiveDirectory + users in AD group
// 
$tlCfg->authentication['ldap'][1]['ldap_organization'] = ''; // e.g. '(organizationname=*Traffic)'
$tlCfg->authentication['ldap'][1]['ldap_uid_field'] = 'uid'; // Use 'sAMAccountName' for Active Directory

// Configure following fields in custom_config.inc.php according your configuration
$tlCfg->authentication['ldap'][1]['ldap_email_field'] = 'mail';
$tlCfg->authentication['ldap'][1]['ldap_firstname_field'] = 'givenname';
$tlCfg->authentication['ldap'][1]['ldap_surname_field'] = 'sn';


// Follows Mantisbt idea.
// True if user does not exist on DB, but can be get from LDAP, 
// the user will be created AUTOMATICALLY with default user role.
// Create user with following data from LDAP
// mail
// name
// surname
$tlCfg->authentication['ldap_automatic_user_creation'] = false;


/** Enable/disable Users to create accounts on login page */
$tlCfg->user_self_signup = TRUE;

/** What happens when Administrator push the Reset Password Button 
  'send_password_by_mail'
  'display_on_screen'
*/
$tlCfg->password_reset_send_method = 'send_password_by_mail';

/** 
 * Validating new user login names
 * Taken mantisbt version 1.2.5 - www.mantisbt.org and adapted
 *
 * The regular expression to use when validating new user login names
 * The default regular expression allows a-z, A-Z, 0-9, +, -, dot, @ and underscore.   
 * For testing regular expressions, use http://rubular.com/.
 * For regular expression to englihs, use http://xenon.stanford.edu/~xusch/regexp/analyzer.html
 */
$tlCfg->validation_cfg->user_login_valid_regex='/^([a-z\d\-.+_@]+(@[a-z\d\-.]+\.[a-z]{2,4})?)$/i';

/**
 * Validating user email addresses
 * Example of other possibilities:
 * <code>
 * $regex = "/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*" .
 *     "@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i";
 * $regex = "/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/";
 * </code>
 **/
// 
// This expression does not allow Top Level Domian (last part of domain name) longer than 4
// If you need to change this
// Configure this on custom_config.inc.php
$tlCfg->validation_cfg->user_email_valid_regex_js =  "/^(\w+)([-+.][\w]+)*@(\w[-\w]*\.){1,5}([A-Za-z]){2,4}$/";
$tlCfg->validation_cfg->user_email_valid_regex_php = "/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/U";


// --------------------------------------------------------------------------------------
/* [API] */

/** XML-RPC API availability - do less than promised ;) 
    FALSE => user are not able to generate and set his/her API key.
    XML-RPC server do not check this config in order to answer or not a call.
 */

$tlCfg->api->enabled = TRUE;

// used to display API ID info in the *View pages
$tlCfg->api->id_format = "[ID: %s ]";


// ---------------------------------------------------------------------------------
/* [GUI LAYOUT] */

/** Company logo (used by navigation bar and login page page) */
$tlCfg->logo_login = 'tl-logo-transparent-25.png';
$tlCfg->logo_navbar = 'tl-logo-transparent-12.5.png';

/** Height of the navbar always displayed  */
$tlCfg->navbar_height = 70;

/** Login page could show an informational text */
$tlCfg->login_info = ''; // Empty by default



/** 
 * controls if pagination (via Javascript) will be enabled
 */
$tlCfg->gui->projectView = new stdClass();
$tlCfg->gui->projectView->pagination = new stdClass();
$tlCfg->gui->projectView->pagination->enabled = true;
$tlCfg->gui->projectView->pagination->length = '[20, 40, 60, -1], [20, 40, 60, "All"]';

$tlCfg->gui->usersAssign = new stdClass();
$tlCfg->gui->usersAssign->pagination = new stdClass();
$tlCfg->gui->usersAssign->pagination->enabled = true;
$tlCfg->gui->usersAssign->pagination->length = '[20, 40, 60, -1], [20, 40, 60, "All"]';

$tlCfg->gui->planView = new stdClass();
$tlCfg->gui->planView->pagination = new stdClass();
$tlCfg->gui->planView->pagination->enabled = true;
$tlCfg->gui->planView->pagination->length = '[20, 40, 60, -1], [20, 40, 60, "All"]';
$tlCfg->gui->planView->itemQtyForTopButton = 10;

$tlCfg->gui->buildView = new stdClass();
$tlCfg->gui->buildView->itemQtyForTopButton = 10;


/** 
 * controls if operation area (buttons) starts open ('' or 'inline') or closed ('none') on:
 * - test suite management
 * - test case management
 * - req. spec management
 * - req. management
 */
$tlCfg->gui->op_area_display = new stdClass();

// test_spec_container => test project, test suite
$tlCfg->gui->op_area_display->test_spec_container = 'none'; // ''
$tlCfg->gui->op_area_display->test_case = 'none'; // 'inline'
$tlCfg->gui->op_area_display->req_spec_container = 'none'; // 'inline'
$tlCfg->gui->op_area_display->req = 'none'; // 'inline'



/**
 * @var string Availability of Test Project specific background colour
 * 'background'  -> standard behaviour for 1.6.x you can have a different
 *                  background colour for every test project.
 * 'none'        -> new behaviour no background color change
 */
$tlCfg->gui->testproject_coloring = 'none'; // I'm sorry default is not coloring using coloring is a pain
                                            // and useless
/** @TODO havlatm4francisco Ok, then merge these two attributes into one */
/** default background color */
$tlCfg->gui->background_color = '#9BD';

// ENABLED: on features that assign user role to test projects and test plan, colour user name
//          according GLOBAL role
// DISABLED: do not color [STANDARD BEHAVIOUR]
$tlCfg->gui->usersAssignGlobalRoleColoring = DISABLED;


// Enable/disable rounded corners via javascript
$tlCfg->gui->round_corners = new stdClass();
$tlCfg->gui->round_corners->exec_history = ENABLED;
$tlCfg->gui->round_corners->tc_title = ENABLED;
$tlCfg->gui->round_corners->tc_spec = ENABLED;

/**
 * Display name definition (used to build a human readable display name for users)
 * Example of values:
 *    '%first% %last%'          -> John Cook
 *    '%last%, %first%'          -> Cook John
 *    '%first% %last% %login%'    -> John Cook [ux555]
 **/
$tlCfg->username_format = '%login%';

/** Configure the frame frmWorkArea navigator width */
$tlCfg->frame_workarea_default_width = "30%";

/** true => icon edit will be added into <a href> as indication an edit features */
$tlCfg->gui->show_icon_edit = false;

/**
 * ''       => test project name
 * 'prefix' => prefix : test project name
 *
 * ATTENTION : * is used to indicate test project is INACTIVE
 *             see also $tlCfg->gui->tprojects_combo_order_by
 */
$tlCfg->gui->tprojects_combo_format = 'prefix';


/**
 * Order to use when building a testproject combobox (value must be SQL compliant)
 * For example:
 *    'ORDER BY name'
 *    'ORDER_BY nodes_hierarchy.id DESC' -> similar effect to order last created firts
 **/
// $tlCfg->gui->tprojects_combo_order_by = 'ORDER BY nodes_hierarchy.id DESC';
$tlCfg->gui->tprojects_combo_order_by = 'ORDER BY TPROJ.prefix ASC';



/** Configure the input size of test case search by id on navigation bar.
 *  This value will be added to the length of the prefix to dynamically set input size.
 *  Example: prefix is "projectA-" -> length of prefix is 9
 *  Now the here defined value (default: 6) will be added to the prefix length
 *  -> Input field will have an input size of 15
 **/
$tlCfg->gui->dynamic_quick_tcase_search_input_size = 6;

// used to round percentages on metricsDashboard.php
$tlCfg->dashboard_precision = 2;

/**
 * Choose what kind of webeditor you want to use in every TL area. This configuration
 * will be used if no element with search key (area) is found on this structure.
 * Every element is a mp with this configuration keys:
 *
 * 'type':
 *        'ckeditor'
 *        'tinymce'    ==> will be deprecated in future versions
 *        'none' -> use plain text area input field
 * 'toolbar': only applicable for type = 'fckeditor', 'ckeditor'
 *      name of ToolbarSet  (See: http://docs.fckeditor.net/ for more information about ToolbarSets)
 *      TestLink stores own definitions in <testlink_dir>/cfg/tl_ckeditor_config.js
 *
 *
 * The next keys/areas are supported:
 *    'all' (default setting),
 *    'design', 'steps_design', 'testplan', 'build', 'testproject', 'role', 'requirement', 'requirement_spec'.
 *
 * Examples:
 * <code>
 * // Copy this to custom_config.inc.php if you want use 'tinymce' as default.
 * $tlCfg->gui->text_editor['all'] = array( 'type' => 'tinymce');
 * // Copy this to custom_config.inc.php if you want use 'nome' as default.
 * $tlCfg->gui->text_editor['all'] = array( 'type' => 'none');
 * //This configuration is useful only if default type is set to 'fckeditor'
 * $tlCfg->gui->text_editor['design'] = array('toolbar' => 'tl_mini');
 *
 * $tlCfg->gui->text_editor['testplan'] = array( 'type' => 'none');
 * $tlCfg->gui->text_editor['build'] = array( 'type' => 'fckeditor','toolbar' => 'tl_mini');
 * $tlCfg->gui->text_editor['testproject'] = array( 'type' => 'tinymce');
 * $tlCfg->gui->text_editor['role'] = array( 'type' => 'tinymce');
 * $tlCfg->gui->text_editor['requirement'] = array( 'type' => 'none');
 * $tlCfg->gui->text_editor['requirement_spec'] = array( 'type' => 'none');
 * </code>
 *
 * Hint: After doing configuration changes, clean you Browser's cookies and cache
 */
/*
$tlCfg->gui->text_editor = array();
$tlCfg->gui->text_editor['all'] = array('type' => 'fckeditor',
                                      'toolbar' => 'tl_default',
                                      'configFile' => 'cfg/tl_ckeditor_config.js',);
$tlCfg->gui->text_editor['execution'] = array( 'type' => 'none');
*/

$tlCfg->gui->text_editor = array();
$tlCfg->gui->text_editor['all'] = array('type' => 'ckeditor','toolbar' => 'Testlink',
                                        'configFile' => 'cfg/tl_ckeditor_config.js',
                                        'height' => 150);

// mini toolbar for test case steps edit
$tlCfg->gui->text_editor['steps_design'] = array('type' => 'ckeditor','toolbar' => 'TestlinkMini',
                                                 'configFile' => 'cfg/tl_ckeditor_config.js',
                                                 'height' => 100);

$tlCfg->gui->text_editor['execution'] = array( 'type' => 'none');
$tlCfg->gui->text_editor['edit_execution'] = array( 'type' => 'none', 'cols' => 80, 'rows' => 20);
$tlCfg->gui->text_editor['display_execution_notes'] = array('type' => 'none', 'cols' => 80, 'rows' => 20);

/** User can choose order of menu areas */
$tlCfg->gui->layoutMainPageLeft = array( 'testProject' => 1, 'userAdministration' => 2 ,
                                         'requirements' => 3, 'testSpecification' => 4,
                                         'general' => 5);
$tlCfg->gui->layoutMainPageRight = array( 'testPlan' => 1, 'testExecution' => 2 ,
                                          'testPlanContents' => 3);

/**
 * Enable warning on a changed content before an user leave a page.
 *
 * Tested in:
 * - IE8        OK
 * - Firefox 3  OK
 * - Chrome     FAIL
 *
 * Does not work in Webkit browsers (Chrome, Safari) when using frames.
 * Bug in webkit: https://bugs.webkit.org/show_bug.cgi?id=19418
 */

// seems that with config options that will be used on javascript via smarty template variables
// we are having problems using FALSE/TRUE => use 0/1 (or our CONSTANT DISABLED/ENABLED)
$tlCfg->gui->checkNotSaved = ENABLED;


// ----------------------------------------------------------------------------
/* [GUI: TREE] */

/** Default ordering value for new Test Suites and Test Cases to separate them */
$tlCfg->treemenu_default_testsuite_order = 1;
$tlCfg->treemenu_default_testcase_order = 1000;

/** show/hide testcase id on tree menu */
$tlCfg->treemenu_show_testcase_id = TRUE;

/** Reorder test cases based on TC Name or External ID in tree on
 *  test suite level using reorder button 
 */
// 'EXTERNAL_ID' -> Sort on Test Case External ID field displayed on tree.(Default)
// 'NAME' -> Sort on Test Case Name field

$tlCfg->testcase_reorder_by = 'EXTERNAL_ID';
// $tlCfg->testcase_reorder_by = 'NAME';

// ----------------------------------------------------------------------------
/* [GUI: Javascript libraries] */

// May be in future another table sort engine will be better
// kryogenix.org -> Stuart Langridge sortTable
// '' (empty string) -> disable table sorting feature
$g_sort_table_engine='kryogenix.org';


// --------------------------------------------------------------------------------------
/* [Reports] */
$tlCfg->reportsCfg=new stdClass();

//Displayed execution statuses to use on reports (ordered). */
$tlCfg->reportsCfg->exec_status = $tlCfg->results['status_label_for_exec_ui'];

/**
 * Default Offset in seconds for reporting start date (reports with date range)
 * @uses lib/results/resultsMoreBuilds.php
 */
$tlCfg->reportsCfg->start_date_offset = (7*24*60*60); // one week

// minutes part is ignored but must be configured.
// Hint: set always to :00
$tlCfg->reportsCfg->start_time = '00:00';

// Result matrix (resultsTC.php)
$tlCfg->resultMatrixReport = new stdClass();

// Shows an extra column with the result of the latest execution on
// the lastest CREATED build
$tlCfg->resultMatrixReport->buildColumns['showExecutionResultLatestCreatedBuild'] = true;

// Result matrix (resultsTC.php)
// Shows an extra column with the note of latest execution on 
// the lastest CREATED build
$tlCfg->resultMatrixReport->buildColumns['showExecutionNoteLatestCreatedBuild'] = true;

// Show build columns in revers order. The latest build is to the left
$tlCfg->resultMatrixReport->buildColumns['latestBuildOnLeft'] = false;

// After having got performance and usability issue, a limit on max qty of builds
// allowed on data extration has been set.
// Is absolutely arbitrary
// 
$tlCfg->resultMatrixReport->buildQtyLimit = 6;

// ORDER BY sql clause, refers to builds table columns
$tlCfg->resultMatrixReport->buildOrderByClause = " ORDER BY name ASC";


// Show all available status details for test plans on metrics dashboard 
$tlCfg->metrics_dashboard = new stdClass();
$tlCfg->metrics_dashboard->show_test_plan_status = false;




// ----------------------------------------------------------------------------
/* [GENERATED DOCUMENTATION] */

/**
 * Texts and settings for printed documents
 * Image is expected in directory <testlink_root>/gui/themes/<your_theme>/images/
 * Leave text values empty if you would like to hide parameters.
 */
$tlCfg->document_generator->company_name = 'TestLink Community [configure $tlCfg->document_generator->company_name]';
$tlCfg->document_generator->company_copyright = '2012 &copy; TestLink Community';
$tlCfg->document_generator->confidential_msg = '';

// Logo for generated documents
$tlCfg->document_generator->company_logo = $tlCfg->logo_login;
$tlCfg->document_generator->company_logo_height = '53';

/** CSS used in printed html documents */
$tlCfg->document_generator->css_template = 'css/tl_documents.css';

// CSS file for Requirement Specification Document, Requirement and Requirement Spec Print View
$tlCfg->document_generator->requirement_css_template = 'css/tl_documents.css';

/** Misc settings */
// Display test case version when creating:
// - test spec document
// - test reports
$tlCfg->document_generator->tc_version_enabled = TRUE;



// ----------------------------------------------------------------------------
/* [Test Executions] */

// $tlCfg->exec_cfg->enable_test_automation = DISABLED;

// ENABLED -> enable XML-RPC calls to external test automation server
//            new buttons will be displayed on execution pages
// DISABLED -> disable
$tlCfg->exec_cfg->enable_test_automation = DISABLED;


// ASCending   -> last execution at bottom
// DESCending  -> last execution on top      [STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->history_order = 'DESC';

// TRUE  -> the whole execution history for the choosen build will be showed
// FALSE -> just last execution for the choosen build will be showed [STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->history_on = FALSE;

// TRUE  ->  test case VERY LAST (i.e. in any build) execution status will be displayed [STANDARD BEHAVIOUR]
// FALSE -> only last result on current build.
$tlCfg->exec_cfg->show_last_exec_any_build = TRUE;

// TRUE  ->  History for all builds will be shown
// FALSE ->  Only history of the current build will be shown  [STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->show_history_all_builds = FALSE;

// TRUE  ->  History for all platforms (if any exists for test plan) will be shown
// FALSE ->  Only history of the current platform will be shown  [STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->show_history_all_platforms = FALSE;

// different models for the attachments management on execution page
// $att_model_m1 ->  shows upload button and title
// $att_model_m2 ->  hides upload button and title
$tlCfg->exec_cfg->att_model = $att_model_m2;   //defined in const.inc.php

// IVU
// Default Value
// USE_LATEST_EXEC_ON_CONTEX_FOR_COUNTERS
// USE_LATEST_EXEC_ON_TESTPLAN_FOR_COUNTERS
// USE_LATEST_EXEC_ON_TESTPLAN_PLAT_FOR_COUNTERS
$tlCfg->exec_cfg->tcases_counters_mode = array();
$tlCfg->exec_cfg->tcases_counters_mode['with_platforms'] =
  USE_LATEST_EXEC_ON_CONTEX_FOR_COUNTERS;

$tlCfg->exec_cfg->tcases_counters_mode['without_platforms'] =
  USE_LATEST_EXEC_ON_TESTPLAN_FOR_COUNTERS;


$tlCfg->exec_cfg->tcases_counters_mode_domain = array();
$tlCfg->exec_cfg->tcases_counters_mode_domain['with_platforms'] =
  array('USE_LATEST_EXEC_ON_CONTEX_FOR_COUNTERS',
        'USE_LATEST_EXEC_ON_TESTPLAN_FOR_COUNTERS',
        'USE_LATEST_EXEC_ON_TESTPLAN_PLAT_FOR_COUNTERS'); 

$tlCfg->exec_cfg->tcases_counters_mode_domain['without_platforms'] =
  array('USE_LATEST_EXEC_ON_CONTEX_FOR_COUNTERS',
        'USE_LATEST_EXEC_ON_TESTPLAN_FOR_COUNTERS'); 




// ENABLED -> test cases will be coloured according to test case status
$tlCfg->exec_cfg->enable_tree_testcases_colouring = ENABLED;

// ENABLED -> test cases will be coloured according to execution status on build selected for execution
// DISABLED -> test cases will be coloured according status on latest execution regardless of selected build
// see http://mantis.testlink.org/view.php?id=3450 for more details 
$tlCfg->exec_cfg->testcases_colouring_by_selected_build = ENABLED;

// ENABLED -> test case counters will be coloured according to test case status
$tlCfg->exec_cfg->enable_tree_counters_colouring = ENABLED;


// This can help to avoid performance problems.
// Controls what happens on right frame when user clicks on a testsuite on tree.
// ENABLED -> show all test cases 
//            see $tlCfg->exec_cfg->show_testsuite_contents_deep
// 
// DISABLED -> nothing happens, to execute a test case you need to click on test case
$tlCfg->exec_cfg->show_testsuite_contents = DISABLED;

// @since 1.9.13
// works in 'team' with $tlCfg->exec_cfg->show_testsuite_contents 
// children: only direct children.
// deep: all test cases present in test suite and test suites in any level below 
//       selected test suite.
// IMPORTANT NOTICE:
// selecting deep can create performance issues.
// 
$tlCfg->exec_cfg->show_testsuite_contents_deep = 'children';


// ENABLED -> enable testcase counters by status on tree
$tlCfg->exec_cfg->enable_tree_testcase_counters = ENABLED;


// Define list of roles that are affected by:
// $tlCfg->exec_cfg->view_mode and $tlCfg->exec_cfg->exec_mode
// User must reconfigure if define other simple tester roles
//
// In addition (till code changes) also roles that verify this condition:
// $effective_role->hasRight('testplan_execute') and !$effective_role->hasRight('testplan_planning')
// Will be affected by:
// $tlCfg->exec_cfg->view_mode and $tlCfg->exec_cfg->exec_mode
//
$tlCfg->exec_cfg->simple_tester_roles=array(TL_ROLES_TESTER);

// Filter Test cases a user with tester role can VIEW depending on
// test execution assignment.
// all: all test cases.
// assigned_to_me: test cases assigned to logged user.
// assigned_to_me_or_free: test cases assigned to logged user or not assigned
$tlCfg->exec_cfg->view_mode->tester='assigned_to_me';

// Filter Test cases a user with tester role can EXECUTE depending on
// test execution assignment.
// all: all test cases.
// assigned_to_me: test cases assigned to logged user.
// assigned_to_me_or_free: test cases assigned to logged user or not assigned
$tlCfg->exec_cfg->exec_mode->tester='assigned_to_me';


// How to set defaut values for execution fields (standard & custom) 
// clean => all clean 
// latest => get as much as possible values from latest execution on
//           same context => test plan,platform, build
$tlCfg->exec_cfg->exec_mode->new_exec='clean';


// @since 1.9.15
// Before 1.9.15 save & move to next worked JUST inside
// a test suite => save_and_move = 'limited'
// 1.9.15 will move on whole test project
// save_and_move = 'unlimited'
$tlCfg->exec_cfg->exec_mode->save_and_move='unlimited';

$tlCfg->exec_cfg->exec_mode->addLinkToTLChecked = false;
$tlCfg->exec_cfg->exec_mode->addLinkToTLPrintViewChecked = false;
$tlCfg->exec_cfg->exec_mode->assignTaskChecked = false;


/** User filter in Test Execution navigator - default value */
// logged_user -> combo will be set to logged user
// none        -> no filter applied by default
$tlCfg->exec_cfg->user_filter_default='none';


// 'horizontal' ->  step and results on the same row
// 'vertical'   ->  steps on one row, results in the row bellow
$tlCfg->exec_cfg->steps_results_layout = 'horizontal';

// true => on single test case execution feature, notes and result
//         can be provided for each step
// false => pre 1.9.10 behaviour
// 
$tlCfg->exec_cfg->steps_exec = true;

// this setting will work on AND mode with: 
// $tlCfg->exec_cfg->steps_exec
$tlCfg->exec_cfg->steps_exec_attachments = true;

// When textarea is displayed to allow user to write execution notes
// at step level, choose what to display:
// 'empty'
// 'latest' => latest execution notes.
$tlCfg->exec_cfg->steps_exec_notes_default = 'empty';


// 'empty'
// 'latest' => latest execution notes.
$tlCfg->exec_cfg->steps_exec_status_default = 'empty';

// Parameters to show notes/details when entering test execution feature
// EXPAND: show expanded/open
// COLLAPSE: show collapsed/closede
// LAST_USER_CHOICE: get status from cookie that holds last user choice.[STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->expand_collapse = new stdClass();
$tlCfg->exec_cfg->expand_collapse->testplan_notes = LAST_USER_CHOICE;
$tlCfg->exec_cfg->expand_collapse->platform_description = LAST_USER_CHOICE;
$tlCfg->exec_cfg->expand_collapse->build_description = LAST_USER_CHOICE;
$tlCfg->exec_cfg->expand_collapse->testsuite_details = LAST_USER_CHOICE;



$tlCfg->exec_cfg->copyLatestExecIssues = new stdClass();

// true => When saving an execution, a new option will be displayed, and user will be
//         able to do a choice
//         COPY OR NOT issues linked to latest execution to the new execution
// DEAFULT false => no option on GUI

$tlCfg->exec_cfg->copyLatestExecIssues->enabled = FALSE;


// value to set as default
$tlCfg->exec_cfg->copyLatestExecIssues->default = FALSE;

// you can choose only between columns present on
// (see exec.inc.php, function get_bugs_for_exec())
$tlCfg->exec_cfg->bugs_order_clause = ' ORDER BY builds.name,step_number,bug_id ';

$tlCfg->exec_cfg->features = new stdClass();
$tlCfg->exec_cfg->features->attachments = new stdClass();
$tlCfg->exec_cfg->features->attachments->enabled = true;
$tlCfg->exec_cfg->features->exec_duration = new stdClass();
$tlCfg->exec_cfg->features->exec_duration->enabled = true;

$tlCfg->exec_cfg->issues = new stdClass();
$tlCfg->exec_cfg->issues->tcase_level = new stdClass();
$tlCfg->exec_cfg->issues->tcstep_level = new stdClass();

/**
 * %%STEPNUMBER%%,%%TCNAME%%,%%PROJECTNAME%%,%%PLANNAME%%
 * %%BUILDNAME%%,%%PLATFNAME%%,%%EXECTSISO%%,
 * %%TCPATHNAME%%
 *
 * /saado/TS100/SAA-4:WSTEPS  Executed ON (ISO FORMAT): 2018-02-25CET10:00
 */
$tlCfg->exec_cfg->issues->tcase_level->subject = 
'$$issue_subject_tcname %%TCPATHNAME%% - $$issue_subject_execon %%EXECTSISO%% ';

/*
$tlCfg->exec_cfg->issues->tcstep_level->subject = 
'$$issue_on_step %%STEPNUMBER%% - $$issue_subject_tcname %%TCNAME%% - ' .
'$$issue_subject_projectname %%PROJECTNAME%% - ' .
'$$issue_subject_planname %%PLANNAME%% - ' .
'$$issue_subject_buildname %%BUILDNAME%% - ' . 
'$$issue_subject_platfname %%PLATFNAME%%';
*/

$tlCfg->exec_cfg->issues->tcstep_level->subject = '$$issue_on_step %%STEPNUMBER%% - $$issue_subject_tcname %%TCNAME%% ';


// ----------------------------------------------------------------------
/* [Test Specification] */

// TRUE will be displayed when displayed a test case
$tlCfg->spec_cfg->show_tplan_usage = TRUE;

// 'horizontal' ->  step and results on the same row
// 'vertical'   ->  steps on one row, results in the row bellow
$tlCfg->spec_cfg->steps_results_layout = 'horizontal';


// ENABLED -> User will see a test suite filter while creating test specification
// DISABLED -> no filter available
// $g_spec_cfg->show_tsuite_filter = ENABLED;
$tlCfg->spec_cfg->show_tsuite_filter = ENABLED;

// ENABLED -> every time user do some operation on test specification
//            tree is updated on screen.
// DISABLED -> tree will not be updated, user can update it manually.
// Anyway on user interface user will be able to change this choice
// $g_spec_cfg->automatic_tree_refresh = ENABLED;
$tlCfg->spec_cfg->automatic_tree_refresh = ENABLED;


// To avoid perfomance problems on search test case feature,
// we can decide when to inform user that results can not be displayed
// due to too many results.
$tlCfg->testcase_cfg->search=new stdClass();
$tlCfg->testcase_cfg->search->max_qty_for_display=200;


$tlCfg->testcase_cfg->duplicated_name_algorithm = new stdClass();
// 'stringPrefix' => use duplicated_name_algorithm->text
// 'counterSuffix' => creare name as :
//                    test case title  + (number of existent test cases +1)
//                    example: My Test Title 2
//                    duplicated_name_algorithm->text is used as sprintf format mask
$tlCfg->testcase_cfg->duplicated_name_algorithm->type = 'stringPrefix';
$tlCfg->testcase_cfg->duplicated_name_algorithm->text = "%Y%m%d-%H:%M:%S";

// $tlCfg->testcase_cfg->duplicated_name_algorithm->type = 'counterSuffix';
// $tlCfg->testcase_cfg->duplicated_name_algorithm->text = " (%s)";


// TICKET 6422: Estimation in Test specification as mandatory field
// Implemented using HTML5
$tlCfg->testcase_cfg->estimated_execution_duration = new stdClass();
// $tlCfg->testcase_cfg->estimated_execution_duration->required = 'required';
$tlCfg->testcase_cfg->estimated_execution_duration->required = '';



// There are some preconfigured standard types which you can use,
// additionally you can configure your own types.
$tlCfg->testcase_cfg->relations = new stdClass();
$tlCfg->testcase_cfg->relations->enable = TRUE;
$tlCfg->testcase_cfg->relations->interproject_linking = FALSE;


/** 
 * Localization identifiers for test cases relation types
 * Types, which are configured above, have to be configured 
 * here too with attributes "source" and "destination".
 *
 * Last value will be selected in GUI as default.
 * 
 * Form has to be like this:
 * 
 * ... = array(
 *    RELATIONNAME => array(
 *      'source' => 'SOURCE_LOCALIZATION_KEY',
 *      'destination' => 'DESTINATION_LOCALIZATION_KEY'),
 *    ...
 * 
 * @since TestLink 1.9.12
 **/

$tlCfg->testcase_cfg->relations->type_labels = array(
  TL_REL_TYPE_PARENT_CHILD => array('source' => 'parent_of','destination' => 'child_of'),
  TL_REL_TYPE_BLOCKS_DEPENDS => array('source' => 'blocks','destination' => 'depends'),
  TL_REL_TYPE_RELATED => array('source' => 'related_to','destination' => 'related_to')
);



$tlCfg->testcase_cfg->relations->type_description = array(TL_REL_TYPE_PARENT_CHILD => 'parent_child',
                                                          TL_REL_TYPE_BLOCKS_DEPENDS => 'blocks_depends',
                                                          TL_REL_TYPE_RELATED => 'related_to');




// @since 1.9.18
// TRUE => After a test case version has been executed 
//         attachment on test case spec can not be added/removed
//         
// FALSE  
//
// This means that at GUI Level, will not be possible:
// add a new attachment to an Executed Test Case Version
// delete an attachment from Executed Test Case Version
$tlCfg->testcase_cfg->downloadOnlyAfterExec = TRUE;

// This means that at GUI Level, will not be possible:
// add a new req version link to an Executed Test Case Version
// delete a req version link from Executed Test Case Version
$tlCfg->testcase_cfg->reqLinkingDisabledAfterExec = TRUE;

// Effects on Linked Requirements Version after 
// execution of a Test Case Version
$tlCfg->testcase_cfg->freezeReqVersionAfterExec = TRUE;


// Effects on TCVersion N when TCVersion N+1 is created 
$tlCfg->testcase_cfg->freezeTCVersionOnNewTCVersion = TRUE;
$tlCfg->testcase_cfg->freezeTCVRelationsOnNewTCVersion = TRUE;

// Because: 
// The Relation must be frozen (cannot be deleted) when 
// a new version of the test case is created.
//
// It seems confusing that relation can be added, then
// this new configuration will allow this operation
// only on latest test case version
// 
$tlCfg->testcase_cfg->addTCVRelationsOnlyOnLatestTCVersion = TRUE;


// Not Already Implemented
//$tlCfg->testcase_cfg->allowAddTCVRelationsOnOldTCVersion = TRUE;

//$tlCfg->testcase_cfg->frozenNotExecutedTCVDelAttachtments = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVAddAttachtments = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVAddTCVRel = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVDelTCVRel = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVAddREQVLink = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVDelREQVLink = FALSE;


// Change order using CSS flexbox model
// @used-by tcEdit.tpl
$tlCfg->testcase_cfg->viewerFieldsOrder = new stdClass();
$tlCfg->testcase_cfg->viewerFieldsOrder->summary = 3;
$tlCfg->testcase_cfg->viewerFieldsOrder->spaceOne = 2;
$tlCfg->testcase_cfg->viewerFieldsOrder->preconditions = 1;





// Effects on Req Version to TCVersion LINK 
// when a new version of a linked Test Case is created
// If LINK is frozen, then this means that link can not be deleted.
// $tlCfg->reqTCLinks->freezeLinkOnNewTCVersion = FALSE;
//
// Important Notice:
// Req Version to TCVersion Link can be done ONLY TO LATEST TCV.
// 
// This means that :
// 
// on GUI on the Requirements Area on TEST CASE Specification Feature:
// this option has NO EFFECT 
//
// on GUI on the Coverage Area on REQUIREMENT Specification Feature:
// this option has EFFECT
//
// on GUI on the Assign Requirements Feature:
// this option has EFFECT
//
$tlCfg->reqTCLinks->freezeLinkOnNewTCVersion = TRUE;

// Effects on Req Version to TCVersion LINK 
// when a new version of a linked Req Version is created
$tlCfg->reqTCLinks->freezeLinkOnNewREQVersion = TRUE;


// Effects on BOTH ends of Req Version to TCVersion LINK 
// when a new version of a linked TC Version is created
$tlCfg->reqTCLinks->freezeBothEndsOnNewTCVersion = TRUE;

// Effects on BOTH ends of Req Version to TCVersion LINK 
// when a new version of a linked REQ Version is created
$tlCfg->reqTCLinks->freezeBothEndsOnNewREQVersion = TRUE;


// Effects on REQ Version N when REQ Version N+1 is created 
$tlCfg->req_cfg->freezeREQVersionOnNewREQVersion = TRUE;


/** text template for a new items:
    Test Case: summary, steps, expected_results, preconditions

*/
// object members has SAME NAME that FCK editor objects.
// the logic present on tcEdit.php is dependent of this rule.
// every text object contains an object with following members: type and value
//
// Possible values for type member:
// none: template will not be used, default will be a clean editor screen.
//
// string: value of value member is assigned to FCK object
// string_id: value member is used in a lang_get() call, and return value
//       is assigned to FCK object. Configure string_id on custom_strings.txt
// value: value member is used as file name.
//       file is readed and it's contains assigned to FCK object
//
// any other value for type, results on '' assigned to FCK object

$tlCfg->testcase_template = new stdClass();

$tlCfg->testcase_template->summary = new stdClass();
$tlCfg->testcase_template->summary->type = 'none';
$tlCfg->testcase_template->summary->value = '';

$tlCfg->testcase_template->steps = new stdClass();
$tlCfg->testcase_template->steps->type = 'none';
$tlCfg->testcase_template->steps->value = '';

$tlCfg->testcase_template->expected_results = new stdClass();
$tlCfg->testcase_template->expected_results->type = 'none';
$tlCfg->testcase_template->expected_results->value = '';

$tlCfg->testcase_template->preconditions = new stdClass();
$tlCfg->testcase_template->preconditions->type = 'none';
$tlCfg->testcase_template->preconditions->value = '';


/** text template for a new Test Suite description */
$tlCfg->testsuite_template = new stdClass();
$tlCfg->testsuite_template->details = new stdClass();
$tlCfg->testsuite_template->details->type = 'none';
$tlCfg->testsuite_template->details->value = '';

$tlCfg->project_template = new stdClass();
$tlCfg->project_template->notes  = new stdClass();
$tlCfg->project_template->notes->type = 'none';
$tlCfg->project_template->notes->value = '';

$tlCfg->testplan_template = new stdClass();
$tlCfg->testplan_template->notes = new stdClass();
$tlCfg->testplan_template->notes->type = 'none';
$tlCfg->testplan_template->notes->value = '';

$tlCfg->execution_template = new stdClass();
$tlCfg->execution_template->bulk_exec_notes = new stdClass();
$tlCfg->execution_template->bulk_exec_notes->type = 'none';
$tlCfg->execution_template->bulk_exec_notes->value = '';

$tlCfg->execution_template->notes = new stdClass();
$tlCfg->execution_template->notes->type = 'none';
$tlCfg->execution_template->notes->value = '';

$tlCfg->build_template = new stdClass();
$tlCfg->build_template->notes = new stdClass();
$tlCfg->build_template->notes->type = 'none';
$tlCfg->build_template->notes->value = '';

$tlCfg->requirement_template = new stdClass();
$tlCfg->requirement_template->scope = new stdClass();
$tlCfg->requirement_template->scope->type = 'none';
$tlCfg->requirement_template->scope->value = '';

$tlCfg->req_spec_template = new stdClass();
$tlCfg->req_spec_template->scope = new stdClass();
$tlCfg->req_spec_template->scope->type = 'none';
$tlCfg->req_spec_template->scope->value = '';

$tlCfg->role_template = new stdClass();
$tlCfg->role_template->notes = new stdClass();
$tlCfg->role_template->notes->type = 'none';
$tlCfg->role_template->notes->value = '';


$tlCfg->platform_template = new stdClass();
$tlCfg->platform_template->notes = new stdClass();
$tlCfg->platform_template->notes->type = 'none';
$tlCfg->platform_template->notes->value = '';

// ----------------------------------------------------------------------------
/* [ATTACHMENTS] */

/** Attachment feature availability */
$tlCfg->attachments = new stdClass();
$tlCfg->attachments->enabled = TRUE;

// TRUE -> when you upload a file you can give no title
$tlCfg->attachments->allow_empty_title = TRUE;

// $tlCfg->attachments->allow_empty_title == TRUE, you can ask the system
// to do something
//
// 'none'         -> just write on db an empty title
// 'use_filename' -> use filename as title
//$tlCfg->attachments->action_on_save_empty_title='use_filename';
//
$tlCfg->attachments->action_on_save_empty_title = 'none';

// Remember that title is used as link description for download
// then if title is empty, what the system has to do when displaying ?
// 'show_icon'  -> the $tlCfg->attachments->access_icon will be used.
// 'show_label' -> the value of $tlCfg->attachments->access_string will be used .
$tlCfg->attachments->action_on_display_empty_title = 'show_icon';

// Set display order of uploaded files 
$tlCfg->attachments->order_by = " ORDER BY date_added DESC ";


// need to be moved AFTER include of custom_config
//
// $tlCfg->attachments->access_icon = '<img src="' . $tlCfg->theme_dir . 'images/new_f2_16.png" style="border:none" />';
$tlCfg->attachments->access_string = "[*]";

/**
 * Files that are allowed.  Separate items by commas.
 * eg. 'doc,xls,gif,png,jpg'
 */
$tlCfg->attachments->allowed_files = 'doc,xls,gif,png,jpg,xlsx,csv';


/**
 * Process filename against XSS
 * Thanks to http://owasp.org/index.php/Unrestricted_File_Upload
 *   '/^[a-zA-Z0-9]{1,20}\.[a-zA-Z0-9]{1,10}$/'; 
 *   added - and _.
 * 
 * NO CHECK if -> $g_attachments->allowed_filenames_regexp = '';
 *
 */
$tlCfg->attachments->allowed_filenames_regexp = '/^[a-zA-Z0-9_-]{1,20}\.[a-zA-Z0-9]{1,10}$/';


/** the type of the repository can be database or filesystem
 * TL_REPOSITORY_TYPE_DB => database
 * TL_REPOSITORY_TYPE_FS => filesystem
 **/
$g_repositoryType = TL_REPOSITORY_TYPE_FS;

/**
 * TL_REPOSITORY_TYPE_FS: the where the filesystem repository should be located
 * We recommend to change the directory for security reason.
 * (see http://itsecuritysolutions.org/2012-08-13-TestLink-1.9.3-multiple-vulnerabilities/)
 * Put it out of reach via web or configure access denied.
 *
 **/
$g_repositoryPath = '[[softpath]]/upload_area/';  /* unix example */
if (($upa = getenv('TESTLINK_UPLOAD_AREA'))) {
  $g_repositoryPath = trim($upa);
}

/**
 * compression used within the repository
 * TL_REPOSITORY_COMPRESSIONTYPE_NONE => no compression
 * TL_REPOSITORY_COMPRESSIONTYPE_GZIP => gzip compression
 */
$g_repositoryCompressionType = TL_REPOSITORY_COMPRESSIONTYPE_NONE;

// the maximum allowed file size for each repository entry, default 1MB.
// Also check your PHP settings (default is usually 2MBs)
$tlCfg->repository_max_filesize = 1; //MB




// ----------------------------------------------------------------------------
/* [Requirements] */

// HAS TO BE REMOVED - > req_doc_id UNIQUE INSIDE test project
// true : you want req_doc_id UNIQUE IN THE WHOLE DB (system_wide)
// false: you want req_doc_id UNIQUE INSIDE a SRS
// $tlCfg->req_cfg->reqdoc_id->is_system_wide = FALSE;

$tlCfg->req_cfg->monitor_enabled = true;

// truncate log message to this amount of chars for reqCompareVersions
$tlCfg->req_cfg->log_message_len = 200;

/**
 * Test Case generation from Requirements - use_req_spec_as_testsuite_name
 *  FALSE => test cases are created and assigned to a test suite
 *           with name $tlCfg->req_cfg->default_testsuite_name
 *  TRUE  => REQuirement Specification Title is used as testsuite name
 */
$tlCfg->req_cfg->use_req_spec_as_testsuite_name = TRUE;
$tlCfg->req_cfg->default_testsuite_name = "Auto-created Test cases";
$tlCfg->req_cfg->testsuite_details = "Test Cases in the Test Suite are generated from Requirements. " .
                                "A refinement of test scenario is highly recommended.";
$tlCfg->req_cfg->testcase_summary_prefix = "<b>The Test Case was generated from the assigned requirement.</b><br />";


// If the following value is enabled, then the summary prefix string will include the
// title and version number of the assigned requirement.
$tlCfg->req_cfg->use_testcase_summary_prefix_with_title_and_version = ENABLED;

// If above option is enabled, the following string will be used as a template for the tc summary prefix.
// It has to include four variables in the form of "%s". The first and second one will be used internally by the system.
// The third one will then be replaced by the title of the originating Requirement,
// the fourth one by its version number.
// Attention: If there aren't exactly three variables in it, the operation will fail.
$tlCfg->req_cfg->testcase_summary_prefix_with_title_and_version = "<b>The Test Case was generated from the assigned" .
    " requirement <a href=\"javascript:openLinkedReqVersionWindow(%s,%s)\">\"%s\" (version %s)</a>.</b><br />";

/**
 * ENABLED: When generating Test Cases from Requirements, copy the scope of the Requirement
 * to the summary of the newly created Test Case.
 */
$tlCfg->req_cfg->copy_req_scope_to_tc_summary = DISABLED;


// To avoid perfomance problems on search Requirements feature,
// we can decide when to inform user that results can not be displayed
// due to too many results.
$tlCfg->req_cfg->search=new stdClass();
$tlCfg->req_cfg->search->max_qty_for_display=200;


// ENABLED: allow N level depth tree
// DISABLED: just one level
$tlCfg->req_cfg->child_requirements_mgmt = ENABLED;


// ENABLED: ask for this value on user interface and use on several features
// DISABLED: do not ask, do not use
$tlCfg->req_cfg->expected_coverage_management = ENABLED;

// Show Child Requirements on Requirement Specification Print View
// ENABLED: Requirement Specification including Child Requirements are shown
// DIABLED: ONLY Requirement Specification is shown
$tlCfg->req_cfg->show_child_reqs_on_reqspec_print_view = DISABLED;

// 
// Order of test cases status in this array, is used to undestand
// to what status set requirement in the requirements report.
// Standard algorithm, present in getReqCoverage(), is:
//
// if at least one of Test Cases linked to Requirement has status FAILED
//    Requirement Coverage Status = FAILED
// else if at least one of Test Cases linked to Requirement has status BLOCKED
//    Requirement Coverage Status = BLOCKED
// else if ALL Test Cases linked to Requirement has status NOT RUN
//    Requirement Coverage Status = NOT RUN
// else if ALL Test Cases linked to Requirement has status PASSED
//    Requirement Coverage Status = PASSED
// else
//    Requirement Coverage Status = Partially Passed
//
// This logic is implemented using following config parameter
$tlCfg->req_cfg->coverageStatusAlgorithm['checkOrder']=array('atLeastOne','all');
$tlCfg->req_cfg->coverageStatusAlgorithm['checkType']['atLeastOne']=array('failed','blocked');
$tlCfg->req_cfg->coverageStatusAlgorithm['checkType']['all']=array('passed');

// Configure here what status has to get requirement when check of type 'all' fails like
// in following situation (Mantis 2171)
//
// If particular requirement has assigned more than one test cases, and:
// - at least one of assigned test cases was not yet executed
// - the rest of assigned test cases was executed and passed
// then on the "Requirements based report" this particular requirement is not shown at all (in any section).
//
// $tlCfg->req_cfg->coverageStatusAlgorithm['checkFail']['all']='partially_passed';
// $tlCfg->req_cfg->coverageStatusAlgorithm['displayOrder']=array('passed','failed',
//                                                                'blocked','not_run','partially_passed');
// 20100819 - asimon - fix not needed anymore after rewrite of req based report
//$tlCfg->req_cfg->coverageStatusAlgorithm['checkFail']['all']='failed';
//$tlCfg->req_cfg->coverageStatusAlgorithm['displayOrder']=array('passed','failed','blocked','not_run');




// truncate log message to this amount of chars for reqSpecCompareRevisions
$tlCfg->req_spec_cfg->log_message_len = 200;


// Linking between requirements/requirement specifications
//
$tlCfg->internal_links =  new stdClass();

//
// TRUE: links to other requirements/requirement specifications are
//       automatically generated from the corresponding Document ID, enclosed by tags (like BBCode).
//
// Usage:
// link to requirements: [req]req_doc_id[/req]
// link to requirement specifications: [req_spec]req_spec_doc_id[/req_spec]
//
// The test project of the requirement / requirement specification and an anchor
// to jump to can also be specified:
// [req tproj=<tproj_prefix> anchor=<anchor_name>]req_doc_id[/req]
// This syntax also works for requirement specifications.
//
// FALSE: no links are automatically created. 
//
$tlCfg->internal_links->enable =  TRUE;

// how a linked document (requirement/requirement specification) should be displayed.
// posible values:
//                'window': new window/tab will be used (depending on browser configuration)
//                'frame' : same frame as the clicked link
//                'popup' (default): popup window  (ATTENTION to browser pop-up block).
//
$tlCfg->internal_links->target = 'popup';

// title for automatically created link
// possible values:
//                 'string': lang_get() will be used to localize
//                 'none': no title will be generated, only link with ID
//                 'item' (default): localized type of item (e.g. "Requirement: ",  "Req Spec")
//                                   will be used as title for the generated link
//
$tlCfg->internal_links->req_link_title = new stdClass();
$tlCfg->internal_links->req_link_title->type = 'item';
$tlCfg->internal_links->req_link_title->value = '';

$tlCfg->internal_links->req_spec_link_title = new stdClass();
$tlCfg->internal_links->req_spec_link_title->type = 'item';
$tlCfg->internal_links->req_spec_link_title->value = '';


// Relations between requirement documents:
//
// The relation types have to be configured in cfg/const.inc.php
// and their respective localization values in locale strings.txt.

// There are some preconfigured standard types which you can use,
// additionally you can configure your own types.
$tlCfg->req_cfg->relations = new stdClass();
$tlCfg->req_cfg->relations->enable = TRUE;
$tlCfg->req_cfg->relations->interproject_linking = FALSE;

// Requirement/testcase diff
// default value of lines to show before and after each difference
$tlCfg->diffEngine->context = 5;


// Configuration for Requirement Import using DOCBOOK format
$tlCfg->req_cfg->importDocBook = new stdClass();
$tlCfg->req_cfg->importDocBook->requirement= "sect3";
$tlCfg->req_cfg->importDocBook->title= "title";
$tlCfg->req_cfg->importDocBook->paragraph= "para";
$tlCfg->req_cfg->importDocBook->ordered_list="orderedlist";
$tlCfg->req_cfg->importDocBook->list_item="listitem";
$tlCfg->req_cfg->importDocBook->table="informaltable";
$tlCfg->req_cfg->importDocBook->table_group="tgroup";
$tlCfg->req_cfg->importDocBook->table_head="thead";
$tlCfg->req_cfg->importDocBook->table_body="tbody";
$tlCfg->req_cfg->importDocBook->table_row="row";
$tlCfg->req_cfg->importDocBook->table_entry="entry";
$tlCfg->req_cfg->importDocBook->list_item_children = array('para','title');
$tlCfg->req_cfg->importDocBook->table_entry_children = array('para');


// If an external tool is used for requirement management, enable this setting.
// You will get an additional field on requirement specifications where you
// can enter the total count of requirements so that external requirements
// are also counted for metrics/statistics. 
$tlCfg->req_cfg->external_req_management = DISABLED;


//If enabled an icon next to Document ID field will show up that allows
//to insert the last defined Requirement Document ID within the same Project
//into Document ID field
$tlCfg->req_cfg->allow_insertion_of_last_doc_id = DISABLED;


// used ONLY to configure the mask (text) .
// algorithm type is fixed HARDCODED
//
$tlCfg->req_cfg->duplicated_name_algorithm = new stdClass();
$tlCfg->req_cfg->duplicated_name_algorithm->text = " (%s)";

$tlCfg->req_cfg->duplicated_docid_algorithm = new stdClass();
$tlCfg->req_cfg->duplicated_docid_algorithm->text = " (%s)";


// ----------------------------------------------------------------------------
/* [TREE FILTER CONFIGURATION] */

/* In the following section, you can configure which filters shall be used
 * in combination with the tree view for testcases and requirements.
 * There are five available filter modes (four for the testcase tree,
 * one for requirement documents), which are used for the different features
 * as listed here:
 *
 * For Test Cases:
 * --> execution_mode
 *    execution of testcases
 * --> edit_mode
 *    create and edit testcases
 *    assign keywords to testcases
 *    assign requirements to testcases
 * --> plan_mode
 *    assign testcase execution to users
 *    update linked versions for testplan
 *    set urgent testcases
 * --> plan_add_mode
 *    add/remove testcases to/from testplan
 *
 * For Requirements:
 * There are no modes defined, there is only one filter configuration.
 * The filters configured here will be used for requirement editing.
 */
$tlCfg->tree_filter_cfg = new stdClass();
$tlCfg->tree_filter_cfg->testcases = new stdClass();
$tlCfg->tree_filter_cfg->requirements = new stdClass();

// These are the available filter modes for testcases:
$tlCfg->tree_filter_cfg->testcases->execution_mode = new stdClass();
$tlCfg->tree_filter_cfg->testcases->edit_mode = new stdClass();
$tlCfg->tree_filter_cfg->testcases->plan_mode = new stdClass();
$tlCfg->tree_filter_cfg->testcases->plan_add_mode = new stdClass();

// If you disable one of these items here, you switch
// the complete filter panel off for a specific mode/feature.
// You should rather do this here instead of individually disabling all the filters,
// if you don't want to have any filters at all for a given feature.
$tlCfg->tree_filter_cfg->testcases->execution_mode->show_filters = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->show_filters = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->show_filters = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->show_filters = ENABLED;
$tlCfg->tree_filter_cfg->requirements->show_filters = ENABLED;

// Detailed settings for each mode.
// Here, the single filter fields can be disabled if not wanted.
// Also, the choice of advanced filter mode can be disabled.
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_testcase_name = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_toplevel_testsuite = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_keywords = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_priority = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_execution_type = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_assigned_user = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_result = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_bugs = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->advanced_filter_mode_choice = ENABLED;

$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_testcase_name = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_toplevel_testsuite = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_keywords = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_platforms = ENABLED;

$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_active_inactive = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_importance = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_execution_type = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_workflow_status = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->advanced_filter_mode_choice = ENABLED;

$tlCfg->tree_filter_cfg->testcases->edit_mode
      ->filter_workflow_status_values = array();

$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_testcase_name = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_toplevel_testsuite = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_keywords = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_priority = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_execution_type = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_assigned_user = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_result = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->advanced_filter_mode_choice = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->setting_build_inactive_out = FALSE;
$tlCfg->tree_filter_cfg->testcases->plan_mode->setting_build_close_out = FALSE;


$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_testcase_name = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_toplevel_testsuite = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_keywords = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_active_inactive = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_importance = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_execution_type = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_workflow_status = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->advanced_filter_mode_choice = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_platforms = ENABLED;


$tlCfg->tree_filter_cfg->requirements->filter_doc_id = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_title = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_status = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_type = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_spec_type = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_coverage = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_relation = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->requirements->advanced_filter_mode_choice = ENABLED;

// ENABLED -> Every time the user does some operation on requirement spec,
//            the tree will be updated on screen. [DEFAULT]
// DISABLED -> The tree will not be updated automatically, but  the user can update it manually.
//             On graphical user interface any user will is able to change this setting.
$tlCfg->tree_filter_cfg->requirements->automatic_tree_refresh = ENABLED;



/* [Assign test cases to test plan] */
$tlCfg->tplanDesign->hideTestCaseWithStatusIn = array($tlCfg->testCaseStatus['obsolete'] => 'obsolete',
                            $tlCfg->testCaseStatus['future'] => 'future' );

// ----------------------------------------------------------------------------
/* [MISC FUNCTIONALITY] */

/** Maximum uploadfile size to importing stuff in TL */
// Also check your PHP settings (default is usually 2MBs)
// unit BYTES is required by MAX_FILE_SIZE HTML option
$tlCfg->import_file_max_size_bytes = '409600';

/** Maximum line size of the imported file */
$tlCfg->import_max_row = '10000'; // in chars

/** Set the default role used for new users */
// - created from the login page.
// - created using user management features
$tlCfg->default_roleid = TL_ROLES_GUEST;

// only show custom fields if their value isn't empty
$tlCfg->custom_fields->show_custom_fields_without_value = true;

/** used to check size in char for TEXT AREA type custom fields */
// can not be greater that column definition on DB
// 0 => do not check.
$tlCfg->custom_fields->max_length = 255;

// sizes for HTML INPUTS
// for list, multiselection list 
//  - MAXIMUM number of items displayed at once
//  
// for checkbox,radio is useless
// Hint: more than 120 produce weird effects on user interface
//
$tlCfg->custom_fields->sizes = array('string' => 100,
                                     'numeric' => 10,
                                     'float' => 10,
                                     'email' => 100,
                                     'list' => 1,
                                     'multiselection list' => 5,
                                     'text area' => array('rows' => 6, 'cols' => 80),
                                     'script' => 100,
                                     'server' => 100);

// Use this variable (on custom_config.inc.php) to define new Custom Field types.
// IMPORTANT:
//           check $custom_field_types property on cfield_mgr.class.php
//           to avoid overwrite of standard types.
//
$tlCfg->gui->custom_fields->types = null;

// Use this variable (on custom_config.inc.php)
// to define possible values behaviour for new Custom Field types.
//
// IMPORTANT:
//           check $possible_values_cfg property on cfield_mgr.class.php
//           to avoid overwrite of standard values.
//
$tlCfg->gui->custom_fields->possible_values_cfg = null;


/**
 * Check unique titles of Test Project, Test Suite and Test Case
 *  ENABLED  => Check              [STANDARD BEHAVIOUR]
 *  DISABLED => don't check
 **/
$tlCfg->check_names_for_duplicates = ENABLED;

/**
 * Action for duplication check (only if check_names_for_duplicates=ENABLED)
 * 'allow_repeat' => allow the name to be repeated (backward compatibility)
 * 'generate_new' => generate a new name using $g_prefix_name_for_copy
 * 'block'        => return with an error
 **/
$tlCfg->action_on_duplicate_name = 'generate_new';

/**
 * String checking and conversions
 * Allow automatically convert www URLs and email adresses into clickable links
 * used by function string_display_links() for example by custom fields.
 * Valid values = ENABLED/DISABLED.
 **/
$tlCfg->html_make_links = ENABLED;

/**
 * Define the valid html tags for "content driven" single-line and multi-line fields.
 * Do NOT include tags with parameters (eg. <font face="arial">), img and href.
 * It's used by function string_display_links() for example by custom fields.
 */
$tlCfg->html_valid_tags = 'p, li, ul, ol, br, pre, i, b, u, em';
$tlCfg->html_valid_tags_single_line = 'i, b, u, em';

/**
 * Defines the threshold values for filtering TC by a priority according to the formula
 * LOW  => all Tc's with (urgency*importance) < LOW_Threshold
 * HIGH   => all Tc's with (urgency*importance) >= HIGH_Threshold
 * MEDIUM  => all Tc's with (urgency*importance) >= LOW_Threshold AND (urgency*importance) < HIGH_Threshold
 */
$tlCfg->urgencyImportance = new stdClass();
$tlCfg->urgencyImportance->threshold['low'] = 3;
$tlCfg->urgencyImportance->threshold['high'] = 6;

/**
 * @var boolean Demo mode disables some functionality
 * user edit disable
 * role create ENABLED
 * user create ENABLED
 * special users manage DISABLE
 */
$tlCfg->demoMode = OFF;
$tlCfg->demoSpecialUsers = array('admin');

/**
 * If enabled, every Ext JS table in TestLink will offer an export button,
 * which generates a file with the contents of the table.
 * ATTENTION: This feature is fully experimental. Enable at your own risk!
 *            Enabling it can cause broken tables.
 */
$tlCfg->enableTableExportButton = DISABLED;


/**
 * Taken from Mantis to implement better login security
 * and solve TICKET 4342.
 */
$tlCfg->auth_cookie = $tlCfg->cookie->prefix . 
                      "TESTLINK_USER_AUTH_COOKIE";

/** 
Used when creating a Test Suite using copy
and you have choose  $g_action_on_duplicate_name = 'generate_new'
if the name exist.
*/
$g_prefix_name_for_copy = strftime("%Y%m%d-%H:%M:%S", time());



/** 
 * Configurable templates this can help if you want to use a non standard template.
 * i.e. you want to develop a new one without loosing the original template.
 * key: original TL template name WITHOUT extension
 * value: whatever name you want, only constrain you have to copy your template
 *        ON SAME FOLDER where original template is. 
 * See example below        
 */
$g_tpl = array('inc_exec_controls' => 'inc_exec_img_controls.tpl');
//$g_tpl = array('inc_exec_controls' => 'inc_exec_controls.tpl');
$g_tpl['login'] = 'login/login-model-marcobiedermann.tpl'; 

// Example 
// $g_tpl = array('tcView'  => 'custom_tcView.tpl',
//                 'tcSearchView' => 'myOwnTCSearchView.tpl',
//                 'tcEdit' => 'tcEdit_ultraCool.tpl');

/** Add o replace images */
$tlCfg->images = array();



// ----------------------------------------------------------------------------
/* [PROXY] */
/* Used only */ 
/* mantissoapInterface.class.php */
/* jirasoapInterface.class.php */
/* jirarestInterface.class.php */
$tlCfg->proxy->host = null;
$tlCfg->proxy->port = null;
$tlCfg->proxy->login = null;
$tlCfg->proxy->password = null;


/** Plugins feature */
define('TL_PLUGIN_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR);

// ----- End of Config ------------------------------------------------------------------
// --------------------------------------------------------------------------------------
// DO NOT DO CHANGES BELOW
// --------------------------------------------------------------------------------------

/** Functions for check request status */
require_once('configCheck.php');


if( !defined('TL_JQUERY') )
{
  define('TL_JQUERY','jquery-2.2.4.min.js' );
}

if( !defined('TL_DATATABLES_DIR') )
{
  define('TL_DATATABLES_DIR','DataTables-1.10.4' );
}

/** root of testlink directory location seen through the web server */
/*  20070106 - franciscom - this statement it's not 100% right
    better use $_SESSION['basehref'] in the scripts. */
define('TL_BASE_HREF', get_home_url(array('force_https' => $tlCfg->force_https)));

clearstatcache();
if ( file_exists( TL_ABS_PATH . 'custom_config.inc.php' ) )
{
  require_once( TL_ABS_PATH . 'custom_config.inc.php' );
}


if( !isset($tlCfg->attachments->access_icon) ) {
  $tlCfg->attachments->access_icon = 
    '<img src="' . $tlCfg->theme_dir . 
    'images/new_f2_16.png" style="border:none" />';
}


// Important to do this only after custom_* to use (if exists) redefinition of
// $tlCfg->results['status_label_for_exec_ui']
$tlCfg->reportsCfg->exec_status = $tlCfg->results['status_label_for_exec_ui'];


/** Support for localization */
//  @TODO move the code out of config and do it only once and 
//  not always in any include!
//  @TODO a better parsing function should be include
$serverLanguage = false;
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
  @list($code) = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  @list($a,$b) = explode("-",$code);
  if ($a && $b)
  {
    $a = strtolower($a);
    $b = strtoupper($a);
    $serverLanguage = $a."_".$b;
  }
}

if(false !== $serverLanguage)
{
  if (array_key_exists($serverLanguage,$tlCfg->locales))
  { 
    $tlCfg->default_language = $serverLanguage;
  } 
}
define ('TL_DEFAULT_LOCALE', $tlCfg->default_language);

// Reverted execution status is used for two applications.
// 1. To map code to CSS, Please if you add an status you need to add a corresponding CSS Class
//    in the CSS files (see the gui directory)
// 2. to decode from code to some more human oriented to use in code
//
/** Revered list of Test Case execution results */
$tlCfg->results['code_status'] = array_flip($tlCfg->results['status_code']);

// Enable CSRF global protection
$tlCfg->csrf_filter_enabled = TRUE;

// ---------------------------------------------------------------------------------
/** Converted and derived variables (Users should not modify this section) */
define('REFRESH_SPEC_TREE',$tlCfg->spec_cfg->automatic_tree_refresh ? 1 : 0);
define('TL_SORT_TABLE_ENGINE',$g_sort_table_engine);
define("TL_REPOSITORY_MAXFILESIZE", 1024*1024*$tlCfg->repository_max_filesize);

define('TL_XMLEXPORT_HEADER', "<?xml version=\"1.0\" encoding=\"" . $tlCfg->charset . "\"?>\n");



// ---------------------------------------------------------------------------------
// when a role is deleted, a new role must be assigned to all users
// having role to be deleted
// A right choice seems to be using $g_default_roleid.
// You can change this adding a config line in custom_config.inc.php
// @TODO martin: remove - use directly $tlCfg->default_roleid;
$g_role_replace_for_deleted_roles = $tlCfg->default_roleid;


/**
 * Using "|" in the testsuite name causes malformed URLs
 * regexp used to check for chars not allowed in:
 * test project, test suite and testcase names.
 * @TODO martin: encode harm characters @see http://cz.php.net/urlencode (and remove the parameter)
 *
 * now is preg pattern
 */
$g_ereg_forbidden = "/[|]/i";



/**
 * @TODO remove from TL - unfinished refactorization;
 * use $tlCfg instead of old variables and constants
 */
define('TL_IMPORT_ROW_MAX', $tlCfg->import_max_row);
define('TL_TPL_CHARSET', $tlCfg->charset);
define('TITLE_SEP',$tlCfg->gui_title_separator_1);
define('TITLE_SEP_TYPE2',$tlCfg->gui_title_separator_2);
define('TITLE_SEP_TYPE3',$tlCfg->gui_title_separator_2); // obsolete: use type 1,2
define('TL_FRMWORKAREA_LEFT_FRAME_WIDTH', $tlCfg->frame_workarea_default_width);
define('TL_TEMP_PATH', $tlCfg->temp_dir);

$tlCfg->gui->title_separator_1 =  $tlCfg->gui_title_separator_1;
$tlCfg->gui->title_separator_2 =  $tlCfg->gui_title_separator_2;
$tlCfg->gui->role_separator_open =  $tlCfg->gui_separator_open;
$tlCfg->gui->role_separator_close = $tlCfg->gui_separator_close;

$tlCfg->gui->version_separator_open =  $tlCfg->gui_separator_open;
$tlCfg->gui->version_separator_close = $tlCfg->gui_separator_close;


/**
 * Globals for Events storage
 */
$g_event_cache = array();

/**
 * Globals for Plugins
 */
$g_plugin_config_cache = array();

// ----- END OF FILE --------------------------------------------------------------------

Youez - 2016 - github.com/yon3zu
LinuXploit