Compare commits
354 Commits
master
...
release-0.
Author | SHA1 | Date |
---|---|---|
Thomas | 4af76d20ca | 11 years ago |
Aleksander Machniak | 8d5832fe96 | 11 years ago |
Thomas | 9f0bbeb7e7 | 11 years ago |
Aleksander Machniak | 4109bb26ce | 11 years ago |
Aleksander Machniak | f2d4e40f09 | 11 years ago |
Aleksander Machniak | 5aa6f6203d | 11 years ago |
Aleksander Machniak | acbf6eede6 | 11 years ago |
Aleksander Machniak | 571aa9b04e | 11 years ago |
Thomas | 42173df79e | 11 years ago |
Aleksander Machniak | 68f4b54ccf | 11 years ago |
Aleksander Machniak | 57b44d2339 | 11 years ago |
Aleksander Machniak | bdc515d35c | 11 years ago |
Aleksander Machniak | 9919c2e68c | 11 years ago |
Aleksander Machniak | 065fdbaa65 | 11 years ago |
Aleksander Machniak | 62fe7203e6 | 11 years ago |
Aleksander Machniak | 7f1218caea | 11 years ago |
Aleksander Machniak | 256d5b7216 | 11 years ago |
Aleksander Machniak | b8c2554f1f | 11 years ago |
Aleksander Machniak | b403ede321 | 11 years ago |
Aleksander Machniak | e02bfe0831 | 11 years ago |
Aleksander Machniak | 63ec68b026 | 11 years ago |
Aleksander Machniak | 6632d42717 | 11 years ago |
Thomas B. | d499f06613 | 11 years ago |
Aleksander Machniak | 6a76f22759 | 11 years ago |
Thomas Bruederli | 4b125969ae | 11 years ago |
Aleksander Machniak | 93adce7abf | 11 years ago |
Aleksander Machniak | 262f485538 | 11 years ago |
Thomas Bruederli | 183c7ffd32 | 11 years ago |
Thomas Bruederli | d3cceb4882 | 11 years ago |
Aleksander Machniak | 74adada93c | 11 years ago |
Aleksander Machniak | c9e1e386e1 | 11 years ago |
Aleksander Machniak | c1a0b07242 | 11 years ago |
Aleksander Machniak | 5df7179b32 | 11 years ago |
Aleksander Machniak | 4fbbd81b9b | 11 years ago |
Aleksander Machniak | 652577d1fe | 11 years ago |
Aleksander Machniak | 3d0003dbdf | 11 years ago |
Aleksander Machniak | 5fd90b9a6b | 11 years ago |
Aleksander Machniak | 70eac89a5c | 11 years ago |
Aleksander Machniak | eae2a1e684 | 11 years ago |
Aleksander Machniak | e15869a979 | 11 years ago |
Aleksander Machniak | 4db26a430b | 11 years ago |
Aleksander Machniak | 6e14fcf9bf | 11 years ago |
Aleksander Machniak | 06efad1ac8 | 11 years ago |
Aleksander Machniak | e9c5b9f096 | 11 years ago |
Thomas Bruederli | a6f5a68880 | 11 years ago |
Aleksander Machniak | 896aa0d604 | 11 years ago |
Thomas Bruederli | 0e3f0ad9c9 | 11 years ago |
Thomas Bruederli | 5a3eb6fdeb | 11 years ago |
Thomas Bruederli | debd0f8515 | 11 years ago |
Thomas Bruederli | c9192c1c73 | 11 years ago |
Thomas Bruederli | d1c40bbd87 | 11 years ago |
Thomas Bruederli | 680d0ec072 | 11 years ago |
Thomas Bruederli | ed478cf064 | 11 years ago |
Thomas Bruederli | cf89e87eff | 11 years ago |
Thomas Bruederli | 341fa8b9a6 | 11 years ago |
Thomas Bruederli | 96c4b9098b | 11 years ago |
Thomas Bruederli | deacf16bee | 11 years ago |
Aleksander Machniak | f4ba655a41 | 11 years ago |
Aleksander Machniak | 216fdb891a | 11 years ago |
Aleksander Machniak | 17f11330f8 | 11 years ago |
Aleksander Machniak | 6d26369021 | 11 years ago |
Aleksander Machniak | 5591a63d70 | 11 years ago |
Aleksander Machniak | 254af68cd8 | 11 years ago |
Aleksander Machniak | f2d12f4363 | 11 years ago |
Aleksander Machniak | 276ea5fcae | 11 years ago |
Aleksander Machniak | a67ad15d2f | 11 years ago |
Aleksander Machniak | dfaf8c5b8c | 11 years ago |
Aleksander Machniak | addbb83521 | 11 years ago |
Aleksander Machniak | 7adcd62f62 | 11 years ago |
Thomas Bruederli | cd0633cf52 | 11 years ago |
Thomas Bruederli | ccce3cce3a | 11 years ago |
Thomas Bruederli | 08f5bbd26b | 11 years ago |
Thomas Bruederli | 8f14c5e1eb | 11 years ago |
Thomas Bruederli | 7df4db0b4f | 11 years ago |
Thomas Bruederli | 0d1f9ebe6a | 11 years ago |
Thomas Bruederli | 8b31b0b6b4 | 11 years ago |
Aleksander Machniak | fc5ce4758d | 11 years ago |
Aleksander Machniak | 39d14ee22b | 11 years ago |
Aleksander Machniak | 0cf43e310c | 11 years ago |
Aleksander Machniak | 00c2a90f69 | 11 years ago |
Thomas Bruederli | e6a7be8b1f | 11 years ago |
Aleksander Machniak | c3fe8a0b7a | 11 years ago |
Aleksander Machniak | e6b6925b67 | 11 years ago |
Aleksander Machniak | dc33646971 | 11 years ago |
Aleksander Machniak | 88e49b37f7 | 11 years ago |
Thomas Bruederli | 440b58b476 | 11 years ago |
Aleksander Machniak | c78a652746 | 11 years ago |
Aleksander Machniak | 6913c0ae86 | 11 years ago |
Aleksander Machniak | d2fa254d90 | 11 years ago |
Aleksander Machniak | 357dc97228 | 11 years ago |
Aleksander Machniak | daa131395e | 11 years ago |
Aleksander Machniak | 2f98161392 | 11 years ago |
Victor Benincasa | 856ec447fa | 11 years ago |
Aleksander Machniak | e221786bbe | 11 years ago |
Aleksander Machniak | 738c446078 | 11 years ago |
Thomas Bruederli | 6376aaff0c | 11 years ago |
Aleksander Machniak | b96be346de | 11 years ago |
Aleksander Machniak | 2bc814eed5 | 11 years ago |
Aleksander Machniak | 8b81c61396 | 11 years ago |
Aleksander Machniak | dd12eec622 | 11 years ago |
Aleksander Machniak | 85f756737f | 11 years ago |
Thomas Bruederli | 73c702c4d1 | 11 years ago |
Aleksander Machniak | 70ef48c2f3 | 11 years ago |
Aleksander Machniak | 853d0ab2a4 | 11 years ago |
Thomas Bruederli | 1f5557817f | 11 years ago |
Thomas Bruederli | b5c6850732 | 11 years ago |
Thomas Bruederli | 50d0a12933 | 11 years ago |
Thomas Bruederli | 63049afbfe | 11 years ago |
Aleksander Machniak | 36d5e8a7c3 | 11 years ago |
Aleksander Machniak | 35b0a75f72 | 11 years ago |
Aleksander Machniak | 04f841e900 | 11 years ago |
Aleksander Machniak | acb4b71ce5 | 11 years ago |
Aleksander Machniak | b9139f9f98 | 11 years ago |
Aleksander Machniak | 057b9e3e7f | 11 years ago |
Aleksander Machniak | aafc0a3d24 | 11 years ago |
Aleksander Machniak | 55e60c6d85 | 11 years ago |
Aleksander Machniak | 4257444957 | 11 years ago |
Aleksander Machniak | 0a7df4a32e | 11 years ago |
Aleksander Machniak | ab05ee25c1 | 11 years ago |
Aleksander Machniak | 72c8504b99 | 11 years ago |
Aleksander Machniak | 6213c6a6e1 | 11 years ago |
Aleksander Machniak | 1fe7d6ad75 | 11 years ago |
Aleksander Machniak | f5fac810dd | 11 years ago |
Aleksander Machniak | e12ac4e9b5 | 11 years ago |
Aleksander Machniak | ecbc8770c6 | 11 years ago |
Aleksander Machniak | f031cb6c5e | 11 years ago |
Aleksander Machniak | 983308e8b3 | 11 years ago |
Aleksander Machniak | 7b81cdb8e3 | 11 years ago |
Aleksander Machniak | 40d1f99cb2 | 11 years ago |
Aleksander Machniak | 1a9d466ef3 | 11 years ago |
Aleksander Machniak | f1c0c05223 | 11 years ago |
Aleksander Machniak | ace518fa6e | 11 years ago |
Aleksander Machniak | 62766c9665 | 11 years ago |
Aleksander Machniak | 2f39634b0a | 11 years ago |
Aleksander Machniak | e3cbe5dd62 | 11 years ago |
Aleksander Machniak | c79a7b734e | 11 years ago |
Aleksander Machniak | 9312ba2cb6 | 11 years ago |
Aleksander Machniak | 20df06be5d | 11 years ago |
Aleksander Machniak | 656005f056 | 11 years ago |
Aleksander Machniak | d16f90a1e2 | 11 years ago |
Thomas Bruederli | e68942c65b | 11 years ago |
Aleksander Machniak | 193d385f00 | 11 years ago |
Aleksander Machniak | 6b6209b587 | 11 years ago |
Thomas Bruederli | 57323253f7 | 11 years ago |
Thomas Bruederli | cd9801234b | 11 years ago |
Thomas Bruederli | 917f5e9eb1 | 11 years ago |
Aleksander Machniak | 05b5f969d5 | 11 years ago |
Aleksander Machniak | bde85428d6 | 11 years ago |
Aleksander Machniak | 71ec1b6063 | 11 years ago |
Aleksander Machniak | c8f5588c8a | 11 years ago |
Aleksander Machniak | 187cf5e1cd | 11 years ago |
Aleksander Machniak | 78c270c9f2 | 11 years ago |
Aleksander Machniak | e4f288c3fe | 11 years ago |
Aleksander Machniak | ac2df4e658 | 11 years ago |
Zou Guangxian | 13a77deef4 | 11 years ago |
Aleksander Machniak | af4185be64 | 11 years ago |
Aleksander Machniak | 2f5495763b | 11 years ago |
Aleksander Machniak | 56aeedd9cd | 11 years ago |
Aleksander Machniak | c067bb55df | 11 years ago |
Aleksander Machniak | fedbd431c2 | 11 years ago |
Aleksander Machniak | b7770e69fd | 11 years ago |
Thomas Bruederli | 2d6dca4714 | 11 years ago |
Aleksander Machniak | 283ac97852 | 11 years ago |
Aleksander Machniak | 9b82062f5a | 11 years ago |
Aleksander Machniak | 62fe548e08 | 11 years ago |
Aleksander Machniak | 54c6d6a943 | 11 years ago |
Aleksander Machniak | 410a4c663e | 11 years ago |
Aleksander Machniak | 9712d2240a | 11 years ago |
Aleksander Machniak | 6c3e466c74 | 11 years ago |
Thomas Bruederli | 5bc49fa22a | 11 years ago |
Aleksander Machniak | fb2f066370 | 11 years ago |
Aleksander Machniak | af98eb046f | 11 years ago |
Aleksander Machniak | 8eb66e38c9 | 11 years ago |
Aleksander Machniak | 967860765c | 11 years ago |
Aleksander Machniak | cf3f125784 | 11 years ago |
Aleksander Machniak | ecc1b3bd5e | 11 years ago |
Aleksander Machniak | b542f8800e | 11 years ago |
Aleksander Machniak | ae0c133d45 | 11 years ago |
Thomas Bruederli | 23ea51e98d | 11 years ago |
Aleksander Machniak | 4571305398 | 11 years ago |
Aleksander Machniak | 32229952ed | 11 years ago |
Aleksander Machniak | 17fb6ee986 | 11 years ago |
Aleksander Machniak | a2446d9296 | 11 years ago |
Aleksander Machniak | 102b08c6a2 | 11 years ago |
Aleksander Machniak | f55bfe096d | 11 years ago |
Aleksander Machniak | 037f4c27c2 | 11 years ago |
Aleksander Machniak | dbb86df538 | 11 years ago |
Aleksander Machniak | 2bed05d60a | 11 years ago |
Aleksander Machniak | 59997a3030 | 11 years ago |
Aleksander Machniak | 8b8462018a | 11 years ago |
Victor Benincasa | 9824e212cc | 11 years ago |
Aleksander Machniak | 51f52b525b | 11 years ago |
Aleksander Machniak | 7af32a95bb | 11 years ago |
Aleksander Machniak | 82f1c77847 | 11 years ago |
Aleksander Machniak | fa04e19be3 | 11 years ago |
Aleksander Machniak | d8752c9839 | 11 years ago |
Aleksander Machniak | ebaf850afa | 11 years ago |
Thomas Bruederli | a7db8f93ef | 11 years ago |
Aleksander Machniak | d83e12a620 | 11 years ago |
Thomas Bruederli | 8289923552 | 11 years ago |
Thomas Bruederli | a32682f3db | 11 years ago |
Thomas Bruederli | 2741d8eced | 11 years ago |
Thomas Bruederli | 706d3f472f | 11 years ago |
Aleksander Machniak | 6f4b50abea | 11 years ago |
Aleksander Machniak | 9404f4a7a6 | 11 years ago |
Aleksander Machniak | 84243db8c7 | 11 years ago |
Aleksander Machniak | d2d8d498c6 | 11 years ago |
Thomas Bruederli | e152227571 | 11 years ago |
Thomas Bruederli | b2c66d0331 | 11 years ago |
Thomas Bruederli | bd723e565d | 11 years ago |
Thomas Bruederli | 8d7f8c8c79 | 11 years ago |
Thomas Bruederli | d6cbdea04d | 11 years ago |
Aleksander Machniak | ea002b6d76 | 11 years ago |
Aleksander Machniak | 334784a051 | 11 years ago |
Aleksander Machniak | d74b410697 | 11 years ago |
Aleksander Machniak | f3739dc729 | 11 years ago |
Aleksander Machniak | 4dd9bb4671 | 11 years ago |
Aleksander Machniak | d22ef3f480 | 11 years ago |
Aleksander Machniak | 60fd3c8b5f | 11 years ago |
Aleksander Machniak | bb13a88054 | 11 years ago |
Thomas Bruederli | 64808edbc8 | 11 years ago |
Thomas Bruederli | 357485e7e1 | 11 years ago |
Thomas Bruederli | 0032911784 | 11 years ago |
Aleksander Machniak | 285b1ceb1c | 11 years ago |
Aleksander Machniak | e6d376236e | 11 years ago |
Aleksander Machniak | 8320af552c | 11 years ago |
Aleksander Machniak | 099d2b9fd4 | 11 years ago |
Aleksander Machniak | 321d8b06fb | 11 years ago |
Aleksander Machniak | aa30cf8f3c | 11 years ago |
Aleksander Machniak | d608088a64 | 11 years ago |
Aleksander Machniak | ae0821f1dd | 11 years ago |
Aleksander Machniak | 1f8fbf9455 | 11 years ago |
Thomas Bruederli | 73be4b5296 | 11 years ago |
Thomas Bruederli | 551ebd46de | 11 years ago |
Aleksander Machniak | e5a3e61052 | 11 years ago |
Thomas Bruederli | 57d1b12f2e | 11 years ago |
Aleksander Machniak | ad5cefeefc | 11 years ago |
Aleksander Machniak | 73f094ff3c | 11 years ago |
Aleksander Machniak | 71cae613f0 | 11 years ago |
Aleksander Machniak | da595a5027 | 11 years ago |
Thomas Bruederli | ffa0c53236 | 11 years ago |
Aleksander Machniak | 15963b7165 | 11 years ago |
Aleksander Machniak | a15a595158 | 11 years ago |
Aleksander Machniak | 1d719e43fb | 11 years ago |
Aleksander Machniak | ec27006ebe | 11 years ago |
Aleksander Machniak | 2c8afa8ac2 | 11 years ago |
Aleksander Machniak | c60f58f9fd | 11 years ago |
Aleksander Machniak | 4c0c248dd9 | 11 years ago |
Thomas Bruederli | 713259002f | 11 years ago |
Aleksander Machniak | 5b82ed62dc | 11 years ago |
Aleksander Machniak | 58993ffcbb | 11 years ago |
Aleksander Machniak | 097c544d98 | 11 years ago |
Aleksander Machniak | 2bbbca39ff | 11 years ago |
Aleksander Machniak | 5410eff830 | 11 years ago |
Aleksander Machniak | c4ff57c75f | 11 years ago |
Thomas Bruederli | 5aa77efcbe | 11 years ago |
Aleksander Machniak | 527e7d4509 | 11 years ago |
Aleksander Machniak | 91deac7c91 | 11 years ago |
Aleksander Machniak | acced81bba | 11 years ago |
Aleksander Machniak | 6e3f2b4294 | 11 years ago |
Aleksander Machniak | 4999702e1e | 11 years ago |
Aleksander Machniak | 9eb6d9e46a | 11 years ago |
Aleksander Machniak | 0ae20f6b9c | 11 years ago |
Aleksander Machniak | dedf138795 | 11 years ago |
Aleksander Machniak | 7797005999 | 11 years ago |
Aleksander Machniak | fddb9ff383 | 11 years ago |
Aleksander Machniak | ec2453866b | 11 years ago |
Thomas Bruederli | 6c8ea96a56 | 11 years ago |
Aleksander Machniak | f5584cbfeb | 11 years ago |
Thomas Bruederli | 91a4864231 | 11 years ago |
Thomas Bruederli | 22819a3081 | 11 years ago |
Thomas Bruederli | e3eda60a60 | 11 years ago |
Aleksander Machniak | ccc2e358f2 | 11 years ago |
Thomas Bruederli | f5533cf722 | 11 years ago |
Aleksander Machniak | e68d2a15f5 | 11 years ago |
Aleksander Machniak | bdf5656026 | 11 years ago |
Aleksander Machniak | fd777a8627 | 11 years ago |
Aleksander Machniak | 0ffb1a7af3 | 11 years ago |
Aleksander Machniak | 203251838b | 11 years ago |
Aleksander Machniak | 60dabb35ae | 11 years ago |
Aleksander Machniak | a7e1b93109 | 11 years ago |
Aleksander Machniak | ee393929a6 | 11 years ago |
Aleksander Machniak | 8b08ec158b | 11 years ago |
Thomas Bruederli | cbb695a6de | 11 years ago |
Thomas Bruederli | 4279dd18ee | 11 years ago |
Thomas Bruederli | 6b5e31f0af | 11 years ago |
Thomas Bruederli | b2932cb614 | 11 years ago |
Thomas Bruederli | df22967745 | 11 years ago |
Thomas Bruederli | 0016cde2fe | 11 years ago |
Thomas Bruederli | a33717b230 | 11 years ago |
Aleksander Machniak | e55fc1458e | 11 years ago |
Aleksander Machniak | 8514ab48d4 | 11 years ago |
Thomas Bruederli | 24d7cc5dd1 | 11 years ago |
Aleksander Machniak | 334d37eda0 | 11 years ago |
Aleksander Machniak | 4003dbe988 | 11 years ago |
Aleksander Machniak | 0be1804c00 | 11 years ago |
Aleksander Machniak | d3b18e6fc9 | 11 years ago |
Thomas Bruederli | 8c6ef8f05b | 11 years ago |
Aleksander Machniak | f2b4b8f3eb | 11 years ago |
Aleksander Machniak | 43aeb195c1 | 11 years ago |
Aleksander Machniak | 85c972a4f7 | 12 years ago |
Aleksander Machniak | 03ce0e12b8 | 12 years ago |
Aleksander Machniak | 6d5ad417d6 | 12 years ago |
Thomas Bruederli | 6782fe1fd7 | 12 years ago |
Thomas Bruederli | b4a30ac84f | 12 years ago |
Aleksander Machniak | 0f4022d54f | 12 years ago |
Aleksander Machniak | a188a9a305 | 12 years ago |
Aleksander Machniak | b0cc5519d7 | 12 years ago |
Aleksander Machniak | b3bbb28100 | 12 years ago |
Thomas Bruederli | 2a6472b2c2 | 12 years ago |
Thomas Bruederli | a8fd895263 | 12 years ago |
Thomas Bruederli | a2c2cb64e1 | 12 years ago |
Thomas Bruederli | 4901199761 | 12 years ago |
Thomas Bruederli | 5a0875ecb6 | 12 years ago |
Thomas Bruederli | c4a1d3fe5d | 12 years ago |
Aleksander Machniak | 7f693b6565 | 12 years ago |
Aleksander Machniak | cba8df5e1b | 12 years ago |
Aleksander Machniak | ab0eb04f8c | 12 years ago |
Thomas Bruederli | 39bb93d9ae | 12 years ago |
Thomas Bruederli | a7cec740ad | 12 years ago |
Thomas Bruederli | f6404d1288 | 12 years ago |
Thomas Bruederli | f2c0e7a9c0 | 12 years ago |
Aleksander Machniak | 01f1afbccc | 12 years ago |
Thomas Bruederli | aefb924082 | 12 years ago |
Thomas Bruederli | 2b2f34d354 | 12 years ago |
Thomas Bruederli | 6984ab64f7 | 12 years ago |
Aleksander Machniak | a2181ee625 | 12 years ago |
Aleksander Machniak | 68fb9e63f0 | 12 years ago |
Aleksander Machniak | 9deb663f94 | 12 years ago |
Aleksander Machniak | 1aca4cb3ae | 12 years ago |
Thomas Bruederli | 24607ceb80 | 12 years ago |
Thomas Bruederli | 8c293e2f28 | 12 years ago |
Aleksander Machniak | 2c195e0365 | 12 years ago |
Aleksander Machniak | cc2ee75ea4 | 12 years ago |
Aleksander Machniak | 55459c7576 | 12 years ago |
Aleksander Machniak | 5a2453703a | 12 years ago |
Aleksander Machniak | f5c7df4c32 | 12 years ago |
Aleksander Machniak | a03c28a22f | 12 years ago |
Thomas Bruederli | 2080feca93 | 12 years ago |
Thomas Bruederli | ba36369638 | 12 years ago |
Thomas Bruederli | a3e341cb29 | 12 years ago |
Thomas Bruederli | 7cc1d3ae17 | 12 years ago |
Aleksander Machniak | 536d45d3a2 | 12 years ago |
Thomas Bruederli | 9d318f5347 | 12 years ago |
Thomas Bruederli | 25a31031b0 | 12 years ago |
Thomas Bruederli | d9f061b558 | 12 years ago |
Thomas Bruederli | a0eb4aef29 | 12 years ago |
Thomas Bruederli | b33f21867f | 12 years ago |
Thomas Bruederli | 0938f6622b | 12 years ago |
Aleksander Machniak | 941fa51836 | 12 years ago |
Aleksander Machniak | fd88a22eff | 12 years ago |
Aleksander Machniak | 942cbb6581 | 12 years ago |
Thomas Bruederli | 6fdc35e13e | 12 years ago |
Thomas Bruederli | 2c6aea9b8e | 12 years ago |
@ -1,6 +1,6 @@
|
|||||||
-- Updates from version 0.9-beta
|
-- Updates from version 0.9-beta
|
||||||
|
|
||||||
CREATE TABLE system (
|
CREATE TABLE IF NOT EXISTS system (
|
||||||
name varchar(64) NOT NULL PRIMARY KEY,
|
name varchar(64) NOT NULL PRIMARY KEY,
|
||||||
value text NOT NULL
|
value text NOT NULL
|
||||||
);
|
);
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
-- drop temp table created in 2012080700.sql
|
||||||
|
DROP TABLE IF EXISTS tmp_users;
|
@ -1,97 +0,0 @@
|
|||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
| bin/dumpschema.sh |
|
|
||||||
| |
|
|
||||||
| This file is part of the Roundcube Webmail client |
|
|
||||||
| Copyright (C) 2005-2009, The Roundcube Dev Team |
|
|
||||||
| |
|
|
||||||
| Licensed under the GNU General Public License version 3 or |
|
|
||||||
| any later version with exceptions for skins & plugins. |
|
|
||||||
| See the README file for a full license statement. |
|
|
||||||
| |
|
|
||||||
| PURPOSE: |
|
|
||||||
| Dumps database schema in XML format using MDB2_Schema |
|
|
||||||
| |
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
| Author: Thomas Bruederli <roundcube@gmail.com> |
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
*/
|
|
||||||
|
|
||||||
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
|
|
||||||
|
|
||||||
require INSTALL_PATH.'program/include/clisetup.php';
|
|
||||||
|
|
||||||
/** callback function for schema dump **/
|
|
||||||
function print_schema($dump)
|
|
||||||
{
|
|
||||||
foreach ((array)$dump as $part)
|
|
||||||
echo $dump . "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$config = new rcube_config();
|
|
||||||
|
|
||||||
// don't allow public access if not in devel_mode
|
|
||||||
if (!$config->get('devel_mode') && $_SERVER['REMOTE_ADDR']) {
|
|
||||||
header("HTTP/1.0 401 Access denied");
|
|
||||||
die("Access denied!");
|
|
||||||
}
|
|
||||||
|
|
||||||
$options = array(
|
|
||||||
'use_transactions' => false,
|
|
||||||
'log_line_break' => "\n",
|
|
||||||
'idxname_format' => '%s',
|
|
||||||
'debug' => false,
|
|
||||||
'quote_identifier' => true,
|
|
||||||
'force_defaults' => false,
|
|
||||||
'portability' => false,
|
|
||||||
);
|
|
||||||
|
|
||||||
$dsnw = $config->get('db_dsnw');
|
|
||||||
$dsn_array = MDB2::parseDSN($dsnw);
|
|
||||||
|
|
||||||
// set options for postgres databases
|
|
||||||
if ($dsn_array['phptype'] == 'pgsql') {
|
|
||||||
$options['disable_smart_seqname'] = true;
|
|
||||||
$options['seqname_format'] = '%s';
|
|
||||||
}
|
|
||||||
|
|
||||||
$schema =& MDB2_Schema::factory($dsnw, $options);
|
|
||||||
$schema->db->supported['transactions'] = false;
|
|
||||||
|
|
||||||
|
|
||||||
// send as text/xml when opened in browser
|
|
||||||
if ($_SERVER['REMOTE_ADDR'])
|
|
||||||
header('Content-Type: text/xml');
|
|
||||||
|
|
||||||
|
|
||||||
if (PEAR::isError($schema)) {
|
|
||||||
$error = $schema->getMessage() . ' ' . $schema->getUserInfo();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$dump_config = array(
|
|
||||||
// 'output_mode' => 'file',
|
|
||||||
'output' => 'print_schema',
|
|
||||||
);
|
|
||||||
|
|
||||||
$definition = $schema->getDefinitionFromDatabase();
|
|
||||||
$definition['charset'] = 'utf8';
|
|
||||||
|
|
||||||
if (PEAR::isError($definition)) {
|
|
||||||
$error = $definition->getMessage() . ' ' . $definition->getUserInfo();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$operation = $schema->dumpDatabase($definition, $dump_config, MDB2_SCHEMA_DUMP_STRUCTURE);
|
|
||||||
if (PEAR::isError($operation)) {
|
|
||||||
$error = $operation->getMessage() . ' ' . $operation->getUserInfo();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$schema->disconnect();
|
|
||||||
|
|
||||||
if ($error && !$_SERVER['REMOTE_ADDR'])
|
|
||||||
fputs(STDERR, $error);
|
|
||||||
|
|
||||||
?>
|
|
@ -1,233 +0,0 @@
|
|||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
| bin/exportgettext.sh |
|
|
||||||
| |
|
|
||||||
| This file is part of the Roundcube Webmail client |
|
|
||||||
| Copyright (C) 2011, The Roundcube Dev Team |
|
|
||||||
| Licensed under the GNU General Public License |
|
|
||||||
| |
|
|
||||||
| PURPOSE: |
|
|
||||||
| Export PHP-based localization files to PO files for gettext |
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
| Author: Thomas Bruederli <roundcube@gmail.com> |
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
*/
|
|
||||||
|
|
||||||
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
|
|
||||||
require INSTALL_PATH.'program/include/clisetup.php';
|
|
||||||
|
|
||||||
if ($argc < 2) {
|
|
||||||
die("Usage: " . basename($argv[0]) . " SRCDIR DESTDIR\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
$srcdir = unslashify(realpath($argv[1]));
|
|
||||||
$destdir = unslashify($argv[2]);
|
|
||||||
$layout = 'launchpad'; # or 'narro';
|
|
||||||
$langcode_map = array(
|
|
||||||
'hy_AM' => 'hy',
|
|
||||||
'ar_SA' => 'ar',
|
|
||||||
'az_AZ' => 'az',
|
|
||||||
'bg_BG' => 'bg',
|
|
||||||
'bs_BA' => 'bs',
|
|
||||||
'ca_ES' => 'ca',
|
|
||||||
'cs_CZ' => 'cs',
|
|
||||||
'cy_GB' => 'cy',
|
|
||||||
'da_DK' => 'da',
|
|
||||||
'et_EE' => 'et',
|
|
||||||
'el_GR' => 'el',
|
|
||||||
'eu_ES' => 'eu',
|
|
||||||
'fa_IR' => 'fa',
|
|
||||||
'ga_IE' => 'ga',
|
|
||||||
'ka_GE' => 'ka',
|
|
||||||
'gl_ES' => 'gl',
|
|
||||||
'he_IL' => 'he',
|
|
||||||
'hi_IN' => 'hi',
|
|
||||||
'hr_HR' => 'hr',
|
|
||||||
'ja_JP' => 'ja',
|
|
||||||
'ko_KR' => 'ko',
|
|
||||||
'km_KH' => 'km',
|
|
||||||
'ms_MY' => 'ms',
|
|
||||||
'mr_IN' => 'mr',
|
|
||||||
'ml_IN' => 'ml',
|
|
||||||
'pl_PL' => 'pl',
|
|
||||||
'si_LK' => 'si',
|
|
||||||
'sl_SI' => 'sl',
|
|
||||||
'sq_AL' => 'sq',
|
|
||||||
'sr_CS' => 'sr',
|
|
||||||
'sv_SE' => 'sv',
|
|
||||||
'uk_UA' => 'uk',
|
|
||||||
'vi_VN' => 'vi',
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// converting roundcube localization dir
|
|
||||||
if (is_dir($srcdir.'/en_US')) {
|
|
||||||
load_en_US($srcdir.'/en_US');
|
|
||||||
|
|
||||||
foreach (glob($srcdir.'/*') as $locdir) {
|
|
||||||
if (is_dir($locdir)) {
|
|
||||||
$lang = basename($locdir);
|
|
||||||
//echo "$locdir => $destdir$lang\n";
|
|
||||||
convert_dir($locdir, $destdir . ($layout != 'launchpad' ? $lang : ''));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// converting single localization directory
|
|
||||||
else if (is_dir($srcdir)) {
|
|
||||||
if (is_file($srcdir.'/en_US.inc')) // plugin localization
|
|
||||||
load_en_US($srcdir.'/en_US.inc');
|
|
||||||
else
|
|
||||||
load_en_US(realpath($srcdir.'/../en_US')); // single language
|
|
||||||
convert_dir($srcdir, $destdir);
|
|
||||||
}
|
|
||||||
// converting a single file
|
|
||||||
else if (is_file($srcdir)) {
|
|
||||||
//load_en_US();
|
|
||||||
convert_file($srcdir, $destdir);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load en_US localization which is used to build msgids
|
|
||||||
*/
|
|
||||||
function load_en_US($fn)
|
|
||||||
{
|
|
||||||
$texts = array();
|
|
||||||
|
|
||||||
if (is_dir($fn)) {
|
|
||||||
foreach (glob($fn.'/*.inc') as $ifn) {
|
|
||||||
include($ifn);
|
|
||||||
$texts = array_merge($texts, (array)$labels, (array)$messages);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (is_file($fn)) {
|
|
||||||
include($fn);
|
|
||||||
$texts = array_merge($texts, (array)$labels, (array)$messages);
|
|
||||||
}
|
|
||||||
|
|
||||||
$GLOBALS['en_US'] = $texts;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert all .inc files in the given src directory
|
|
||||||
*/
|
|
||||||
function convert_dir($indir, $outdir)
|
|
||||||
{
|
|
||||||
global $layout;
|
|
||||||
|
|
||||||
if (!is_dir($outdir)) // attempt to create destination dir
|
|
||||||
mkdir($outdir, 0777, true);
|
|
||||||
|
|
||||||
foreach (glob($indir.'/*.inc') as $fn) {
|
|
||||||
$filename = basename($fn);
|
|
||||||
|
|
||||||
// create subdir for each template (launchpad rules)
|
|
||||||
if ($layout == 'launchpad' && preg_match('/^(labels|messages)/', $filename, $m)) {
|
|
||||||
$lang = end(explode('/', $indir));
|
|
||||||
$destdir = $outdir . '/' . $m[1];
|
|
||||||
if (!is_dir($destdir))
|
|
||||||
mkdir($destdir, 0777, true);
|
|
||||||
$outfn = $destdir . '/' . $lang . '.po';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$outfn = $outdir . '/' . preg_replace('/\.[a-z0-9]+$/i', '', basename($fn)) . '.po';
|
|
||||||
}
|
|
||||||
|
|
||||||
convert_file($fn, $outfn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert the given Roundcube localization file into a gettext .po file
|
|
||||||
*/
|
|
||||||
function convert_file($fn, $outfn)
|
|
||||||
{
|
|
||||||
global $layout, $langcode_map;
|
|
||||||
|
|
||||||
$basename = basename($fn);
|
|
||||||
$srcname = str_replace(INSTALL_PATH, '', $fn);
|
|
||||||
$product = preg_match('!plugins/(\w+)!', $srcname, $m) ? 'roundcube-plugin-' . $m[1] : 'roundcubemail';
|
|
||||||
$lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : '';
|
|
||||||
$labels = $messages = $seen = array();
|
|
||||||
|
|
||||||
if (is_dir($outfn))
|
|
||||||
$outfn .= '/' . $basename . '.po';
|
|
||||||
|
|
||||||
// launchpad requires the template file to have the same name as the directory
|
|
||||||
if (strstr($outfn, '/en_US') && $layout == 'launchpad') {
|
|
||||||
$a = explode('/', $outfn);
|
|
||||||
array_pop($a);
|
|
||||||
$templ = end($a);
|
|
||||||
$a[] = $templ . '.pot';
|
|
||||||
$outfn = join('/', $a);
|
|
||||||
$is_pot = true;
|
|
||||||
}
|
|
||||||
// launchpad is very picky about file names
|
|
||||||
else if ($layout == 'launchpad' && preg_match($regex = '!/([a-z]{2})_([A-Z]{2})!', $outfn, $m)) {
|
|
||||||
if ($shortlang = $langcode_map[$lang])
|
|
||||||
$outfn = preg_replace($regex, '/'.$shortlang, $outfn);
|
|
||||||
else if ($m[1] == strtolower($m[2]))
|
|
||||||
$outfn = preg_replace($regex, '/\1', $outfn);
|
|
||||||
}
|
|
||||||
|
|
||||||
include($fn);
|
|
||||||
$texts = array_merge($labels, $messages);
|
|
||||||
|
|
||||||
// write header
|
|
||||||
$header = <<<EOF
|
|
||||||
# Converted from Roundcube PHP localization files
|
|
||||||
# Copyright (C) 2011 The Roundcube Dev Team
|
|
||||||
# This file is distributed under the same license as the Roundcube package.
|
|
||||||
#
|
|
||||||
#: %s
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: %s\\n"
|
|
||||||
"Report-Msgid-Bugs-To: \\n"
|
|
||||||
"%s: %s\\n"
|
|
||||||
"Last-Translator: \\n"
|
|
||||||
"Language-Team: Translations <hello@roundcube.net>\\n"
|
|
||||||
"Language: %s\\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\\n"
|
|
||||||
EOF;
|
|
||||||
|
|
||||||
$out = sprintf($header, $srcname, $product, $is_pot ? "POT-Creation-Date" : "PO-Revision-Date", date('c'), $shortlang ? $shortlang : $lang);
|
|
||||||
$out .= "\n";
|
|
||||||
|
|
||||||
$messages = array();
|
|
||||||
foreach ((array)$texts as $label => $msgstr) {
|
|
||||||
$msgid = $is_pot ? $msgstr : ($GLOBALS['en_US'][$label] ?: $label);
|
|
||||||
$messages[$msgid][] = $label;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($messages as $msgid => $labels) {
|
|
||||||
$out .= "\n";
|
|
||||||
foreach ($labels as $label)
|
|
||||||
$out .= "#: $srcname:$label\n";
|
|
||||||
$msgstr = $texts[$label];
|
|
||||||
$out .= 'msgid ' . gettext_quote($msgid) . "\n";
|
|
||||||
$out .= 'msgstr ' . gettext_quote(!$is_pot ? $msgstr : '') . "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($outfn == '-')
|
|
||||||
echo $out;
|
|
||||||
else {
|
|
||||||
echo "$fn\t=>\t$outfn\n";
|
|
||||||
file_put_contents($outfn, $out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function gettext_quote($str)
|
|
||||||
{
|
|
||||||
$out = "";
|
|
||||||
$lines = explode("\n", wordwrap(stripslashes($str)));
|
|
||||||
$last = count($lines) - 1;
|
|
||||||
foreach ($lines as $i => $line)
|
|
||||||
$out .= '"' . addcslashes($line, '"') . ($i < $last ? ' ' : '') . "\"\n";
|
|
||||||
return rtrim($out);
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
@ -1,196 +0,0 @@
|
|||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
| bin/importgettext.sh |
|
|
||||||
| |
|
|
||||||
| This file is part of the Roundcube Webmail client |
|
|
||||||
| Copyright (C) 2011, The Roundcube Dev Team |
|
|
||||||
| Licensed under the GNU General Public License |
|
|
||||||
| |
|
|
||||||
| PURPOSE: |
|
|
||||||
| Import localizations from gettext PO format |
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
| Author: Thomas Bruederli <roundcube@gmail.com> |
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
*/
|
|
||||||
|
|
||||||
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
|
|
||||||
require INSTALL_PATH.'program/include/clisetup.php';
|
|
||||||
|
|
||||||
if ($argc < 2) {
|
|
||||||
die("Usage: " . basename($argv[0]) . " SRCDIR\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
$srcdir = unslashify(realpath($argv[1]));
|
|
||||||
|
|
||||||
if (is_dir($srcdir)) {
|
|
||||||
$out = import_dir($srcdir);
|
|
||||||
}
|
|
||||||
else if (is_file($srcdir)) {
|
|
||||||
$out = import_file($srcdir);
|
|
||||||
}
|
|
||||||
|
|
||||||
// write output files
|
|
||||||
foreach ($out as $outfn => $texts) {
|
|
||||||
$lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : '';
|
|
||||||
$varname = strpos($outfn, 'messages.inc') !== false ? 'messages' : 'labels';
|
|
||||||
|
|
||||||
$header = <<<EOF
|
|
||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
| localization/%s/%-51s|
|
|
||||||
| |
|
|
||||||
| Language file of the Roundcube Webmail client |
|
|
||||||
| Copyright (C) %s, The Roundcube Dev Team |
|
|
||||||
| Licensed under the GNU General Public License |
|
|
||||||
| |
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
| Author: %-62s|
|
|
||||||
+-----------------------------------------------------------------------+
|
|
||||||
*/
|
|
||||||
|
|
||||||
$%s = array();
|
|
||||||
|
|
||||||
EOF;
|
|
||||||
|
|
||||||
$author = preg_replace('/\s*<Unknown>/i', '', $texts['_translator']);
|
|
||||||
$output = sprintf($header, $lang, $varname.'.inc', date('Y'), $author, $varname);
|
|
||||||
|
|
||||||
foreach ($texts as $label => $value) {
|
|
||||||
if (is_array($value)) { var_dump($outfn, $label, $value); exit; }
|
|
||||||
if ($label[0] != '_' && strlen($value))
|
|
||||||
$output .= sprintf("\$%s['%s'] = '%s';\n", $varname, $label, strtr(addcslashes($value, "'"), array("\r" => '', "\n" => '\n')));
|
|
||||||
}
|
|
||||||
|
|
||||||
$output .= "\n";
|
|
||||||
$dir = dirname($outfn);
|
|
||||||
@mkdir($dir, 0755, true);
|
|
||||||
if (file_put_contents($outfn, $output))
|
|
||||||
echo "-> $outfn\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert all .po files in the given src directory
|
|
||||||
*/
|
|
||||||
function import_dir($indir)
|
|
||||||
{
|
|
||||||
$out = array();
|
|
||||||
foreach (glob($indir.'/*.po') as $fn) {
|
|
||||||
$out = array_merge_recursive($out, import_file($fn));
|
|
||||||
}
|
|
||||||
return $out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert the given .po file into a Roundcube localization array
|
|
||||||
*/
|
|
||||||
function import_file($fn)
|
|
||||||
{
|
|
||||||
$out = array();
|
|
||||||
$lines = file($fn);
|
|
||||||
$language = '';
|
|
||||||
$translator = '';
|
|
||||||
|
|
||||||
// get language code from file name
|
|
||||||
if (preg_match('/-([a-z_]+).po$/i', $fn, $m))
|
|
||||||
$language = expand_langcode($m[1]);
|
|
||||||
|
|
||||||
$is_header = true;
|
|
||||||
$msgid = null;
|
|
||||||
$msgstr = '';
|
|
||||||
$dests = array();
|
|
||||||
foreach ($lines as $i => $line) {
|
|
||||||
$line = trim($line);
|
|
||||||
|
|
||||||
// parse header
|
|
||||||
if ($is_header && $line[0] == '"') {
|
|
||||||
list($key, $val) = explode(": ", preg_replace('/\\\n$/', '', trim($line, '"')), 2);
|
|
||||||
switch (strtolower($key)) {
|
|
||||||
case 'language':
|
|
||||||
$language = expand_langcode($val);
|
|
||||||
break;
|
|
||||||
case 'last-translator':
|
|
||||||
$translator = $val;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// empty line
|
|
||||||
if ($line == '') {
|
|
||||||
if ($msgid && $dests) {
|
|
||||||
foreach ($dests as $dest) {
|
|
||||||
list($file, $label) = explode(':', $dest);
|
|
||||||
$out[$file][$label] = $msgstr;
|
|
||||||
$out[$file]['_translator'] = $translator;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$msgid = null;
|
|
||||||
$msgstr = '';
|
|
||||||
$dests = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
// meta line
|
|
||||||
if ($line[0] == '#') {
|
|
||||||
$value = trim(substr($line, 2));
|
|
||||||
if ($line[1] == ':')
|
|
||||||
$dests[] = str_replace('en_US', $language, $value);
|
|
||||||
}
|
|
||||||
else if (strpos($line, 'msgid') === 0) {
|
|
||||||
$msgid = gettext_decode(substr($line, 6));
|
|
||||||
|
|
||||||
if (!empty($msgid))
|
|
||||||
$is_header = false;
|
|
||||||
}
|
|
||||||
else if (strpos($line, 'msgstr') === 0) {
|
|
||||||
$msgstr = gettext_decode(substr($line, 7));
|
|
||||||
}
|
|
||||||
else if ($msgid && $line[0] == '"') {
|
|
||||||
$msgstr .= gettext_decode($line);
|
|
||||||
}
|
|
||||||
else if ($msgid !== null && $line[0] == '"') {
|
|
||||||
$msgid .= gettext_decode($line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($msgid && $dests) {
|
|
||||||
foreach ($dests as $dest) {
|
|
||||||
list($file, $label) = explode(':', $dest);
|
|
||||||
$out[$file][$label] = $msgstr;
|
|
||||||
$out[$file]['_translator'] = $translator;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $language ? $out : array();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function gettext_decode($str)
|
|
||||||
{
|
|
||||||
return stripslashes(trim($str, '"'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Translate two-chars language codes to our internally used language identifiers
|
|
||||||
*/
|
|
||||||
function expand_langcode($lang)
|
|
||||||
{
|
|
||||||
static $rcube_language_aliases, $rcube_languages;
|
|
||||||
|
|
||||||
if (!$rcube_language_aliases)
|
|
||||||
include(INSTALL_PATH . 'program/localization/index.inc');
|
|
||||||
|
|
||||||
if ($rcube_language_aliases[$lang])
|
|
||||||
return $rcube_language_aliases[$lang];
|
|
||||||
else if (strlen($lang) == 2 && !isset($rcube_languages[$lang]))
|
|
||||||
return strtolower($lang) . '_' . strtoupper($lang);
|
|
||||||
else
|
|
||||||
return $lang;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
@ -1,26 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
TITLE="Roundcube Webmail"
|
|
||||||
PACKAGES="Core"
|
|
||||||
|
|
||||||
INSTALL_PATH="`dirname $0`/.."
|
|
||||||
PATH_PROJECT=$INSTALL_PATH/program/include
|
|
||||||
PATH_FRAMEWORK=$INSTALL_PATH/program/lib/Roundcube
|
|
||||||
PATH_DOCS=$INSTALL_PATH/doc/phpdoc
|
|
||||||
BIN_PHPDOC="`/usr/bin/which phpdoc`"
|
|
||||||
|
|
||||||
if [ ! -x "$BIN_PHPDOC" ]
|
|
||||||
then
|
|
||||||
echo "phpdoc not found: $BIN_PHPDOC"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
OUTPUTFORMAT=HTML
|
|
||||||
CONVERTER=frames
|
|
||||||
TEMPLATE=earthli
|
|
||||||
PRIVATE=off
|
|
||||||
|
|
||||||
# make documentation
|
|
||||||
$BIN_PHPDOC -d $PATH_PROJECT,$PATH_FRAMEWORK -t $PATH_DOCS -ti "$TITLE" -dn $PACKAGES \
|
|
||||||
-o $OUTPUTFORMAT:$CONVERTER:$TEMPLATE -pp $PRIVATE
|
|
||||||
|
|
@ -0,0 +1,122 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
+-----------------------------------------------------------------------+
|
||||||
|
| bin/updatecss.sh |
|
||||||
|
| |
|
||||||
|
| This file is part of the Roundcube Webmail client |
|
||||||
|
| Copyright (C) 2010-2013, The Roundcube Dev Team |
|
||||||
|
| |
|
||||||
|
| Licensed under the GNU General Public License version 3 or |
|
||||||
|
| any later version with exceptions for skins & plugins. |
|
||||||
|
| See the README file for a full license statement. |
|
||||||
|
| |
|
||||||
|
| PURPOSE: |
|
||||||
|
| Update cache-baster marks for css background images |
|
||||||
|
+-----------------------------------------------------------------------+
|
||||||
|
| Author: Aleksander Machniak <alec@alec.pl> |
|
||||||
|
+-----------------------------------------------------------------------+
|
||||||
|
*/
|
||||||
|
|
||||||
|
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
|
||||||
|
|
||||||
|
require_once INSTALL_PATH . 'program/include/clisetup.php';
|
||||||
|
|
||||||
|
// get arguments
|
||||||
|
$opts = rcube_utils::get_opt(array(
|
||||||
|
'd' => 'dir',
|
||||||
|
));
|
||||||
|
|
||||||
|
if (empty($opts['dir'])) {
|
||||||
|
print "Skin directory not specified (--dir). Using skins/ and plugins/*/skins/.\n";
|
||||||
|
|
||||||
|
$dir = INSTALL_PATH . 'skins';
|
||||||
|
$dir_p = INSTALL_PATH . 'plugins';
|
||||||
|
$skins = glob("$dir/*", GLOB_ONLYDIR);
|
||||||
|
$skins_p = glob("$dir_p/*/skins/*", GLOB_ONLYDIR);
|
||||||
|
|
||||||
|
$dirs = array_merge($skins, $skins_p);
|
||||||
|
}
|
||||||
|
// Check if directory exists
|
||||||
|
else if (!file_exists($opts['dir'])) {
|
||||||
|
rcube::raise_error("Specified directory doesn't exist.", false, true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$dirs = array($opts['dir']);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($dirs as $dir) {
|
||||||
|
$img_dir = $dir . '/images';
|
||||||
|
if (!file_exists($img_dir)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$files = get_files($dir);
|
||||||
|
$images = get_images($img_dir);
|
||||||
|
$find = array();
|
||||||
|
$replace = array();
|
||||||
|
|
||||||
|
// build regexps array
|
||||||
|
foreach ($images as $path => $sum) {
|
||||||
|
$path_ex = str_replace('.', '\\.', $path);
|
||||||
|
$find[] = "#url\(['\"]?images/$path_ex(\?v=[a-f0-9-\.]+)?['\"]?\)#";
|
||||||
|
$replace[] = "url(images/$path?v=$sum)";
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$file = $dir . '/' . $file;
|
||||||
|
print "File: $file\n";
|
||||||
|
$content = file_get_contents($file);
|
||||||
|
$content = preg_replace($find, $replace, $content, -1, $count);
|
||||||
|
if ($count) {
|
||||||
|
file_put_contents($file, $content);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function get_images($dir)
|
||||||
|
{
|
||||||
|
$images = array();
|
||||||
|
$dh = opendir($dir);
|
||||||
|
|
||||||
|
while ($file = readdir($dh)) {
|
||||||
|
if (preg_match('/^(.+)\.(gif|ico|png|jpg|jpeg)$/', $file, $m)) {
|
||||||
|
$filepath = "$dir/$file";
|
||||||
|
$images[$file] = substr(md5_file($filepath), 0, 4) . '.' . filesize($filepath);
|
||||||
|
print "Image: $filepath ({$images[$file]})\n";
|
||||||
|
}
|
||||||
|
else if ($file != '.' && $file != '..' && is_dir($dir . '/' . $file)) {
|
||||||
|
foreach (get_images($dir . '/' . $file) as $img => $sum) {
|
||||||
|
$images[$file . '/' . $img] = $sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir($dh);
|
||||||
|
|
||||||
|
return $images;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_files($dir)
|
||||||
|
{
|
||||||
|
$files = array();
|
||||||
|
$dh = opendir($dir);
|
||||||
|
|
||||||
|
while ($file = readdir($dh)) {
|
||||||
|
if (preg_match('/^(.+)\.(css|html)$/', $file, $m)) {
|
||||||
|
$files[] = $file;
|
||||||
|
}
|
||||||
|
else if ($file != '.' && $file != '..' && is_dir($dir . '/' . $file)) {
|
||||||
|
foreach (get_files($dir . '/' . $file) as $f) {
|
||||||
|
$files[] = $file . '/' . $f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir($dh);
|
||||||
|
|
||||||
|
return $files;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -1,35 +1,16 @@
|
|||||||
{
|
{
|
||||||
"name": "roundcube/roundcubemail",
|
"name": "roundcube/roundcubemail",
|
||||||
"description": "The Roundcube Webmail suite",
|
"description": "The Roundcube Webmail suite",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0+",
|
||||||
"repositories": [
|
"repositories": [
|
||||||
{
|
{
|
||||||
"type": "composer",
|
"type": "composer",
|
||||||
"url": "http://plugins.roundcube.net/"
|
"url": "http://plugins.roundcube.net/"
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "pear",
|
|
||||||
"url": "http://pear.php.net/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "package",
|
|
||||||
"package": {
|
|
||||||
"name": "Net_SMTP",
|
|
||||||
"version": "dev-master",
|
|
||||||
"source": {
|
|
||||||
"url": "http://github.com/pear/Net_SMTP",
|
|
||||||
"type": "git",
|
|
||||||
"reference": "master"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require" : {
|
"require": {
|
||||||
"pear-pear/Mail_Mime": ">=1.8.1",
|
"php": ">=5.3.0",
|
||||||
"pear-pear/Mail_mimeDecode": ">=1.5.5",
|
"roundcube/plugin-installer": ">=0.1.3"
|
||||||
"Net_SMTP": "dev-master",
|
|
||||||
"pear-pear/Net_IDNA2": ">=0.1.1",
|
|
||||||
"pear-pear/Auth_SASL": ">=1.0.6"
|
|
||||||
},
|
},
|
||||||
"minimum-stability": "dev"
|
"minimum-stability": "dev"
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Acl_Plugin extends PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
|
||||||
|
function setUp()
|
||||||
|
{
|
||||||
|
include_once dirname(__FILE__) . '/../acl.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plugin object construction test
|
||||||
|
*/
|
||||||
|
function test_constructor()
|
||||||
|
{
|
||||||
|
$rcube = rcube::get_instance();
|
||||||
|
$plugin = new acl($rcube->api);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('acl', $plugin);
|
||||||
|
$this->assertInstanceOf('rcube_plugin', $plugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class AdditionalMessageHeaders_Plugin extends PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
|
||||||
|
function setUp()
|
||||||
|
{
|
||||||
|
include_once dirname(__FILE__) . '/../additional_message_headers.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plugin object construction test
|
||||||
|
*/
|
||||||
|
function test_constructor()
|
||||||
|
{
|
||||||
|
$rcube = rcube::get_instance();
|
||||||
|
$plugin = new additional_message_headers($rcube->api);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('additional_message_headers', $plugin);
|
||||||
|
$this->assertInstanceOf('rcube_plugin', $plugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue