[Fusionforge-commits] r11725 - in trunk: . src src/common/include src/db src/debian src/plugins/cvstracker/db src/plugins/scmgit/common src/plugins/scmsvn/common src/www/admin src/www/my src/www/pm tests/func/Testing
Roland Mas
lolando at libremir.placard.fr.eu.org
Wed Dec 8 18:42:23 CET 2010
Author: lolando
Date: 2010-12-08 18:42:23 +0100 (Wed, 08 Dec 2010)
New Revision: 11725
Added:
trunk/src/common/include/DatabaseInstaller.class.php
Modified:
trunk/
trunk/src/common/include/Error.class.php
trunk/src/common/include/Group.class.php
trunk/src/common/include/Plugin.class.php
trunk/src/db/upgrade-db.php
trunk/src/debian/README.Debian.tmpl
trunk/src/fusionforge.spec
trunk/src/plugins/cvstracker/db/20050305.sql
trunk/src/plugins/scmgit/common/GitPlugin.class.php
trunk/src/plugins/scmsvn/common/SVNPlugin.class.php
trunk/src/www/admin/pluginman.php
trunk/src/www/my/dashboard.php
trunk/src/www/pm/calendar.php
trunk/tests/func/Testing/RPMSeleniumRemoteSuite.php
trunk/tests/func/Testing/SeleniumGforge.php
trunk/tests/func/Testing/TarSeleniumRemoteSuite.php
Log:
Merged from 5.1: improvements to pluginman, doc fixes, other minor changes
Property changes on: trunk
___________________________________________________________________
Modified: svn:mergeinfo
- /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
/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
/branches/Branch_5_1:11607-11609,11621,11625,11627,11631,11638,11644,11647-11651,11677,11680-11681,11683-11684
/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
+ /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
/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
/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
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:/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:/trunk:8727
Copied: trunk/src/common/include/DatabaseInstaller.class.php (from rev 11724, branches/Branch_5_1/src/common/include/DatabaseInstaller.class.php)
===================================================================
--- trunk/src/common/include/DatabaseInstaller.class.php (rev 0)
+++ trunk/src/common/include/DatabaseInstaller.class.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -0,0 +1,128 @@
+<?php
+
+class DatabaseInstaller extends Error {
+
+ function DatabaseInstaller($name='', $path='') {
+ $this->name = $name;
+ $this->path = $path;
+ }
+
+ function install() {
+ $name = $this->name;
+ $path = $this->path;
+
+ $init = "$path/$name-init.sql";
+ if (is_file($init)) {
+ $ret = $this->runScript($init);
+ if (!$ret) {
+ return false;
+ }
+ return $this->upgrade($name, $path);
+ }
+ return $this->setError(_('No database installation scripts found.'));
+ }
+
+ function upgrade() {
+ $name = $this->name;
+ $path = $this->path;
+
+ if ($name) {
+ $prefix = $name.':';
+ $date = -1;
+ } else {
+ $prefix = '';
+ $date = $this->getDatabaseDate();
+ }
+
+ $scripts = $this->getScripts($path);
+ $output = '';
+ foreach ($scripts as $script) {
+ if ((int) $script['date'] > $date) {
+ $res = db_query_params ('SELECT * FROM database_changes WHERE filename=$1',
+ array ($prefix.$script['filename'])) ;
+ if (!$res) {
+ return $this->setError("ERROR-2: ".db_error());
+ } else if (db_numrows($res) == 0) {
+ $output .= "Running script: {$script['filename']}\n";
+ $result = $this->runScript($path.'/'.$script['filename']);
+ if ($result) {
+ $res = db_query_params ('INSERT INTO database_changes (filename) VALUES ($1)',
+ array ($prefix.$script['filename'])) ;
+ if (!$res) {
+ return $this->setError("ERROR-3: ".db_error());
+ }
+ } else {
+ return false;
+ }
+ } else {
+// $output .= "Skipping script: $prefix{$script['filename']}\n";
+ }
+ }
+ }
+ return $output;
+ }
+
+ private static function getDatabaseDate() {
+ // Check if table 'database_startpoint' has proper values
+ $res = db_query_params ('SELECT * FROM database_startpoint', array()) ;
+ if (!$res) { // db error
+ return $this->setError("DB-ERROR-3: ".db_error()."\n");
+ } else if (db_numrows($res) == 0) { // table 'database_startpoint' is empty
+ return $this->setError("Table 'database_startpoint' is empty, run startpoint.php first.");
+ } else { // get the start date from the db
+ return (int) db_result($res, 0, 'db_start_date');
+ }
+ return false;
+ }
+
+ private function runScript($file) {
+ // If a condition statement if found, then run the script only if true.
+ $content = file($file);
+ if (preg_match('/^-- TRUE\? (.+)/', $content[0], $match)) {
+ $res = db_query_params($match[1], array());
+ if (db_result($res,0,0) == 'f') {
+ return true;
+ }
+ }
+ $res = db_query_from_file($file);
+ if ($res) {
+ while ($res) {
+ db_free_result($res);
+ $res = db_next_result();
+ }
+ } else {
+ return $this->setError(_('Database initialisation error:').' '.db_error());
+ }
+ return true;
+ }
+
+ private static function getScripts($dir) {
+ $data = array();
+ if (is_dir($dir)) {
+ if ($dh = opendir($dir)) {
+ while (($file = readdir($dh)) !== false) {
+ $pos = strrpos($file, '.');
+ if ($pos !== false && $pos > 0) {
+ $name = substr($file, 0, $pos);
+ if (strlen($name) >= 8) {
+ $date_aux = substr($name, 0, 8);
+ $type_aux = substr($file, $pos + 1);
+ if ((int) $date_aux > 20000000 && ($type_aux=='sql' || $type_aux=='php')
+ && strpos($file, 'debian') === false) {
+ $data[] = array('date'=>$date_aux, 'filename'=>$file, 'ext'=>$type_aux);
+ }
+ }
+ }
+ }
+ closedir($dh);
+ }
+ usort($data, array('DatabaseInstaller', 'compare_scripts'));
+ reset($data);
+ }
+ return $data;
+ }
+
+ private static function compare_scripts($script1, $script2) {
+ return strcmp($script1['filename'], $script2['filename']);
+ }
+}
Modified: trunk/src/common/include/Error.class.php
===================================================================
--- trunk/src/common/include/Error.class.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/common/include/Error.class.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -76,6 +76,7 @@
$this->error_state=true;
$this->error_message=$string;
$this->error_code=$code;
+ return false;
}
/**
Modified: trunk/src/common/include/Group.class.php
===================================================================
--- trunk/src/common/include/Group.class.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/common/include/Group.class.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -2172,7 +2172,7 @@
*
* @return array of User objects for this group.
*/
- function &getMembers() {
+ function getMembers() {
return $this->getUsers (true) ;
}
Modified: trunk/src/common/include/Plugin.class.php
===================================================================
--- trunk/src/common/include/Plugin.class.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/common/include/Plugin.class.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -147,7 +147,78 @@
$role =& $params['role'];
}
- function groupisactivecheckbox(&$params) {
+ function install() {
+ $this->installCode();
+ $this->installConfig();
+ $this->installDatabase();
+ }
+
+ function installCode() {
+ $name = $this->name;
+ $path = forge_get_config('plugins_path') . '/' . $name;
+ $installdir = $this->getInstallDir();
+
+ // Create a symbolic links to plugins/<plugin>/www (if directory exists).
+ if (is_dir($path . '/www')) { // if the plugin has a www dir make a link to it
+ // The apache group or user should have write perms the www/plugins folder...
+ if (!is_link('../'.$installdir)) {
+ $code = symlink($path . '/www', '../'.$installdir);
+ if (!$code) {
+ $this->setError('['.'../'.$installdir.'->'.$path . '/www]'.
+ '<br />Soft link to www couldn\'t be created. Check the write permissions for apache in gforge www/plugins dir or create the link manually.');
+ }
+ }
+ }
+
+ // Create a symbolic links to plugins/<plugin>/etc/plugins/<plugin> (if directory exists).
+ if (is_dir($path . '/etc/plugins/' . $name)) {
+ // The apache group or user should have write perms in /etc/gforge/plugins folder...
+ if (!is_link(forge_get_config('config_path'). '/plugins/'.$name) && !is_dir(forge_get_config('config_path'). '/plugins/'.$name)) {
+ $code = symlink($path . '/etc/plugins/' . $name, forge_get_config('config_path'). '/plugins/'.$name);
+ if (!$code) {
+ $this->setError('['.forge_get_config('config_path'). '/plugins/'.$name.'->'.$path . '/etc/plugins/' . $name . ']'.
+ _('<br />Config file could not be linked to etc/gforge/plugins/%1$s. Check the write permissions for apache in /etc/gforge/plugins or create the link manually.'), $name);
+ }
+ }
+ }
+ }
+
+ function installConfig() {
+ $name = $this->name;
+ $path = forge_get_config('plugins_path') . '/' . $name;
+
+ // Create a symbolic links to plugins/<plugin>/etc/plugins/<plugin> (if directory exists).
+ if (is_dir($path . '/etc/plugins/' . $name)) {
+ // The apache group or user should have write perms in /etc/gforge/plugins folder...
+ if (!is_link(forge_get_config('config_path'). '/plugins/'.$name) && !is_dir(forge_get_config('config_path'). '/plugins/'.$name)) {
+ $code = symlink($path . '/etc/plugins/' . $name, forge_get_config('config_path'). '/plugins/'.$name);
+ if (!$code) {
+ $this->setError('['.forge_get_config('config_path'). '/plugins/'.$name.'->'.$path . '/etc/plugins/' . $name . ']'.
+ _('<br />Config file could not be linked to etc/gforge/plugins/%1$s. Check the write permissions for apache in /etc/gforge/plugins or create the link manually.'), $name);
+ }
+ }
+ }
+ }
+
+ function installDatabase() {
+ $name = $this->name;
+ $path = forge_get_config('plugins_path') . '/' . $name . '/db';
+
+ require_once $GLOBALS['gfcommon'].'include/DatabaseInstaller.class.php';
+ $di = new DatabaseInstaller($name, $path);
+
+ // Search for database tables, if present then upgrade.
+ $res=db_query_params ('SELECT COUNT(*) FROM pg_class WHERE (relname=$1 OR relname like $2) AND relkind=$3',
+ array ('plugin_'.$name, 'plugin_'.$name.'_%', 'r'));
+ $count = db_result($res,0,0);
+ if ($count == 0) {
+ $di->install();
+ } else {
+ $di->upgrade();
+ }
+ }
+
+ function groupisactivecheckbox (&$params) {
//Check if the group is active
// this code creates the checkbox in the project edit public info page to activate/deactivate the plugin
$display = 1;
Modified: trunk/src/db/upgrade-db.php
===================================================================
--- trunk/src/db/upgrade-db.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/db/upgrade-db.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -1,6 +1,10 @@
#! /usr/bin/php
<?php
+// upgrade-db.php => Upgrade the main database.
+// upgrade-db.php all => Upgrade the main database and active plugins.
+// upgrade-db.php <plugin> => Upgrade only the database of the given active plugin.
+
require_once dirname(__FILE__).'/../www/env.inc.php';
require_once $gfcommon.'include/pre.php';
@@ -72,37 +76,60 @@
exit();
}
-$scripts = get_scripts($db_path);
-
-foreach ($scripts as $script) {
- if ((int) $script['date'] > $date) {
- $res = db_query_params ('SELECT * FROM database_changes WHERE filename=$1',
- array ("{$script['filename']}")) ;
- if (!$res) {
- // error
- show("ERROR-2: ".db_error()."\n");
- exit();
- } else if (db_numrows($res) == 0) {
- show("Running script: {$script['filename']}\n");
- $result = run_script($script);
- if ($result) {
- $res = db_query_params ('INSERT INTO database_changes (filename) VALUES ($1)',
- array ("{$script['filename']}")) ;
- if (!$res)
- {
- show("ERROR-3: ".db_error()."\n");
+// Upgrade main database if no argument or if all)
+if ($argc == 1 || $argv[1] == 'all') {
+ $scripts = get_scripts($db_path);
+ foreach ($scripts as $script) {
+ if ((int) $script['date'] > $date) {
+ $res = db_query_params ('SELECT * FROM database_changes WHERE filename=$1',
+ array ("{$script['filename']}")) ;
+ if (!$res) {
+ // error
+ show("ERROR-2: ".db_error()."\n");
+ exit();
+ } else if (db_numrows($res) == 0) {
+ show("Running script: {$script['filename']}\n");
+ $result = run_script($script);
+ if ($result) {
+ $res = db_query_params ('INSERT INTO database_changes (filename) VALUES ($1)',
+ array ("{$script['filename']}")) ;
+ if (!$res)
+ {
+ show("ERROR-3: ".db_error()."\n");
+ exit();
+ }
+ } else {
+ // error
exit();
}
} else {
- // error
- exit();
+ // show("Skipping script: {$script['filename']}\n");
}
- } else {
- show("Skipping script: {$script['filename']}\n");
}
}
}
+// Upgrade activated plugins.
+if ($argc == 2) {
+ require_once $gfcommon.'include/DatabaseInstaller.class.php';
+ $plugins = get_installed_plugins();
+ foreach ($plugins as $plugin) {
+ if ($argv[1] == 'all' || $argv[1] == $plugin) {
+ $di = new DatabaseInstaller($plugin, dirname($db_path) . '/plugins/' . $plugin . '/db');
+ echo $di->upgrade();
+ }
+ }
+}
+
+function get_installed_plugins() {
+ $plugins = array();
+ $res = db_query_params ('SELECT plugin_name FROM plugins', array ());
+ while ($row = db_fetch_array($res)) {
+ $plugins[] = $row['plugin_name'];
+ }
+ return $plugins;
+}
+
function get_scripts($dir) {
$data = array();
if (is_dir($dir)) {
Modified: trunk/src/debian/README.Debian.tmpl
===================================================================
--- trunk/src/debian/README.Debian.tmpl 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/debian/README.Debian.tmpl 2010-12-08 17:42:23 UTC (rev 11725)
@@ -4,7 +4,7 @@
@FORGENAME@ is packaged for Debian, and was formerly packaged under
the 'gforge' source package name. Even though a transition is in
progress towards renaming it widely, only high-level meta-packages are
-named with the '@FORGENAME@' prefix. The rest of the packages are
+named with the '@PACKAGE@' prefix. The rest of the packages are
still named with the 'gforge-' prefix, so expect most paths and
filenames to still be named in relation to 'gforge'.
@@ -27,6 +27,8 @@
Note on documentation
---------------------
+See contents of /usr/share/doc/@OLDPACKAGE at -common/ first.
+
Although a few documentation files from upstream are included, they
are either very out of date or practically useless. I mostly include
them for completeness's sake (and per request, too). The files I'm
@@ -91,7 +93,7 @@
Should these settings not suit you, it is possible to change
configuration options by :
- 1. modifying /etc/@FORGENAME@/@FORGENAME at .conf which contains the
+ 1. modifying /etc/@PACKAGE@/@PACKAGE at .conf which contains the
basic settings
( 2. Optional : copy some template files from
/usr/share/gforge/etc/local.d/ to /etc/gforge/local.d/ (TO BE
@@ -99,9 +101,9 @@
3. regenerate the runtime config files by issueing :
# fusionforge-config
-Customizations in /etc/@FORGENAME@/@FORGENAME at .conf may include :
+Customizations in /etc/@PACKAGE@/@PACKAGE at .conf may include :
- switching to HTTPS with 'sys_use_ssl=true',
- - setting a custom URL prefix with 'sys_urlprefix=/@FORGENAME@/' for
+ - setting a custom URL prefix with 'sys_urlprefix=/@PACKAGE@/' for
instance,
etc.
Modified: trunk/src/fusionforge.spec
===================================================================
--- trunk/src/fusionforge.spec 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/fusionforge.spec 2010-12-08 17:42:23 UTC (rev 11725)
@@ -423,7 +423,7 @@
### Plugin setup ###
%{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/*.ini $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d/
%{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/cron.d/* $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/
-%{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/httpd.d/* $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/
+%{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/httpd.d/* $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.d/
%{__cp} -rp $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/plugins/* $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/
%{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/README
@@ -762,7 +762,7 @@
%files plugin-hudson
%config(noreplace) %{FORGE_CONF_DIR}/plugins/hudson/
-%{_sysconfdir}/httpd/conf.d/62plugin-hudson
+%{FORGE_CONF_DIR}/httpd.d/62plugin-hudson
%{FORGE_DIR}/plugins/hudson
%{FORGE_DIR}/www/plugins/hudson
@@ -779,7 +779,7 @@
%files plugin-mediawiki
%config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/mediawiki.ini
%config(noreplace) %{FORGE_CONF_DIR}/httpd.d/03mediawiki.conf
-%{_sysconfdir}/httpd/conf.d/61plugin-mediawiki
+%{FORGE_CONF_DIR}/httpd.d/61plugin-mediawiki
%{FORGE_DIR}/plugins/mediawiki/
%{FORGE_DIR}/www/plugins/mediawiki
/usr/share/mediawiki/skins/gforge
@@ -792,7 +792,7 @@
%files plugin-oslc
%config(noreplace) %{FORGE_CONF_DIR}/plugins/oslc/
-%{_sysconfdir}/httpd/conf.d/plugin-oslc.inc
+%{FORGE_CONF_DIR}/httpd.d/plugin-oslc.inc
%{FORGE_DIR}/plugins/oslc
%{FORGE_DIR}/www/plugins/oslc
@@ -822,6 +822,7 @@
%files plugin-scmgit
%config(noreplace) %{FORGE_CONF_DIR}/plugins/scmgit/
%config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmgit.ini
+%{FORGE_CONF_DIR}/httpd.d/plugin-scmgit.conf
%{FORGE_DIR}/plugins/scmgit
%{FORGE_DIR}/www/plugins/scmgit
@@ -839,8 +840,8 @@
%config(noreplace) %{FORGE_CONF_DIR}/plugins/scmcvs/
%config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmcvs.ini
%{_sysconfdir}/cron.d/%{name}-plugin-scmcvs
-%{_sysconfdir}/httpd/conf.d/30virtualcvs
-%{_sysconfdir}/httpd/conf.d/31virtualcvs.ssl
+%{FORGE_CONF_DIR}/httpd.d/30virtualcvs
+%{FORGE_CONF_DIR}/httpd.d/31virtualcvs.ssl
%{FORGE_DIR}/plugins/scmcvs
%{FORGE_DIR}/www/plugins/scmcvs
%{FORGE_VAR_LIB}/chroot/scmrepos/cvs
@@ -874,7 +875,7 @@
%files plugin-wiki
%config(noreplace) %{FORGE_CONF_DIR}/plugins/wiki/
%{_sysconfdir}/cron.d/cron.wiki
-%{_sysconfdir}/httpd/conf.d/03wiki.conf
+%{FORGE_CONF_DIR}/httpd.d/03wiki.conf
%{FORGE_DIR}/plugins/wiki
%{FORGE_DIR}/www/wiki
@@ -892,11 +893,11 @@
%files plugin-mailman
%config(noreplace) %{FORGE_CONF_DIR}/plugins/mailman/
-%{_sysconfdir}/httpd/conf.d/62plugin-list-mailman
-%{_sysconfdir}/httpd/conf.d/200list.vhost
-%{_sysconfdir}/httpd/conf.d/20list
-%{_sysconfdir}/httpd/conf.d/20zlist.vhost
-%{_sysconfdir}/httpd/conf.d/21list.vhost.ssl
+%{FORGE_CONF_DIR}/httpd.d/62plugin-list-mailman
+%{FORGE_CONF_DIR}/httpd.d/200list.vhost
+%{FORGE_CONF_DIR}/httpd.d/20list
+%{FORGE_CONF_DIR}/httpd.d/20zlist.vhost
+%{FORGE_CONF_DIR}/httpd.d/21list.vhost.ssl
%{FORGE_DIR}/plugins/mailman
%{FORGE_DIR}/www/plugins/mailman
Modified: trunk/src/plugins/cvstracker/db/20050305.sql
===================================================================
--- trunk/src/plugins/cvstracker/db/20050305.sql 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/plugins/cvstracker/db/20050305.sql 2010-12-08 17:42:23 UTC (rev 11725)
@@ -1,3 +1,5 @@
+-- TRUE? SELECT data_type = 'date' FROM information_schema.columns WHERE table_name = 'plugin_cvstracker_data_master' AND column_name='cvs_date';
+
DROP INDEX plugin_cvstracker_group_artifact_id;
ALTER TABLE plugin_cvstracker_data_master ADD COLUMN cvs_date2 int4;
@@ -11,4 +13,4 @@
CREATE INDEX plugincvstrackerdataartifact_projecttaskid ON plugin_cvstracker_data_artifact(project_task_id);
CREATE INDEX plugincvstrackerdatamaster_holderid ON plugin_cvstracker_data_master(holder_id);
-CREATE INDEX plugincvstrackerdatamaster_cvsdate ON plugin_cvstracker_data_master(cvs_date);
\ No newline at end of file
+CREATE INDEX plugincvstrackerdatamaster_cvsdate ON plugin_cvstracker_data_master(cvs_date);
Modified: trunk/src/plugins/scmgit/common/GitPlugin.class.php
===================================================================
--- trunk/src/plugins/scmgit/common/GitPlugin.class.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/plugins/scmgit/common/GitPlugin.class.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -27,14 +27,13 @@
class GitPlugin extends SCMPlugin {
function GitPlugin () {
- global $gfconfig;
$this->SCMPlugin () ;
$this->name = 'scmgit';
$this->text = 'Git';
+ $this->hooks[] = 'scm_browser_page';
$this->hooks[] = 'scm_update_repolist' ;
- $this->hooks[] = 'scm_browser_page' ;
+ $this->hooks[] = 'scm_generate_snapshots' ;
$this->hooks[] = 'scm_gather_stats' ;
- $this->hooks[] = 'scm_generate_snapshots' ;
$this->register () ;
}
@@ -69,12 +68,11 @@
}
function getInstructionsForAnon ($project) {
- $b = '<h2>';
- $b .= _('Anonymous Git Access');
- $b .= '</h2>';
+ $b = '<h2>' . _('Anonymous Git Access') . '</h2>';
$b .= '<p>';
$b .= _('This project\'s Git repository can be checked out through anonymous access with the following command.');
$b .= '</p>';
+
$b .= '<p>' ;
$b .= '<tt>git clone '.util_make_url ('/anonscm/git/'.$project->getUnixName().'/'.$project->getUnixName().'.git').'</tt><br />';
$b .= '</p>';
@@ -258,6 +256,7 @@
// return $b ;
// }
+
function getStatsBlock ($project) {
return ;
}
@@ -267,7 +266,7 @@
if (!$project) {
return false ;
}
-
+
if (! $project->usesPlugin ($this->name)) {
return false;
}
@@ -403,55 +402,6 @@
return $list;
}
- function generateSnapshots ($params) {
-
-
- $project = $this->checkParams ($params) ;
- if (!$project) {
- return false ;
- }
-
- $group_name = $project->getUnixName() ;
-
- $snapshot = forge_get_config('scm_snapshots_path').'/'.$group_name.'-scm-latest.tar.gz';
- $tarball = forge_get_config('scm_tarballs_path').'/'.$group_name.'-scmroot.tar.gz';
-
- if (! $project->usesPlugin ($this->name)) {
- return false;
- }
-
- if (! $project->enableAnonSCM()) {
- unlink ($tarball) ;
- return false;
- }
-
- // TODO: ideally we generate one snapshot per git repository
- $toprepo = forge_get_config('repos_path', 'scmgit') ;
- $repo = $toprepo . '/' . $project->getUnixName() . '/' . $project->getUnixName() . '.git' ;
-
- if (!is_dir ($repo)) {
- unlink ($tarball) ;
- return false ;
- }
-
- $today = date ('Y-m-d') ;
- $tmp = trim (`mktemp -d`) ;
- if ($tmp == '') {
- return false ;
- }
-
- system ("GIT_DIR=\"$repo\" git archive --format=tar --prefix=$group_name-scm-$today/ HEAD | gzip > $tmp/snapshot.tar.gz");
- chmod ("$tmp/snapshot.tar.gz", 0644) ;
- copy ("$tmp/snapshot.tar.gz", $snapshot) ;
- unlink ("$tmp/snapshot.tar.gz") ;
-
- system ("tar czCf $toprepo $tmp/tarball.tar.gz " . $project->getUnixName()) ;
- chmod ("$tmp/tarball.tar.gz", 0644) ;
- copy ("$tmp/tarball.tar.gz", $tarball) ;
- unlink ("$tmp/tarball.tar.gz") ;
- system ("rm -rf $tmp") ;
- }
-
function gatherStats ($params) {
global $last_user, $usr_adds, $usr_deletes,
$usr_updates, $updates, $adds;
@@ -553,7 +503,7 @@
} else {
continue;
}
-
+
$uu = $usr_updates[$user] ? $usr_updates[$user] : 0 ;
$ua = $usr_adds[$user] ? $usr_adds[$user] : 0 ;
if ($uu > 0 || $ua > 0) {
@@ -573,8 +523,65 @@
}
db_commit();
}
- }
+ function generateSnapshots ($params) {
+
+ $project = $this->checkParams ($params) ;
+ if (!$project) {
+ return false ;
+ }
+
+ $group_name = $project->getUnixName() ;
+
+ $snapshot = forge_get_config('scm_snapshots_path').'/'.$group_name.'-scm-latest.tar.gz';
+ $tarball = forge_get_config('scm_tarballs_path').'/'.$group_name.'-scmroot.tar.gz';
+
+ if (! $project->usesPlugin ($this->name)) {
+ return false;
+ }
+
+ if (! $project->enableAnonSCM()) {
+ if (is_file($snapshot)) {
+ unlink ($snapshot) ;
+ }
+ if (is_file($tarball)) {
+ unlink ($tarball) ;
+ }
+ return false;
+ }
+
+ // TODO: ideally we generate one snapshot per git repository
+ $toprepo = forge_get_config('repos_path', 'scmgit') ;
+ $repo = $toprepo . '/' . $project->getUnixName() . '/' . $project->getUnixName() . '.git' ;
+
+ if (!is_dir ($repo)) {
+ if (is_file($snapshot)) {
+ unlink ($snapshot) ;
+ }
+ if (is_file($tarball)) {
+ unlink ($tarball) ;
+ }
+ return false ;
+ }
+
+ $tmp = trim (`mktemp -d`) ;
+ if ($tmp == '') {
+ return false ;
+ }
+ $today = date ('Y-m-d') ;
+ system ("GIT_DIR=\"$repo\" git archive --format=tar --prefix=$group_name-scm-$today/ HEAD | gzip > $tmp/snapshot.tar.gz");
+ chmod ("$tmp/snapshot.tar.gz", 0644) ;
+ copy ("$tmp/snapshot.tar.gz", $snapshot) ;
+ unlink ("$tmp/snapshot.tar.gz") ;
+
+ system ("tar czCf $toprepo $tmp/tarball.tar.gz " . $project->getUnixName()) ;
+ chmod ("$tmp/tarball.tar.gz", 0644) ;
+ copy ("$tmp/tarball.tar.gz", $tarball) ;
+ unlink ("$tmp/tarball.tar.gz") ;
+ system ("rm -rf $tmp") ;
+ }
+}
+
// Local Variables:
// mode: php
// c-file-style: "bsd"
Modified: trunk/src/plugins/scmsvn/common/SVNPlugin.class.php
===================================================================
--- trunk/src/plugins/scmsvn/common/SVNPlugin.class.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/plugins/scmsvn/common/SVNPlugin.class.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -49,7 +49,7 @@
$this->register () ;
}
-
+
function getDefaultServer() {
return forge_get_config('default_server', 'scmsvn') ;
}
@@ -80,7 +80,7 @@
}
function getInstructionsForAnon ($project) {
- $b = '<h2>' . _("Anonymous Subversion Access") . '</h2>';
+ $b = '<h2>' . _('Anonymous Subversion Access') . '</h2>';
$b .= '<p>';
$b .= _("This project's SVN repository can be checked out through anonymous access with the following command(s).");
$b .= '</p>';
@@ -338,9 +338,9 @@
$start_time = gmmktime( 0, 0, 0, $month, $day, $year);
$end_time = $start_time + 86400;
+ $adds = 0 ;
$updates = 0 ;
- $adds = 0 ;
- $usr_adds = array () ;
+ $usr_adds = array () ;
$usr_updates = array () ;
$repo = forge_get_config('repos_path', 'scmsvn') . '/' . $project->getUnixName() ;
@@ -423,7 +423,7 @@
} else {
continue;
}
-
+
$uu = $usr_updates[$user] ? $usr_updates[$user] : 0 ;
$ua = $usr_adds[$user] ? $usr_adds[$user] : 0 ;
if ($uu > 0 || $ua > 0) {
@@ -446,8 +446,6 @@
function generateSnapshots ($params) {
-
-
$project = $this->checkParams ($params) ;
if (!$project) {
return false ;
Modified: trunk/src/www/admin/pluginman.php
===================================================================
--- trunk/src/www/admin/pluginman.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/src/www/admin/pluginman.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -36,26 +36,23 @@
$pluginname = getStringFromRequest('update');
if ((getStringFromRequest('action')=='deactivate')) {
- if (getStringFromRequest('delusers')) {
- $res = db_query_params ('DELETE FROM user_plugin WHERE plugin_id = (SELECT plugin_id FROM plugins WHERE plugin_name = $1)',
+ $res = db_query_params ('DELETE FROM user_plugin WHERE plugin_id = (SELECT plugin_id FROM plugins WHERE plugin_name = $1)',
array($pluginname));
- if (!$res) {
- exit_error(db_error(),'admin');
- } else {
- $feedback .= sprintf(ngettext('%d user detached from plugin.', '%d users detached from plugin.', db_affected_rows($res)), db_affected_rows($res));
- }
+ if (!$res) {
+ exit_error(db_error(),'admin');
+ } else {
+ $feedback .= sprintf(ngettext('%d user detached from plugin.', '%d users detached from plugin.', db_affected_rows($res)), db_affected_rows($res));
}
- if (getStringFromRequest('delgroups')) {
- $res = db_query_params ('DELETE FROM group_plugin WHERE plugin_id = (SELECT plugin_id FROM plugins WHERE plugin_name = $1)',
+ $res = db_query_params ('DELETE FROM group_plugin WHERE plugin_id = (SELECT plugin_id FROM plugins WHERE plugin_name = $1)',
array($pluginname));
- if (!$res) {
- exit_error(db_error(),'admin');
- } else {
- $feedback .= sprintf(ngettext('%d project detached from plugin.', '%d projects detached from plugin.', db_affected_rows($res)), db_affected_rows($res));
- }
+ if (!$res) {
+ exit_error(db_error(),'admin');
+ } else {
+ $feedback .= sprintf(ngettext('%d project detached from plugin.', '%d projects detached from plugin.', db_affected_rows($res)), db_affected_rows($res));
}
+
$res = $pm->deactivate($pluginname);
if (!$res) {
exit_error(db_error(),'admin');
@@ -98,60 +95,11 @@
// Load the plugin and now get information from it.
$pm = plugin_manager_get_object();
$pm->LoadPlugin($pluginname);
- $plugin = $pm->GetPluginObject($pluginname);
- $installdir = $plugin->getInstallDir();
- // Create a symbolic links to plugins/<plugin>/www (if directory exists).
- if (is_dir(forge_get_config('plugins_path') . '/' . $pluginname . '/www')) { // if the plugin has a www dir make a link to it
- // The apache group or user should have write perms the www/plugins folder...
- if (!is_link('../'.$installdir)) {
- $code = symlink(forge_get_config('plugins_path') . '/' . $pluginname . '/www', '../'.$installdir);
- if (!$code) {
- $error_msg .= '<br />['.'../'.$installdir.'->'.forge_get_config('plugins_path') . '/' . $pluginname . '/www]';
- $error_msg .= _('<br />Soft link to www couldn\'t be created. Check the write permissions for apache in gforge www/plugins dir or create the link manually.');
- }
- }
- }
-
- // Create a symbolic links to plugins/<plugin>/etc/plugins/<plugin> (if directory exists).
- if (is_dir(forge_get_config('plugins_path') . '/' . $pluginname . '/etc/plugins/' . $pluginname)) {
- // The apache group or user should have write perms in /etc/gforge/plugins folder...
- if (!is_link(forge_get_config('config_path'). '/plugins/'.$pluginname) && !is_dir(forge_get_config('config_path'). '/plugins/'.$pluginname)) {
- $code = symlink(forge_get_config('plugins_path') . '/' . $pluginname . '/etc/plugins/' . $pluginname, forge_get_config('config_path'). '/plugins/'.$pluginname);
- if (!$code) {
- $error_msg .= '<br />['.forge_get_config('config_path'). '/plugins/'.$pluginname.'->'.forge_get_config('plugins_path') . '/' . $pluginname . '/etc/plugins/' . $pluginname . ']';
- $error_msg .= sprintf(_('<br />Config file could not be linked to etc/gforge/plugins/%1$s. Check the write permissions for apache in /etc/gforge/plugins or create the link manually.'), $pluginname);
- }
- }
- }
-
- if (getStringFromRequest('init')) {
- // now we're going to check if there's a XX-init.sql file and run it
- $db_init = forge_get_config('plugins_path') . '/' . $pluginname . '/db/' . $pluginname . '-init-pgsql.sql';
- if (!is_file($db_init)) {
- $db_init = forge_get_config('plugins_path') . '/' . $pluginname . '/db/' . $pluginname . '-init.sql';
- if (!is_file($db_init)) {
- $db_init = 0;
- }
- }
-
- if ($db_init) {
- $res = db_query_from_file($db_init);
-
- if ($res) {
- while ($res) {
- db_free_result($res);
- $res = db_next_result();
- }
- } else {
- $error_msg .= _('Initialisation error<br />Database said: ').db_error();
- }
- }
- //we check for a php script
- if (is_file(forge_get_config('plugins_path') . '/' . $pluginname . '/script/' . $pluginname . '-init.php')) {
- include(forge_get_config('plugins_path') . '/' . $pluginname . '/script/' . $pluginname . '-init.php');
- }
- }
+ $plugin = $pm->GetPluginObject($pluginname);
+ $plugin->installCode();
+ $plugin->installConfig();
+ $plugin->installDatabase();
}
}
}
@@ -160,32 +108,16 @@
echo '<h1>' . _('Plugin Manager') . '</h1>';
?>
-<script type="text/javascript">
-<!--
- function change(url,plugin)
- {
- field = document.theform.elements[plugin];
- if (field.checked) {
- window.location=(url + "&init=yes");
- } else {
- window.location=(url);
- }
- }
-
-// -->
-</script>
-
<form name="theform" action="<?php echo getStringFromServer('PHP_SELF'); ?>" method="get">
<?php
echo '<p>';
echo _('Here you can activate / deactivate site-wide plugins which are in the plugins/ folder. Then, you should activate them also per project, per user or whatever the plugin specifically applies to.');
echo '</p>';
echo '<p class="important">' . _('Be careful because some projects/users can be using the plugin. Deactivating it will remove the plugin from all users/projects.') . '</p>';
-echo '<p class="important">' . _('Be EXTRA careful running the SQL init script when a plugin has been deactivated prior use (and you want to re-activate) because some scripts have DROP TABLE statements.') . '</p>';
+
$title_arr = array( _('Plugin Name'),
_('Status'),
_('Action'),
- _('Run Init Script?'),
_('Users Using it'),
_('Projects Using it'),);
echo $HTML->listTableTop($title_arr);
@@ -206,7 +138,6 @@
//get the directories from the plugins dir
$filelist = array();
-$has_init = array();
if($handle = opendir(forge_get_config('plugins_path'))) {
while (($filename = readdir($handle)) !== false) {
if ($filename != '..' && $filename != '.' && $filename != ".svn" && $filename != "CVS" &&
@@ -236,7 +167,6 @@
}
if ($addPlugin) {
$filelist[] = $filename;
- $has_init[$filename] = is_dir(forge_get_config('plugins_path').'/'.$filename.'/db');
}
}
}
@@ -247,25 +177,22 @@
$j = 0;
foreach ($filelist as $filename) {
- $init = '<input type="hidden" id="'.$filename.'" name="script[]" value="'.$filename.'" />';
if ($pm->PluginIsInstalled($filename)) {
$msg = _('Active');
- $status="active";
- $link = "<a href=\"javascript:change('" . getStringFromServer('PHP_SELF') . "?update=$filename&action=deactivate";
+ $status = "active";
+ $link = util_make_link("/admin/pluginman.php?update=$filename&action=deactivate", _('Deactivate'));
- $res = db_query_params ('SELECT u.user_name FROM plugins p, user_plugin up, users u WHERE p.plugin_name = $1 and up.user_id = u.user_id and p.plugin_id = up.plugin_id',
+ $res = db_query_params ('SELECT u.user_name FROM plugins p, user_plugin up, users u WHERE p.plugin_name = $1 and up.user_id = u.user_id and p.plugin_id = up.plugin_id',
array($filename));
if ($res) {
if (db_numrows($res)>0) {
- // tell the form to delete the users, so that we don't re-do the query
- $link .= "&delusers=1";
$users = " ";
for($i=0;$i<db_numrows($res);$i++) {
$users .= db_result($res,$i,0) . " | ";
}
$users = substr($users,0,strlen($users) - 3); //remove the last |
} else {
- $users = _("none");
+ $users = _('None');
}
}
@@ -273,30 +200,21 @@
array($filename));
if ($res) {
if (db_numrows($res)>0) {
- // tell the form to delete the groups, so that we don't re-do the query
- $link .= "&delgroups=1";
$groups = " ";
for($i=0;$i<db_numrows($res);$i++) {
$groups .= db_result($res,$i,0) . " | ";
}
$groups = substr($groups,0,strlen($groups) - 3); //remove the last |
} else {
- $groups = _("none");
+ $groups = _('None');
}
}
- $link .= "','$filename');" . '">' . _('Deactivate') . "</a>";
- if ($has_init[$filename]) {
- $init = '<input id="'.$filename.'" type="checkbox" disabled="disabled" name="script[]" value="'.$filename.'" />';
- }
} else {
$msg = _('Inactive');
$status = "inactive";
- $link = "<a href=\"javascript:change('" . getStringFromServer('PHP_SELF') . "?update=$filename&action=activate','$filename');" . '">' . _('Activate') . "</a>";
- if ($has_init[$filename]) {
- $init = '<input id="'.$filename.'" type="checkbox" name="script[]" value="'.$filename.'" />';
- }
- $users = _("none");
- $groups = _("none");
+ $link = util_make_link("/admin/pluginman.php?update=$filename&action=activate", _('Activate'));
+ $users = _('None');
+ $groups = _('None');
}
$title = _('Current plugin status:'). ' ' .forge_get_config('plugin_status', $filename);
@@ -304,7 +222,6 @@
'<td title="'. $title .'" >'. $filename.'</td>'.
'<td class="'.$status.'" style="text-align:center">'. $msg .'</td>'.
'<td style="text-align:center;">'. $link .'</td>'.
- '<td style="text-align:center;">'. $init .'</td>'.
'<td style="text-align:left;">'. $users .'</td>'.
'<td style="text-align:left;">'. $groups .'</td></tr>'."\n";
Modified: trunk/tests/func/Testing/RPMSeleniumRemoteSuite.php
===================================================================
--- trunk/tests/func/Testing/RPMSeleniumRemoteSuite.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/tests/func/Testing/RPMSeleniumRemoteSuite.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -31,6 +31,8 @@
// Install a fake sendmail to catch all outgoing emails.
system("ssh root@".HOST." 'perl -spi -e s#/usr/sbin/sendmail#/usr/share/tests/scripts/catch_mail.php# /etc/gforge/local.inc'");
+
+ system("ssh root@".HOST." 'service crond stop'");
}
}
?>
Modified: trunk/tests/func/Testing/SeleniumGforge.php
===================================================================
--- trunk/tests/func/Testing/SeleniumGforge.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/tests/func/Testing/SeleniumGforge.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -203,16 +203,11 @@
}
protected function activatePlugin($pluginName) {
+ $this->switchUser('admin');
$this->open( ROOT . '/admin/pluginman.php?update='.$pluginName.'&action=deactivate');
$this->waitForPageToLoad("30000");
- $this->open( ROOT );
+ $this->open( ROOT . '/admin/pluginman.php?update='.$pluginName.'&action=activate');
$this->waitForPageToLoad("30000");
- $this->login('admin');
- $this->clickAndWait("link=Site Admin");
- $this->clickAndWait("link=Plugin Manager");
- $this->click($pluginName);
- $this->click("//a[contains(@href, \"javascript:change('".ROOT."/admin/pluginman.php?update=$pluginName&action=activate','$pluginName');\")]");
- $this->waitForPageToLoad("30000");
$this->logout();
}
Modified: trunk/tests/func/Testing/TarSeleniumRemoteSuite.php
===================================================================
--- trunk/tests/func/Testing/TarSeleniumRemoteSuite.php 2010-12-08 17:23:10 UTC (rev 11724)
+++ trunk/tests/func/Testing/TarSeleniumRemoteSuite.php 2010-12-08 17:42:23 UTC (rev 11725)
@@ -27,6 +27,8 @@
// Install a fake sendmail to catch all outgoing emails.
system("ssh root@".HOST." 'perl -spi -e s#/usr/sbin/sendmail#/opt/tests/scripts/catch_mail.php# /etc/gforge/local.inc'");
+
+ system("ssh root@".HOST." 'service crond stop'");
}
}
?>
More information about the Fusionforge-commits
mailing list