[Fusionforge-commits] r14621 - in trunk: . config src/common/include src/common/reporting src/common/search src/db src/deb-specific src/plugins/scmsvn/common tests tests/config tests/func/Search tests/scripts

Roland Mas lolando at fusionforge.org
Fri Oct 14 10:01:40 CEST 2011


Author: lolando
Date: 2011-10-14 10:01:40 +0200 (Fri, 14 Oct 2011)
New Revision: 14621

Added:
   trunk/config/local.vladimir
   trunk/src/db/20111007-add-fti-for-task-messages.sql
   trunk/src/db/20111007-fti-aggregate-functions.sql
   trunk/src/db/20111009-string-aggregate-function.sql
Removed:
   trunk/config/local.vladimir
Modified:
   trunk/
   trunk/src/common/include/database-pgsql.php
   trunk/src/common/reporting/ReportSetup.class.php
   trunk/src/common/search/ArtifactSearchQuery.class.php
   trunk/src/common/search/DocsSearchQuery.class.php
   trunk/src/common/search/ForumSearchQuery.class.php
   trunk/src/common/search/ForumsSearchQuery.class.php
   trunk/src/common/search/NewsSearchQuery.class.php
   trunk/src/common/search/SearchQuery.class.php
   trunk/src/common/search/TasksSearchQuery.class.php
   trunk/src/common/search/TrackersSearchQuery.class.php
   trunk/src/deb-specific/db-upgrade.pl
   trunk/src/plugins/scmsvn/common/SVNPlugin.class.php
   trunk/tests/DEBDebian60Tests.php
   trunk/tests/RPMCentos52Tests.php
   trunk/tests/TarCentos52Tests.php
   trunk/tests/config/default
   trunk/tests/func/Search/searchTest.php
   trunk/tests/scripts/fusionforge-build-and-test-deb.sh
   trunk/tests/scripts/fusionforge-build-and-test-rpm.sh
   trunk/tests/scripts/fusionforge-build-and-test-src-cos.sh
Log:
Merged from 5.1: second batch of search fixes, with testsuite


Property changes on: trunk
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk:8721-8727
/branches/Branch_4_7:6879,6881,6884,6897,6899,6902,6904,6906,6909,6911,6922,6932,6936,6939,6942,6944,6946-6948,6954,6956,6959,7000-7001,7012,7111,7130-7131,7133-7134,7138,7140-7142,7147-7148,7159-7160,7163,7168,7177,7179,7203,7205,7207,7210,7212,7251-7253,7255,7284,7287,7291,7293,7295-7296,7300,7355,7365-7366,7375-7376,7378,7395,7423-7426,7435,7458,7504,7567,7577,7623-7624,7638,7659-7660,7662,7665,7668,7674,7699,7746-7748,7771,7774,7786,7838
/branches/Branch_5_1:11607-11609,11621,11625,11627,11631,11638,11644,11647-11651,11677,11680-11681,11683-11684,11719-11720,11724,11754,11780,11783,11792,11794,11802,11808-11816,11818,11822-11824,11827-11829,11834-11835,11847,11849,11851-11852,11855,11858,11862,11867,11869-11872,11876,11880,11893,11902-11905,11915,11923-11927,11929-11930,11932,11934-11941,11943,11948-11949,11952-11954,11956-11960,11962,11965-11966,11972,11975,11980,11983-11984,11986-11987,11990,11992-11997,12003-12004,12010-12013,12015,12018-12024,12043-12044,12046-12061,12063,12065,12070,12073-12076,12081-12083,12093-12094,12102,12105,12118,12124,12127-12128,12139,12141,12143,12148-12149,12153,12157-12159,12168-12169,12175-12180,12190,12194-12198,12203,12208-12213,12217-12258,12262,12264-12266,12274-12277,12281-12282,12287-12290,12340,12345-12346,12352,12359,12472-12473,12594,12634,12636-12638,12658-12659,12684-12712,12714-12715,12733,12780-12783,12785-12786,12795,12797,12800-12802,12815-12816,12840-12856,12860,12882-12883,12888-12892,12897,12904,12914-12917,12922-12926,12929-12936,12939,12959-12965,12967-12971,13011,13022,13025,13031-13032,13034,13043-13046,13048-13050,13053,13056,13058,13061,13068-13070,13075,13088,13090-13091,13101,13103-13104,13106,13108-13109,13111-13114,13116-13117,13120,13125,13127-13128,13148,13153-13161,13163,13165-13166,13174-13175,13188,13190,13211-13212,13219,13221,13231-13233,13234,13236-13238,13253,13257-13270,13272,13272-13274,13287,13287-13300,13302,13302-13342,13355-13374,13377-13379,13386,13386-13388,13389,13391,13391-13395,13396,13396-13400,13404,13408,13410,13412,13415-13416,13420,13422,13422-13426,13429-13432,13452,13456,13461-13464,13466,13468-13470,13472-13477,13492,13517-13519,13527-13532,13589-13590,13624-13628,13645,13661-13663,13666,13684,13689-13690,13697,13699,13704,13745,13761,13766-13767,13769-13770,13772-13801,13808,13817-13818,13820-13823,13830-13831,13838,13854,13861,13984,13986-13987,13988,14009,14013-14015,14020-14021,14036,14039-14045,14047,14051-14053,14056-14058,14059,14065,14072,14080-14084,14086-14090,14095-14099,14101-14110,14111-14114,14115-14117,14118-14120,14121,14130-14131,14132-14136,14162-14163,14164-14167,14172-14173,14184,14215-14216,14217-14219,14220,14238-14241,14266-14269,14273-14276,14277-14278,14285,14288-14289,14303,14305,14307,14309,14311,14313-14316,14318-14320,14322,14358,14391-14392,14444-14446,14461-14462,14472,14476-14480,14496,14498,14505-14506,14511,14515,14538-14542,14543-14551,14552-14554
/branches/Branch_4_8:7334-7335,7344-7345,7382,7387,7389-7390,7396,7398,7401-7402,7428-7429,7437,7440,7443,7449-7455,7459,7462,7466,7469-7470,7476-7478,7480,7485,7490-7492,7505,7540,7556-7560,7568,7570-7571,7573,7576,7580,7609-7611,7613,7615,7618,7621-7622,7625-7627,7639,7658,7661,7663-7664,7666-7667,7673,7675,7678,7680,7685,7688-7689,7693,7700,7706-7708,7713,7725,7728-7742,7760,7763-7764,7767,7769-7770,7773,7776,7784-7785,7791,7797,7799,7802-7808,7810-7811,7816,7818,7825-7828,7839,7846-7847,7850,7894,7902,7920-7922,7927-7928,7932,7936-7937,7939,7942,7944-7945,7947,7951,7956,7958,7960,8064,8079-8080,8108,8113,8119,8121,8127-8128,8145,8197,8201-8202,8216,8224,8226,8228,8247-8250,8252,8271-8272,8310-8311,8328,8337,8339-8357,8361,8371,8373-8375,8378-8379,8383-8396,8415,8427-8431,8438-8441,8449,8452-8453,8458,8461,8477-8478,8480,8482,8492,8514,8530,8604-8605,8608,8637,8662,8674,8751,8754,8756,8760-8761,8812,8850,8945,8995,8998,9004-9006,9124,9137,9141,9317,9443,9469,9670,9701,9726,9934,10013,10310,10314,10366,12790,13085
/branches/Branch_5_0:8892,8895,8897-8898,8900,8903-8904,8906-8907,8910,8915,8922,8924,8926,8929,8931-8933,8941,8946,8951,8955,8972-8977,8981,8997,8999,9002,9031-9032,9050,9080-9081,9084-9086,9093-9095,9102-9104,9108,9113-9115,9117-9118,9123,9125,9127-9131,9135-9136,9139,9146,9148-9150,9179-9191,9193-9195,9198,9200,9202,9204,9207,9209,9211,9213,9215,9220-9222,9231,9234-9235,9243,9251,9254,9259,9287,9315,9318,9347-9349,9358,9396,9427,9429,9431-9433,9441-9442,9444-9445,9462,9464,9468,9522-9523,9549,9551-9552,9576-9577,9579,9615,9633-9634,9672-9673,9675-9676,9684,9686-9687,9689,9699,9727,9729,9731,9930-9932,9935,9956,9980,10005-10006,10021,10024,10027,10064,10081-10082,10273,10285,10820-10824,10868,10872,10876-10878,10880,10918,11015,11017,11058-11060,11085-11086,11160-11165,11252-11253,11287,11294,11581,11619-11620,11679,11722-11723,11907,11974,12789,12940,12986,13023-13024,13086,13121-13122,13162,13465,13496,13501,13503,13660

   + /trunk:8721-8727
/branches/Branch_5_0:8892,8895,8897-8898,8900,8903-8904,8906-8907,8910,8915,8922,8924,8926,8929,8931-8933,8941,8946,8951,8955,8972-8977,8981,8997,8999,9002,9031-9032,9050,9080-9081,9084-9086,9093-9095,9102-9104,9108,9113-9115,9117-9118,9123,9125,9127-9131,9135-9136,9139,9146,9148-9150,9179-9191,9193-9195,9198,9200,9202,9204,9207,9209,9211,9213,9215,9220-9222,9231,9234-9235,9243,9251,9254,9259,9287,9315,9318,9347-9349,9358,9396,9427,9429,9431-9433,9441-9442,9444-9445,9462,9464,9468,9522-9523,9549,9551-9552,9576-9577,9579,9615,9633-9634,9672-9673,9675-9676,9684,9686-9687,9689,9699,9727,9729,9731,9930-9932,9935,9956,9980,10005-10006,10021,10024,10027,10064,10081-10082,10273,10285,10820-10824,10868,10872,10876-10878,10880,10918,11015,11017,11058-11060,11085-11086,11160-11165,11252-11253,11287,11294,11581,11619-11620,11679,11722-11723,11907,11974,12789,12940,12986,13023-13024,13086,13121-13122,13162,13465,13496,13501,13503,13660
/branches/Branch_4_8:7334-7335,7344-7345,7382,7387,7389-7390,7396,7398,7401-7402,7428-7429,7437,7440,7443,7449-7455,7459,7462,7466,7469-7470,7476-7478,7480,7485,7490-7492,7505,7540,7556-7560,7568,7570-7571,7573,7576,7580,7609-7611,7613,7615,7618,7621-7622,7625-7627,7639,7658,7661,7663-7664,7666-7667,7673,7675,7678,7680,7685,7688-7689,7693,7700,7706-7708,7713,7725,7728-7742,7760,7763-7764,7767,7769-7770,7773,7776,7784-7785,7791,7797,7799,7802-7808,7810-7811,7816,7818,7825-7828,7839,7846-7847,7850,7894,7902,7920-7922,7927-7928,7932,7936-7937,7939,7942,7944-7945,7947,7951,7956,7958,7960,8064,8079-8080,8108,8113,8119,8121,8127-8128,8145,8197,8201-8202,8216,8224,8226,8228,8247-8250,8252,8271-8272,8310-8311,8328,8337,8339-8357,8361,8371,8373-8375,8378-8379,8383-8396,8415,8427-8431,8438-8441,8449,8452-8453,8458,8461,8477-8478,8480,8482,8492,8514,8530,8604-8605,8608,8637,8662,8674,8751,8754,8756,8760-8761,8812,8850,8945,8995,8998,9004-9006,9124,9137,9141,9317,9443,9469,9670,9701,9726,9934,10013,10310,10314,10366,12790,13085
/branches/Branch_5_1:11607-11609,11621,11625,11627,11631,11638,11644,11647-11651,11677,11680-11681,11683-11684,11719-11720,11724,11754,11780,11783,11792,11794,11802,11808-11816,11818,11822-11824,11827-11829,11834-11835,11847,11849,11851-11852,11855,11858,11862,11867,11869-11872,11876,11880,11893,11902-11905,11915,11923-11927,11929-11930,11932,11934-11941,11943,11948-11949,11952-11954,11956-11960,11962,11965-11966,11972,11975,11980,11983-11984,11986-11987,11990,11992-11997,12003-12004,12010-12013,12015,12018-12024,12043-12044,12046-12061,12063,12065,12070,12073-12076,12081-12083,12093-12094,12102,12105,12118,12124,12127-12128,12139,12141,12143,12148-12149,12153,12157-12159,12168-12169,12175-12180,12190,12194-12198,12203,12208-12213,12217-12258,12262,12264-12266,12274-12277,12281-12282,12287-12290,12340,12345-12346,12352,12359,12472-12473,12594,12634,12636-12638,12658-12659,12684-12712,12714-12715,12733,12780-12783,12785-12786,12795,12797,12800-12802,12815-12816,12840-12856,12860,12882-12883,12888-12892,12897,12904,12914-12917,12922-12926,12929-12936,12939,12959-12965,12967-12971,13011,13022,13025,13031-13032,13034,13043-13046,13048-13050,13053,13056,13058,13061,13068-13070,13075,13088,13090-13091,13101,13103-13104,13106,13108-13109,13111-13114,13116-13117,13120,13125,13127-13128,13148,13153-13161,13163,13165-13166,13174-13175,13188,13190,13211-13212,13219,13221,13231-13233,13234,13236-13238,13253,13257-13270,13272,13272-13274,13287,13287-13300,13302,13302-13342,13355-13374,13377-13379,13386,13386-13388,13389,13391,13391-13395,13396,13396-13400,13404,13408,13410,13412,13415-13416,13420,13422,13422-13426,13429-13432,13452,13456,13461-13464,13466,13468-13470,13472-13477,13492,13517-13519,13527-13532,13589-13590,13624-13628,13645,13661-13663,13666,13684,13689-13690,13697,13699,13704,13745,13761,13766-13767,13769-13770,13772-13801,13808,13817-13818,13820-13823,13830-13831,13838,13854,13861,13984,13986-13987,13988,14009,14013-14015,14020-14021,14036,14039-14045,14047,14051-14053,14056-14058,14059,14065,14072,14080-14084,14086-14090,14095-14099,14101-14110,14111-14114,14115-14117,14118-14120,14121,14130-14131,14132-14136,14162-14163,14164-14167,14172-14173,14184,14215-14216,14217-14219,14220,14238-14241,14266-14269,14273-14276,14277-14278,14285,14288-14289,14303,14305,14307,14309,14311,14313-14316,14318-14320,14322,14358,14391-14392,14444-14446,14461-14462,14472,14476-14480,14496,14498,14505-14506,14511,14515,14538-14542,14543-14551,14552-14554,14558-14574,14577-14578,14582-14597,14599-14602,14614-14616
/branches/Branch_4_7:6879,6881,6884,6897,6899,6902,6904,6906,6909,6911,6922,6932,6936,6939,6942,6944,6946-6948,6954,6956,6959,7000-7001,7012,7111,7130-7131,7133-7134,7138,7140-7142,7147-7148,7159-7160,7163,7168,7177,7179,7203,7205,7207,7210,7212,7251-7253,7255,7284,7287,7291,7293,7295-7296,7300,7355,7365-7366,7375-7376,7378,7395,7423-7426,7435,7458,7504,7567,7577,7623-7624,7638,7659-7660,7662,7665,7668,7674,7699,7746-7748,7771,7774,7786,7838

Modified: svk:merge
   - 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7001
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7012
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7291
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7458
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7623
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7624
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7838
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:10013
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7335
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7344
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7345
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7402
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7455
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7459
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7469
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7470
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7476
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7480
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7505
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7540
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7557
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7559
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7560
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7580
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7609
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7615
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7618
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7621
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7622
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7626
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7627
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7708
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7713
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7725
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7729
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7730
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7731
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7732
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7733
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7734
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7737
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7738
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7739
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7742
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7760
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7763
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7764
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7767
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7769
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7773
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7776
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7784
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7785
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7797
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7799
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7811
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7826
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7827
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7828
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7839
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7951
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7958
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7960
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8108
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8113
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8119
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8128
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8145
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8202
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8216
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8224
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8226
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8250
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8337
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8357
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8371
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8375
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8379
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8415
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8427
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8431
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8441
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8449
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8453
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8530
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8604
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8605
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8608
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8637
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8751
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8756
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8761
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:9141
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10006
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10021
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10064
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10082
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10824
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11017
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11060
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11165
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11253
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11294
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8895
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8898
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8900
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8941
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9115
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9118
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9131
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9136
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9139
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9150
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9188
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9195
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9198
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9202
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9207
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9209
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9213
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9243
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9254
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9358
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9427
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9433
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9549
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9552
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9579
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9634
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9675
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9676
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9729
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9731
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9932
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9980
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11621
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11627
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11631
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11638
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11651
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11684
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11724
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11754
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11794
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11802
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11818
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11835
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11855
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11858
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11872
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11876
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11905
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11930
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11932
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11941
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11960
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11962
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11966
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11975
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11980
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11984
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11987
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11997
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12013
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12015
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12022
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12049
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12060
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12073
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12105
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12118
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12143
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12169
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12180
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12203
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12266
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12282
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12594
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12634
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12659
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12715
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12733
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12816
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12843
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12856
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12892
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12917
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12971
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13011
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13056
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13058
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13061
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13091
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13104
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13117
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13120
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13128
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13163
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13212
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13232
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13238
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13274
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13287
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13300
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13307
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13312
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13314
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13316
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13325
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13373
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13404
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13412
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13426
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13432
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13466
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13492
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13532
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13590
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13690
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13699
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13704
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13761
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13769
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13770
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13808
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13821
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13822
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13823
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13854
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13986
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13988
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14021
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14045
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14047
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14053
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14057
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14065
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14072
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14084
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14090
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14109
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14111
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14112
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14113
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14115
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14116
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14119
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14121
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14130
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14136
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14162
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14167
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14173
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14184
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14215
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14218
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14220
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14241
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14269
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14275
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14278
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14289
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14303
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14305
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14307
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14309
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14311
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14320
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14322
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14392
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14462
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14472
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14498
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14515
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14541
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14550
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14554
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/trunk:8727

   + 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7001
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7012
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7291
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7458
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7623
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7624
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7838
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:10013
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7335
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7344
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7345
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7402
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7455
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7459
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7469
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7470
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7476
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7480
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7505
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7540
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7557
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7559
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7560
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7580
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7609
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7615
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7618
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7621
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7622
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7626
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7627
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7708
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7713
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7725
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7729
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7730
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7731
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7732
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7733
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7734
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7737
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7738
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7739
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7742
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7760
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7763
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7764
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7767
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7769
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7773
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7776
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7784
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7785
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7797
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7799
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7811
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7826
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7827
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7828
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7839
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7951
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7958
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7960
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8108
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8113
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8119
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8128
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8145
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8202
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8216
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8224
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8226
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8250
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8337
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8357
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8371
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8375
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8379
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8415
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8427
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8431
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8441
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8449
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8453
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8530
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8604
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8605
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8608
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8637
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8751
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8756
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8761
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:9141
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10006
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10021
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10064
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10082
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10824
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11017
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11060
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11165
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11253
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11294
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8895
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8898
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8900
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8941
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9115
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9118
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9131
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9136
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9139
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9150
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9188
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9195
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9198
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9202
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9207
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9209
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9213
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9243
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9254
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9358
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9427
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9433
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9549
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9552
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9579
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9634
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9675
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9676
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9729
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9731
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9932
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9980
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11621
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11627
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11631
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11638
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11651
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11684
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11724
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11754
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11794
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11802
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11818
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11835
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11855
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11858
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11872
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11876
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11905
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11930
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11932
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11941
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11960
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11962
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11966
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11975
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11980
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11984
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11987
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11997
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12013
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12015
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12022
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12049
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12060
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12073
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12105
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12118
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12143
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12169
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12180
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12203
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12266
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12282
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12594
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12634
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12659
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12715
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12733
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12816
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12843
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12856
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12892
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12917
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12971
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13011
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13056
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13058
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13061
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13091
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13104
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13117
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13120
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13128
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13163
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13212
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13232
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13238
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13274
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13287
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13300
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13307
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13312
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13314
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13316
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13325
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13373
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13404
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13412
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13426
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13432
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13466
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13492
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13532
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13590
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13690
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13699
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13704
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13761
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13769
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13770
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13808
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13821
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13822
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13823
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13854
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13986
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13988
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14021
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14045
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14047
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14053
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14057
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14065
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14072
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14084
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14090
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14109
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14111
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14112
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14113
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14115
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14116
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14119
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14121
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14130
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14136
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14162
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14167
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14173
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14184
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14215
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14218
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14220
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14241
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14269
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14275
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14278
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14289
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14303
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14305
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14307
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14309
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14311
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14320
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14322
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14392
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14462
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14472
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14498
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14515
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14541
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14550
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14554
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14616
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/trunk:8727


Deleted: trunk/config/local.vladimir
===================================================================
--- trunk/config/local.vladimir	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/config/local.vladimir	2011-10-14 08:01:40 UTC (rev 14621)
@@ -1 +0,0 @@
-BUILDERDIR=/var/lib/jenkins/builder

Copied: trunk/config/local.vladimir (from rev 14616, branches/Branch_5_1/config/local.vladimir)
===================================================================
--- trunk/config/local.vladimir	                        (rev 0)
+++ trunk/config/local.vladimir	2011-10-14 08:01:40 UTC (rev 14621)
@@ -0,0 +1 @@
+BUILDERDIR=/var/lib/jenkins/builder

Modified: trunk/src/common/include/database-pgsql.php
===================================================================
--- trunk/src/common/include/database-pgsql.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/include/database-pgsql.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -99,10 +99,15 @@
 	define('SYS_DB_TROVE', $gfconn2);
 	define('SYS_DB_SEARCH', $gfconn2);
 
-	db_query_params ('SELECT set_config($1, $2, false)', 
-			 array('default_text_search_config',
-			       'simple'));
-	
+	$res = db_query_params ('SELECT set_config($1, $2, false)', 
+				array('default_text_search_config',
+				      'simple'));
+	if (!$res) {
+		// Cope with PostgreSQL < 8.3
+		db_query_params ('SELECT set_curcfg($1)', 
+				array('simple'));
+	}
+
 	// Register top-level "finally" handler to abort current
 	// transaction in case of error
 	register_shutdown_function("system_cleanup");
@@ -220,6 +225,7 @@
 	if ($sysdebug_dbquery) {
 		ffDebug('trace', "tracing call of db_query_params():\n",
 		    debug_string_backtrace());
+		error_log('SQL: '.db_query_to_string($qstring,$params).'; ');
 	}
 
 	$res = @pg_query_params($dbconn,$qstring,$params);
@@ -571,15 +577,17 @@
 	return db_construct_qpa ($old_qpa, $new_qpa[0], $new_qpa[1]) ;
 }
 
-function db_qpa_to_string ($qpa) {
-	$sql = $qpa[0];
-	$params = $qpa[1];
+function db_query_to_string ($sql, $params = array()) {
 	foreach ($params as $index => $value) {
 		$sql = preg_replace('/\\$'.($index+1).'(?!\d)/', "'".$value."'", $sql);
 	}
 	return $sql;
 }	
 
+function db_qpa_to_string ($qpa) {
+	return db_query_to_string($qpa[0], $qpa[1]);
+}	
+
 // Local Variables:
 // mode: php
 // c-file-style: "bsd"

Modified: trunk/src/common/reporting/ReportSetup.class.php
===================================================================
--- trunk/src/common/reporting/ReportSetup.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/reporting/ReportSetup.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -292,6 +292,7 @@
 
 	$sql[]="DROP VIEW rep_site_act_oa_vw";
 	$sql[]="CREATE VIEW rep_site_act_oa_vw AS
+	SELECT
 	sum(tracker_opened) AS tracker_opened,
 	sum(tracker_closed) AS tracker_closed,
 	sum(forum) AS forum,

Modified: trunk/src/common/search/ArtifactSearchQuery.class.php
===================================================================
--- trunk/src/common/search/ArtifactSearchQuery.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/search/ArtifactSearchQuery.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -64,7 +64,73 @@
 	function getQuery() {
 		$qpa = db_construct_qpa () ;
 
+		$words = $this->getFTIwords();
+
+		$qpa = db_construct_qpa ($qpa,
+					 'SELECT x.* FROM (SELECT artifact.artifact_id, artifact.group_artifact_id, artifact.summary, artifact.open_date, users.realname, artifact.summary||$1||artifact.details||$1||coalesce(ff_string_agg(artifact_message.body), $1) as full_string_agg',
+						 array (''));
 		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa,
+						 ', (artifact_idx.vectors || coalesce(ff_tsvector_agg(artifact_message_idx.vectors), $1::tsvector)) AS full_vector_agg',
+						 array(''));
+						 }
+		$qpa = db_construct_qpa ($qpa, 
+					 ' FROM artifact LEFT OUTER JOIN artifact_message USING (artifact_id), users',
+						 array ()) ;
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 ', artifact_idx, artifact_message_idx',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa, 
+					 ' WHERE users.user_id = artifact.submitted_by AND artifact.group_artifact_id = $1 ',
+					 array ($this->artifactId)) ;
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 'AND artifact.artifact_id = artifact_idx.artifact_id AND artifact_message.id = artifact_message_idx.id ',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa,
+					 'GROUP BY artifact.artifact_id, artifact.group_artifact_id, artifact.summary, artifact.open_date, users.realname, artifact.details') ;
+
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 ', artifact_idx.vectors',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa, 
+					 ') AS x WHERE ') ;
+		
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa,
+						 'full_vector_agg @@ $1 ',
+						 array($words));
+			if (count($this->phrases)) {
+				$qpa = db_construct_qpa ($qpa,
+							 'AND (') ;
+				$qpa = $this->addMatchCondition ($qpa, 'x.full_string_agg') ;
+				$qpa = db_construct_qpa ($qpa,
+							 ') ') ;
+			}
+			$qpa = db_construct_qpa ($qpa,
+						 'ORDER BY ts_rank(full_vector_agg, $1) DESC',
+						 array($words)) ;
+			
+		} else {
+			$qpa = $this->addIlikeCondition ($qpa, 'x.full_string_agg') ;
+			$qpa = db_construct_qpa ($qpa,
+						 'ORDER BY x.artifact_id') ;
+		}
+		return $qpa ;
+
+
+
+
+
+
+		$qpa = db_construct_qpa () ;
+
+		if (forge_get_config('use_fti')) {
 			$words=$this->getFTIwords();
 			$artifactId = $this->artifactId;
 
@@ -72,7 +138,8 @@
 						 'SELECT a.group_artifact_id, a.artifact_id, ts_headline(summary, $1) AS summary, ',
 						 array ($words)) ;
 			$qpa = db_construct_qpa ($qpa,
-						 'a.open_date, users.realname, rank FROM (SELECT a.artifact_id, SUM (ts_rank(ai.vectors, q) + ts_rank(ami.vectors, q)) AS rank FROM artifact a LEFT OUTER JOIN artifact_message am USING (artifact_id)') ;
+						 'a.open_date, users.realname, rank FROM (SELECT a.artifact_id, SUM (ts_rank(ai.vectors, q) + ts_rank(ami.vectors, q)) AS rank, artifact.summary||$1||artifact.details||$1||coalesce(ff_string_agg(artifact_message.body), $1) as full_string_agg FROM artifact a LEFT OUTER JOIN artifact_message am USING (artifact_id)',
+						 array('')) ;
 
 			$qpa = db_construct_qpa ($qpa,
 						 ', artifact_idx ai, artifact_message_idx ami, to_tsquery($1) q',

Modified: trunk/src/common/search/DocsSearchQuery.class.php
===================================================================
--- trunk/src/common/search/DocsSearchQuery.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/search/DocsSearchQuery.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -68,10 +68,11 @@
 		if (forge_get_config('use_fti')) {
 			return $this->getFTIQuery();
 		} else {
-			$qpa = db_construct_qpa();
-			$qpa = db_construct_qpa($qpa,
-						 'SELECT doc_data.docid, doc_data.title, doc_data.description, doc_data.filename, doc_groups.groupname FROM doc_data, doc_groups WHERE doc_data.doc_group = doc_groups.doc_group AND doc_data.group_id = $1',
-						 array ($this->groupId));
+			$qpa = db_construct_qpa () ;
+			$qpa = db_construct_qpa ($qpa,
+						 'SELECT x.* FROM (SELECT doc_data.docid, doc_data.title, doc_data.filename, doc_data.description, doc_groups.groupname, title||$1||description AS full_string_agg FROM doc_data, doc_groups WHERE doc_data.doc_group = doc_groups.doc_group AND doc_data.group_id = $2',
+						 array ($this->field_separator,
+							$this->groupId)) ;
 			if ($this->sections != SEARCH__ALL_SECTIONS) {
 				$qpa = db_construct_qpa ($qpa,
 							 'AND doc_groups.doc_group = ANY ($1) ',
@@ -82,13 +83,11 @@
 			} else {
 				$qpa = db_construct_qpa($qpa, ' AND doc_data.stateid = 1');
 			}
-			$qpa = db_construct_qpa($qpa, ' AND ((');
-			$qpa = $this->addIlikeCondition($qpa, 'title');
-			$qpa = db_construct_qpa($qpa, ') OR (');
-			$qpa = $this->addIlikeCondition($qpa, 'description');
-			$qpa = db_construct_qpa($qpa, ') OR (');
-			$qpa = $this->addIlikeCondition($qpa, 'data_words', $this->words);
-			$qpa = db_construct_qpa($qpa, ')) ORDER BY doc_groups.groupname, doc_data.docid');
+			$qpa = db_construct_qpa ($qpa,
+						 ') AS x WHERE ') ;
+			$qpa = $this->addIlikeCondition ($qpa, 'full_string_agg') ;
+			$qpa = db_construct_qpa ($qpa,
+						 ' ORDER BY x.groupname, x.docid') ;
 		}
 		return $qpa;
 	}
@@ -100,22 +99,12 @@
 		$qpa = db_construct_qpa () ;
 
 		$qpa = db_construct_qpa ($qpa,
-					 'SELECT doc_data.docid, doc_data.filename, ts_headline(doc_data.title, q) AS title, ts_headline(doc_data.description, q) AS description doc_groups.groupname FROM doc_data, doc_groups, doc_data_idx, to_tsquery($1) q',
-					 array (implode (' ', $words))) ;
+					 'SELECT x.* FROM (SELECT doc_data.docid, doc_data.filename, ts_headline(doc_data.title, q) AS title, ts_headline(doc_data.description, q) AS description, doc_groups.groupname, title||$1||description AS full_string_agg, doc_data_idx.vectors FROM doc_data, doc_groups, doc_data_idx, to_tsquery($2) AS q',
+					 array ($this->field_separator,
+						$words)) ;
 		$qpa = db_construct_qpa ($qpa,
-					 ' WHERE doc_data.doc_group = doc_groups.doc_group AND doc_data.docid = doc_data_idx.docid AND (vectors @@ q') ;
-		if (count($this->phrases)) {
-			$qpa = db_construct_qpa ($qpa,
-						 $this->getOperator()) ;
-			$qpa = db_construct_qpa ($qpa,
-						 '(') ;
-			$qpa = $this->addMatchCondition($qpa, 'title');
-			$qpa = db_construct_qpa ($qpa,
-						 ') OR (') ;
-			$qpa = $this->addMatchCondition($qpa, 'description');
-			$qpa = db_construct_qpa ($qpa,
-						 ')') ;
-		}
+					 ' WHERE doc_data.doc_group = doc_groups.doc_group AND doc_data.docid = doc_data_idx.docid AND (vectors @@ $1',
+					 array ($words)) ;
 		$qpa = db_construct_qpa ($qpa,
 					 ') AND doc_data.group_id = $1',
 					 array ($group_id)) ;
@@ -132,7 +121,14 @@
 						 ' AND doc_data.stateid = 1') ;
 		}
 		$qpa = db_construct_qpa ($qpa,
-					 ' ORDER BY ts_rank(vectors, q) DESC, groupname ASC') ;
+					 ') AS x ') ;
+		if (count($this->phrases)) {
+			$qpa = db_construct_qpa ('WHERE ') ;
+			$qpa = $this->addMatchCondition($qpa, 'full_string_agg');
+		}
+		$qpa = db_construct_qpa ($qpa,
+					 ' ORDER BY ts_rank(vectors, $1) DESC, groupname ASC',
+					 array($words)) ;
 		return $qpa ;
 	}
 

Modified: trunk/src/common/search/ForumSearchQuery.class.php
===================================================================
--- trunk/src/common/search/ForumSearchQuery.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/search/ForumSearchQuery.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -68,33 +68,30 @@
 		if (forge_get_config('use_fti')) {
 			$words = $this->getFTIwords();
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT forum.msg_id, ts_headline(forum.subject, q) AS subject, forum.post_date, users.realname FROM forum, users, to_tsquery($1) AS q, forum_idx as fi WHERE forum.group_forum_id = $2 AND forum.posted_by = users.user_id AND fi.msg_id = forum.msg_id AND vectors @@ q ',
+						 'SELECT x.* FROM (SELECT forum.msg_id, ts_headline(forum.subject, $1::tsquery) AS subject, forum.post_date, users.realname, forum.subject||$2||forum.body as full_string_agg, forum_idx.vectors FROM forum, users, to_tsquery($1) AS q, forum_idx WHERE forum.group_forum_id = $3 AND forum.posted_by = users.user_id AND forum_idx.msg_id = forum.msg_id GROUP BY forum.msg_id, subject, body, post_date, realname, forum_idx.vectors) AS x WHERE vectors @@ $1::tsquery ',
 						 array ($words,
+							$this->field_separator,
 							$this->forumId)) ;
 			$phraseOp = $this->getOperator();
 
 			if(count($this->phrases)) {
 				$qpa = db_construct_qpa ($qpa,
-							 'AND ((') ;
-				$qpa = $this->addMatchCondition($qpa, 'forum.body');
+							 'AND (') ;
+				$qpa = $this->addMatchCondition($qpa, 'full_string_agg');
 				$qpa = db_construct_qpa ($qpa,
-							 ') OR (') ;
-				$qpa = $this->addMatchCondition($qpa, 'forum.subject');
-				$qpa = db_construct_qpa ($qpa,
-							 ')) ') ;
+							 ') ') ;
 			}
 			$qpa = db_construct_qpa ($qpa,
-						 'ORDER BY ts_rank(vectors, q) DESC') ;
+						 'ORDER BY ts_rank(vectors, $1) DESC',
+						 array($words)) ;
 		} else {
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT forum.msg_id, forum.subject, forum.post_date, users.realname FROM forum,users WHERE users.user_id=forum.posted_by AND ((') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'forum.body') ;
+						 'SELECT x.* FROM (SELECT forum.msg_id, forum.subject, forum.post_date, users.realname, forum.subject||$1||forum.body as full_string_agg FROM forum,users WHERE users.user_id=forum.posted_by AND forum.group_forum_id=$2 GROUP BY msg_id, subject, post_date, realname, body) AS x WHERE ',
+						 array ($this->field_separator,
+							$this->forumId)) ;
+			$qpa = $this->addIlikeCondition ($qpa, 'full_string_agg') ;
 			$qpa = db_construct_qpa ($qpa,
-						 ') OR (') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'forum.subject') ;
-			$qpa = db_construct_qpa ($qpa,
-						 ')) AND forum.group_forum_id=$1 GROUP BY msg_id, subject, post_date, realname',
-						 array ($this->forumId)) ;
+						 ' ');
 		}
 		return $qpa ;
 	}

Modified: trunk/src/common/search/ForumsSearchQuery.class.php
===================================================================
--- trunk/src/common/search/ForumsSearchQuery.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/search/ForumsSearchQuery.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -80,8 +80,9 @@
 			}
 
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT forum.msg_id, ts_headline(forum.subject, q) AS subject, forum.post_date, users.realname, forum_group_list.forum_name FROM forum, users, forum_group_list, forum_idx, to_tsquery($1) as q ',
-						 array ($this->getFTIwords())) ;
+						 'SELECT forum.msg_id, ts_headline(forum.subject, q) AS subject, forum.post_date, users.realname, forum_group_list.forum_name, forum.subject||$2||forum.body as full_string_agg FROM forum, users, forum_group_list, forum_idx, to_tsquery($1) as q ',
+						 array ($this->getFTIwords(),
+							$this->field_separator)) ;
 			$qpa = db_construct_qpa ($qpa,
 						 'WHERE users.user_id = forum.posted_by AND vectors @@ q AND forum.msg_id = forum_idx.msg_id AND forum_group_list.group_forum_id = forum.group_forum_id AND forum_group_list.is_public <> 9 AND forum.group_forum_id IN (SELECT group_forum_id FROM forum_group_list WHERE group_id = $1) ',
 						 array ($this->groupId));
@@ -94,12 +95,22 @@
 				$qpa = db_construct_qpa ($qpa,
 							 'AND forum_group_list.is_public = 1 ') ;
 			}
+
+			if(count($this->phrases)) {
+				$qpa = db_construct_qpa ($qpa,
+							 'AND (') ;
+				$qpa = $this->addMatchCondition($qpa, 'full_string_agg');
+				$qpa = db_construct_qpa ($qpa,
+							 ') ') ;
+			}
+
 			$qpa = db_construct_qpa ($qpa,
 						 'ORDER BY forum_group_list.forum_name ASC, forum.msg_id ASC, ts_rank(vectors, q) DESC') ;
 		} else {
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT forum.msg_id, forum.subject, forum.post_date, users.realname, forum_group_list.forum_name FROM forum, users, forum_group_list WHERE users.user_id = forum.posted_by AND forum_group_list.group_forum_id = forum.group_forum_id AND forum_group_list.is_public <> 9 AND forum.group_forum_id IN (SELECT group_forum_id FROM forum_group_list WHERE group_id = $1) ',
-						 array ($this->groupId)) ;
+						 'SELECT x.* FROM (SELECT forum.msg_id, forum.subject, forum.post_date, users.realname, forum_group_list.forum_name, forum.subject||$1||forum.body as full_string_agg FROM forum, users, forum_group_list WHERE users.user_id = forum.posted_by AND forum_group_list.group_forum_id = forum.group_forum_id AND forum_group_list.is_public <> 9 AND forum.group_forum_id IN (SELECT group_forum_id FROM forum_group_list WHERE group_id = $2) ',
+						 array ($this->field_separator,
+							$this->groupId)) ;
 			if ($this->sections != SEARCH__ALL_SECTIONS) {
 				$qpa = db_construct_qpa ($qpa,
 							 'AND forum_group_list.group_forum_id = ANY ($1) ',
@@ -110,13 +121,10 @@
 							 'AND forum_group_list.is_public = 1 ') ;
 			}
 			$qpa = db_construct_qpa ($qpa,
-						 'AND ((') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'forum.body') ;
+						 ') AS x WHERE ') ;
+			$qpa = $this->addIlikeCondition ($qpa, 'full_string_agg') ;
 			$qpa = db_construct_qpa ($qpa,
-						 ') OR (') ;
-			$qpa = $this->addIlikeCondition ($qpa,'forum.subject') ;
-			$qpa = db_construct_qpa ($qpa,
-						 ')) ORDER BY forum_group_list.forum_name, forum.msg_id') ;
+						 ' ORDER BY x.forum_name, x.msg_id') ;
 		}
 		return $qpa ;
 	}

Modified: trunk/src/common/search/NewsSearchQuery.class.php
===================================================================
--- trunk/src/common/search/NewsSearchQuery.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/search/NewsSearchQuery.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -61,33 +61,26 @@
 
 			$words = $this->getFTIwords();
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT ts_headline(news_bytes.summary, q) as summary, news_bytes.post_date, news_bytes.forum_id, users.realname FROM news_bytes, users, to_tsquery($1) AS q, news_bytes_idx WHERE (news_bytes.group_id=$2 AND news_bytes.is_approved <> 4 AND news_bytes_idx.id = news_bytes.id AND news_bytes.submitted_by=users.user_id) AND (vectors @@ q ',
-						 array ($words,
+						 'SELECT x.* FROM (SELECT ts_headline(news_bytes.summary, q) as summary, news_bytes.post_date, news_bytes.forum_id, users.realname, summary||$1||details AS full_string_agg, news_bytes_idx.vectors FROM news_bytes, users, to_tsquery($2) AS q, news_bytes_idx WHERE (news_bytes.group_id=$3 AND news_bytes.is_approved <> 4 AND news_bytes_idx.id = news_bytes.id AND news_bytes.submitted_by=users.user_id) AND vectors @@ q) AS x ',
+						 array ($this->field_separator,
+							$words,
 							$group_id)) ;
 			if (count ($this->phrases)) {
 				$qpa = db_construct_qpa ($qpa,
-							 $this->getOperator()) ;
-				$qpa = db_construct_qpa ($qpa,
-							 ' ((') ;
-				$qpa = $this->addMatchCondition ($qpa, 'summary') ;
-				$qpa = db_construct_qpa ($qpa,
-							 ') OR (') ;
-				$qpa = $this->addMatchCondition ($qpa, 'details') ;
-				$qpa = db_construct_qpa ($qpa,
-							 '))') ;
+							 'WHERE ');
+				$qpa = $this->addMatchCondition ($qpa, 'full_string_agg') ;
 			}
 			$qpa = db_construct_qpa ($qpa,
-						 ') ORDER BY ts_rank(vectors, q) DESC, post_date DESC') ;
+						 ' ORDER BY ts_rank(vectors, $1) DESC, post_date DESC',
+						 array($words)) ;
 		} else {
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT news_bytes.summary, news_bytes.post_date, news_bytes.forum_id, users.realname FROM news_bytes, users WHERE group_id=$1 AND is_approved <> 4 AND news_bytes.submitted_by = users.user_id AND ((',
-						 array ($this->groupId)) ;
-			$qpa = $this->addIlikeCondition ($qpa, 'summary') ;
+						 'SELECT x.* FROM (SELECT news_bytes.summary, news_bytes.post_date, news_bytes.forum_id, users.realname, summary||$1||details AS full_string_agg FROM news_bytes, users WHERE group_id=$2 AND is_approved <> 4 AND news_bytes.submitted_by = users.user_id) AS x WHERE ',
+						 array ($this->field_separator,
+							$this->groupId)) ;
+			$qpa = $this->addIlikeCondition ($qpa, 'full_string_agg') ;
 			$qpa = db_construct_qpa ($qpa,
-						 ') OR (') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'details') ;
-			$qpa = db_construct_qpa ($qpa,
-						 ')) ORDER BY post_date DESC') ;
+						 ' ORDER BY post_date DESC') ;
 		}
 		return $qpa ;
 	}

Modified: trunk/src/common/search/SearchQuery.class.php
===================================================================
--- trunk/src/common/search/SearchQuery.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/search/SearchQuery.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -83,6 +83,9 @@
 
 	var $phrases = array();
 
+	// Something that's hopefully not going to end up in real data
+	var $field_separator = ' ioM0Thu6_fieldseparator_kaeph9Ee ';
+
 	/**
 	 * Constructor
 	 *
@@ -92,6 +95,8 @@
 	 * @param	int	$rowsPerPage number of rows per page
 	 */
 	function SearchQuery($words, $offset, $isExact, $rowsPerPage = SEARCH__DEFAULT_ROWS_PER_PAGE) {
+		$this->field_separator = ' ioM0Thu6_fieldseparator_kaeph9Ee ';
+
 		$this->cleanSearchWords($words);
 		//We manual escap because every Query in Search escap parameters
 		$words = addslashes($words);
@@ -325,7 +330,7 @@
 	 */
 	function setSections($sections) {
 		if(is_array($sections)) {
-			$this->sections = array_keys($sections);
+			$this->sections = array_values($sections) ;
 		} else {
 			$this->sections = $sections;
 		}

Modified: trunk/src/common/search/TasksSearchQuery.class.php
===================================================================
--- trunk/src/common/search/TasksSearchQuery.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/search/TasksSearchQuery.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -65,61 +65,72 @@
 	 * @return array query+params array
 	 */
 	function getQuery() {
-
-
 		$qpa = db_construct_qpa () ;
 
+		$qpa = db_construct_qpa ($qpa,
+					 'SELECT x.* FROM (SELECT project_task.project_task_id, project_task.summary, project_task.percent_complete, project_task.start_date, project_task.end_date, users.realname, project_group_list.project_name, project_task.summary||$1||project_task.details||$1||coalesce(ff_string_agg(project_messages.body), $1) as full_string_agg',
+					 array (''));
 		if (forge_get_config('use_fti')) {
 			$words = $this->getFTIwords();
-			
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT project_task.project_task_id, project_task.percent_complete, ts_headline(project_task.summary, q) AS summary, project_task.start_date,project_task.end_date,users.firstname||$1||users.lastname AS realname, project_group_list.project_name, project_group_list.group_project_id FROM project_task, users, project_group_list, to_tsquery($2) AS q, project_task_idx WHERE project_task.created_by = users.user_id AND project_task.project_task_id = project_task_idx.project_task_id AND project_task.group_project_id = project_group_list.group_project_id AND project_group_list.group_id=$3 ',
-						 array (' ',
-							$words,
-							$this->groupId)) ;
-			if ($this->sections != SEARCH__ALL_SECTIONS) {
-				$qpa = db_construct_qpa ($qpa,
-							 'AND project_group_list.group_project_id = ANY ($1) ',
-							 array(db_int_array_to_any_clause ($this->sections))) ;
-			}
-			if (!$this->showNonPublic) {
-				$qpa = db_construct_qpa ($qpa,
-							 'AND project_group_list.is_public = 1 ') ;
-			}
+						 ', (project_task_idx.vectors || coalesce(ff_tsvector_agg(project_messages_idx.vectors), $1::tsvector)) AS full_vector_agg',
+						 array (''));
+		}
+		$qpa = db_construct_qpa ($qpa, 
+					 ' FROM project_task LEFT OUTER JOIN project_messages USING (project_task_id), users, project_group_list',
+					 array ()) ;
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 ', project_task_idx, project_messages_idx',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa, 
+					 ' WHERE project_task.created_by = users.user_id AND project_task.group_project_id = project_group_list.group_project_id AND project_group_list.group_id = $1 AND project_messages.project_task_id = project_task.project_task_id ',
+					 array ($this->groupId)) ;
+		if ($this->sections != SEARCH__ALL_SECTIONS) {
+			$qpa = db_construct_qpa ($qpa,
+						 'AND project_group_list.group_project_id = ANY ($1) ',
+						 array (db_int_array_to_any_clause ($this->sections))) ;
+		}
+		if (!$this->showNonPublic) {
+			$qpa = db_construct_qpa ($qpa,
+						 'AND project_group_list.is_public = 1 ') ;
+		}
+
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 'AND project_task.project_task_id = project_task_idx.project_task_id AND project_messages.project_message_id = project_messages_idx.id ',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa,
+					 'GROUP BY project_task.project_task_id, project_task.summary, project_task.percent_complete, project_task.start_date, project_task.end_date, users.realname, project_group_list.project_name, project_task.details') ;
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 ', project_task_idx.vectors',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa, 
+					 ') AS x WHERE ') ;
+
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa,
+						 'full_vector_agg @@ $1 ',
+						 array($words));
 			if (count($this->phrases)) {
 				$qpa = db_construct_qpa ($qpa,
-							 'AND (vectors @@ q AND (') ;
-				$qpa = $this->addMatchCondition($qpa, 'summary');
+							 'AND (') ;
+				$qpa = $this->addMatchCondition ($qpa, 'x.full_string_agg') ;
 				$qpa = db_construct_qpa ($qpa,
-							 ') OR (') ;
-				$qpa = $this->addMatchCondition($qpa, 'details');
-				$qpa = db_construct_qpa ($qpa,
-							 ')) ') ;
+							 ') ') ;
 			}
 			$qpa = db_construct_qpa ($qpa,
-						 'ORDER BY project_group_list.project_name, ts_rank(vectors, q) DESC, project_task.project_task_id') ;
+						 'ORDER BY ts_rank(full_vector_agg, $1) DESC',
+						 array($words)) ;
+			
 		} else {
+			$qpa = $this->addIlikeCondition ($qpa, 'x.full_string_agg') ;
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT project_task.project_task_id, project_task.summary, project_task.percent_complete, project_task.start_date, project_task.end_date, users.firstname||$1||users.lastname AS realname, project_group_list.project_name, project_group_list.group_project_id FROM project_task, users, project_group_list WHERE project_task.created_by = users.user_id AND project_task.group_project_id = project_group_list.group_project_id AND project_group_list.group_id = $2 ',
-						 array (' ',
-							$this->groupId)) ;
-			if ($this->sections != SEARCH__ALL_SECTIONS) {
-				$qpa = db_construct_qpa ($qpa,
-							 'AND project_group_list.group_project_id = ANY ($1) ',
-							 array( db_int_array_to_any_clause ($this->sections))) ;
-			}
-			if (!$this->showNonPublic) {
-				$qpa = db_construct_qpa ($qpa,
-							 'AND project_group_list.is_public = 1 ') ;
-			}
-			$qpa = db_construct_qpa ($qpa,
-						 ' AND ((') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'summary') ;
-			$qpa = db_construct_qpa ($qpa,
-						 ') OR (') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'details') ;
-			$qpa = db_construct_qpa ($qpa,
-						 ')) ORDER BY project_group_list.project_name, project_task.project_task_id') ;
+						 ' ORDER BY x.project_name, x.project_task_id') ;
 		}
 		return $qpa ;
 	}

Modified: trunk/src/common/search/TrackersSearchQuery.class.php
===================================================================
--- trunk/src/common/search/TrackersSearchQuery.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/common/search/TrackersSearchQuery.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -65,69 +65,72 @@
 	 * @return array query+params array
 	 */
 	function getQuery() {
-
-
 		$qpa = db_construct_qpa () ;
 
+		$qpa = db_construct_qpa ($qpa,
+					 'SELECT x.* FROM (SELECT artifact.artifact_id, artifact.group_artifact_id, artifact.summary, artifact.open_date, users.realname, artifact_group_list.name, artifact.summary||$1||artifact.details||$1||coalesce(ff_string_agg(artifact_message.body), $1) as full_string_agg',
+						 array (''));
 		if (forge_get_config('use_fti')) {
+			$words = $this->getFTIwords();
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT DISTINCT x.* FROM (SELECT artifact.artifact_id, artifact.group_artifact_id, artifact.summary, artifact.open_date, users.realname, artifact_group_list.name, (ts_rank(artifact_idx.vectors, q)+ts_rank(artifact_message_idx.vectors, q)) AS rank FROM artifact LEFT OUTER JOIN artifact_message USING (artifact_id), users, artifact_group_list, to_tsquery($1) q, artifact_idx, artifact_message_idx WHERE users.user_id = artifact.submitted_by AND artifact_idx.artifact_id = artifact.artifact_id AND artifact_message_idx.id = artifact_message.id AND artifact_message_idx.artifact_id = artifact_message_idx.artifact_id AND artifact_group_list.group_artifact_id = artifact.group_artifact_id AND artifact_group_list.group_id = $2 ',
-						 array ($this->getFTIwords(),
-							$this->groupId)) ;
-			$tsmatch = "(artifact_idx.vectors @@ q OR artifact_message_idx.vectors @@ q)";
-			$phraseOp = $this->getOperator();
+						 ', (artifact_idx.vectors || coalesce(ff_tsvector_agg(artifact_message_idx.vectors), $1::tsvector)) AS full_vector_agg',
+						 array (''));
+						 }
+		$qpa = db_construct_qpa ($qpa, 
+					 ' FROM artifact LEFT OUTER JOIN artifact_message USING (artifact_id), users, artifact_group_list',
+						 array ()) ;
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 ', artifact_idx, artifact_message_idx',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa, 
+					 ' WHERE users.user_id = artifact.submitted_by AND artifact_group_list.group_artifact_id = artifact.group_artifact_id AND artifact_group_list.group_id = $1 AND artifact_message.artifact_id = artifact.artifact_id ',
+						 array ($this->groupId)) ;
+		if ($this->sections != SEARCH__ALL_SECTIONS) {
+			$qpa = db_construct_qpa ($qpa,
+						 'AND artifact_group_list.group_artifact_id = ANY ($1) ',
+						 array (db_int_array_to_any_clause ($this->sections))) ;
+		}
+		if (!$this->showNonPublic) {
+			$qpa = db_construct_qpa ($qpa,
+						 'AND artifact_group_list.is_public = 1 ') ;
+		}
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 'AND artifact.artifact_id = artifact_idx.artifact_id AND artifact_message.id = artifact_message_idx.id ',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa,
+					 'GROUP BY artifact.artifact_id, artifact.group_artifact_id, artifact.summary, artifact.open_date, users.realname, artifact_group_list.name, artifact.details') ;
 
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa, 
+						 ', artifact_idx.vectors',
+						 array ()) ;
+		}
+		$qpa = db_construct_qpa ($qpa, 
+					 ') AS x WHERE ') ;
+		
+		if (forge_get_config('use_fti')) {
+			$qpa = db_construct_qpa ($qpa,
+						 'full_vector_agg @@ $1 ',
+						 array($words));
 			if (count($this->phrases)) {
 				$qpa = db_construct_qpa ($qpa,
-							 'AND ((') ;
-				$qpa = $this->addMatchCondition($qpa, 'artifact.details');
+							 'AND (') ;
+				$qpa = $this->addMatchCondition ($qpa, 'x.full_string_agg') ;
 				$qpa = db_construct_qpa ($qpa,
-							 ') OR (') ;
-				$qpa = $this->addMatchCondition($qpa, 'artifact.summary');
-				$qpa = db_construct_qpa ($qpa,
-							 ') OR (') ;
-				$qpa = $this->addMatchCondition($qpa, 'artifact_message.body');
-				$qpa = db_construct_qpa ($qpa,
-							 ')) ') ;
+							 ') ') ;
 			}
-			if ($this->sections != SEARCH__ALL_SECTIONS) {
-				$qpa = db_construct_qpa ($qpa,
-							 'AND artifact_group_list.group_artifact_id = ANY ($1) ',
-							 array( db_int_array_to_any_clause ($this->sections))) ;
-			}
-			if (!$this->showNonPublic) {
-				$qpa = db_construct_qpa ($qpa,
-							 'AND artifact_group_list.is_public = 1 ') ;
-			}
 			$qpa = db_construct_qpa ($qpa,
-						 ') x') ;
-			$qpa = db_construct_qpa ($qpa,
-						 'ORDER BY rank DESC') ;
+						 'ORDER BY ts_rank(full_vector_agg, $1) DESC',
+						 array($words)) ;
+			
 		} else {
+			$qpa = $this->addIlikeCondition ($qpa, 'x.full_string_agg') ;
 			$qpa = db_construct_qpa ($qpa,
-						 'SELECT DISTINCT artifact.artifact_id, artifact.group_artifact_id, artifact.summary, artifact.open_date, users.realname, artifact_group_list.name FROM artifact LEFT OUTER JOIN artifact_message USING (artifact_id), users, artifact_group_list WHERE users.user_id = artifact.submitted_by AND artifact_group_list.group_artifact_id = artifact.group_artifact_id AND artifact_group_list.group_id = $1 ',
-						 array ($this->groupId)) ;
-			if ($this->sections != SEARCH__ALL_SECTIONS) {
-				$qpa = db_construct_qpa ($qpa,
-							 'AND artifact_group_list.group_artifact_id = ANY ($1) ',
-							 array(db_int_array_to_any_clause ($this->sections))) ;
-			}
-			if (!$this->showNonPublic) {
-				$qpa = db_construct_qpa ($qpa,
-							 'AND artifact_group_list.is_public = 1 ') ;
-			}
-
-			$qpa = db_construct_qpa ($qpa,
-						 ' AND ((') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'artifact.details') ;
-			$qpa = db_construct_qpa ($qpa,
-						 ') OR (') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'artifact.summary') ;
-			$qpa = db_construct_qpa ($qpa,
-						 ') OR (') ;
-			$qpa = $this->addIlikeCondition ($qpa, 'artifact_message.body') ;
-			$qpa = db_construct_qpa ($qpa,
-						 ')) ORDER BY artifact_group_list.name, artifact.artifact_id') ;
+						 ' ORDER BY x.name, x.artifact_id') ;
 		}
 		return $qpa ;
 	}

Copied: trunk/src/db/20111007-add-fti-for-task-messages.sql (from rev 14616, branches/Branch_5_1/src/db/20111007-add-fti-for-task-messages.sql)
===================================================================
--- trunk/src/db/20111007-add-fti-for-task-messages.sql	                        (rev 0)
+++ trunk/src/db/20111007-add-fti-for-task-messages.sql	2011-10-14 08:01:40 UTC (rev 14621)
@@ -0,0 +1,135 @@
+CREATE TABLE project_messages_idx (
+	id integer,
+	project_task_id integer,
+	vectors tsvector
+);
+
+CREATE OR REPLACE FUNCTION update_vectors() RETURNS TRIGGER AS '
+DECLARE
+table_name TEXT;
+BEGIN
+	table_name := TG_ARGV[0];
+	-- **** artifact table ****
+	IF table_name = ''artifact'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO artifact_idx (artifact_id, group_artifact_id, vectors) VALUES (NEW.artifact_id, NEW.group_artifact_id, to_tsvector(coalesce(NEW.details,\'\') ||\' \'|| coalesce(NEW.summary,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE artifact_idx SET group_artifact_id=NEW.group_artifact_id, vectors=to_tsvector(coalesce(NEW.details,\'\') ||\' \'|| coalesce(NEW.summary,\'\')) WHERE artifact_id=NEW.artifact_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM artifact_idx WHERE artifact_id=OLD.artifact_id;
+		END IF;
+	-- **** artifact_message table ****
+	ELSIF table_name = ''artifact_message'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO artifact_message_idx (id, artifact_id, vectors) VALUES (NEW.id, NEW.artifact_id, to_tsvector(coalesce(NEW.body,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE artifact_message_idx SET artifact_id=NEW.artifact_id, vectors=to_tsvector(coalesce(NEW.body,\'\')) WHERE id=NEW.id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM artifact_message_idx WHERE id=OLD.id;
+		END IF;
+	-- **** doc_data table ****
+	ELSIF table_name = ''doc_data'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO doc_data_idx (docid, group_id, vectors) VALUES (NEW.docid, NEW.group_id, to_tsvector(coalesce(NEW.title,\'\') ||\' \'|| coalesce(NEW.description,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE doc_data_idx SET group_id=NEW.group_id, vectors=to_tsvector(coalesce(NEW.title,\'\') ||\' \'|| coalesce(NEW.description,\'\')) WHERE docid=NEW.docid;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM doc_data_idx WHERE docid=OLD.docid;
+		END IF;
+	-- **** forum table ****
+	ELSIF table_name = ''forum'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO forum_idx (msg_id, group_id, vectors) (SELECT f.msg_id, g.group_id, to_tsvector(coalesce(f.subject,\'\') ||\' \'|| 
+			coalesce(f.body,\'\')) AS vectors FROM forum f, forum_group_list g WHERE f.group_forum_id = g.group_forum_id AND f.msg_id = NEW.msg_id);
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE forum_idx SET vectors=to_tsvector(coalesce(NEW.subject,\'\') ||\' \'|| coalesce(NEW.body,\'\')) WHERE msg_id=NEW.msg_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM forum_idx WHERE msg_id=OLD.msg_id;
+		END IF;
+	-- **** frs_file table ****
+	ELSIF table_name = ''frs_file'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO frs_file_idx (file_id, release_id, vectors) VALUES (NEW.file_id, NEW.release_id, to_tsvector(coalesce(NEW.filename,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE frs_file_idx SET vectors=to_tsvector(coalesce(NEW.filename,\'\')), release_id=NEW.release_id WHERE file_id=NEW.file_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM frs_file_idx WHERE file_id=OLD.file_id;
+		END IF;
+	-- **** frs_release table ****
+	ELSIF table_name = ''frs_release'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO frs_release_idx (release_id, vectors) VALUES (NEW.release_id, to_tsvector(coalesce(NEW.changes,\'\') ||\' \'|| coalesce(NEW.notes,\'\') ||\' \'|| coalesce(NEW.name,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE frs_release_idx SET vectors=to_tsvector(coalesce(NEW.changes,\'\') ||\' \'|| coalesce(NEW.notes,\'\') ||\' \'|| coalesce(NEW.name,\'\')) WHERE release_id=NEW.release_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM frs_release_idx WHERE release_id=OLD.release_id;
+			DELETE FROM frs_file_idx WHERE release_id=OLD.release_id;
+		END IF;
+	-- **** groups table ****
+	ELSIF table_name = ''groups'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO groups_idx (group_id, vectors) VALUES (NEW.group_id, to_tsvector(coalesce(NEW.group_name,\'\') ||\' \'|| coalesce(NEW.short_description,\'\') ||\' \'|| coalesce(NEW.unix_group_name,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE groups_idx SET vectors=to_tsvector(coalesce(NEW.group_name,\'\') ||\' \'|| coalesce(NEW.short_description,\'\') ||\' \'|| coalesce(NEW.unix_group_name,\'\')) WHERE group_id=NEW.group_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM groups_idx WHERE group_id=OLD.group_id;
+		END IF;
+	-- **** news_bytes table ****
+	ELSIF table_name = ''news_bytes'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO news_bytes_idx (id, vectors) VALUES (NEW.id, to_tsvector(coalesce(NEW.summary,\'\') ||\' \'|| coalesce(NEW.details,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE news_bytes_idx SET vectors=to_tsvector(coalesce(NEW.summary,\'\') ||\' \'|| coalesce(NEW.details,\'\')) WHERE id=NEW.id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM news_bytes_idx WHERE id=OLD.id;
+		END IF;
+	-- **** project_task table ****
+	ELSIF table_name = ''project_task'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO project_task_idx (project_task_id, vectors) VALUES (NEW.project_task_id, to_tsvector(coalesce(NEW.summary,\'\') ||\' \'|| coalesce(NEW.details,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE project_task_idx SET vectors=to_tsvector(coalesce(NEW.summary,\'\') ||\' \'|| coalesce(NEW.details,\'\')) WHERE project_task_id=NEW.project_task_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM project_task_idx WHERE project_task_id=OLD.project_task_id;
+		END IF;
+	-- **** project_messages table ****
+	ELSIF table_name = ''project_messages'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO project_messages_idx (id, project_task_id, vectors) VALUES (NEW.project_message_id, NEW.project_task_id, to_tsvector(coalesce(NEW.body,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE project_messages_idx SET project_task_id=NEW.project_task_id, vectors=to_tsvector(coalesce(NEW.body,\'\')) WHERE id=NEW.project_message_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM project_messages_idx WHERE id=OLD.project_message_id;
+		END IF;
+	-- **** skills_data table ****
+	ELSIF table_name = ''skills_data'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO skills_data_idx (skills_data_id, vectors) VALUES (NEW.skill_data_id, to_tsvector(coalesce(NEW.title,\'\') ||\' \'|| coalesce(NEW.keywords,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE skills_data_idx SET vectors=to_tsvector(coalesce(NEW.title,\'\') ||\' \'|| coalesce(NEW.keywords,\'\')) WHERE skills_data_id=NEW.skills_data_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM skills_data_idx WHERE skills_data_id=OLD.skills_data_id;
+		END IF;
+	-- **** users table ****
+	ELSIF table_name = ''users'' THEN
+		IF TG_OP = ''INSERT'' THEN
+			INSERT INTO users_idx (user_id, vectors) VALUES (NEW.user_id, to_tsvector(coalesce(NEW.user_name,\'\') ||\' \'|| coalesce(NEW.realname,\'\')));
+		ELSIF TG_OP = ''UPDATE'' THEN
+			UPDATE users_idx SET vectors=to_tsvector(coalesce(NEW.user_name,\'\') ||\' \'|| coalesce(NEW.realname,\'\')) WHERE user_id=NEW.user_id;
+		ELSIF TG_OP = ''DELETE'' THEN
+			DELETE FROM users_idx WHERE user_id=OLD.user_id;
+		END IF;
+	END IF;
+
+	RETURN NEW;
+END;'
+LANGUAGE 'plpgsql';
+
+CREATE TRIGGER projectmessage_ts_update AFTER UPDATE OR INSERT OR DELETE ON project_messages
+FOR EACH ROW EXECUTE PROCEDURE update_vectors('project_messages');
+
+DELETE FROM project_messages_idx;
+
+INSERT INTO project_messages_idx (id, project_task_id, vectors)
+SELECT project_message_id, project_task_id, to_tsvector(coalesce(body,'')) AS vectors
+FROM project_messages ORDER BY project_message_id;

Copied: trunk/src/db/20111007-fti-aggregate-functions.sql (from rev 14616, branches/Branch_5_1/src/db/20111007-fti-aggregate-functions.sql)
===================================================================
--- trunk/src/db/20111007-fti-aggregate-functions.sql	                        (rev 0)
+++ trunk/src/db/20111007-fti-aggregate-functions.sql	2011-10-14 08:01:40 UTC (rev 14621)
@@ -0,0 +1,15 @@
+CREATE OR REPLACE FUNCTION ff_tsvector_add (v1 tsvector, v2 tsvector)
+RETURNS tsvector
+AS $$
+BEGIN
+  RETURN v1 || v2 ;
+END;
+$$ LANGUAGE plpgsql
+IMMUTABLE
+RETURNS NULL ON NULL INPUT;
+
+CREATE AGGREGATE ff_tsvector_agg (
+       basetype = tsvector,
+       sfunc = ff_tsvector_add,
+       stype = tsvector
+);

Copied: trunk/src/db/20111009-string-aggregate-function.sql (from rev 14616, branches/Branch_5_1/src/db/20111009-string-aggregate-function.sql)
===================================================================
--- trunk/src/db/20111009-string-aggregate-function.sql	                        (rev 0)
+++ trunk/src/db/20111009-string-aggregate-function.sql	2011-10-14 08:01:40 UTC (rev 14621)
@@ -0,0 +1,15 @@
+CREATE OR REPLACE FUNCTION ff_string_add (t1 text, t2 text)
+RETURNS text
+AS $$
+BEGIN
+  RETURN t1 || ' ioM0Thu6_fieldseparator_kaeph9Ee ' || t2 ;
+END;
+$$ LANGUAGE plpgsql
+IMMUTABLE
+RETURNS NULL ON NULL INPUT;
+
+CREATE AGGREGATE ff_string_agg (
+       basetype = text,
+       sfunc = ff_string_add,
+       stype = text
+);

Modified: trunk/src/deb-specific/db-upgrade.pl
===================================================================
--- trunk/src/deb-specific/db-upgrade.pl	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/deb-specific/db-upgrade.pl	2011-10-14 08:01:40 UTC (rev 14621)
@@ -1954,6 +1954,9 @@
     &update_with_sql("FTI-20050530","5.1-6");
     &update_with_sql("FTI-20060130","5.1-7");
     &update_with_sql("FTI-20061025","5.1-8");
+    &update_with_sql("20111007-fti-aggregate-functions","5.1-9");
+    &update_with_sql("20111007-add-fti-for-task-messages","5.1-10");
+    &update_with_sql("20111009-string-aggregate-function","5.1-11");
     &update_with_sql("20110118-user-tooltips","5.1.51-1");
     &update_with_sql("20110211-docman-activityvw","5.1.51-2");
     &update_with_sql("20110222-pluginify-auth","5.1.51-3");

Modified: trunk/src/plugins/scmsvn/common/SVNPlugin.class.php
===================================================================
--- trunk/src/plugins/scmsvn/common/SVNPlugin.class.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/src/plugins/scmsvn/common/SVNPlugin.class.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -547,7 +547,7 @@
 		$params['group_id'] = $group->getID();
 		$params['repos'] = $repos;
 		$params['hooks'] = &$hooks;
-		plugin_hook('cmd_for_post_commit_hook', $params);
+		plugin_hook_by_reference('cmd_for_post_commit_hook', $params);
 
 		foreach ($params['hooks'] as $plugin => $cmd ) {
 			if (getenv('sys_localinc')) {

Modified: trunk/tests/DEBDebian60Tests.php
===================================================================
--- trunk/tests/DEBDebian60Tests.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/tests/DEBDebian60Tests.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -29,6 +29,7 @@
 		$suite->addTestFiles(glob("func/PluginsBlocks/*Test.php"));
 		$suite->addTestFiles(glob("func/RBAC/*Test.php"));
 		$suite->addTestFiles(glob("func/Surveys/*Test.php"));
+		$suite->addTestFiles(glob("func/Search/*Test.php"));
 
 		return $suite;
 	}

Modified: trunk/tests/RPMCentos52Tests.php
===================================================================
--- trunk/tests/RPMCentos52Tests.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/tests/RPMCentos52Tests.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -30,6 +30,7 @@
 //		$suite->addTestFiles(glob("func/PluginsSvnTracker/*Test.php"));
 		$suite->addTestFiles(glob("func/RBAC/*Test.php"));
 		$suite->addTestFiles(glob("func/Surveys/*Test.php"));
+		$suite->addTestFiles(glob("func/Search/*Test.php"));
 
 		return $suite;
 	}

Modified: trunk/tests/TarCentos52Tests.php
===================================================================
--- trunk/tests/TarCentos52Tests.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/tests/TarCentos52Tests.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -30,6 +30,7 @@
 //		$suite->addTestFiles(glob("func/PluginsSvnTracker/*Test.php"));
 		$suite->addTestFiles(glob("func/RBAC/*Test.php"));
 		$suite->addTestFiles(glob("func/Surveys/*Test.php"));
+		$suite->addTestFiles(glob("func/Search/*Test.php"));
 
 		return $suite;
 	}

Modified: trunk/tests/config/default
===================================================================
--- trunk/tests/config/default	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/tests/config/default	2011-10-14 08:01:40 UTC (rev 14621)
@@ -20,7 +20,7 @@
 CONFIGURED=true
 
 # Debian mirrors
-DEBMIRROR=http://cdn.debian.net/debian/
+DEBMIRROR=http://ftp.debian.org/debian/
 DEBMIRRORSEC=http://security.debian.org/
 
 # Redhat mirrors

Modified: trunk/tests/func/Search/searchTest.php
===================================================================
--- trunk/tests/func/Search/searchTest.php	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/tests/func/Search/searchTest.php	2011-10-14 08:01:40 UTC (rev 14621)
@@ -92,7 +92,7 @@
 
 	function testPeopleSearch()
 	{
-		$this->switchUser('admin');
+		$this->switchUser(FORGE_ADMIN_USERNAME);
 		$this->createUser('ratatouille');
 		$this->createUser('tartiflette');
 
@@ -137,6 +137,331 @@
 		$this->assertTrue($this->isTextPresent("tartiflette Lastname"));
 
 	}
+	
+	function testSearchInTools()
+	{
+		$this->populateStandardTemplate();
+		$this->createProject('projecta');
 
+		// TODO: check that search results vary according to what items are visible to the user
+		// $this->createProject('projectb');
+		// $this->createUser('piperade');
+		// $this->createUser('cassoulet');
+
+		// Prepare some tracker items
+
+		$this->gotoProject('projecta');
+		$this->clickAndWait("link=Tracker");
+		$this->clickAndWait("link=Bugs");
+		$this->clickAndWait("link=Submit New");
+		$this->type("summary", "Bug1 boustrophédon");
+		$this->type("details", "brebis outremanchienne");
+		$this->clickAndWait("//form[@id='trackeraddform']//input[@type='submit']");
+		$this->clickAndWait("link=Bug1 boustrophédon");
+		$this->type("details", 'Ceci était une référence au « Génie des Alpages », rien à voir avec Charlie');
+		$this->clickAndWait("submit");
+		$this->clickAndWait("link=Bug1 boustrophédon");
+		$this->type("details", 'This is the needle');
+		$this->clickAndWait("submit");
+
+		$this->clickAndWait("link=Tracker");
+		$this->clickAndWait("link=Patches");
+		$this->clickAndWait("link=Submit New");
+		$this->type("summary", "Bug2 gratapouêt");
+		$this->type("details", "cthulhu was here");
+		$this->clickAndWait("//form[@id='trackeraddform']//input[@type='submit']");
+		$this->clickAndWait("link=Bug2 gratapouêt");
+		$this->type("details", 'Charlie was here too');
+		$this->clickAndWait("submit");
+
+		// Search in trackers
+
+		$this->select("type_of_search", "label=This project's trackers");
+		$this->type("//input[@name='words']", "brebis");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Bug1"));
+
+		$this->select("type_of_search", "label=This project's trackers");
+		$this->type("//input[@name='words']", "alpages");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Bug1"));
+
+		$this->select("type_of_search", "label=This project's trackers");
+		$this->type("//input[@name='words']", "boustrophédon brebis alpages");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Bug1"));
+
+		$this->select("type_of_search", "label=This project's trackers");
+		$this->type("//input[@name='words']", "'boustrophédon brebis'");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertTrue($this->isTextPresent("No matches found for"));
+		$this->assertFalse($this->isTextPresent("Bug1"));
+
+		$this->select("type_of_search", "label=This project's trackers");
+		$this->type("//input[@name='words']", "boustrophédon cthulhu");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertTrue($this->isTextPresent("No matches found for"));
+		$this->assertFalse($this->isTextPresent("Bug1"));
+		$this->assertFalse($this->isTextPresent("Bug2"));
+
+		// Search in one particular tracker
+		
+		$this->select("type_of_search", "label=This project's trackers");
+		$this->type("//input[@name='words']", "charlie");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Bug1"));
+		$this->assertTrue($this->isTextPresent("Bug2"));
+
+		$this->clickAndWait("link=Tracker");
+		$this->clickAndWait("link=Bugs");
+		$this->select("type_of_search", "label=Bugs");
+		$this->type("//input[@name='words']", "charlie");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Bug1"));
+		$this->assertFalse($this->isTextPresent("Bug2"));
+
+		$this->clickAndWait("link=Bugs");
+		$this->select("type_of_search", "label=Bugs");
+		$this->type("//input[@name='words']", "charlie boustrophédon");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Bug1"));
+		$this->assertFalse($this->isTextPresent("Bug2"));
+
+		// Create some tasks
+
+		$this->gotoProject('projecta');
+		$this->clickAndWait("link=Tasks");
+		$this->clickAndWait("link=To Do");
+		$this->clickAndWait("link=Add Task");
+		$this->type("summary", "Task1 the brain");
+		$this->type("details", "The same thing we do every night, Pinky - try to take over the world!");
+		$this->type("hours", "199");
+		$this->clickAndWait("submit");
+		
+		$this->clickAndWait("link=Task1 the brain");
+		$this->type("details", 'This is the needle for tasks');
+		$this->clickAndWait("submit");
+
+		$this->clickAndWait("link=Add Task");
+		$this->type("summary", "Task2 world peace");
+		$this->type("details", "Otherwise WW4 will be fought with sticks");
+		$this->type("hours", "199");
+		$this->clickAndWait("submit");
+			      
+		// Search in Tasks
+
+		$this->select("type_of_search", "label=This project's tasks");
+		$this->type("//input[@name='words']", "pinky");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Task1"));
+
+		$this->select("type_of_search", "label=This project's tasks");
+		$this->type("//input[@name='words']", "cortex");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertTrue($this->isTextPresent("No matches found for"));
+		$this->assertFalse($this->isTextPresent("Task1"));
+
+		$this->select("type_of_search", "label=This project's tasks");
+		$this->type("//input[@name='words']", "brain pinky needle");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Task1"));
+
+		// Post some messages in a forum
+		
+		$this->gotoProject('projecta');
+		$this->clickAndWait("link=Forums");
+		$this->clickAndWait("link=open-discussion");
+		$this->click("link=Start New Thread");
+		$this->waitForPageToLoad("30000");
+		$this->type("subject", "Message1 in a bottle");
+		$this->type("body", "ninetynine of them on Charlie's wall");
+		$this->clickAndWait("submit");
+		$this->clickAndWait("link=Message1 in a bottle");
+		$this->clickAndWait("link=[ reply ]");
+		$this->type("subject", "Message2 in a bottle");
+		$this->type("body", "ninetyeight of them in Charlie's fridge");
+		$this->clickAndWait("submit");
+		$this->clickAndWait("link=Message1 in a bottle");
+		$this->clickAndWait("link=[ reply ]");
+		$this->type("subject", "Message3 in a bottle");
+		$this->type("body", "and yet another needle for the forums");
+		$this->clickAndWait("submit");
+
+		$this->clickAndWait("link=Forums");
+		$this->clickAndWait("link=developers-discussion");
+		$this->click("link=Start New Thread");
+		$this->waitForPageToLoad("30000");
+		$this->type("subject", "Message4 in an envelope");
+		$this->type("body", "not the same thing as an antilope (and different thread anyway) (but still related to Charlie)");
+		$this->clickAndWait("submit");
+
+		// Search in Forums
+
+		$this->select("type_of_search", "label=This project's forums");
+		$this->type("//input[@name='words']", "bottle");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Message1"));
+		$this->assertTrue($this->isTextPresent("Message2"));
+		$this->assertTrue($this->isTextPresent("Message3"));
+		$this->assertFalse($this->isTextPresent("Message4"));
+
+		$this->select("type_of_search", "label=This project's forums");
+		$this->type("//input[@name='words']", "bottle fridge");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertFalse($this->isTextPresent("Message1"));
+		$this->assertTrue($this->isTextPresent("Message2"));
+		$this->assertFalse($this->isTextPresent("Message3"));
+		$this->assertFalse($this->isTextPresent("Message4"));
+
+		// Search in one particular forum
+
+		$this->select("type_of_search", "label=This project's forums");
+		$this->type("//input[@name='words']", "charlie");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Message1"));
+		$this->assertTrue($this->isTextPresent("Message2"));
+		$this->assertFalse($this->isTextPresent("Message3"));
+		$this->assertTrue($this->isTextPresent("Message4"));
+
+		$this->clickAndWait("link=Forums");
+		$this->clickAndWait("link=open-discussion");
+		$this->select("type_of_search", "label=This forum");
+		$this->type("//input[@name='words']", "charlie");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Message1"));
+		$this->assertTrue($this->isTextPresent("Message2"));
+		$this->assertFalse($this->isTextPresent("Message3"));
+		$this->assertFalse($this->isTextPresent("Message4"));
+
+		$this->clickAndWait("link=Forums");
+		$this->clickAndWait("link=open-discussion");
+		$this->select("type_of_search", "label=This forum");
+		$this->type("//input[@name='words']", "charlie fridge");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		// Only one result => threaded view => need to check on bodies, not subjects
+		$this->assertFalse($this->isTextPresent("wall"));
+		$this->assertTrue($this->isTextPresent("fridge"));
+		$this->assertFalse($this->isTextPresent("needle"));
+		$this->assertFalse($this->isTextPresent("Message4"));
+
+		// Create some documents
+
+		$this->gotoProject('projecta');
+		$this->clickAndWait("link=Docs");
+		$this->clickAndWait("link=Submit new documentation");
+		$this->type("title", "Doc1 Vladimir");
+		$this->type("description", "Jenkins buildbot");
+		$this->click("//input[@name='type' and @value='pasteurl']");
+		$this->type("file_url", "http://buildbot3.fusionforge.org/");
+		$this->clickAndWait("submit");
+
+		$this->clickAndWait("link=Submit new documentation");
+		$this->type("title", "Doc2 Astromir");
+		$this->type("description", "Hudson (the needle)");
+		$this->click("//input[@name='type' and @value='pasteurl']");
+		$this->type("file_url", "http://buildbot.fusionforge.org/");
+		$this->clickAndWait("submit");
+
+		// Search in Documents
+
+		$this->select("type_of_search", "label=This project's documents");
+		$this->type("//input[@name='words']", "jenkins");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Doc1"));
+		$this->assertFalse($this->isTextPresent("Doc2"));
+
+		$this->select("type_of_search", "label=This project's documents");
+		$this->type("//input[@name='words']", "vladimir jenkins");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("Doc1"));
+		$this->assertFalse($this->isTextPresent("Doc2"));
+
+		// Create some news
+
+		$this->gotoProject('projecta');
+		$this->clickAndWait("link=News");
+		$this->clickAndWait("link=Submit");
+		$this->type("summary", "News1 daily planet");
+		$this->type("details", "Clark Kent's newspaper");
+		$this->clickAndWait("submit");
+
+		$this->clickAndWait("link=Submit");
+		$this->type("summary", "News2 usenet");
+		$this->type("details", "alt sysadmin recovery (needle)");
+		$this->clickAndWait("submit");
+		$this->clickAndWait("link=News");
+
+		// Search in news
+
+		$this->select("type_of_search", "label=This project's news");
+		$this->type("//input[@name='words']", "sysadmin");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("News2"));
+
+		$this->select("type_of_search", "label=This project's news");
+		$this->type("//input[@name='words']", "daily newspaper");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertFalse($this->isTextPresent("No matches found for"));
+		$this->assertTrue($this->isTextPresent("News1"));
+
+		// Search in entire project
+
+		$this->gotoProject('projecta');
+		$this->select("type_of_search", "label=Search the entire project");
+		$this->type("//input[@name='words']", "needle");
+		$this->clickAndWait("//input[@name='Search']");
+		$this->assertTrue($this->isTextPresent("Bug1"));
+		$this->assertFalse($this->isTextPresent("Bug2"));
+		$this->assertTrue($this->isTextPresent("Task1"));
+		$this->assertFalse($this->isTextPresent("Task2"));
+		$this->assertFalse($this->isTextPresent("Message1"));
+		$this->assertFalse($this->isTextPresent("Message2"));
+		$this->assertTrue($this->isTextPresent("Message3"));
+		$this->assertFalse($this->isTextPresent("Message4"));
+		$this->assertFalse($this->isTextPresent("Doc1"));
+		$this->assertTrue($this->isTextPresent("Doc2"));
+		$this->assertFalse($this->isTextPresent("News1"));
+		$this->assertTrue($this->isTextPresent("News2"));
+
+		// Advanced search
+		$this->gotoProject('projecta');
+		$this->clickAndWait('Link=Advanced search');
+		$this->click("//a[contains(@href,'short_forum') and .='all']");
+		$this->click("//a[contains(@href,'short_tracker') and .='all']");
+		$this->click("//a[contains(@href,'short_pm') and .='all']");
+		$this->click("//a[contains(@href,'short_docman') and .='all']");
+		$this->click("//a[contains(@href,'short_news') and .='all']");
+		$this->type("//div[@id='maindiv']//input[@name='words']", "needle");
+		$this->clickAndWait("//input[@name='submitbutton']");
+		$this->assertTrue($this->isTextPresent("Bug1"));
+		$this->assertFalse($this->isTextPresent("Bug2"));
+		$this->assertTrue($this->isTextPresent("Task1"));
+		$this->assertFalse($this->isTextPresent("Task2"));
+		$this->assertFalse($this->isTextPresent("Message1"));
+		$this->assertFalse($this->isTextPresent("Message2"));
+		$this->assertTrue($this->isTextPresent("Message3"));
+		$this->assertFalse($this->isTextPresent("Message4"));
+		$this->assertFalse($this->isTextPresent("Doc1"));
+		$this->assertTrue($this->isTextPresent("Doc2"));
+		$this->assertFalse($this->isTextPresent("News1"));
+		$this->assertTrue($this->isTextPresent("News2"));
+	}
+
 }
 ?>

Modified: trunk/tests/scripts/fusionforge-build-and-test-deb.sh
===================================================================
--- trunk/tests/scripts/fusionforge-build-and-test-deb.sh	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/tests/scripts/fusionforge-build-and-test-deb.sh	2011-10-14 08:01:40 UTC (rev 14621)
@@ -32,7 +32,7 @@
 echo "Set forge admin password"
 ssh root@$HOST "/usr/share/gforge/bin/forge_set_password $FORGE_ADMIN_USERNAME $FORGE_ADMIN_PASSWORD"
 ssh root@$HOST "LANG=C a2dissite default ; LANG=C invoke-rc.d apache2 reload"
-ssh root@$HOST "(echo [core];echo use_ssl=no) > /etc/gforge/config.ini.d/zzz-builbot.ini"
+ssh root@$HOST "(echo [core];echo use_ssl=no) > /etc/gforge/config.ini.d/zzz-buildbot.ini"
 
 # Dump database
 echo "Dump freshly installed database"

Modified: trunk/tests/scripts/fusionforge-build-and-test-rpm.sh
===================================================================
--- trunk/tests/scripts/fusionforge-build-and-test-rpm.sh	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/tests/scripts/fusionforge-build-and-test-rpm.sh	2011-10-14 08:01:40 UTC (rev 14621)
@@ -19,7 +19,7 @@
 ssh root@$HOST "FFORGE_DB=$DB_NAME FFORGE_USER=gforge FFORGE_ADMIN_USER=$FORGE_ADMIN_USERNAME FFORGE_ADMIN_PASSWORD=$FORGE_ADMIN_PASSWORD export FFORGE_DB FFORGE_USER FFORGE_ADMIN_USER FFORGE_ADMIN_PASSWORD; yum install -y --skip-broken fusionforge fusionforge-plugin-scmsvn fusionforge-plugin-online_help fusionforge-plugin-extratabs fusionforge-plugin-ldapextauth fusionforge-plugin-scmgit fusionforge-plugin-blocks"
 
 scp -p root@$HOST:/var/cache/yum/timedhosts.txt /tmp/timedhosts.txt || true
-ssh root@$HOST '(echo [core];echo use_ssl=no) > /etc/gforge/config.ini.d/zzz-builbot.ini'
+ssh root@$HOST '(echo [core];echo use_ssl=no;echo use_fti=no) > /etc/gforge/config.ini.d/zzz-buildbot.ini'
 ssh root@$HOST "su - postgres -c \"pg_dumpall\" > /root/dump"
 # Install a fake sendmail to catch all outgoing emails.
 # ssh root@".HOST." 'perl -spi -e s#/usr/sbin/sendmail#/usr/share/tests/scripts/catch_mail.php# /etc/gforge/local.inc'

Modified: trunk/tests/scripts/fusionforge-build-and-test-src-cos.sh
===================================================================
--- trunk/tests/scripts/fusionforge-build-and-test-src-cos.sh	2011-10-14 07:50:35 UTC (rev 14620)
+++ trunk/tests/scripts/fusionforge-build-and-test-src-cos.sh	2011-10-14 08:01:40 UTC (rev 14621)
@@ -32,7 +32,7 @@
 ssh root@$HOST "su - postgres -c \"pg_dumpall\" > /root/dump"
 
 echo "Set use_ssl=no"
-ssh root@$HOST "(echo [core];echo use_ssl=no) > /etc/gforge/config.ini.d/zzz-zbuildbot.ini"
+ssh root@$HOST "(echo [core];echo use_ssl=no;echo use_fti=no) > /etc/gforge/config.ini.d/zzz-zbuildbot.ini"
 
 #  Install a fake sendmail to catch all outgoing emails.
 # ssh root@$HOST "perl -spi -e s#/usr/sbin/sendmail#/opt/tests/scripts/catch_mail.php# /etc/gforge/local.inc"




More information about the Fusionforge-commits mailing list