Compare commits
1066 Commits
release-3.
...
release-3.
Author | SHA1 | Date | |
---|---|---|---|
|
929bd2ac3c | ||
|
364407ab59 | ||
|
d7db5d366b | ||
|
1c30a9778d | ||
|
747ed95678 | ||
|
4bde2511b8 | ||
|
25c57cc457 | ||
|
17c3bf0b39 | ||
|
5cdefdde2e | ||
|
9474d6d50e | ||
|
488de11493 | ||
|
98232a06ac | ||
|
aff9414f68 | ||
|
1de6434a48 | ||
|
a9ef821253 | ||
|
50cf6443b9 | ||
|
cf517509c8 | ||
|
4b0a04b109 | ||
|
f17bd9e1e0 | ||
|
1c920859db | ||
|
94c168291c | ||
|
89e29bb846 | ||
|
eecff95ce1 | ||
|
00777eec62 | ||
|
c5f4ad24f9 | ||
|
325b14550d | ||
|
692a770fc3 | ||
|
961e241b26 | ||
|
8ac4f52924 | ||
|
07930c0917 | ||
|
c160882cdb | ||
|
a6dc32b381 | ||
|
7dca3f4d6c | ||
|
3244cab370 | ||
|
bee9ddbfdf | ||
|
4577404fc2 | ||
|
f29784e288 | ||
|
ef7a5a0280 | ||
|
9f7f3d1463 | ||
|
013f9819b0 | ||
|
1d97f4491e | ||
|
3b28f620fc | ||
|
b68a64de84 | ||
|
82adb1f4f5 | ||
|
4c7af15d0a | ||
|
536a8a6a85 | ||
|
c831f183bf | ||
|
361e8c6fea | ||
|
1e1097f06f | ||
|
9e1e77f4f9 | ||
|
c89051eb28 | ||
|
f1afccb662 | ||
|
ca2e2e6107 | ||
|
a74658091b | ||
|
3a8305e190 | ||
|
928a8c0e89 | ||
|
128a6e4c8d | ||
|
532afbf83a | ||
|
10691fda8e | ||
|
23a1f3feda | ||
|
b9cb75bf60 | ||
|
277f4efcc7 | ||
|
329eb201d9 | ||
|
233a07ceda | ||
|
3c5b3254d1 | ||
|
531d9dfa1f | ||
|
5c8a667db2 | ||
|
875dc63c6f | ||
|
abe218c34a | ||
|
d0143bec88 | ||
|
55e13693b0 | ||
|
5c989b1e8e | ||
|
8f742fb7d5 | ||
|
f08887e277 | ||
|
2d8b856a63 | ||
|
227e7cadba | ||
|
122f61e1ca | ||
|
ce6adeea02 | ||
|
bb442c498b | ||
|
ccc260b179 | ||
|
ede0a36076 | ||
|
adc75b700f | ||
|
fb5247a726 | ||
|
ad748ec0a7 | ||
|
84ff21a586 | ||
|
f01e29effe | ||
|
1f80b668f1 | ||
|
1cd8bbac0c | ||
|
3469545e3a | ||
|
5878d66ebf | ||
|
baabcad8ab | ||
|
7f6ececf95 | ||
|
d268a63812 | ||
|
16bfb5bfc3 | ||
|
500cd2916e | ||
|
350d4f3e6d | ||
|
8c89194cc6 | ||
|
6a75fe26fc | ||
|
8d551e2ded | ||
|
62f8fed797 | ||
|
3c7f45c166 | ||
|
daf668a969 | ||
|
0391b48d7e | ||
|
81a8a76c59 | ||
|
f26cf2dc1f | ||
|
d2226b3664 | ||
|
7e2136587a | ||
|
77b275181a | ||
|
dc8ff9da28 | ||
|
e4fc82bee5 | ||
|
f38fce5ce5 | ||
|
f8180ca97b | ||
|
e7c5fc32d2 | ||
|
4aab9e792a | ||
|
f26b2c00de | ||
|
2a6c9233e9 | ||
|
69a168bcb2 | ||
|
c7b3407eb2 | ||
|
1b4bad6583 | ||
|
3ae0169542 | ||
|
2a939fa779 | ||
|
57179fbb79 | ||
|
d05c7fd342 | ||
|
101e6c8f96 | ||
|
e31474542d | ||
|
90e440855e | ||
|
182a96f273 | ||
|
98c5069500 | ||
|
2fcb8ab87f | ||
|
2119dee53d | ||
|
84ccb3aded | ||
|
7b6be23117 | ||
|
4afb53dd8d | ||
|
ee8b72d733 | ||
|
d99ef03446 | ||
|
a999718b42 | ||
|
ede339c1c8 | ||
|
9883aa4930 | ||
|
6f6750b629 | ||
|
27a24d0a67 | ||
|
400fc0f73d | ||
|
f4381a20d4 | ||
|
f903e5b3c0 | ||
|
635befa00e | ||
|
5bb62f5560 | ||
|
f296014c23 | ||
|
44ba0f5054 | ||
|
66143e99be | ||
|
4a2e203a80 | ||
|
d65d776d92 | ||
|
cbee288eeb | ||
|
c1ec6517bf | ||
|
f8fbe37936 | ||
|
ff18802656 | ||
|
11e09f1b3c | ||
|
6e6195c303 | ||
|
e1376e14de | ||
|
dec06d10fe | ||
|
8c3808e9e7 | ||
|
bf5f11e11a | ||
|
b2dacefbe7 | ||
|
0c3f7c6c8e | ||
|
5def7e255e | ||
|
7dfd57077a | ||
|
92350db572 | ||
|
a2daf30415 | ||
|
949f07e8ba | ||
|
4fe09b98b0 | ||
|
ea01890407 | ||
|
0ff5f9fa0e | ||
|
90210bf371 | ||
|
39b1420774 | ||
|
bd52c64e68 | ||
|
adad3aac66 | ||
|
ca4a3f4698 | ||
|
1f1835ede0 | ||
|
e90e3ec368 | ||
|
d90680d685 | ||
|
7c0ff6ddd4 | ||
|
b6ac183a32 | ||
|
0b52923129 | ||
|
53ce1330d6 | ||
|
602e440cfd | ||
|
cf1e6e5e6b | ||
|
01181f1e4e | ||
|
d8f9cb4961 | ||
|
20a6182a86 | ||
|
dddcf28a2d | ||
|
c906335ce4 | ||
|
d1f10d54fc | ||
|
69416b65f3 | ||
|
bdda36798b | ||
|
8e19bb83b5 | ||
|
8f662eac40 | ||
|
64dad1a362 | ||
|
9d5c81ea7a | ||
|
9632294730 | ||
|
6acfe2a0cb | ||
|
9567162295 | ||
|
dc48f28da1 | ||
|
bd81af3b9e | ||
|
2b16b7cada | ||
|
34d52a131b | ||
|
cb233c862b | ||
|
e2e47a87c3 | ||
|
e23b671d32 | ||
|
c077b90f8b | ||
|
bf55546d2d | ||
|
5bfd609cc8 | ||
|
57772a0d32 | ||
|
d2dc314a30 | ||
|
79464c9951 | ||
|
6d864a9df5 | ||
|
751de0c2e9 | ||
|
d546e7fbd9 | ||
|
4bbda5bc45 | ||
|
4e045ed767 | ||
|
9f055e1af3 | ||
|
c94b7f69b7 | ||
|
cc3f77b5fc | ||
|
485a4a75b2 | ||
|
75e7e7b293 | ||
|
b9dce3fa65 | ||
|
3083dd997b | ||
|
b4ca1bdb00 | ||
|
5ab3eac014 | ||
|
2643e851f2 | ||
|
6cc46a3d39 | ||
|
65c529e66d | ||
|
551c3fd511 | ||
|
03b3b38db1 | ||
|
5b22ccfa76 | ||
|
9c93c180b0 | ||
|
20ab0e16f0 | ||
|
58fe69d721 | ||
|
b66b497429 | ||
|
6ed40857ed | ||
|
a2f5468e8e | ||
|
5485563e05 | ||
|
81a71f71c7 | ||
|
a7664811dd | ||
|
d6d77a199b | ||
|
85ece822db | ||
|
57323d1650 | ||
|
cb0e13aa19 | ||
|
719a49d387 | ||
|
aa961991fd | ||
|
0517e43dff | ||
|
1a1a2dc046 | ||
|
5585cb79b2 | ||
|
a24839d21d | ||
|
da3a1a5d20 | ||
|
b9254cfda8 | ||
|
0318cea910 | ||
|
0409191be9 | ||
|
288def143c | ||
|
44d5bde616 | ||
|
f9b9d659a1 | ||
|
9933380d80 | ||
|
b71e725c0b | ||
|
3b5f5113ac | ||
|
c67cfb2b41 | ||
|
3b977eacc1 | ||
|
c3cc6bcbac | ||
|
e86afe6799 | ||
|
22e97296af | ||
|
18a0abcaa3 | ||
|
44277d6a0d | ||
|
1b480df535 | ||
|
5cdec6199c | ||
|
96cb62fe6d | ||
|
a9f850c36d | ||
|
a30693a594 | ||
|
c2043e47da | ||
|
bf882826e4 | ||
|
c14cc433b7 | ||
|
ab83b25857 | ||
|
e5860288be | ||
|
44a0a9e3e0 | ||
|
a6b994d95e | ||
|
a6c5204cbd | ||
|
8df79ba5a4 | ||
|
131c264492 | ||
|
200562548e | ||
|
1744d829ad | ||
|
be15e26e5f | ||
|
4bf0f4a50f | ||
|
a0ba57dc4f | ||
|
3bfd006e77 | ||
|
508caa9bd4 | ||
|
78610f0406 | ||
|
f31dcfc937 | ||
|
fbbd1713d7 | ||
|
d56e573a8e | ||
|
d0e25f2eed | ||
|
53e8e12621 | ||
|
e32324c72a | ||
|
9c8eb3de90 | ||
|
dcf33148a7 | ||
|
a35a225adf | ||
|
33ceceda02 | ||
|
4ae7cb89ff | ||
|
2ba529e144 | ||
|
e55480385b | ||
|
dc5267728b | ||
|
4f0b736f14 | ||
|
60596eb675 | ||
|
3b5c624c03 | ||
|
1d12d76790 | ||
|
0e9a1e0d54 | ||
|
c1c3004fa1 | ||
|
7bdff132ff | ||
|
cc361144f9 | ||
|
3f95d49fee | ||
|
0b42b34531 | ||
|
ee9eb586dd | ||
|
7fa30de9d5 | ||
|
5aceccf00b | ||
|
490626d985 | ||
|
e1966c3476 | ||
|
ed9b896d22 | ||
|
f57e377847 | ||
|
2c01fe67e9 | ||
|
2f799fa993 | ||
|
e213b8264d | ||
|
f6d1dd8b33 | ||
|
5c16ef0657 | ||
|
bad711e0d9 | ||
|
4d333e7f70 | ||
|
4a8aa339d0 | ||
|
cfba5613b7 | ||
|
69985f9b0c | ||
|
9c91bc4976 | ||
|
e1ae3236b2 | ||
|
5c33c852ae | ||
|
16159f20f6 | ||
|
5514b10699 | ||
|
6c04a6715c | ||
|
f788b7384b | ||
|
7fcb07572b | ||
|
2cdb27a0d1 | ||
|
99374731d1 | ||
|
8f97887683 | ||
|
c5e8b759c1 | ||
|
886089d28e | ||
|
221e5a01b1 | ||
|
fc3d3a83db | ||
|
3da67ce581 | ||
|
e71cb17b64 | ||
|
402b7a0973 | ||
|
e41819e37a | ||
|
4069cdd518 | ||
|
4a7ead0239 | ||
|
ae02cf785a | ||
|
2592d59765 | ||
|
27ae01c27a | ||
|
f79b7f1896 | ||
|
aea84322e9 | ||
|
d095e620c1 | ||
|
3574832ddb | ||
|
77401ff354 | ||
|
d0e2b29492 | ||
|
ca5678cc1c | ||
|
f1f35f7f3d | ||
|
cd14b2cdf8 | ||
|
969048293d | ||
|
78c9d07a7b | ||
|
840bfb1226 | ||
|
2522c70675 | ||
|
b1e3787197 | ||
|
16c4564272 | ||
|
6e86cd9e15 | ||
|
7b489638d7 | ||
|
1e1c8e7a9d | ||
|
77e7a27c11 | ||
|
f8f985c099 | ||
|
38bf2e3771 | ||
|
f6b8f69e7e | ||
|
4b39b99d56 | ||
|
9adf7474a9 | ||
|
41077cae64 | ||
|
7f8407b321 | ||
|
3f9de5b1d4 | ||
|
954af4f180 | ||
|
9ebe4da725 | ||
|
e465af28d1 | ||
|
a29048abd6 | ||
|
e767b753a4 | ||
|
6a96249e24 | ||
|
ed7ec01fea | ||
|
c265eab081 | ||
|
c368d170cf | ||
|
16da17a4ba | ||
|
93621aa184 | ||
|
bace8dd31f | ||
|
b75a9dcbe3 | ||
|
1095a67a1b | ||
|
65692e8785 | ||
|
563fc6ed6c | ||
|
654c2370ea | ||
|
339ec5bded | ||
|
4b1ec6abb7 | ||
|
7e4498dfb5 | ||
|
38cbdb6768 | ||
|
7221a47bb6 | ||
|
114f38648b | ||
|
f6166225cf | ||
|
da357f80f8 | ||
|
4dfd12d5b2 | ||
|
9af394eff3 | ||
|
c52bb42dcf | ||
|
1ee4968a01 | ||
|
0755ae423b | ||
|
908b1c9bc9 | ||
|
f3b5862468 | ||
|
6c13ca7a19 | ||
|
24d0b06466 | ||
|
6e7593a5db | ||
|
c1b00896b4 | ||
|
384ece3621 | ||
|
9c0bb4afb5 | ||
|
edd1ce7443 | ||
|
bf289de26f | ||
|
aa23af38d4 | ||
|
1084b91b66 | ||
|
837dc9b3a7 | ||
|
d99dbf1f0e | ||
|
e854e5b71f | ||
|
638f0ff248 | ||
|
eff68f3487 | ||
|
311c7c0561 | ||
|
dd542ca630 | ||
|
3c0a555c24 | ||
|
13b0f39961 | ||
|
4719f94cec | ||
|
48a3bd1a9e | ||
|
b0a2216326 | ||
|
0ced93ccd5 | ||
|
e1e94683bd | ||
|
ec2d983ab1 | ||
|
1f041c79c6 | ||
|
d3305ad13e | ||
|
b9854b4c89 | ||
|
e6796a690c | ||
|
b5e850b6df | ||
|
ce17a5d892 | ||
|
79093c1145 | ||
|
68c3a0307d | ||
|
e67d2ae3b9 | ||
|
aabb9d2e48 | ||
|
4e5fd9a6e9 | ||
|
a6c9119dfa | ||
|
1e605efaf1 | ||
|
46684228d5 | ||
|
7747d79e31 | ||
|
d676ca12ab | ||
|
3aac61cfa7 | ||
|
de6a0a7dc1 | ||
|
a86cff313f | ||
|
1d808931f6 | ||
|
f7249f8839 | ||
|
b6cb353239 | ||
|
d9662a5891 | ||
|
d9a5c8e918 | ||
|
327333e328 | ||
|
a8fb68051e | ||
|
1fcf0d4808 | ||
|
5b67939e6a | ||
|
ef404d0f95 | ||
|
342a7cbd55 | ||
|
21b35d95be | ||
|
e4abbcaca3 | ||
|
5d0a41b814 | ||
|
ff5c88be77 | ||
|
f7d387f93c | ||
|
0aba1faa08 | ||
|
aa5a0f62c4 | ||
|
523a1e7b7c | ||
|
d84834db88 | ||
|
91f9050a70 | ||
|
2749bfe26c | ||
|
882a3c3831 | ||
|
80d0bf4566 | ||
|
7f45062466 | ||
|
63d85935f5 | ||
|
fa3bdedf7b | ||
|
75d3b7d09c | ||
|
1d523531b5 | ||
|
53f186d96b | ||
|
5216bf4483 | ||
|
c56ebb5312 | ||
|
d490190a99 | ||
|
337c8451e7 | ||
|
4b73342669 | ||
|
0e505c6fc7 | ||
|
5b21903e66 | ||
|
05513b96a4 | ||
|
34e9b4d066 | ||
|
6f897568da | ||
|
65aaef1f83 | ||
|
1493752536 | ||
|
3df3cb87c5 | ||
|
0b405a2cdc | ||
|
4ed45c4e12 | ||
|
c99820eb6b | ||
|
0ec5e21979 | ||
|
c1d835b6b4 | ||
|
a53c8cee79 | ||
|
8e310231bd | ||
|
05c47a0f4a | ||
|
50d2e337b0 | ||
|
dff65f902c | ||
|
e7be47c93d | ||
|
fa631947f1 | ||
|
31b93280ee | ||
|
d69ff96236 | ||
|
3fc3f55d34 | ||
|
a281d526dc | ||
|
24bde10028 | ||
|
329e5c5e05 | ||
|
b7ce395fbe | ||
|
7f408e4b41 | ||
|
b99d47ce7e | ||
|
03cd4658d0 | ||
|
d423b2ec0d | ||
|
35b7a4fae5 | ||
|
a5d83e12ec | ||
|
08c146ee34 | ||
|
aef138d8bc | ||
|
dc49a8a199 | ||
|
d811743303 | ||
|
65f7137825 | ||
|
04ef19595c | ||
|
4f81c94a95 | ||
|
71f9c6ebe5 | ||
|
cc556122f3 | ||
|
68346e7dfb | ||
|
8938a0ce98 | ||
|
937cc1ca14 | ||
|
ba5a2bcb73 | ||
|
b28dc339f0 | ||
|
689ebd3bb6 | ||
|
774c79c631 | ||
|
ea8334b693 | ||
|
e45ba1d279 | ||
|
868ae09e1b | ||
|
e50e5dbcae | ||
|
c5501d90a4 | ||
|
b59073cf3e | ||
|
909976f076 | ||
|
14cea02412 | ||
|
127f5a3ffa | ||
|
f3403fb10d | ||
|
9402339af9 | ||
|
ca5243810f | ||
|
840cb510e4 | ||
|
c1fa252fc1 | ||
|
fd822ade20 | ||
|
7f08d46aa4 | ||
|
b0ed1f2388 | ||
|
8a8d435ed4 | ||
|
41df4d3c4c | ||
|
4303ae9ae6 | ||
|
c255e1fae8 | ||
|
7301748a3a | ||
|
1c4f49249f | ||
|
c555bd78df | ||
|
e6bdba7da1 | ||
|
eafbaf4c30 | ||
|
c830af48bd | ||
|
65c6bae91d | ||
|
474cbe0574 | ||
|
1571c76ccd | ||
|
2a49420124 | ||
|
ecdc05a13e | ||
|
27b2d91713 | ||
|
34fb146ab5 | ||
|
05a8baffdb | ||
|
4177edf33a | ||
|
192d3932f6 | ||
|
3f6119c42b | ||
|
98415c43cf | ||
|
f0dbfc56d5 | ||
|
fd5a013f06 | ||
|
be76d582dc | ||
|
acf9cdba01 | ||
|
346c784bf3 | ||
|
a6939fcb8e | ||
|
a282eb1328 | ||
|
fb29d79bc1 | ||
|
e10d563fc9 | ||
|
b357f78546 | ||
|
4d4dbd52f7 | ||
|
58bd7a90a9 | ||
|
77d73678a1 | ||
|
170613848a | ||
|
e2c0356f34 | ||
|
0914123391 | ||
|
e754a51acc | ||
|
a079c5fed0 | ||
|
e3ec1440ef | ||
|
f63f9693d8 | ||
|
635f73bc06 | ||
|
7dc288cb89 | ||
|
8fcdf1747c | ||
|
9029a925aa | ||
|
deb9240546 | ||
|
a6317dc52d | ||
|
de4b2eb620 | ||
|
3f58b5f9ab | ||
|
4c67f65d5d | ||
|
7a3e55bdb3 | ||
|
c2711fb6c4 | ||
|
f3c782b358 | ||
|
37c48a59c3 | ||
|
60d6667eb4 | ||
|
bee363f072 | ||
|
37e30ad83e | ||
|
6a69c6a006 | ||
|
bcc85ab679 | ||
|
15e80cebe8 | ||
|
03c30d4bc6 | ||
|
11f968e774 | ||
|
1a1def5339 | ||
|
1d5f5ccffc | ||
|
ff3f52db6d | ||
|
fbc8a4a275 | ||
|
b63b83a920 | ||
|
06a9629497 | ||
|
c2c5c20c31 | ||
|
0984dbb3f8 | ||
|
60d1e49e43 | ||
|
18b29ca074 | ||
|
3fd197f37a | ||
|
07d3ae7dac | ||
|
9a5714071e | ||
|
2d8985e4a4 | ||
|
8fd78e607d | ||
|
7034986427 | ||
|
710a943b00 | ||
|
18fe3b2833 | ||
|
0c79cdcb31 | ||
|
cc40d64e24 | ||
|
3e971bd1f8 | ||
|
234a6f1256 | ||
|
fd423d5a7a | ||
|
877760ef98 | ||
|
ca9e3eb528 | ||
|
e84459ba67 | ||
|
521760aeb7 | ||
|
5808c9fae1 | ||
|
bc404a3701 | ||
|
1e8f467964 | ||
|
0082dd8039 | ||
|
90a80b7b31 | ||
|
e6b7defd38 | ||
|
64f33e7a94 | ||
|
7254980753 | ||
|
3114e5399c | ||
|
476e51f7db | ||
|
bcfbae567f | ||
|
abbb782820 | ||
|
33a62648d1 | ||
|
f5d49b61bb | ||
|
8179e56b02 | ||
|
e53343857a | ||
|
38d8787854 | ||
|
994c1d79b1 | ||
|
5cafff36b2 | ||
|
4c58dfc19a | ||
|
a116762974 | ||
|
95f61af798 | ||
|
6922593660 | ||
|
afe2664c56 | ||
|
a233f98bbf | ||
|
f40d4e03a3 | ||
|
6a61e73e00 | ||
|
ad5fcd5356 | ||
|
ca3b715fdc | ||
|
b1439a4601 | ||
|
e72f6d4236 | ||
|
ff22d54eae | ||
|
109aaff534 | ||
|
5bd497ae54 | ||
|
40e4a6ea87 | ||
|
c61e43cc91 | ||
|
a8d28d6bc8 | ||
|
3661398a78 | ||
|
8ae7d2495c | ||
|
fc39aa8d71 | ||
|
8d8886e7ba | ||
|
7cc2f8aa43 | ||
|
d550f925ab | ||
|
f178c06b4f | ||
|
d0486964ce | ||
|
7a4d6209fd | ||
|
f2659962d3 | ||
|
f4bc0020ca | ||
|
67995e1e09 | ||
|
e0ae49d8a5 | ||
|
ddcd0f2437 | ||
|
d4f0c79b56 | ||
|
bd220f233a | ||
|
4cbf619fd5 | ||
|
2b233452c7 | ||
|
2d33b6adc6 | ||
|
42fbf9d815 | ||
|
623058b08c | ||
|
0dfe3da9bb | ||
|
72f7f6eff9 | ||
|
771be9310d | ||
|
e0d13da5f4 | ||
|
3c8bdc8fb4 | ||
|
3dd1f9e707 | ||
|
2c66867126 | ||
|
4946c05937 | ||
|
8303058ac6 | ||
|
f645865333 | ||
|
4efcfc2477 | ||
|
8a624c4dcc | ||
|
515d3b7cd1 | ||
|
fcc8e155ec | ||
|
1ea114ca20 | ||
|
633bbc9c6d | ||
|
c5126af1df | ||
|
f39e5424f1 | ||
|
aa37e9b7fc | ||
|
1b63292cc3 | ||
|
1cbc6dedab | ||
|
9d35258532 | ||
|
d44d1f115f | ||
|
3bddf02799 | ||
|
82e1b8fd72 | ||
|
269150ed40 | ||
|
e7dfdbffb5 | ||
|
6d1de15748 | ||
|
24f9a41654 | ||
|
675b98c89f | ||
|
f9a596c544 | ||
|
6ce5ef53cb | ||
|
a26e8a1aa4 | ||
|
3bf133c96c | ||
|
d0540eea52 | ||
|
601ffba0cf | ||
|
eadd5851d0 | ||
|
d44dde390a | ||
|
91fc8f407a | ||
|
450402ea42 | ||
|
43731202fd | ||
|
4147c38838 | ||
|
2f277b6f67 | ||
|
32f3ddca70 | ||
|
d4ecb910d8 | ||
|
80b72e3d0b | ||
|
5bf3e4b3c6 | ||
|
e6a0e4caed | ||
|
2edf7056f0 | ||
|
f991a99a14 | ||
|
33a050ade9 | ||
|
b30e775bf1 | ||
|
64b863728b | ||
|
f4036bd5b8 | ||
|
ecef296bee | ||
|
0b11f2947c | ||
|
936426178b | ||
|
38cf5c10f9 | ||
|
bf6822ed1b | ||
|
71a3f12d2a | ||
|
e86f199d16 | ||
|
827ded82b8 | ||
|
2af371d2f4 | ||
|
74054317d2 | ||
|
afddb81acf | ||
|
91ab27ecc9 | ||
|
f62419e158 | ||
|
a975a35734 | ||
|
45c3cb52e4 | ||
|
c9aab0baef | ||
|
d15b88af2a | ||
|
7609ba71e9 | ||
|
27ab639fbe | ||
|
6f1de69bbe | ||
|
29ce6e6352 | ||
|
bd34b2301e | ||
|
d1248ad5ce | ||
|
927220c873 | ||
|
dcdb0dcd23 | ||
|
c46efa461e | ||
|
6abcfe41e0 | ||
|
ed2d086302 | ||
|
12a70f63b4 | ||
|
4b6b73ea9d | ||
|
0730d14247 | ||
|
c8670d5324 | ||
|
224330f3a5 | ||
|
552da2e805 | ||
|
0b2369901a | ||
|
67509edd40 | ||
|
d114a3d415 | ||
|
018528b062 | ||
|
e497937dd4 | ||
|
948ce2d84f | ||
|
9958a68c57 | ||
|
59396771e6 | ||
|
051644d663 | ||
|
45ae23628e | ||
|
22b8632426 | ||
|
d35262089d | ||
|
25d5f94d19 | ||
|
e4d253ce76 | ||
|
0f95e607ff | ||
|
4cf998e9df | ||
|
716cff0c97 | ||
|
2cc9b6a857 | ||
|
ac87784a11 | ||
|
d10a5b67a1 | ||
|
d3eb85dd5d | ||
|
568ce32ca8 | ||
|
45f0adcd0a | ||
|
9b3609d6f6 | ||
|
8994295f2b | ||
|
68c167fe7a | ||
|
891aab0593 | ||
|
6da3b5e93d | ||
|
74f1b19dfe | ||
|
20a3801cf2 | ||
|
877e15a6e6 | ||
|
4826f7c1d3 | ||
|
605af49562 | ||
|
b56be33e5b | ||
|
5d597787eb | ||
|
6071a5b8aa | ||
|
bd12504f6c | ||
|
96a90d3f81 | ||
|
f36eb932a4 | ||
|
3e9f12d12d | ||
|
1edb0bd173 | ||
|
013c9ad9ef | ||
|
f319b93dc3 | ||
|
e0d31d8897 | ||
|
6bbb7581c2 | ||
|
d7c417de69 | ||
|
376e85c1d6 | ||
|
18eaf10e5a | ||
|
63f7fb1ea6 | ||
|
59ac4a71b6 | ||
|
e5eb702514 | ||
|
51a55cee5d | ||
|
8227289ecc | ||
|
25c54beee7 | ||
|
4113fba04d | ||
|
92fefcfe6f | ||
|
34e867c590 | ||
|
7a1f4d5008 | ||
|
9267235f30 | ||
|
f78ba39a1c | ||
|
cf439f2173 | ||
|
01046c2209 | ||
|
3331581ee5 | ||
|
dbf7f2b7ee | ||
|
4c3ddea09f | ||
|
bc86210db8 | ||
|
a302fb47a8 | ||
|
191a776ce6 | ||
|
efe6bcf95a | ||
|
896249f0e8 | ||
|
bac6dbda5e | ||
|
1b46435734 | ||
|
cdca848018 | ||
|
bdaa6e4909 | ||
|
481a592b8d | ||
|
f677376b8c | ||
|
bdc31265cf | ||
|
937a386688 | ||
|
16dbc4195a | ||
|
65513c79f5 | ||
|
c30ad4ce60 | ||
|
c06f4756ec | ||
|
7f69580df3 | ||
|
7646280d51 | ||
|
c5e699abe6 | ||
|
a52d5edd18 | ||
|
e1910b9a0f | ||
|
7000db3049 | ||
|
2e3d90e05b | ||
|
d3a687df27 | ||
|
5266821e1b | ||
|
17f8c53ef3 | ||
|
9b4d455726 | ||
|
b567c6e241 | ||
|
f27cdad73e | ||
|
45199adebd | ||
|
af028f8d72 | ||
|
b4821907b7 | ||
|
b0abf6df88 | ||
|
46a0cde544 | ||
|
fc50fd272b | ||
|
09f6637597 | ||
|
7b2ffaf78c | ||
|
7313eb54b4 | ||
|
abd6bd8154 | ||
|
e0e59bc6c0 | ||
|
0ea839e595 | ||
|
f23d9bf2e0 | ||
|
59ad9401d9 | ||
|
1470985ff2 | ||
|
4eb72a4e7b | ||
|
c3896c8b5d | ||
|
c45323863b | ||
|
c006479274 | ||
|
316de4b891 | ||
|
80ecad5cf9 | ||
|
35b7e95098 | ||
|
f47d244151 | ||
|
16e79d00d1 | ||
|
cd4ceb2487 | ||
|
3bfeca4601 | ||
|
5cf1fc62db | ||
|
849fd9df7d | ||
|
b859559c8f | ||
|
d81df55963 | ||
|
2b67536cd0 | ||
|
b5ed02d03c | ||
|
2416a743f5 | ||
|
fae78b4c01 | ||
|
c53054f2b7 | ||
|
b52ee87df8 | ||
|
66b0fe3b5d | ||
|
f66594bf93 | ||
|
903d6be3bb | ||
|
f069e521db | ||
|
e8f41a0dcc | ||
|
f2bc4a9977 | ||
|
10dee52c18 | ||
|
a03047da5b | ||
|
8b6d043ca6 | ||
|
6f7b92ae10 | ||
|
3e73413982 | ||
|
71ca228b8e | ||
|
9f2f541b4a | ||
|
d1df78604b | ||
|
15f6d66a61 | ||
|
1d38abdd7e | ||
|
927c211d41 | ||
|
779758f219 | ||
|
3c30cbd39e | ||
|
9df6ef5735 | ||
|
cf6a4738b1 | ||
|
9475703114 | ||
|
fb481f96d3 | ||
|
7c77e33313 | ||
|
085a839963 | ||
|
f7ccd7af8e | ||
|
dcadfe092c | ||
|
3dfc882d1a | ||
|
577bd9efb9 | ||
|
62bbe167b1 | ||
|
0238d850dd | ||
|
59027c94f2 | ||
|
9aa8dc26b7 | ||
|
f53f6d1c61 | ||
|
612abf391f | ||
|
fbff3b77bd | ||
|
38d0f2892e | ||
|
20a4d095de | ||
|
a620ce0713 | ||
|
0572d6e33a | ||
|
722d0b9742 | ||
|
6c09910c10 | ||
|
4b2a5a41a7 | ||
|
eceb36a546 | ||
|
b1f060a30a | ||
|
d0724063c4 | ||
|
aa9da98e8a | ||
|
3567f45e3d | ||
|
459244266d | ||
|
02a35baf70 | ||
|
bad8f0b9bc | ||
|
0d17b32e25 | ||
|
3bd01d812a | ||
|
c0af2072ca | ||
|
0d7d4b4ddd | ||
|
d28c016bef | ||
|
43ba6783c5 | ||
|
0f640ab7af | ||
|
c4ee378456 | ||
|
766839a60a | ||
|
a0bd23b747 | ||
|
cb44dbc8cb | ||
|
e64072e01f | ||
|
4fd6b0fd88 | ||
|
2637606ae1 | ||
|
d6e42ec63b | ||
|
935da1ed2b | ||
|
c3b7332ea8 | ||
|
083db525d4 | ||
|
2aba566a43 | ||
|
2111e1d61f | ||
|
0b5218cec1 | ||
|
52d53ef3de | ||
|
42e78004fb | ||
|
b72df1f384 | ||
|
abf7a4f663 | ||
|
b9189ec325 | ||
|
02b5873442 | ||
|
d226059b98 | ||
|
8af6df3946 | ||
|
15315ac87a | ||
|
366e8583c8 | ||
|
8475632087 | ||
|
a9a04adbd2 | ||
|
74f723e4ec | ||
|
136c74bd1c | ||
|
d2ad751851 | ||
|
499fcbcca9 | ||
|
ef215f573e | ||
|
a3accfaf46 | ||
|
b05b11cf64 | ||
|
2991888438 | ||
|
26c6cb819e | ||
|
aaee7c7db9 | ||
|
42cf311b2f | ||
|
4d5140abaf | ||
|
06b402bdec | ||
|
c98193a799 | ||
|
40985de245 | ||
|
988865fd0a | ||
|
7f8dd6b007 | ||
|
696724ac1b | ||
|
20c03cccdd | ||
|
9b2b9dd9de | ||
|
76b3fbc006 | ||
|
c40642b827 | ||
|
385feb0a5d | ||
|
9e1ef9fad3 | ||
|
93ca17f07a | ||
|
1dea4625d0 | ||
|
92708b2905 | ||
|
45ea013b11 | ||
|
3e5e8fd0e3 | ||
|
9658ecae8b | ||
|
d6771d6a7f | ||
|
c656bd60ef | ||
|
d63b644b2b | ||
|
cff57f9076 | ||
|
aa888fab34 | ||
|
1eb451d0d4 | ||
|
90a77ba9d3 | ||
|
ad251e4590 | ||
|
658820654f | ||
|
efc2b46303 | ||
|
60251cd623 | ||
|
fbcbd79d79 | ||
|
21803dc99b | ||
|
84d2d767b9 | ||
|
b20d98a229 | ||
|
aad13389ce | ||
|
620d033e06 | ||
|
aae6341989 | ||
|
2f1d2e847e | ||
|
c2836725f9 | ||
|
78c2e31ec2 | ||
|
a2953cb10c | ||
|
44dd1ef984 | ||
|
7ba9b06881 | ||
|
61683f895c |
143
.appveyor.yml
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
build: false
|
||||||
|
clone_folder: c:\projects\phpbb
|
||||||
|
version: '{build}'
|
||||||
|
|
||||||
|
services:
|
||||||
|
- iis
|
||||||
|
|
||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
- db: mssql
|
||||||
|
db_version: sql2012sp1
|
||||||
|
php: 7.0
|
||||||
|
- db: mssql
|
||||||
|
db_version: sql2014
|
||||||
|
php: 7.0
|
||||||
|
- db: mssql
|
||||||
|
db_version: sql2016
|
||||||
|
php: 7.1.12
|
||||||
|
# - db: mssql
|
||||||
|
# db_version: sql2017
|
||||||
|
# php: 7.1
|
||||||
|
# - db: mariadb
|
||||||
|
# php: 7.1
|
||||||
|
# - db: mysqli
|
||||||
|
# php: 7.1
|
||||||
|
# - db: sqlite
|
||||||
|
# php: 7.1
|
||||||
|
# - db: postgresql
|
||||||
|
# php: 7.1
|
||||||
|
|
||||||
|
hosts:
|
||||||
|
phpbb.test: 127.0.0.1
|
||||||
|
|
||||||
|
init:
|
||||||
|
- SET PATH=%systemroot%\system32\inetsrv\;C:\Program Files\OpenSSL;C:\tools\php;c:\php;%PATH%
|
||||||
|
- SET ANSICON=121x90 (121x90)
|
||||||
|
- REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" /v DelayedExpansion /t REG_DWORD /d 1 /f
|
||||||
|
|
||||||
|
before_test:
|
||||||
|
- ps: |
|
||||||
|
Set-Service wuauserv -StartupType Manual
|
||||||
|
cinst -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
|
||||||
|
Get-ChildItem -Path "c:\tools\php$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1$2')" -Recurse |
|
||||||
|
Move-Item -destination "c:\tools\php"
|
||||||
|
cd c:\tools\php
|
||||||
|
cat php.ini-development | %{$_ -replace "memory_limit = 128M","memory_limit = 1024M"} | Out-File -Encoding "Default" php.ini
|
||||||
|
Add-Content php.ini "`n date.timezone=UTC"
|
||||||
|
Add-Content php.ini "`n display_errors=On"
|
||||||
|
Add-Content php.ini "`n extension_dir=ext"
|
||||||
|
Add-Content php.ini "`n extension=php_openssl.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_mbstring.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_curl.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_gd2.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_tidy.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_fileinfo.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_pdo_sqlite.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_sqlite3.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_pdo_mysql.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_mysqli.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_pdo_pgsql.dll"
|
||||||
|
Add-Content php.ini "`n extension=php_pgsql.dll"
|
||||||
|
|
||||||
|
# Get MSSQL driver
|
||||||
|
if ($env:db -eq "mssql") {
|
||||||
|
cd c:\tools\php\ext
|
||||||
|
$DLLVersion = "4.1.6.1"
|
||||||
|
appveyor DownloadFile http://windows.php.net/downloads/pecl/releases/sqlsrv/$($:DLLVersion)/php_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip
|
||||||
|
7z x -y php_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip > $null
|
||||||
|
appveyor-retry appveyor DownloadFile http://windows.php.net/downloads/pecl/releases/pdo_sqlsrv/$($DLLVersion)/php_pdo_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip
|
||||||
|
7z x -y php_pdo_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip > $null
|
||||||
|
Remove-Item c:\tools\php\* -include .zip
|
||||||
|
cd c:\tools\php
|
||||||
|
Add-Content php.ini "`nextension=php_sqlsrv.dll"
|
||||||
|
Add-Content php.ini "`nextension=php_pdo_sqlsrv.dll"
|
||||||
|
Add-Content php.ini "`n"
|
||||||
|
|
||||||
|
$instanceName = $env:db_version.ToUpper()
|
||||||
|
Start-Service "MSSQL`$$instanceName"
|
||||||
|
Set-Variable -Name "sqlServerPath" -Value "(local)\$($env:db_version.ToUpper())"
|
||||||
|
|
||||||
|
# Create database write test config
|
||||||
|
sqlcmd -S $sqlServerPath -Q "Use [master]; CREATE DATABASE [phpbb_test] COLLATE Latin1_General_CI_AS"
|
||||||
|
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\mssqlnative';`n`$dbhost = '.\\$env:db_version';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'sa';`n`$dbpasswd = 'Password12!';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
||||||
|
}
|
||||||
|
elseif ($env:db -eq "mysqli") {
|
||||||
|
Start-Service MySQL57
|
||||||
|
$env:MYSQL_PWD="Password12!"
|
||||||
|
$cmd = '"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql" -e "create database phpbb_test;" --user=root'
|
||||||
|
iex "& $cmd"
|
||||||
|
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\mysqli';`n`$dbhost = 'localhost';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'root';`n`$dbpasswd = 'Password12!';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
||||||
|
}
|
||||||
|
elseif ($env:db -eq "postgresql") {
|
||||||
|
Start-Service postgresql-x64-9.5
|
||||||
|
$env:PGUSER="postgres"
|
||||||
|
$env:PGPASSWORD="Password12!"
|
||||||
|
$Env:Path="C:\Program Files\PostgreSQL\9.6\bin\;$($Env:Path)"
|
||||||
|
createdb phpbb_test
|
||||||
|
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\postgres';`n`$dbhost = 'localhost';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'postgres';`n`$dbpasswd = 'Password12!';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
||||||
|
}
|
||||||
|
elseif ($env:db -eq "mariadb") {
|
||||||
|
appveyor-retry cinst -y --force mariadb
|
||||||
|
$env:MYSQL_PWD=""
|
||||||
|
$cmd = '"C:\Program Files\MariaDB 10.2\bin\mysql" -e "create database phpbb_test;" --user=root'
|
||||||
|
iex "& $cmd"
|
||||||
|
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\mysqli';`n`$dbhost = 'localhost';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'root';`n`$dbpasswd = '';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
||||||
|
}
|
||||||
|
elseif ($env:db -eq "sqlite") {
|
||||||
|
# install sqlite
|
||||||
|
appveyor-retry cinst -y sqlite
|
||||||
|
sqlite3 c:\projects\test.db "create table aTable(field1 int); drop table aTable;"
|
||||||
|
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\sqlite3';`n`$dbhost = 'c:\\projects\\test.db';`n`$dbport = '';`n`$dbname = '';`n`$dbuser = '';`n`$dbpasswd = '';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install PhantomJS
|
||||||
|
cinst -y phantomjs
|
||||||
|
Start-Process "phantomjs" "--webdriver=8910" | Out-Null
|
||||||
|
- ps: |
|
||||||
|
cd c:\projects\phpbb\phpBB
|
||||||
|
(Get-Content c:\projects\phpbb\phpBB\web.config).replace("<configuration>", "<configuration>`n`t<system.web>`n`t`t<customErrors mode=`"Off`"/>`n`t</system.web>") | Set-Content c:\projects\phpbb\phpBB\web.config
|
||||||
|
(Get-Content c:\projects\phpbb\phpBB\web.config).replace("`t</system.webServer>", "`t`t<httpErrors errorMode=`"Detailed`" />`n`t</system.webServer>") | Set-Content c:\projects\phpbb\phpBB\web.config
|
||||||
|
- cd c:\projects\phpbb\phpBB
|
||||||
|
- php ..\composer.phar install
|
||||||
|
- choco install -y urlrewrite
|
||||||
|
- ps: New-WebSite -Name 'phpBBTest' -PhysicalPath 'c:\projects\phpbb\phpBB' -Force
|
||||||
|
- ps: Import-Module WebAdministration; Set-ItemProperty 'IIS:\Sites\phpBBTest' -name Bindings -value @{protocol='http';bindingInformation='*:80:phpbb.test'}
|
||||||
|
- echo Change default anonymous user AUTH to ApplicationPool
|
||||||
|
- appcmd set config -section:anonymousAuthentication /username:"" --password
|
||||||
|
- echo Setup FAST-CGI configuration
|
||||||
|
- appcmd set config /section:system.webServer/fastCGI /+[fullPath='C:\tools\php\php-cgi.exe']
|
||||||
|
- echo Setup FACT-CGI handler
|
||||||
|
- appcmd set config /section:system.webServer/handlers /+[name='PHP-FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='C:\tools\php\php-cgi.exe',resourceType='Either']
|
||||||
|
- iisreset
|
||||||
|
- NET START W3SVC
|
||||||
|
- mkdir "C:\projects\phpbb\phpBB\cache\test"
|
||||||
|
- mkdir "C:\projects\phpbb\phpBB\cache\installer"
|
||||||
|
- icacls "C:\projects\phpbb\phpBB\cache" /grant Users:F /T
|
||||||
|
- icacls "C:\projects\phpbb\phpBB\files" /grant Users:F /T
|
||||||
|
- icacls "C:\projects\phpbb\phpBB\store" /grant Users:F /T
|
||||||
|
- icacls "C:\projects\phpbb\phpBB\images\avatars\upload" /grant Users:F /T
|
||||||
|
|
||||||
|
test_script:
|
||||||
|
- cd c:\projects\phpbb
|
||||||
|
- php -e phpBB\vendor\phpunit\phpunit\phpunit --verbose
|
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,9 +1,9 @@
|
|||||||
Checklist:
|
Checklist:
|
||||||
|
|
||||||
- [ ] Correct branch: master for new features; 3.2.x, 3.1.x for fixes
|
- [ ] Correct branch: master for new features; 3.2.x for fixes
|
||||||
- [ ] Tests pass
|
- [ ] Tests pass
|
||||||
- [ ] Code follows coding guidelines: [master / 3.2.x](https://area51.phpbb.com/docs/master/coding-guidelines.html), [3.1.x](https://area51.phpbb.com/docs/31x/coding-guidelines.html)
|
- [ ] Code follows coding guidelines: [master](https://area51.phpbb.com/docs/dev/master/development/coding_guidelines.html) and [3.2.x](https://area51.phpbb.com/docs/dev/3.2.x/development/coding_guidelines.html)
|
||||||
- [ ] Commit follows commit message [format](https://wiki.phpbb.com/Git#Commit_Messages)
|
- [ ] Commit follows commit message [format](https://area51.phpbb.com/docs/dev/3.2.x/development/git.html)
|
||||||
|
|
||||||
Tracker ticket (set the ticket ID to **your ticket ID**):
|
Tracker ticket (set the ticket ID to **your ticket ID**):
|
||||||
|
|
||||||
|
11
.travis.yml
@@ -1,4 +1,6 @@
|
|||||||
language: php
|
language: php
|
||||||
|
sudo: required
|
||||||
|
dist: precise
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
@@ -24,12 +26,11 @@ matrix:
|
|||||||
env: DB=mysqli
|
env: DB=mysqli
|
||||||
- php: 7.1
|
- php: 7.1
|
||||||
env: DB=mysqli
|
env: DB=mysqli
|
||||||
|
- php: 7.2
|
||||||
|
env: DB=mysqli
|
||||||
- php: nightly
|
- php: nightly
|
||||||
env: DB=mysqli
|
env: DB=mysqli
|
||||||
- php: hhvm
|
|
||||||
env: DB=mysqli
|
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- php: hhvm
|
|
||||||
- php: nightly
|
- php: nightly
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
|
|
||||||
@@ -49,6 +50,6 @@ script:
|
|||||||
- travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
|
- travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
|
||||||
- travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION $NOTESTS ./
|
- travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION $NOTESTS ./
|
||||||
- sh -c "if [ '$SLOWTESTS' != '1' -a '$DB' = 'mysqli' ]; then phpBB/vendor/bin/phpunit tests/lint_test.php; fi"
|
- sh -c "if [ '$SLOWTESTS' != '1' -a '$DB' = 'mysqli' ]; then phpBB/vendor/bin/phpunit tests/lint_test.php; fi"
|
||||||
- sh -c "if [ '$NOTESTS' != '1' -a '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml; fi"
|
- sh -c "if [ '$NOTESTS' != '1' -a '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --verbose --stop-on-error; fi"
|
||||||
- sh -c "if [ '$SLOWTESTS' = '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --group slow; fi"
|
- sh -c "if [ '$SLOWTESTS' = '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --group slow; fi"
|
||||||
- sh -c "set -x;if [ '$NOTESTS' = '1' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi"
|
- sh -c "set -x;if [ '$NOTESTS' = '1' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git remote set-branches --add origin $TRAVIS_BRANCH && git fetch && git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..$TRAVIS_PULL_REQUEST_SHA; fi"
|
||||||
|
10
README.md
@@ -20,7 +20,7 @@ To be able to run an installation from the repo (and not from a pre-built packag
|
|||||||
|
|
||||||
1. [Create an account on phpBB.com](http://www.phpbb.com/community/ucp.php?mode=register)
|
1. [Create an account on phpBB.com](http://www.phpbb.com/community/ucp.php?mode=register)
|
||||||
2. [Create a ticket (unless there already is one)](http://tracker.phpbb.com/secure/CreateIssue!default.jspa)
|
2. [Create a ticket (unless there already is one)](http://tracker.phpbb.com/secure/CreateIssue!default.jspa)
|
||||||
3. Read our [Coding guidelines](https://wiki.phpbb.com/Coding_guidelines) and [Git Contribution Guidelines](http://wiki.phpbb.com/Git)
|
3. Read our [Coding guidelines](https://area51.phpbb.com/docs/dev/development/coding_guidelines.html) and [Git Contribution Guidelines](https://area51.phpbb.com/docs/dev/development/git.html)
|
||||||
4. Send us a pull request
|
4. Send us a pull request
|
||||||
|
|
||||||
## VAGRANT
|
## VAGRANT
|
||||||
@@ -29,11 +29,11 @@ Read our [Vagrant documentation](phpBB/docs/vagrant.md) to find out how to use V
|
|||||||
|
|
||||||
## AUTOMATED TESTING
|
## AUTOMATED TESTING
|
||||||
|
|
||||||
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](http://bamboo.phpbb.com) or check our travis builds below:
|
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](https://bamboo.phpbb.com) or check our travis builds below:
|
||||||
|
|
||||||
* [](http://travis-ci.org/phpbb/phpbb) **master** - Latest development version
|
* [](http://travis-ci.org/phpbb/phpbb)[](https://ci.appveyor.com/project/phpBB/phpbb/branch/master) **master** - Latest development version
|
||||||
* [](http://travis-ci.org/phpbb/phpbb) **3.2.x** - Development of version 3.2.x
|
* [](http://travis-ci.org/phpbb/phpbb)[](https://ci.appveyor.com/project/phpBB/phpbb/branch/3.2.x) **3.2.x** - Development of version 3.2.x
|
||||||
* [](http://travis-ci.org/phpbb/phpbb) **3.1.x** - Development of version 3.1.x
|
* [](http://travis-ci.org/phpbb/phpbb) **3.1.x** - Development of version 3.1.x
|
||||||
|
|
||||||
## LICENSE
|
## LICENSE
|
||||||
|
|
||||||
|
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
||||||
<!-- a few settings for the build -->
|
<!-- a few settings for the build -->
|
||||||
<property name="newversion" value="3.2.0" />
|
<property name="newversion" value="3.2.3-RC1" />
|
||||||
<property name="prevversion" value="3.2.0-RC2" />
|
<property name="prevversion" value="3.2.2" />
|
||||||
<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.2.0-a1, 3.2.0-a2, 3.2.0-b1, 3.2.0-b2, 3.2.0-RC1" />
|
<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0-a1, 3.2.0-a2, 3.2.0-b1, 3.2.0-b2, 3.2.0-RC1, 3.2.0-RC2, 3.2.0, 3.2.1" />
|
||||||
<!-- no configuration should be needed beyond this point -->
|
<!-- no configuration should be needed beyond this point -->
|
||||||
|
|
||||||
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
||||||
|
@@ -39,8 +39,8 @@ class build_package
|
|||||||
$this->verbose = $verbose;
|
$this->verbose = $verbose;
|
||||||
|
|
||||||
// Get last two entries
|
// Get last two entries
|
||||||
$_latest = $this->versions[sizeof($this->versions) - 1];
|
$_latest = $this->versions[count($this->versions) - 1];
|
||||||
$_before = $this->versions[sizeof($this->versions) - 2];
|
$_before = $this->versions[count($this->versions) - 2];
|
||||||
|
|
||||||
$this->locations = array(
|
$this->locations = array(
|
||||||
'new_version' => dirname(dirname(__FILE__)) . '/phpBB/',
|
'new_version' => dirname(dirname(__FILE__)) . '/phpBB/',
|
||||||
|
@@ -33,7 +33,7 @@ echo "Now all three package types (patch, files, release) are built as well as t
|
|||||||
|
|
||||||
// Go trough all versions making a diff if we even have old versions
|
// Go trough all versions making a diff if we even have old versions
|
||||||
// For phpBB 3.0.x we might choose a different update method, rendering the things below useless...
|
// For phpBB 3.0.x we might choose a different update method, rendering the things below useless...
|
||||||
if (sizeof($package->old_packages))
|
if (count($package->old_packages))
|
||||||
{
|
{
|
||||||
chdir($package->locations['old_versions']);
|
chdir($package->locations['old_versions']);
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ if (sizeof($package->old_packages))
|
|||||||
// Create Directories along the way?
|
// Create Directories along the way?
|
||||||
$file = explode('/', $file);
|
$file = explode('/', $file);
|
||||||
// Remove filename portion
|
// Remove filename portion
|
||||||
$file[sizeof($file)-1] = '';
|
$file[count($file)-1] = '';
|
||||||
|
|
||||||
chdir($dest_filename_dir);
|
chdir($dest_filename_dir);
|
||||||
foreach ($file as $entry)
|
foreach ($file as $entry)
|
||||||
@@ -169,7 +169,7 @@ if (sizeof($package->old_packages))
|
|||||||
// Create Directories along the way?
|
// Create Directories along the way?
|
||||||
$file = explode('/', $file);
|
$file = explode('/', $file);
|
||||||
// Remove filename portion
|
// Remove filename portion
|
||||||
$file[sizeof($file)-1] = '';
|
$file[count($file)-1] = '';
|
||||||
|
|
||||||
chdir($dest_filename_dir . '/install/update/old');
|
chdir($dest_filename_dir . '/install/update/old');
|
||||||
foreach ($file as $entry)
|
foreach ($file as $entry)
|
||||||
@@ -214,7 +214,7 @@ if (sizeof($package->old_packages))
|
|||||||
// Create Directories along the way?
|
// Create Directories along the way?
|
||||||
$file = explode('/', $file);
|
$file = explode('/', $file);
|
||||||
// Remove filename portion
|
// Remove filename portion
|
||||||
$file[sizeof($file)-1] = '';
|
$file[count($file)-1] = '';
|
||||||
|
|
||||||
chdir($dest_filename_dir . '/install/update/new');
|
chdir($dest_filename_dir . '/install/update/new');
|
||||||
foreach ($file as $entry)
|
foreach ($file as $entry)
|
||||||
@@ -321,7 +321,7 @@ $update_info = array(
|
|||||||
\'version\' => array(\'from\' => \'' . str_replace('_to_', '', $package->old_packages[$_package_name]) . '\', \'to\' => \'' . $package->get('new_version_number') . '\'),
|
\'version\' => array(\'from\' => \'' . str_replace('_to_', '', $package->old_packages[$_package_name]) . '\', \'to\' => \'' . $package->get('new_version_number') . '\'),
|
||||||
';
|
';
|
||||||
|
|
||||||
if (sizeof($file_contents['all']))
|
if (count($file_contents['all']))
|
||||||
{
|
{
|
||||||
$index_contents .= "\t'files' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['all']) . "',\n\t),\n";
|
$index_contents .= "\t'files' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['all']) . "',\n\t),\n";
|
||||||
}
|
}
|
||||||
@@ -330,7 +330,7 @@ $update_info = array(
|
|||||||
$index_contents .= "\t'files' => array(),\n";
|
$index_contents .= "\t'files' => array(),\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($file_contents['binary']))
|
if (count($file_contents['binary']))
|
||||||
{
|
{
|
||||||
$index_contents .= "\t'binary' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['binary']) . "',\n\t),\n";
|
$index_contents .= "\t'binary' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['binary']) . "',\n\t),\n";
|
||||||
}
|
}
|
||||||
@@ -339,7 +339,7 @@ $update_info = array(
|
|||||||
$index_contents .= "\t'binary' => array(),\n";
|
$index_contents .= "\t'binary' => array(),\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($file_contents['deleted']))
|
if (count($file_contents['deleted']))
|
||||||
{
|
{
|
||||||
$index_contents .= "\t'deleted' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['deleted']) . "',\n\t),\n";
|
$index_contents .= "\t'deleted' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['deleted']) . "',\n\t),\n";
|
||||||
}
|
}
|
||||||
@@ -380,7 +380,7 @@ $compress_programs = array(
|
|||||||
'zip' => 'zip -r'
|
'zip' => 'zip -r'
|
||||||
);
|
);
|
||||||
|
|
||||||
if (sizeof($package->old_packages))
|
if (count($package->old_packages))
|
||||||
{
|
{
|
||||||
// Build Patch Files
|
// Build Patch Files
|
||||||
chdir($package->get('patch_directory'));
|
chdir($package->get('patch_directory'));
|
||||||
|
@@ -1,292 +0,0 @@
|
|||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* This file is part of the phpBB Forum Software package.
|
|
||||||
*
|
|
||||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
|
||||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
|
||||||
*
|
|
||||||
* For full copyright and license information, please see
|
|
||||||
* the docs/CREDITS.txt file.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
function show_usage()
|
|
||||||
{
|
|
||||||
$filename = basename(__FILE__);
|
|
||||||
|
|
||||||
echo "$filename adds repositories of a github network as remotes to a local git repository.\n";
|
|
||||||
echo "\n";
|
|
||||||
|
|
||||||
echo "Usage: [php] $filename -s collaborators|organisation|contributors|forks [OPTIONS]\n";
|
|
||||||
echo "\n";
|
|
||||||
|
|
||||||
echo "Scopes:\n";
|
|
||||||
echo " collaborators Repositories of people who have push access to the specified repository\n";
|
|
||||||
echo " contributors Repositories of people who have contributed to the specified repository\n";
|
|
||||||
echo " organisation Repositories of members of the organisation at github\n";
|
|
||||||
echo " forks All repositories of the whole github network\n";
|
|
||||||
echo "\n";
|
|
||||||
|
|
||||||
echo "Options:\n";
|
|
||||||
echo " -s scope See description above (mandatory)\n";
|
|
||||||
echo " -u github_username Overwrites the github username (optional)\n";
|
|
||||||
echo " -r repository_name Overwrites the repository name (optional)\n";
|
|
||||||
echo " -m your_github_username Sets up ssh:// instead of git:// for pushable repositories (optional)\n";
|
|
||||||
echo " -d Outputs the commands instead of running them (optional)\n";
|
|
||||||
echo " -h This help text\n";
|
|
||||||
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle arguments
|
|
||||||
$opts = getopt('s:u:r:m:dh');
|
|
||||||
|
|
||||||
if (empty($opts) || isset($opts['h']))
|
|
||||||
{
|
|
||||||
show_usage();
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope = get_arg($opts, 's', '');
|
|
||||||
$username = get_arg($opts, 'u', 'phpbb');
|
|
||||||
$repository = get_arg($opts, 'r', 'phpbb3');
|
|
||||||
$developer = get_arg($opts, 'm', '');
|
|
||||||
$dry_run = !get_arg($opts, 'd', true);
|
|
||||||
run(null, $dry_run);
|
|
||||||
exit(work($scope, $username, $repository, $developer));
|
|
||||||
|
|
||||||
function work($scope, $username, $repository, $developer)
|
|
||||||
{
|
|
||||||
// Get some basic data
|
|
||||||
$forks = get_forks($username, $repository);
|
|
||||||
$collaborators = get_collaborators($username, $repository);
|
|
||||||
|
|
||||||
if ($forks === false || $collaborators === false)
|
|
||||||
{
|
|
||||||
echo "Error: failed to retrieve forks or collaborators\n";
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($scope)
|
|
||||||
{
|
|
||||||
case 'collaborators':
|
|
||||||
$remotes = array_intersect_key($forks, $collaborators);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'organisation':
|
|
||||||
$remotes = array_intersect_key($forks, get_organisation_members($username));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'contributors':
|
|
||||||
$remotes = array_intersect_key($forks, get_contributors($username, $repository));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'forks':
|
|
||||||
$remotes = $forks;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
show_usage();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file_exists('.git'))
|
|
||||||
{
|
|
||||||
add_remote($username, $repository, isset($collaborators[$developer]));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
clone_repository($username, $repository, isset($collaborators[$developer]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add private security repository for developers
|
|
||||||
if ($username == 'phpbb' && $repository == 'phpbb3' && isset($collaborators[$developer]))
|
|
||||||
{
|
|
||||||
run("git remote add $username-security " . get_repository_url($username, "$repository-security", true));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Skip blessed repository.
|
|
||||||
unset($remotes[$username]);
|
|
||||||
|
|
||||||
foreach ($remotes as $remote)
|
|
||||||
{
|
|
||||||
add_remote($remote['username'], $remote['repository'], $remote['username'] == $developer);
|
|
||||||
}
|
|
||||||
|
|
||||||
run('git remote update');
|
|
||||||
}
|
|
||||||
|
|
||||||
function clone_repository($username, $repository, $pushable = false)
|
|
||||||
{
|
|
||||||
$url = get_repository_url($username, $repository, false);
|
|
||||||
run("git clone $url ./ --origin $username");
|
|
||||||
|
|
||||||
if ($pushable)
|
|
||||||
{
|
|
||||||
$ssh_url = get_repository_url($username, $repository, true);
|
|
||||||
run("git remote set-url --push $username $ssh_url");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_remote($username, $repository, $pushable = false)
|
|
||||||
{
|
|
||||||
$url = get_repository_url($username, $repository, false);
|
|
||||||
run("git remote add $username $url");
|
|
||||||
|
|
||||||
if ($pushable)
|
|
||||||
{
|
|
||||||
$ssh_url = get_repository_url($username, $repository, true);
|
|
||||||
run("git remote set-url --push $username $ssh_url");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_repository_url($username, $repository, $ssh = false)
|
|
||||||
{
|
|
||||||
$url_base = ($ssh) ? 'git@github.com:' : 'git://github.com/';
|
|
||||||
|
|
||||||
return $url_base . $username . '/' . $repository . '.git';
|
|
||||||
}
|
|
||||||
|
|
||||||
function api_request($query)
|
|
||||||
{
|
|
||||||
return api_url_request("https://api.github.com/$query?per_page=100");
|
|
||||||
}
|
|
||||||
|
|
||||||
function api_url_request($url)
|
|
||||||
{
|
|
||||||
$contents = file_get_contents($url, false, stream_context_create(array(
|
|
||||||
'http' => array(
|
|
||||||
'header' => "User-Agent: phpBB/1.0\r\n",
|
|
||||||
),
|
|
||||||
)));
|
|
||||||
|
|
||||||
$sub_request_result = array();
|
|
||||||
// Check headers for pagination links
|
|
||||||
if (!empty($http_response_header))
|
|
||||||
{
|
|
||||||
foreach ($http_response_header as $header_element)
|
|
||||||
{
|
|
||||||
// Find Link Header which gives us a link to the next page
|
|
||||||
if (strpos($header_element, 'Link: ') === 0)
|
|
||||||
{
|
|
||||||
list($head, $header_content) = explode(': ', $header_element);
|
|
||||||
foreach (explode(', ', $header_content) as $links)
|
|
||||||
{
|
|
||||||
list($url, $rel) = explode('; ', $links);
|
|
||||||
if ($rel == 'rel="next"')
|
|
||||||
{
|
|
||||||
// Found a next link, follow it and merge the results
|
|
||||||
$sub_request_result = api_url_request(substr($url, 1, -1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($contents === false)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$contents = json_decode($contents);
|
|
||||||
|
|
||||||
if (isset($contents->message) && strpos($contents->message, 'API Rate Limit') === 0)
|
|
||||||
{
|
|
||||||
throw new RuntimeException('Reached github API Rate Limit. Please try again later' . "\n", 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ($sub_request_result) ? array_merge($sub_request_result, $contents) : $contents;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_contributors($username, $repository)
|
|
||||||
{
|
|
||||||
$request = api_request("repos/$username/$repository/stats/contributors");
|
|
||||||
if ($request === false)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$usernames = array();
|
|
||||||
foreach ($request as $contribution)
|
|
||||||
{
|
|
||||||
$usernames[$contribution->author->login] = $contribution->author->login;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $usernames;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_organisation_members($username)
|
|
||||||
{
|
|
||||||
$request = api_request("orgs/$username/public_members");
|
|
||||||
if ($request === false)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$usernames = array();
|
|
||||||
foreach ($request as $member)
|
|
||||||
{
|
|
||||||
$usernames[$member->login] = $member->login;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $usernames;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_collaborators($username, $repository)
|
|
||||||
{
|
|
||||||
$request = api_request("repos/$username/$repository/collaborators");
|
|
||||||
if ($request === false)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$usernames = array();
|
|
||||||
foreach ($request as $collaborator)
|
|
||||||
{
|
|
||||||
$usernames[$collaborator->login] = $collaborator->login;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $usernames;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_forks($username, $repository)
|
|
||||||
{
|
|
||||||
$request = api_request("repos/$username/$repository/forks");
|
|
||||||
if ($request === false)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$usernames = array();
|
|
||||||
foreach ($request as $fork)
|
|
||||||
{
|
|
||||||
$usernames[$fork->owner->login] = array(
|
|
||||||
'username' => $fork->owner->login,
|
|
||||||
'repository' => $fork->name,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $usernames;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_arg($array, $index, $default)
|
|
||||||
{
|
|
||||||
return isset($array[$index]) ? $array[$index] : $default;
|
|
||||||
}
|
|
||||||
|
|
||||||
function run($cmd, $dry = false)
|
|
||||||
{
|
|
||||||
static $dry_run;
|
|
||||||
|
|
||||||
if (is_null($cmd))
|
|
||||||
{
|
|
||||||
$dry_run = $dry;
|
|
||||||
}
|
|
||||||
else if (!empty($dry_run))
|
|
||||||
{
|
|
||||||
echo "$cmd\n";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
passthru(escapeshellcmd($cmd));
|
|
||||||
}
|
|
||||||
}
|
|
@@ -329,42 +329,71 @@
|
|||||||
<fieldset class="tabulated">
|
<fieldset class="tabulated">
|
||||||
<legend>{L_TITLE}</legend>
|
<legend>{L_TITLE}</legend>
|
||||||
|
|
||||||
<table class="table1 zebra-table fixed-width-table">
|
<div class="pagination top-pagination">
|
||||||
<thead>
|
<!-- IF .pagination or TOTAL_FILES -->
|
||||||
<tr>
|
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
||||||
<th>{L_FILENAME}</th>
|
<!-- IF .pagination -->
|
||||||
<th style="width: 15%;">{L_FILEDATE}</th>
|
• <!-- INCLUDE pagination.html -->
|
||||||
<th style="width: 15%;">{L_FILESIZE}</th>
|
<!-- ELSE -->
|
||||||
<th style="width: 15%;">{L_ATTACH_POST_ID}</th>
|
• {PAGE_NUMBER}
|
||||||
<th style="width: 15%;">{L_ATTACH_TO_POST}</th>
|
<!-- ENDIF -->
|
||||||
<th style="width: 15%;">{L_DELETE}</th>
|
<!-- ENDIF -->
|
||||||
</tr>
|
</div>
|
||||||
</thead>
|
|
||||||
<tbody>
|
<!-- IF .orphan -->
|
||||||
<!-- BEGIN orphan -->
|
<table class="table1 zebra-table fixed-width-table">
|
||||||
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{orphan.U_FILE}">{orphan.REAL_FILENAME}</a></td>
|
<th>{L_FILENAME}</th>
|
||||||
<td>{orphan.FILETIME}</td>
|
<th style="width: 15%;">{L_FILEDATE}</th>
|
||||||
<td>{orphan.FILESIZE}</td>
|
<th style="width: 15%;">{L_FILESIZE}</th>
|
||||||
<td><strong>{L_ATTACH_ID}{L_COLON} </strong><input type="number" min="0" max="9999999999" name="post_id[{orphan.ATTACH_ID}]" value="{orphan.POST_ID}" style="width: 75%;" /></td>
|
<th style="width: 15%;">{L_ATTACH_POST_ID}</th>
|
||||||
<td><input type="checkbox" class="radio" name="add[{orphan.ATTACH_ID}]" /></td>
|
<th style="width: 15%;">{L_ATTACH_TO_POST}</th>
|
||||||
<td><input type="checkbox" class="radio" name="delete[{orphan.ATTACH_ID}]" /></td>
|
<th style="width: 15%;">{L_DELETE}</th>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END orphan -->
|
</thead>
|
||||||
<tr class="row4">
|
<tbody>
|
||||||
<td colspan="4"> </td>
|
<!-- BEGIN orphan -->
|
||||||
<td class="small"><a href="#" onclick="marklist('orphan', 'add', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('orphan', 'add', false); return false;">{L_UNMARK_ALL}</a></td>
|
<tr>
|
||||||
<td class="small"><a href="#" onclick="marklist('orphan', 'delete', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('orphan', 'delete', false); return false;">{L_UNMARK_ALL}</a></td>
|
<td><a href="{orphan.U_FILE}">{orphan.REAL_FILENAME}</a></td>
|
||||||
</tr>
|
<td>{orphan.FILETIME}</td>
|
||||||
</tbody>
|
<td>{orphan.FILESIZE}</td>
|
||||||
</table>
|
<td><strong>{L_ATTACH_ID}{L_COLON} </strong><input type="number" min="0" max="9999999999" name="post_id[{orphan.ATTACH_ID}]" value="{orphan.POST_ID}" style="width: 75%;" /></td>
|
||||||
|
<td><input type="checkbox" class="radio" name="add[{orphan.ATTACH_ID}]" /></td>
|
||||||
|
<td><input type="checkbox" class="radio" name="delete[{orphan.ATTACH_ID}]" /></td>
|
||||||
|
</tr>
|
||||||
|
<!-- END orphan -->
|
||||||
|
<tr class="row4">
|
||||||
|
<td colspan="4"> </td>
|
||||||
|
<td class="small"><a href="#" onclick="marklist('orphan', 'add', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('orphan', 'add', false); return false;">{L_UNMARK_ALL}</a></td>
|
||||||
|
<td class="small"><a href="#" onclick="marklist('orphan', 'delete', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('orphan', 'delete', false); return false;">{L_UNMARK_ALL}</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<!-- ELSE -->
|
||||||
|
<div class="errorbox">
|
||||||
|
<p>{L_NO_ATTACHMENTS}</p>
|
||||||
|
</div>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<br />
|
<!-- IF TOTAL_FILES -->
|
||||||
|
<div class="pagination">
|
||||||
|
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
||||||
|
<!-- IF .pagination -->
|
||||||
|
• <!-- INCLUDE pagination.html -->
|
||||||
|
<!-- ELSE -->
|
||||||
|
• {PAGE_NUMBER}
|
||||||
|
<!-- ENDIF -->
|
||||||
|
</div>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
||||||
|
<!-- IF .orphan -->
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<p class="submit-buttons">
|
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
|
||||||
</p>
|
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
@@ -440,7 +469,7 @@
|
|||||||
<input class="button2" type="submit" name="submit" value="{L_DELETE_MARKED}" /><br />
|
<input class="button2" type="submit" name="submit" value="{L_DELETE_MARKED}" /><br />
|
||||||
<p class="small">
|
<p class="small">
|
||||||
<a href="#" onclick="marklist('attachments', 'delete', true); return false;">{L_MARK_ALL}</a> •
|
<a href="#" onclick="marklist('attachments', 'delete', true); return false;">{L_MARK_ALL}</a> •
|
||||||
<a href="#" onclick="marklist('attachments', 'delete', false); return false;">{L_UNMARK_ALL}</a>
|
<a href="#" onclick="marklist('attachments', 'delete', false); return false;">{L_UNMARK_ALL}</a>
|
||||||
</p>
|
</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
@@ -18,10 +18,11 @@
|
|||||||
<!-- BEGIN options -->
|
<!-- BEGIN options -->
|
||||||
<!-- IF options.S_LEGEND -->
|
<!-- IF options.S_LEGEND -->
|
||||||
<!-- IF not options.S_FIRST_ROW -->
|
<!-- IF not options.S_FIRST_ROW -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{options.LEGEND}</legend>
|
<legend>{options.LEGEND}</legend>
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
<!-- EVENT acp_ext_details_notice -->
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_EXT_DETAILS}</legend>
|
<legend>{L_EXT_DETAILS}</legend>
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
||||||
|
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<span class="small"><a href="https://www.phpbb.com/go/customise/extensions/3.1" target="_blank">{L_BROWSE_EXTENSIONS_DATABASE}</a> • <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE_ALL}</a> • <a href="javascript:phpbb.toggleDisplay('version_check_settings');">{L_SETTINGS}</a></span>
|
<span class="small"><a href="https://www.phpbb.com/go/customise/extensions/3.2" target="_blank">{L_BROWSE_EXTENSIONS_DATABASE}</a> • <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE_ALL}</a> • <a href="javascript:phpbb.toggleDisplay('version_check_settings');">{L_SETTINGS}</a></span>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<form id="version_check_settings" method="post" action="{U_ACTION}" style="display:none">
|
<form id="version_check_settings" method="post" action="{U_ACTION}" style="display:none">
|
||||||
@@ -48,10 +48,11 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<!-- BEGIN enabled -->
|
<!-- BEGIN enabled -->
|
||||||
<tr class="ext_enabled row-highlight">
|
<tr class="ext_enabled row-highlight">
|
||||||
<td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong></td>
|
<td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_enabled_name_after --></td>
|
||||||
<td style="text-align: center;">
|
<td style="text-align: center;">
|
||||||
<!-- IF enabled.S_VERSIONCHECK -->
|
<!-- IF enabled.S_VERSIONCHECK -->
|
||||||
<strong <!-- IF enabled.S_UP_TO_DATE -->style="color: #228822;"<!-- ELSE -->style="color: #BC2A4D;"<!-- ENDIF -->>{enabled.META_VERSION}</strong>
|
<strong class="<!-- IF enabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{enabled.META_VERSION}</strong>
|
||||||
|
<!-- IF not enabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
{enabled.META_VERSION}
|
{enabled.META_VERSION}
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
@@ -73,10 +74,11 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<!-- BEGIN disabled -->
|
<!-- BEGIN disabled -->
|
||||||
<tr class="ext_disabled row-highlight">
|
<tr class="ext_disabled row-highlight">
|
||||||
<td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong></td>
|
<td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_disabled_name_after --></td>
|
||||||
<td style="text-align: center;">
|
<td style="text-align: center;">
|
||||||
<!-- IF disabled.S_VERSIONCHECK -->
|
<!-- IF disabled.S_VERSIONCHECK -->
|
||||||
<strong <!-- IF disabled.S_UP_TO_DATE -->style="color: #228822;"<!-- ELSE -->style="color: #BC2A4D;"<!-- ENDIF -->>{disabled.META_VERSION}</strong>
|
<strong class="<!-- IF disabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{disabled.META_VERSION}</strong>
|
||||||
|
<!-- IF not disabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
{disabled.META_VERSION}
|
{disabled.META_VERSION}
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
@@ -316,7 +316,7 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>{groups.GROUP_NAME}</strong></td>
|
<td><strong<!-- IF groups.GROUP_COLOR --> style="color: #{groups.GROUP_COLOR}"<!-- ENDIF -->>{groups.GROUP_NAME}</strong></td>
|
||||||
<td style="text-align: center;">{groups.TOTAL_MEMBERS}</td>
|
<td style="text-align: center;">{groups.TOTAL_MEMBERS}</td>
|
||||||
<td style="text-align: center;">{groups.PENDING_MEMBERS}</td>
|
<td style="text-align: center;">{groups.PENDING_MEMBERS}</td>
|
||||||
<td style="text-align: center;"><a href="{groups.U_EDIT}">{L_SETTINGS}</a></td>
|
<td style="text-align: center;"><a href="{groups.U_EDIT}">{L_SETTINGS}</a></td>
|
||||||
|
@@ -47,6 +47,21 @@
|
|||||||
<dd><label><input type="radio" class="radio" id="jab_use_ssl" name="jab_use_ssl" value="1"<!-- IF JAB_USE_SSL --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
<dd><label><input type="radio" class="radio" id="jab_use_ssl" name="jab_use_ssl" value="1"<!-- IF JAB_USE_SSL --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
<label><input type="radio" class="radio" name="jab_use_ssl" value="0"<!-- IF not JAB_USE_SSL --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
<label><input type="radio" class="radio" name="jab_use_ssl" value="0"<!-- IF not JAB_USE_SSL --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="jab_verify_peer">{L_JAB_VERIFY_PEER}{L_COLON}</label><br /><span>{L_JAB_VERIFY_PEER_EXPLAIN}</span></dt>
|
||||||
|
<dd><label><input type="radio" class="radio" id="jab_verify_peer" name="jab_verify_peer" value="1"<!-- IF JAB_VERIFY_PEER --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
|
<label><input type="radio" class="radio" name="jab_verify_peer" value="0"<!-- IF not JAB_VERIFY_PEER --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="jab_verify_peer_name">{L_JAB_VERIFY_PEER_NAME}{L_COLON}</label><br /><span>{L_JAB_VERIFY_PEER_NAME_EXPLAIN}</span></dt>
|
||||||
|
<dd><label><input type="radio" class="radio" id="jab_verify_peer_name" name="jab_verify_peer_name" value="1"<!-- IF JAB_VERIFY_PEER_NAME --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
|
<label><input type="radio" class="radio" name="jab_verify_peer_name" value="0"<!-- IF not JAB_VERIFY_PEER_NAME --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="jab_allow_self_signed">{L_JAB_ALLOW_SELF_SIGNED}{L_COLON}</label><br /><span>{L_JAB_ALLOW_SELF_SIGNED_EXPLAIN}</span></dt>
|
||||||
|
<dd><label><input type="radio" class="radio" id="jab_allow_self_signed" name="jab_allow_self_signed" value="1"<!-- IF JAB_ALLOW_SELF_SIGNED --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
|
<label><input type="radio" class="radio" name="jab_allow_self_signed" value="0"<!-- IF not JAB_ALLOW_SELF_SIGNED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||||
|
</dl>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="jab_package_size">{L_JAB_PACKAGE_SIZE}{L_COLON}</label><br /><span>{L_JAB_PACKAGE_SIZE_EXPLAIN}</span></dt>
|
<dt><label for="jab_package_size">{L_JAB_PACKAGE_SIZE}{L_COLON}</label><br /><span>{L_JAB_PACKAGE_SIZE_EXPLAIN}</span></dt>
|
||||||
|
@@ -69,7 +69,7 @@
|
|||||||
<p>{L_ACP_LANGUAGE_PACKS_EXPLAIN}</p>
|
<p>{L_ACP_LANGUAGE_PACKS_EXPLAIN}</p>
|
||||||
|
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<span class="small"><a href="https://www.phpbb.com/go/customise/language-packs/3.1" target="_blank">{L_BROWSE_LANGUAGE_PACKS_DATABASE}</a></span>
|
<span class="small"><a href="https://www.phpbb.com/go/customise/language-packs/3.2" target="_blank">{L_BROWSE_LANGUAGE_PACKS_DATABASE}</a></span>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<table class="table1 zebra-table">
|
<table class="table1 zebra-table">
|
||||||
|
@@ -30,6 +30,11 @@
|
|||||||
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
<!-- IF S_VERSION_UPGRADEABLE -->
|
||||||
|
<div class="errorbox notice">
|
||||||
|
<p>{UPGRADE_INSTRUCTIONS}</p>
|
||||||
|
</div>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- IF S_SEARCH_INDEX_MISSING -->
|
<!-- IF S_SEARCH_INDEX_MISSING -->
|
||||||
<div class="errorbox">
|
<div class="errorbox">
|
||||||
@@ -125,8 +130,6 @@
|
|||||||
<td>{L_FILES_PER_DAY}{L_COLON} </td>
|
<td>{L_FILES_PER_DAY}{L_COLON} </td>
|
||||||
<td><strong>{FILES_PER_DAY}</strong></td>
|
<td><strong>{FILES_PER_DAY}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{L_BOARD_STARTED}{L_COLON} </td>
|
<td>{L_BOARD_STARTED}{L_COLON} </td>
|
||||||
<td><strong>{START_DATE}</strong></td>
|
<td><strong>{START_DATE}</strong></td>
|
||||||
@@ -145,22 +148,31 @@
|
|||||||
<td>{L_GZIP_COMPRESSION}{L_COLON} </td>
|
<td>{L_GZIP_COMPRESSION}{L_COLON} </td>
|
||||||
<td><strong>{GZIP_COMPRESSION}</strong></td>
|
<td><strong>{GZIP_COMPRESSION}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- IF S_TOTAL_ORPHAN or S_VERSIONCHECK -->
|
|
||||||
<tr>
|
<tr>
|
||||||
|
<td>{L_PHP_VERSION}{L_COLON} </td>
|
||||||
|
<td><strong>{PHP_VERSION_INFO}</strong></td>
|
||||||
|
<!-- IF S_TOTAL_ORPHAN -->
|
||||||
|
<td>{L_NUMBER_ORPHAN}{L_COLON} </td>
|
||||||
|
<td>
|
||||||
|
<!-- IF TOTAL_ORPHAN > 0 -->
|
||||||
|
<a href="{U_ATTACH_ORPHAN}" title="{L_MORE_INFORMATION}"><strong>{TOTAL_ORPHAN}</strong></a>
|
||||||
|
<!-- ELSE -->
|
||||||
|
<strong>{TOTAL_ORPHAN}</strong>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
</td>
|
||||||
|
<!-- ELSE -->
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
</tr>
|
||||||
<!-- IF S_VERSIONCHECK -->
|
<!-- IF S_VERSIONCHECK -->
|
||||||
|
<tr>
|
||||||
<td>{L_BOARD_VERSION}{L_COLON} </td>
|
<td>{L_BOARD_VERSION}{L_COLON} </td>
|
||||||
<td>
|
<td>
|
||||||
<strong><a href="{U_VERSIONCHECK}" <!-- IF S_VERSION_UP_TO_DATE -->style="color: #228822;" <!-- ELSEIF not S_VERSIONCHECK_FAIL -->style="color: #BC2A4D;" <!-- ENDIF -->title="{L_MORE_INFORMATION}">{BOARD_VERSION}</a></strong> [ <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> ]
|
<strong><a href="{U_VERSIONCHECK}" <!-- IF S_VERSION_UP_TO_DATE -->style="color: #228822;" <!-- ELSEIF not S_VERSIONCHECK_FAIL -->style="color: #BC2A4D;" <!-- ENDIF -->title="{L_MORE_INFORMATION}">{BOARD_VERSION}</a></strong> [ <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> ]
|
||||||
</td>
|
</td>
|
||||||
<!-- ENDIF -->
|
|
||||||
<!-- IF S_TOTAL_ORPHAN -->
|
|
||||||
<td>{L_NUMBER_ORPHAN}{L_COLON} </td>
|
|
||||||
<td><strong>{TOTAL_ORPHAN}</strong></td>
|
|
||||||
<!-- ENDIF -->
|
|
||||||
<!-- IF not S_TOTAL_ORPHAN or not S_VERSIONCHECK -->
|
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<!-- ENDIF -->
|
|
||||||
</tr>
|
</tr>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@@ -85,6 +85,7 @@
|
|||||||
<dd><input type="checkbox" class="radio" id="field_is_contact" name="field_is_contact" value="1"<!-- IF S_FIELD_CONTACT --> checked="checked"<!-- ENDIF --> /></dd>
|
<dd><input type="checkbox" class="radio" id="field_is_contact" name="field_is_contact" value="1"<!-- IF S_FIELD_CONTACT --> checked="checked"<!-- ENDIF --> /></dd>
|
||||||
<dd><input class="text medium" type="text" name="field_contact_desc" id="field_contact_desc" value="{FIELD_CONTACT_DESC}" /> <label for="field_contact_desc">{L_FIELD_CONTACT_DESC}</label></dd>
|
<dd><input class="text medium" type="text" name="field_contact_desc" id="field_contact_desc" value="{FIELD_CONTACT_DESC}" /> <label for="field_contact_desc">{L_FIELD_CONTACT_DESC}</label></dd>
|
||||||
<dd><input class="text medium" type="text" name="field_contact_url" id="field_contact_url" value="{FIELD_CONTACT_URL}" /> <label for="field_contact_url">{L_FIELD_CONTACT_URL}</label></dd>
|
<dd><input class="text medium" type="text" name="field_contact_url" id="field_contact_url" value="{FIELD_CONTACT_URL}" /> <label for="field_contact_url">{L_FIELD_CONTACT_URL}</label></dd>
|
||||||
|
<!-- EVENT acp_profile_contact_last -->
|
||||||
</dl>
|
</dl>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
@@ -94,7 +94,9 @@
|
|||||||
<dd><label><input type="radio" class="radio" name="prune_sticky" value="1" /> {L_YES}</label>
|
<dd><label><input type="radio" class="radio" name="prune_sticky" value="1" /> {L_YES}</label>
|
||||||
<label><input type="radio" class="radio" id="sticky" name="prune_sticky" value="0" checked="checked" /> {L_NO}</label></dd>
|
<label><input type="radio" class="radio" id="sticky" name="prune_sticky" value="0" checked="checked" /> {L_NO}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
<!-- EVENT acp_prune_forums_settings_append -->
|
||||||
|
|
||||||
<p class="quick">
|
<p class="quick">
|
||||||
{S_HIDDEN_FIELDS}
|
{S_HIDDEN_FIELDS}
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
<!-- IF L_EXPLAIN --><p>{L_EXPLAIN}</p><!-- ENDIF -->
|
<!-- IF L_EXPLAIN --><p>{L_EXPLAIN}</p><!-- ENDIF -->
|
||||||
|
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<span class="small"><a href="https://www.phpbb.com/go/customise/styles/3.1" target="_blank">{L_BROWSE_STYLES_DATABASE}</a></span>
|
<span class="small"><a href="https://www.phpbb.com/go/customise/styles/3.2" target="_blank">{L_BROWSE_STYLES_DATABASE}</a></span>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<form id="acp_styles" method="post" action="{U_ACTION}">
|
<form id="acp_styles" method="post" action="{U_ACTION}">
|
||||||
@@ -51,6 +51,10 @@
|
|||||||
<dt><label>{L_STYLE_PATH}{L_COLON}</label></dt>
|
<dt><label>{L_STYLE_PATH}{L_COLON}</label></dt>
|
||||||
<dd><strong>{STYLE_PATH}</strong></dd>
|
<dd><strong>{STYLE_PATH}</strong></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label>{L_STYLE_VERSION}{L_COLON}</label></dt>
|
||||||
|
<dd><strong>{STYLE_VERSION}</strong></dd>
|
||||||
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="name">{L_COPYRIGHT}{L_COLON}</label></dt>
|
<dt><label for="name">{L_COPYRIGHT}{L_COLON}</label></dt>
|
||||||
<dd><strong>{STYLE_COPYRIGHT}</strong></dd>
|
<dd><strong>{STYLE_COPYRIGHT}</strong></dd>
|
||||||
@@ -92,6 +96,7 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{L_STYLE_NAME}</th>
|
<th>{L_STYLE_NAME}</th>
|
||||||
|
<th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_PHPBB_VERSION}</th>
|
||||||
<!-- IF not STYLES_LIST_HIDE_COUNT --><th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_USED_BY}</th><!-- ENDIF -->
|
<!-- IF not STYLES_LIST_HIDE_COUNT --><th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_USED_BY}</th><!-- ENDIF -->
|
||||||
<th width="25%" style="white-space: nowrap; text-align: center;">{L_ACTIONS}</th>
|
<th width="25%" style="white-space: nowrap; text-align: center;">{L_ACTIONS}</th>
|
||||||
{STYLES_LIST_EXTRA}
|
{STYLES_LIST_EXTRA}
|
||||||
@@ -125,6 +130,7 @@
|
|||||||
<span class="style-path"><br />{L_STYLE_PATH}{L_COLON} {styles_list.STYLE_PATH_FULL}</span>
|
<span class="style-path"><br />{L_STYLE_PATH}{L_COLON} {styles_list.STYLE_PATH_FULL}</span>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
</td>
|
</td>
|
||||||
|
<td class="{$ROW_CLASS} users">{styles_list.STYLE_PHPBB_VERSION}</td>
|
||||||
<!-- IF not STYLES_LIST_HIDE_COUNT -->
|
<!-- IF not STYLES_LIST_HIDE_COUNT -->
|
||||||
<td class="{$ROW_CLASS} users">{styles_list.USERS}</td>
|
<td class="{$ROW_CLASS} users">{styles_list.USERS}</td>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
@@ -20,6 +20,11 @@
|
|||||||
<p>{L_VERSION_NOT_UP_TO_DATE_ACP} - <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
|
<p>{L_VERSION_NOT_UP_TO_DATE_ACP} - <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
<!-- IF S_VERSION_UPGRADEABLE -->
|
||||||
|
<div class="errorbox notice">
|
||||||
|
<p>{UPGRADE_INSTRUCTIONS}</p>
|
||||||
|
</div>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend></legend>
|
<legend></legend>
|
||||||
|
@@ -231,6 +231,10 @@
|
|||||||
|
|
||||||
<!-- INCLUDE permission_mask.html -->
|
<!-- INCLUDE permission_mask.html -->
|
||||||
|
|
||||||
|
<!-- ELSE -->
|
||||||
|
|
||||||
|
<!-- EVENT acp_users_mode_add -->
|
||||||
|
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- INCLUDE overall_footer.html -->
|
<!-- INCLUDE overall_footer.html -->
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* phpBB 3.1 Admin Style Sheet
|
/* phpBB 3.2 Admin Style Sheet
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Original author: subBlue ( http://www.subblue.com/ )
|
Original author: subBlue ( http://www.subblue.com/ )
|
||||||
Copyright (c) phpBB Limited <https://www.phpbb.com>
|
Copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||||
@@ -525,7 +525,6 @@ li {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
border-right: 1px solid #CCCFD3;
|
border-right: 1px solid #CCCFD3;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.rtl #menu {
|
.rtl #menu {
|
||||||
@@ -1891,7 +1890,6 @@ li.pagination ul {
|
|||||||
color: #000;
|
color: #000;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 1px solid #AAA;
|
border: 1px solid #AAA;
|
||||||
opacity: .95;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltip span.top {
|
.tooltip span.top {
|
||||||
@@ -2461,6 +2459,9 @@ fieldset.permissions .padding {
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rtl .dropdown li {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
.wrap .dropdown li, .dropdown.wrap li {
|
.wrap .dropdown li, .dropdown.wrap li {
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
}
|
}
|
||||||
@@ -2475,6 +2476,10 @@ fieldset.permissions .padding {
|
|||||||
width: 250px;
|
width: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rtl .roles-options > .dropdown {
|
||||||
|
right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.roles-options {
|
.roles-options {
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
@@ -2493,6 +2498,10 @@ fieldset.permissions .padding {
|
|||||||
background: url('../images/arrow_down.gif') no-repeat 245px .7em;
|
background: url('../images/arrow_down.gif') no-repeat 245px .7em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rtl .roles-options > span {
|
||||||
|
background: url('../images/arrow_down.gif') no-repeat 7px .7em;
|
||||||
|
}
|
||||||
|
|
||||||
.roles-options li {
|
.roles-options li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
@@ -2506,6 +2515,14 @@ fieldset.permissions .padding {
|
|||||||
/* Classes for additional tasks
|
/* Classes for additional tasks
|
||||||
---------------------------------------- */
|
---------------------------------------- */
|
||||||
|
|
||||||
|
.current-ext {
|
||||||
|
color: #228822;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outdated-ext {
|
||||||
|
color: #BC2A4D;
|
||||||
|
}
|
||||||
|
|
||||||
.phpinfo {
|
.phpinfo {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
width: 99%;
|
width: 99%;
|
||||||
@@ -2691,3 +2708,12 @@ fieldset.permissions .padding {
|
|||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable declaration-property-unit-whitelist */
|
||||||
|
.emoji {
|
||||||
|
min-height: 18px;
|
||||||
|
min-width: 18px;
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
}
|
||||||
|
/* stylelint-enable declaration-property-unit-whitelist */
|
||||||
|
@@ -280,10 +280,11 @@ function submitPermissions() {
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
url: $form.action,
|
url: $form.action,
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: formData + '&' + $submitAllButton.name + '=' + encodeURIComponent($submitAllButton.value) +
|
data: formData + '&' + $submitButton.name + '=' + encodeURIComponent($submitButton.value) +
|
||||||
'&creation_time=' + $form.find('input[type=hidden][name=creation_time]')[0].value +
|
'&creation_time=' + $form.find('input[type=hidden][name=creation_time]')[0].value +
|
||||||
'&form_token=' + $form.find('input[type=hidden][name=form_token]')[0].value +
|
'&form_token=' + $form.find('input[type=hidden][name=form_token]')[0].value +
|
||||||
'&' + $form.children('input[type=hidden]').serialize(),
|
'&' + $form.children('input[type=hidden]').serialize() +
|
||||||
|
'&' + $form.find('input[type=checkbox][name^=inherit]').serialize(),
|
||||||
success: handlePermissionReturn,
|
success: handlePermissionReturn,
|
||||||
error: handlePermissionReturn
|
error: handlePermissionReturn
|
||||||
});
|
});
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
<!-- IF FORM_TITLE --><h1>{FORM_TITLE}</h1><!-- ENDIF -->
|
||||||
<form id="<!-- IF FORM_ID -->{FORM_ID}<!-- ELSE -->install_install<!-- ENDIF -->" method="POST" action="{U_ACTION}">
|
<form id="<!-- IF FORM_ID -->{FORM_ID}<!-- ELSE -->install_install<!-- ENDIF -->" method="POST" action="{U_ACTION}">
|
||||||
<!-- IF .options -->
|
<!-- IF .options -->
|
||||||
<!-- IF S_NOT_ONLY_BUTTON_FORM -->
|
<!-- IF S_NOT_ONLY_BUTTON_FORM -->
|
||||||
@@ -8,9 +9,9 @@
|
|||||||
<!-- IF options.S_LEGEND -->
|
<!-- IF options.S_LEGEND -->
|
||||||
<!-- IF not options.S_FIRST_ROW -->
|
<!-- IF not options.S_FIRST_ROW -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
<fieldset>
|
||||||
|
|
||||||
<legend>{options.LEGEND}</legend>
|
<legend>{options.LEGEND}</legend>
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
<dl>
|
<dl>
|
||||||
@@ -49,7 +50,7 @@
|
|||||||
<fieldset class="submit-buttons">
|
<fieldset class="submit-buttons">
|
||||||
<legend>{L_SUBMIT}</legend>
|
<legend>{L_SUBMIT}</legend>
|
||||||
<!-- BEGIN submit_buttons -->
|
<!-- BEGIN submit_buttons -->
|
||||||
<input class="button1" type="submit" name="{submit_buttons.KEY}" value="{submit_buttons.TITLE}" />
|
<input class="<!-- IF not submit_buttons.IS_SECONDARY -->button1<!-- ELSE -->button2<!-- ENDIF --><!-- IF submit_buttons.DISABLED --> disabled<!-- ENDIF -->" type="submit" name="{submit_buttons.KEY}" value="{submit_buttons.TITLE}"<!-- IF submit_buttons.DISABLED --> disabled="disabled"<!-- ENDIF --> />
|
||||||
<!-- END submit_buttons -->
|
<!-- END submit_buttons -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
@@ -54,7 +54,7 @@ function marklist(id, name, state)
|
|||||||
|
|
||||||
for (var r = 0; r < rb.length; r++)
|
for (var r = 0; r < rb.length; r++)
|
||||||
{
|
{
|
||||||
if (rb[r].name.substr(0, name.length) == name)
|
if (rb[r].name.substr(0, name.length) == name && rb[r].disabled !== true)
|
||||||
{
|
{
|
||||||
rb[r].checked = state;
|
rb[r].checked = state;
|
||||||
}
|
}
|
||||||
|
@@ -41,7 +41,7 @@
|
|||||||
<dt style="width: 20%"><label for="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">{L_ROLE}{L_COLON}</label></dt>
|
<dt style="width: 20%"><label for="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">{L_ROLE}{L_COLON}</label></dt>
|
||||||
{% if p_mask.f_mask.role_options %}
|
{% if p_mask.f_mask.role_options %}
|
||||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 20%">
|
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 20%">
|
||||||
<div class="dropdown-container dropdown-button-control roles-options" data-alt-text="{LA_ROLE_DESCRIPTION}">
|
<div class="dropdown-container dropdown-{S_CONTENT_FLOW_END} dropdown-button-control roles-options" data-alt-text="{LA_ROLE_DESCRIPTION}">
|
||||||
<select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]">{p_mask.f_mask.S_ROLE_OPTIONS}</select>
|
<select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]">{p_mask.f_mask.S_ROLE_OPTIONS}</select>
|
||||||
<span title="Roles" class="button icon-button tools-icon dropdown-trigger dropdown-select">{L_NO_ROLE_ASSIGNED}</span>
|
<span title="Roles" class="button icon-button tools-icon dropdown-trigger dropdown-select">{L_NO_ROLE_ASSIGNED}</span>
|
||||||
<div class="dropdown hidden">
|
<div class="dropdown hidden">
|
||||||
|
@@ -66,7 +66,7 @@ function marklist(id, name, state)
|
|||||||
|
|
||||||
for (var r = 0; r < rb.length; r++)
|
for (var r = 0; r < rb.length; r++)
|
||||||
{
|
{
|
||||||
if (rb[r].name.substr(0, name.length) == name)
|
if (rb[r].name.substr(0, name.length) == name && rb[r].disabled !== true)
|
||||||
{
|
{
|
||||||
rb[r].checked = state;
|
rb[r].checked = state;
|
||||||
}
|
}
|
||||||
|
@@ -130,10 +130,17 @@ phpbb.positionTooltip = function ($element) {
|
|||||||
$element = $element.parent();
|
$element = $element.parent();
|
||||||
offset = $element.offset();
|
offset = $element.offset();
|
||||||
|
|
||||||
$('#_tooltip_container').css({
|
if ($('body').hasClass('rtl')) {
|
||||||
top: offset.top + 30,
|
$('#_tooltip_container').css({
|
||||||
left: offset.left - 205
|
top: offset.top + 30,
|
||||||
});
|
left: offset.left + 255
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$('#_tooltip_container').css({
|
||||||
|
top: offset.top + 30,
|
||||||
|
left: offset.left - 205
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
4
phpBB/assets/css/font-awesome.min.css
vendored
Before Width: | Height: | Size: 348 KiB After Width: | Height: | Size: 434 KiB |
@@ -27,29 +27,36 @@ phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined');
|
|||||||
*/
|
*/
|
||||||
phpbb.loadingIndicator = function() {
|
phpbb.loadingIndicator = function() {
|
||||||
if (!$loadingIndicator) {
|
if (!$loadingIndicator) {
|
||||||
$loadingIndicator = $('<div />', {
|
$loadingIndicator = $('<div />', {
|
||||||
id: 'loading_indicator',
|
'id': 'loading_indicator',
|
||||||
class: 'loading_indicator',
|
'class': 'loading_indicator'
|
||||||
});
|
});
|
||||||
$loadingIndicator.appendTo('#page-footer');
|
$loadingIndicator.appendTo('#page-footer');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$loadingIndicator.is(':visible')) {
|
if (!$loadingIndicator.is(':visible')) {
|
||||||
$loadingIndicator.fadeIn(phpbb.alertTime);
|
$loadingIndicator.fadeIn(phpbb.alertTime);
|
||||||
// Wait fifteen seconds and display an error if nothing has been returned by then.
|
// Wait 60 seconds and display an error if nothing has been returned by then.
|
||||||
phpbb.clearLoadingTimeout();
|
phpbb.clearLoadingTimeout();
|
||||||
phpbbAlertTimer = setTimeout(function() {
|
phpbbAlertTimer = setTimeout(function() {
|
||||||
var $alert = $('#phpbb_alert');
|
phpbb.showTimeoutMessage();
|
||||||
|
}, 60000);
|
||||||
if ($loadingIndicator.is(':visible')) {
|
|
||||||
phpbb.alert($alert.attr('data-l-err'), $alert.attr('data-l-timeout-processing-req'));
|
|
||||||
}
|
|
||||||
}, 15000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $loadingIndicator;
|
return $loadingIndicator;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show timeout message
|
||||||
|
*/
|
||||||
|
phpbb.showTimeoutMessage = function () {
|
||||||
|
var $alert = $('#phpbb_alert');
|
||||||
|
|
||||||
|
if ($loadingIndicator.is(':visible')) {
|
||||||
|
phpbb.alert($alert.attr('data-l-err'), $alert.attr('data-l-timeout-processing-req'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear loading alert timeout
|
* Clear loading alert timeout
|
||||||
*/
|
*/
|
||||||
@@ -172,7 +179,7 @@ phpbb.alert.close = function($alert, fadedark) {
|
|||||||
phpbb.confirm = function(msg, callback, fadedark) {
|
phpbb.confirm = function(msg, callback, fadedark) {
|
||||||
var $confirmDiv = $('#phpbb_confirm');
|
var $confirmDiv = $('#phpbb_confirm');
|
||||||
$confirmDiv.find('.alert_text').html(msg);
|
$confirmDiv.find('.alert_text').html(msg);
|
||||||
fadedark = fadedark || true;
|
fadedark = typeof fadedark !== 'undefined' ? fadedark : true;
|
||||||
|
|
||||||
$(document).on('keydown.phpbb.alert', function(e) {
|
$(document).on('keydown.phpbb.alert', function(e) {
|
||||||
if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) {
|
if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) {
|
||||||
@@ -187,9 +194,7 @@ phpbb.confirm = function(msg, callback, fadedark) {
|
|||||||
$confirmDiv.find('input[type="button"]').one('click.phpbb.confirmbox', function(e) {
|
$confirmDiv.find('input[type="button"]').one('click.phpbb.confirmbox', function(e) {
|
||||||
var confirmed = this.name === 'confirm';
|
var confirmed = this.name === 'confirm';
|
||||||
|
|
||||||
if (confirmed) {
|
callback(confirmed);
|
||||||
callback(true);
|
|
||||||
}
|
|
||||||
$confirmDiv.find('input[type="button"]').off('click.phpbb.confirmbox');
|
$confirmDiv.find('input[type="button"]').off('click.phpbb.confirmbox');
|
||||||
phpbb.alert.close($confirmDiv, fadedark || !confirmed);
|
phpbb.alert.close($confirmDiv, fadedark || !confirmed);
|
||||||
|
|
||||||
@@ -1326,6 +1331,8 @@ phpbb.toggleDropdown = function() {
|
|||||||
$this.css({
|
$this.css({
|
||||||
marginLeft: 0,
|
marginLeft: 0,
|
||||||
left: 0,
|
left: 0,
|
||||||
|
marginRight: 0,
|
||||||
|
right: 0,
|
||||||
maxWidth: (windowWidth - 4) + 'px'
|
maxWidth: (windowWidth - 4) + 'px'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1649,7 +1656,7 @@ $(function() {
|
|||||||
|
|
||||||
phpbb.registerPageDropdowns();
|
phpbb.registerPageDropdowns();
|
||||||
|
|
||||||
$('#color_palette_placeholder').each(function() {
|
$('[data-orientation]').each(function() {
|
||||||
phpbb.registerPalette($(this));
|
phpbb.registerPalette($(this));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -417,7 +417,7 @@ function getCaretPosition(txtarea) {
|
|||||||
|
|
||||||
$('textarea').on('keydown', function (e) {
|
$('textarea').on('keydown', function (e) {
|
||||||
if (e.which === 13 && (e.metaKey || e.ctrlKey)) {
|
if (e.which === 13 && (e.metaKey || e.ctrlKey)) {
|
||||||
$(this).closest('form').submit();
|
$(this).closest('form').find(':submit').click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
18
phpBB/assets/plupload/plupload.full.min.js
vendored
@@ -73,6 +73,7 @@ register_compatibility_globals();
|
|||||||
|
|
||||||
/** @var \phpbb\language\language $language */
|
/** @var \phpbb\language\language $language */
|
||||||
$language = $phpbb_container->get('language');
|
$language = $phpbb_container->get('language');
|
||||||
|
$language->set_default_language($phpbb_container->get('config')['default_lang']);
|
||||||
$language->add_lang(array('common', 'acp/common', 'cli'));
|
$language->add_lang(array('common', 'acp/common', 'cli'));
|
||||||
|
|
||||||
/* @var $user \phpbb\user */
|
/* @var $user \phpbb\user */
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Minimum Requirement: PHP 5.3.9
|
* Minimum Requirement: PHP 5.4.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('IN_PHPBB'))
|
if (!defined('IN_PHPBB'))
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"type": "project",
|
"type": "project",
|
||||||
"keywords": ["phpbb", "forum"],
|
"keywords": ["phpbb", "forum"],
|
||||||
"homepage": "https://www.phpbb.com",
|
"homepage": "https://www.phpbb.com",
|
||||||
"license": "GPL-2.0",
|
"license": "GPL-2.0-only",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "phpBB Limited",
|
"name": "phpBB Limited",
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"marc1706/fast-image-size": "^1.1",
|
"marc1706/fast-image-size": "^1.1",
|
||||||
"paragonie/random_compat": "^1.4",
|
"paragonie/random_compat": "^1.4",
|
||||||
"patchwork/utf8": "^1.1",
|
"patchwork/utf8": "^1.1",
|
||||||
"s9e/text-formatter": "~0.8.0",
|
"s9e/text-formatter": "~0.13.0",
|
||||||
"symfony/config": "^2.8",
|
"symfony/config": "^2.8",
|
||||||
"symfony/console": "^2.8",
|
"symfony/console": "^2.8",
|
||||||
"symfony/debug": "^2.8",
|
"symfony/debug": "^2.8",
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
"symfony/routing": "^2.8",
|
"symfony/routing": "^2.8",
|
||||||
"symfony/twig-bridge": "^2.8",
|
"symfony/twig-bridge": "^2.8",
|
||||||
"symfony/yaml": "^2.8",
|
"symfony/yaml": "^2.8",
|
||||||
"twig/twig": "^1.0,<1.25"
|
"twig/twig": "^1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fabpot/goutte": "~2.0",
|
"fabpot/goutte": "~2.0",
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": "5.4"
|
"php": "5.4.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
507
phpBB/composer.lock
generated
@@ -3,7 +3,6 @@ services:
|
|||||||
class: phpbb\console\exception_subscriber
|
class: phpbb\console\exception_subscriber
|
||||||
arguments:
|
arguments:
|
||||||
- '@language'
|
- '@language'
|
||||||
- '%debug.exceptions%'
|
|
||||||
tags:
|
tags:
|
||||||
- { name: kernel.event_subscriber }
|
- { name: kernel.event_subscriber }
|
||||||
|
|
||||||
@@ -167,6 +166,27 @@ services:
|
|||||||
tags:
|
tags:
|
||||||
- { name: console.command }
|
- { name: console.command }
|
||||||
|
|
||||||
|
console.command.fixup.update_hashes:
|
||||||
|
class: phpbb\console\command\fixup\update_hashes
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@user'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@passwords.manager'
|
||||||
|
- '@passwords.driver_collection'
|
||||||
|
- '%passwords.algorithms%'
|
||||||
|
tags:
|
||||||
|
- { name: console.command }
|
||||||
|
|
||||||
|
console.command.fixup.fix_left_right_ids:
|
||||||
|
class: phpbb\console\command\fixup\fix_left_right_ids
|
||||||
|
arguments:
|
||||||
|
- '@user'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@cache.driver'
|
||||||
|
tags:
|
||||||
|
- { name: console.command }
|
||||||
|
|
||||||
console.command.reparser.list:
|
console.command.reparser.list:
|
||||||
class: phpbb\console\command\reparser\list_all
|
class: phpbb\console\command\reparser\list_all
|
||||||
arguments:
|
arguments:
|
||||||
|
@@ -219,3 +219,17 @@ services:
|
|||||||
- [set_reparser, [text_reparser.user_signature]]
|
- [set_reparser, [text_reparser.user_signature]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
||||||
|
cron.task.core.update_hashes:
|
||||||
|
class: phpbb\cron\task\core\update_hashes
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@passwords.update.lock'
|
||||||
|
- '@passwords.manager'
|
||||||
|
- '@passwords.driver_collection'
|
||||||
|
- '%passwords.algorithms%'
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.update_hashes]]
|
||||||
|
tags:
|
||||||
|
- { name: cron.task }
|
||||||
|
@@ -9,6 +9,7 @@ services:
|
|||||||
arguments:
|
arguments:
|
||||||
- '@template'
|
- '@template'
|
||||||
- '@language'
|
- '@language'
|
||||||
|
- '%debug.exceptions%'
|
||||||
tags:
|
tags:
|
||||||
- { name: kernel.event_subscriber }
|
- { name: kernel.event_subscriber }
|
||||||
|
|
||||||
|
@@ -18,9 +18,10 @@ services:
|
|||||||
class: phpbb\feed\helper
|
class: phpbb\feed\helper
|
||||||
arguments:
|
arguments:
|
||||||
- '@config'
|
- '@config'
|
||||||
|
- '@service_container'
|
||||||
|
- '@path_helper'
|
||||||
|
- '@text_formatter.renderer'
|
||||||
- '@user'
|
- '@user'
|
||||||
- '%core.root_path%'
|
|
||||||
- '%core.php_ext%'
|
|
||||||
|
|
||||||
feed.forum:
|
feed.forum:
|
||||||
class: phpbb\feed\forum
|
class: phpbb\feed\forum
|
||||||
@@ -78,6 +79,10 @@ services:
|
|||||||
- '@dispatcher'
|
- '@dispatcher'
|
||||||
- '%core.php_ext%'
|
- '%core.php_ext%'
|
||||||
|
|
||||||
|
feed.quote_helper:
|
||||||
|
class: phpbb\feed\quote_helper
|
||||||
|
parent: text_formatter.s9e.quote_helper
|
||||||
|
|
||||||
feed.topic:
|
feed.topic:
|
||||||
class: phpbb\feed\topic
|
class: phpbb\feed\topic
|
||||||
shared: false
|
shared: false
|
||||||
|
@@ -127,3 +127,10 @@ services:
|
|||||||
- '@passwords.driver_helper'
|
- '@passwords.driver_helper'
|
||||||
tags:
|
tags:
|
||||||
- { name: passwords.driver }
|
- { name: passwords.driver }
|
||||||
|
|
||||||
|
passwords.update.lock:
|
||||||
|
class: phpbb\lock\db
|
||||||
|
arguments:
|
||||||
|
- update_hashes_lock
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
@@ -26,6 +26,11 @@ services:
|
|||||||
text_formatter.utils:
|
text_formatter.utils:
|
||||||
alias: text_formatter.s9e.utils
|
alias: text_formatter.s9e.utils
|
||||||
|
|
||||||
|
text_formatter.s9e.bbcode_merger:
|
||||||
|
class: phpbb\textformatter\s9e\bbcode_merger
|
||||||
|
arguments:
|
||||||
|
- '@text_formatter.s9e.factory'
|
||||||
|
|
||||||
text_formatter.s9e.factory:
|
text_formatter.s9e.factory:
|
||||||
class: phpbb\textformatter\s9e\factory
|
class: phpbb\textformatter\s9e\factory
|
||||||
arguments:
|
arguments:
|
||||||
@@ -34,6 +39,7 @@ services:
|
|||||||
- '@dispatcher'
|
- '@dispatcher'
|
||||||
- '@config'
|
- '@config'
|
||||||
- '@text_formatter.s9e.link_helper'
|
- '@text_formatter.s9e.link_helper'
|
||||||
|
- '@log'
|
||||||
- '%text_formatter.cache.dir%'
|
- '%text_formatter.cache.dir%'
|
||||||
- '%text_formatter.cache.parser.key%'
|
- '%text_formatter.cache.parser.key%'
|
||||||
- '%text_formatter.cache.renderer.key%'
|
- '%text_formatter.cache.renderer.key%'
|
||||||
|
@@ -11,6 +11,7 @@ services:
|
|||||||
- '%core.template.cache_path%'
|
- '%core.template.cache_path%'
|
||||||
- '@ext.manager'
|
- '@ext.manager'
|
||||||
- '@template.twig.loader'
|
- '@template.twig.loader'
|
||||||
|
- '@dispatcher'
|
||||||
- []
|
- []
|
||||||
calls:
|
calls:
|
||||||
- [setLexer, ['@template.twig.lexer']]
|
- [setLexer, ['@template.twig.lexer']]
|
||||||
|
@@ -84,6 +84,7 @@ services:
|
|||||||
- '%core.template.cache_path%'
|
- '%core.template.cache_path%'
|
||||||
- null
|
- null
|
||||||
- '@template.twig.loader'
|
- '@template.twig.loader'
|
||||||
|
- null
|
||||||
- []
|
- []
|
||||||
calls:
|
calls:
|
||||||
- [setLexer, ['@template.twig.lexer']]
|
- [setLexer, ['@template.twig.lexer']]
|
||||||
|
@@ -29,6 +29,16 @@ services:
|
|||||||
tags:
|
tags:
|
||||||
- { name: install_data_install, order: 30 }
|
- { name: install_data_install, order: 30 }
|
||||||
|
|
||||||
|
installer.install_data.create_search_index:
|
||||||
|
class: phpbb\install\module\install_data\task\create_search_index
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@installer.helper.container_factory'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
tags:
|
||||||
|
- { name: install_data_install, order: 40 }
|
||||||
|
|
||||||
installer.module.data_install_collection:
|
installer.module.data_install_collection:
|
||||||
class: phpbb\di\ordered_service_collection
|
class: phpbb\di\ordered_service_collection
|
||||||
arguments:
|
arguments:
|
||||||
|
@@ -185,7 +185,7 @@ while ($row = $db->sql_fetchrow($result))
|
|||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (sizeof($remove_auth_options))
|
if (count($remove_auth_options))
|
||||||
{
|
{
|
||||||
$db->sql_query('DELETE FROM ' . ACL_USERS_TABLE . ' WHERE auth_option_id IN (' . implode(', ', $remove_auth_options) . ')');
|
$db->sql_query('DELETE FROM ' . ACL_USERS_TABLE . ' WHERE auth_option_id IN (' . implode(', ', $remove_auth_options) . ')');
|
||||||
$db->sql_query('DELETE FROM ' . ACL_GROUPS_TABLE . ' WHERE auth_option_id IN (' . implode(', ', $remove_auth_options) . ')');
|
$db->sql_query('DELETE FROM ' . ACL_GROUPS_TABLE . ' WHERE auth_option_id IN (' . implode(', ', $remove_auth_options) . ')');
|
||||||
@@ -199,7 +199,7 @@ $prefixes = array('f_', 'a_', 'm_', 'u_');
|
|||||||
foreach ($prefixes as $prefix)
|
foreach ($prefixes as $prefix)
|
||||||
{
|
{
|
||||||
$var = $prefix . 'permissions';
|
$var = $prefix . 'permissions';
|
||||||
if (sizeof(${$var}))
|
if (count(${$var}))
|
||||||
{
|
{
|
||||||
foreach (${$var} as $auth_option => $l_ary)
|
foreach (${$var} as $auth_option => $l_ary)
|
||||||
{
|
{
|
||||||
|
@@ -51,7 +51,7 @@ function check_table_flash_bbcodes($table_name, $id_field, $content_field, $uid_
|
|||||||
|
|
||||||
$ids = get_table_flash_bbcode_pkids($table_name, $id_field, $content_field, $uid_field, $bitfield_field);
|
$ids = get_table_flash_bbcode_pkids($table_name, $id_field, $content_field, $uid_field, $bitfield_field);
|
||||||
|
|
||||||
$size = sizeof($ids);
|
$size = count($ids);
|
||||||
if ($size)
|
if ($size)
|
||||||
{
|
{
|
||||||
echo "Found $size potentially dangerous flash bbcodes.\n";
|
echo "Found $size potentially dangerous flash bbcodes.\n";
|
||||||
|
@@ -489,12 +489,12 @@ foreach ($lang_references as $lang_var => $filenames)
|
|||||||
|
|
||||||
$html_data .= '<b>' . $lang_var . '</b><ul>';
|
$html_data .= '<b>' . $lang_var . '</b><ul>';
|
||||||
|
|
||||||
if (sizeof($filenames) != 1)
|
if (count($filenames) != 1)
|
||||||
{
|
{
|
||||||
fwrite($common_fp, (($entry['common']) ? ",\n" : '') . "\t'$var' => '" . $lang[$var] . "'");
|
fwrite($common_fp, (($entry['common']) ? ",\n" : '') . "\t'$var' => '" . $lang[$var] . "'");
|
||||||
$entry['common'] = true;
|
$entry['common'] = true;
|
||||||
}
|
}
|
||||||
else if (sizeof($filenames) == 1)
|
else if (count($filenames) == 1)
|
||||||
{
|
{
|
||||||
// Merge logical - hardcoded
|
// Merge logical - hardcoded
|
||||||
$fname = (preg_match('#^(' . implode('|', $merge) . ')#', $filenames[0], $match)) ? $match[0] . '.php' : str_replace($ext, 'php', $filenames[0]);
|
$fname = (preg_match('#^(' . implode('|', $merge) . ')#', $filenames[0], $match)) ? $match[0] . '.php' : str_replace($ext, 'php', $filenames[0]);
|
||||||
|
@@ -120,7 +120,7 @@ do
|
|||||||
$pct_encoded = "%[\dA-F]{2}";
|
$pct_encoded = "%[\dA-F]{2}";
|
||||||
$unreserved = "$add_chars\pL0-9\-._~";
|
$unreserved = "$add_chars\pL0-9\-._~";
|
||||||
$sub_delims = ($inline) ? '!$&\'(*+,;=' : '!$&\'()*+,;=';
|
$sub_delims = ($inline) ? '!$&\'(*+,;=' : '!$&\'()*+,;=';
|
||||||
$scheme = ($inline) ? '[a-z][a-z\d+]*': '[a-z][a-z\d+\-.]*' ; // avoid automatic parsing of "word" in "last word.http://..."
|
$scheme = ($inline) ? '[a-z][a-z\d+]*(?<!javascript)': '[a-z][a-z\d+\-.]*(?<!javascript)' ; // avoid automatic parsing of "word" in "last word.http://..."
|
||||||
$pchar = "(?:[^$remove_chars]*[$unreserved$sub_delims:@|]+|$pct_encoded)"; // rfc: no "|"
|
$pchar = "(?:[^$remove_chars]*[$unreserved$sub_delims:@|]+|$pct_encoded)"; // rfc: no "|"
|
||||||
|
|
||||||
$reg_name = "(?:[^$remove_chars]*[$unreserved$sub_delims:@|]+|$pct_encoded)+"; // rfc: * instead of + and no "|" and no "@" and no ":" (included instead of userinfo)
|
$reg_name = "(?:[^$remove_chars]*[$unreserved$sub_delims:@|]+|$pct_encoded)+"; // rfc: * instead of + and no "|" and no "@" and no ":" (included instead of userinfo)
|
||||||
|
@@ -89,7 +89,7 @@ for(;$postcounter <= $max_post_id; $postcounter += $batchsize)
|
|||||||
$rowset = $db->sql_fetchrowset($result);
|
$rowset = $db->sql_fetchrowset($result);
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
$post_rows = sizeof($rowset);
|
$post_rows = count($rowset);
|
||||||
|
|
||||||
if( $post_rows )
|
if( $post_rows )
|
||||||
{
|
{
|
||||||
|
BIN
phpBB/develop/test.gif
Normal file
After Width: | Height: | Size: 1.1 KiB |
@@ -50,12 +50,17 @@
|
|||||||
<ol>
|
<ol>
|
||||||
<li><a href="#changelog">Changelog</a>
|
<li><a href="#changelog">Changelog</a>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><a href="#v322">Changes since 3.2.2</a></li>
|
||||||
|
<li><a href="#v321">Changes since 3.2.1</a></li>
|
||||||
|
<li><a href="#v320">Changes since 3.2.0</a></li>
|
||||||
<li><a href="#v320rc1">Changes since 3.2.0-RC1</a></li>
|
<li><a href="#v320rc1">Changes since 3.2.0-RC1</a></li>
|
||||||
<li><a href="#v320b2">Changes since 3.2.0-b2</a></li>
|
<li><a href="#v320b2">Changes since 3.2.0-b2</a></li>
|
||||||
<li><a href="#v320b1">Changes since 3.2.0-b1</a></li>
|
<li><a href="#v320b1">Changes since 3.2.0-b1</a></li>
|
||||||
<li><a href="#v320a2">Changes since 3.2.0-a2</a></li>
|
<li><a href="#v320a2">Changes since 3.2.0-a2</a></li>
|
||||||
<li><a href="#v320a1">Changes since 3.2.0-a1</a></li>
|
<li><a href="#v320a1">Changes since 3.2.0-a1</a></li>
|
||||||
<li><a href="#v31x">Changes since 3.1.x</a></li>
|
<li><a href="#v31x">Changes since 3.1.x</a></li>
|
||||||
|
<li><a href="#v3111">Changes since 3.1.11</a></li>
|
||||||
|
<li><a href="#v3110">Changes since 3.1.10</a></li>
|
||||||
<li><a href="#v319">Changes since 3.1.9</a></li>
|
<li><a href="#v319">Changes since 3.1.9</a></li>
|
||||||
<li><a href="#v318">Changes since 3.1.8</a></li>
|
<li><a href="#v318">Changes since 3.1.8</a></li>
|
||||||
<li><a href="#v317pl1">Changes since 3.1.7-PL1</a></li>
|
<li><a href="#v317pl1">Changes since 3.1.7-PL1</a></li>
|
||||||
@@ -124,6 +129,308 @@
|
|||||||
<div class="inner">
|
<div class="inner">
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
<a name="v322"></a><h3>Changes since 3.2.2</h3>
|
||||||
|
<h4>Bug</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14936">PHPBB3-14936</a>] - Missing language variable INST_ERR_DB</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15491">PHPBB3-15491</a>] - Outdated linkes in installer support page</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15492">PHPBB3-15492</a>] - Permissions role combobox does not work in RTL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15500">PHPBB3-15500</a>] - Docs outdated for new PHP 5.4.7 requirement</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15502">PHPBB3-15502</a>] - Errors in migrations in 3.2.2 release</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15506">PHPBB3-15506</a>] - Previewing new post empties attachment list of all but first attachment</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15512">PHPBB3-15512</a>] - Avoid reparsing non-existent polls</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15513">PHPBB3-15513</a>] - Signature edit in acp gives error</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15520">PHPBB3-15520</a>] - DbDriver->sql_build_query cant cope with sub-selects</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15522">PHPBB3-15522</a>] - Allow multiple color palettes per page</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15523">PHPBB3-15523</a>] - AdBlocker may cause JS error when using CookieConsent</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15525">PHPBB3-15525</a>] - composer.json License is Invalid/Deprecated</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15526">PHPBB3-15526</a>] - Cast bbcode ID to integer</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15527">PHPBB3-15527</a>] - Cannot interpret the BBCode definition</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15532">PHPBB3-15532</a>] - Update pull request template</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15533">PHPBB3-15533</a>] - Typo in viewtopic_topic_tools.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15558">PHPBB3-15558</a>] - phpbb\report\report_handler_post.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15559">PHPBB3-15559</a>] - phpbb\report\report_handler_pm.php:56</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15595">PHPBB3-15595</a>] - Migration Module Exists Tool Broken</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Improvement</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12579">PHPBB3-12579</a>] - Add BUTTON_ language strings for post & PM buttons</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15495">PHPBB3-15495</a>] - Use transactions for queries in move_forum</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15499">PHPBB3-15499</a>] - Drop HHVM support</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15510">PHPBB3-15510</a>] - Link Orphan attachments in ACP>General to Orphaned attachments page </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15514">PHPBB3-15514</a>] - Improve accessibility by adding vital info from explanation to a title</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15518">PHPBB3-15518</a>] - Do not attempt to accurately determine whether posters can read private messages in viewtopic</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15528">PHPBB3-15528</a>] - Display the version of the installed styles in acp</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15529">PHPBB3-15529</a>] - Color groups in ACP</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15531">PHPBB3-15531</a>] - Log malformed BBCodes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15534">PHPBB3-15534</a>] - Outdated ACP extensions database link for phpBB 3.2</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15535">PHPBB3-15535</a>] - Add S_FIRST_POST to postrow on viewtopic</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15537">PHPBB3-15537</a>] - Add events core.search_(native|mysql|postgres|sphinx)_index_before</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15547">PHPBB3-15547</a>] - Add file object to event core.avatar_driver_upload_move_file_before</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15561">PHPBB3-15561</a>] - Add core events for adding columns to MySQL and Postgres search backends</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15568">PHPBB3-15568</a>] - Update depencies to latest versions</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15569">PHPBB3-15569</a>] - Adjust update instructions to suggest file replacement method</li>
|
||||||
|
</ul>
|
||||||
|
<h4>New Feature</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15398">PHPBB3-15398</a>] - Add event to oauth login after ID check</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Security Issue</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15570">PHPBB3-15570</a>] - Extension version check is restricted to TLS 1.0</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15466">PHPBB3-15466</a>] - Move Nils in CREDITS.txt</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15516">PHPBB3-15516</a>] - Add instructions on running UI tests</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a name="v321"></a><h3>Changes since 3.2.1</h3>
|
||||||
|
<h4>Security Issue</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[SECURITY-211] - URLs with javascript scheme should not be made clickable</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Bug</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7845">PHPBB3-7845</a>] - Error on posting local image when script path is empty</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13214">PHPBB3-13214</a>] - Contact us page textarea looks narrow in responsive mode</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14629">PHPBB3-14629</a>] - acp global quick reply will not enable quick reply correctly</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14857">PHPBB3-14857</a>] - ordinal suffix in dateformat is not handled in translations</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15041">PHPBB3-15041</a>] - Cannot delete Orphaned Attachments when large number of attachments</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15060">PHPBB3-15060</a>] - Online user list fails on notifications</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15089">PHPBB3-15089</a>] - Enable/Disable settings backwards for Cookie Secure</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15133">PHPBB3-15133</a>] - Fast image size library sometimes returns no size or invalid sizes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15149">PHPBB3-15149</a>] - Unexpected Ctrl+Enter behavior on reply</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15171">PHPBB3-15171</a>] - Confusing bitfield values</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15172">PHPBB3-15172</a>] - $request->server('server_port') is returning wrong port</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15174">PHPBB3-15174</a>] - Unable to purge cache (ext & acp)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15195">PHPBB3-15195</a>] - Code direction in print view is not defined as "ltr"</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15201">PHPBB3-15201</a>] - Removing style sets user_style to 0</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15224">PHPBB3-15224</a>] - Advanced search in "message text only" crashes with SQL error when using Mysql fulltext search index</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15245">PHPBB3-15245</a>] - Relative URLs in atom feeds broken when accessing via app.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15262">PHPBB3-15262</a>] - WebFontConfig google families script issue in 3.2.1</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15266">PHPBB3-15266</a>] - Content visibility events do not allow what they describe</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15273">PHPBB3-15273</a>] - 'COOKIE_PATH_EXPLAIN' does not make sense</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15285">PHPBB3-15285</a>] - Travis tests are failing due to trusty changes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15292">PHPBB3-15292</a>] - Retina imageset is blurry when displayed in Chrome browser</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15297">PHPBB3-15297</a>] - Current date in board index is broken into lines in RTL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15298">PHPBB3-15298</a>] - Errors being suppressed in cli</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15303">PHPBB3-15303</a>] - Typo in memcached driver</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15306">PHPBB3-15306</a>] - Error and missing information in core.acp_users_profile_validate event</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15309">PHPBB3-15309</a>] - Improved fix for pagination layout in tables</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15314">PHPBB3-15314</a>] - Wrong class constructor definition for convertor component</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15319">PHPBB3-15319</a>] - Database update v310\style_update_p2 fails to drop sequences</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15320">PHPBB3-15320</a>] - Redis cache does not save keys with expiration date 0 (no expiration)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15322">PHPBB3-15322</a>] - Wrong return Return-Path in emails</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15331">PHPBB3-15331</a>] - Gravatars cannot be overridden</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15332">PHPBB3-15332</a>] - Dark background is always removed after confirm popup</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15333">PHPBB3-15333</a>] - Callback isn't called when confirm dialog is canceled</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15339">PHPBB3-15339</a>] - Missing acp_send_statistics -> Upgrading to 3.2.0 fails for phpBB 3.0.5</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15346">PHPBB3-15346</a>] - The installer tries to enable all extensions even if they are not enableable</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15347">PHPBB3-15347</a>] - Password updater in cron generates invalid postgres SQL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15349">PHPBB3-15349</a>] - Cli doesn't check if an extension is enableable before enable it</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15350">PHPBB3-15350</a>] - Links to Plural rules are outdated</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15351">PHPBB3-15351</a>] - Confirm box function does not work with symlink on server config</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15353">PHPBB3-15353</a>] - Invalid HTML in ACP board settings</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15355">PHPBB3-15355</a>] - Empty version field in versioncheck when using the latest version</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15356">PHPBB3-15356</a>] - Avatar remote upload doesn't work</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15361">PHPBB3-15361</a>] - Topic / Forum Icons Look Withered (on Safari)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15362">PHPBB3-15362</a>] - Excessive value for {NOTIFICATION_TYPES_COLS}</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15365">PHPBB3-15365</a>] - Fix invalidating OPcache</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15367">PHPBB3-15367</a>] - Sphinx search backend doesn't escape special characters</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15368">PHPBB3-15368</a>] - Schema upgrade fails in 3.2.1 when using SQL Server</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15379">PHPBB3-15379</a>] - Reparser cron will always run</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15381">PHPBB3-15381</a>] - L_CONTACT_US_ENABLE_EXPLAIN should specify that "Enable board-wide emails" is also needed for it to work</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15390">PHPBB3-15390</a>] - Admin permissions role tooltip popup has vertical bar running through it.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15396">PHPBB3-15396</a>] - revert_schema() steps not executed in correct order</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15401">PHPBB3-15401</a>] - Use separate constant for memcached driver config</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15419">PHPBB3-15419</a>] - Sphinx does not search UTF keywords in delta index</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15423">PHPBB3-15423</a>] - Wrong title for topic's "Unappproved posts" icon</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15432">PHPBB3-15432</a>] - Don't remove dark background if fadedark is false</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15433">PHPBB3-15433</a>] - phpbbcli can enable non-existent extension</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15445">PHPBB3-15445</a>] - Git Contribution Guidelines in README.md is outdated</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15464">PHPBB3-15464</a>] - Can't reparse [IMG] - in uppercase</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15475">PHPBB3-15475</a>] - Restore Travis PR commit message validation</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15478">PHPBB3-15478</a>] - core.js $loadingIndicator JavaScript errors</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15489">PHPBB3-15489</a>] - Wrong footer text on forum of type "category"</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15496">PHPBB3-15496</a>] - SQL Error in PostgreSQL Fulltext search when results displayed as topics</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15497">PHPBB3-15497</a>] - Declaration of admin_activate_user::create_insert_array not compatible with base</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15498">PHPBB3-15498</a>] - confirm_box() adds duplicate strings to URLs in extensions</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Improvement</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7488">PHPBB3-7488</a>] - View Only - Categories: No Message</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9819">PHPBB3-9819</a>] - Move functions definitions out of mcp.php and includes/mcp/mcp_*.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12291">PHPBB3-12291</a>] - Allow extensions to use custom topic icons</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12939">PHPBB3-12939</a>] - Drop support for IE <11 on January 2016</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14677">PHPBB3-14677</a>] - Extension update check is not very colorblind / colourblind friendly.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14820">PHPBB3-14820</a>] - Style Version Missing</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14919">PHPBB3-14919</a>] - Inconsistent use of globals vs class elements in acp_extensions</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14927">PHPBB3-14927</a>] - event core.user_add_modify_data</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14944">PHPBB3-14944</a>] - Add possibility to search for template loop indexes by key</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14950">PHPBB3-14950</a>] - Add possibility to delete a template block with alter_block_array</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14979">PHPBB3-14979</a>] - Remove underline from unread icon</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14994">PHPBB3-14994</a>] - Refactor template->assign_block_var to be consistent with alter_block_array</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14995">PHPBB3-14995</a>] - Add ACP template events acp_ext_list_*_name_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15111">PHPBB3-15111</a>] - Fix the typo in ucp_pm_view_messsage</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15134">PHPBB3-15134</a>] - Avatar upload driver should use filesystem service</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15247">PHPBB3-15247</a>] - Add driver for APCu v5.x cache</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15267">PHPBB3-15267</a>] - Hide birthday block if the user cannot view profile</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15291">PHPBB3-15291</a>] - Allow short array notation in event declarations</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15293">PHPBB3-15293</a>] - Prevent skipping file changes in automatic updater</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15307">PHPBB3-15307</a>] - Allow extensions to add custom modes to acp_users module</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15328">PHPBB3-15328</a>] - Disable email/jabber checkbox if notification method isn't supported</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15340">PHPBB3-15340</a>] - Update to plupload 2.3.1, stable for one year</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15352">PHPBB3-15352</a>] - Add text to clarify forum descriptions won't display on categories</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15374">PHPBB3-15374</a>] - Add core event to modify page title in viewforum.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15384">PHPBB3-15384</a>] - Add linebreaks to SMTP configuration option explanations</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15385">PHPBB3-15385</a>] - nginx sample config: www redirection, security regex</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15387">PHPBB3-15387</a>] - prosilver: vertical bars on forum rows on index page not full height</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15389">PHPBB3-15389</a>] - Simplify migration between event names</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15391">PHPBB3-15391</a>] - Remove not needed image rendering from topic/forum images</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15394">PHPBB3-15394</a>] - Add $user_cache and $post_edit_list to core.viewtopic_modify_post_row</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15408">PHPBB3-15408</a>] - Reject duplicate BBCodes in ACP</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15409">PHPBB3-15409</a>] - Add u_action to core.acp_users_overview_run_quicktool</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15442">PHPBB3-15442</a>] - Allow unsafe HTML in bbcode.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15444">PHPBB3-15444</a>] - Merge duplicate BBCodes via a migration</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15446">PHPBB3-15446</a>] - Add event core.acp_profile_action</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15447">PHPBB3-15447</a>] - Add event core.acp_profile_modify_profile_row</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15451">PHPBB3-15451</a>] - [EVENT] - mcp_topic_postrow_attachments_before/after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15452">PHPBB3-15452</a>] - [EVENT] - mcp_topic_postrow_post_before</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15453">PHPBB3-15453</a>] - Add event in acp_language after delete language</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15454">PHPBB3-15454</a>] - event - mcp_queue_approve_details_template</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15470">PHPBB3-15470</a>] - attachment boxes need there own font-size</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15471">PHPBB3-15471</a>] - Add core events to ACP when pruning a forum</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15476">PHPBB3-15476</a>] - Add core event before search rows are edited</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15485">PHPBB3-15485</a>] - Add template event to forumlist_body > forum images</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15486">PHPBB3-15486</a>] - Add core event to the function user_add() to modify notifications data</li>
|
||||||
|
</ul>
|
||||||
|
<h4>New Feature</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13344">PHPBB3-13344</a>] - Add new events for logging</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15122">PHPBB3-15122</a>] - Support using memcached instead of memcache</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15372">PHPBB3-15372</a>] - Add a "Can view topics" permission</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Sub-task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13150">PHPBB3-13150</a>] - [Event] - core.phpbb_log_get_topic_auth_sql_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15468">PHPBB3-15468</a>] - Add a service to merge duplicate BBCodes</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15179">PHPBB3-15179</a>] - Update 3.2.x dependencies and fix Twig > 1.25 compatibility</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15304">PHPBB3-15304</a>] - Update s9e/text-formatter dependency</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15455">PHPBB3-15455</a>] - Margin discrepancy due to <!-- INCLUDE jumpbox.html --></li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15457">PHPBB3-15457</a>] - Update s9e/text-formatter dependency</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a name="v320"></a><h3>Changes since 3.2.0</h3>
|
||||||
|
<h4>Bug</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7336">PHPBB3-7336</a>] - Words in new topic title aren't found by search after topic is split</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11076">PHPBB3-11076</a>] - Update notification in ACP for minimum PHP version missing essential information</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11611">PHPBB3-11611</a>] - setup_github_network.php no longer creates a repository</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13250">PHPBB3-13250</a>] - File cache does not write entries starting with _ and containing a slash</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14732">PHPBB3-14732</a>] - Update/remove PHP Code syntax highlighting references</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14790">PHPBB3-14790</a>] - Nested color/list BBCode is not parsed correctly</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14938">PHPBB3-14938</a>] - Inconsistent data results from ext_mgr->all_available() vs ext_mgr->is_available()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14967">PHPBB3-14967</a>] - Cookie Notice</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14971">PHPBB3-14971</a>] - PHP 7.1 warning on pagination</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14975">PHPBB3-14975</a>] - incorrect RTL style appearance </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14984">PHPBB3-14984</a>] - wrong arrow direction in PM inbox</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14985">PHPBB3-14985</a>] - Plain text is stored as HTML and not decoded before usage</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14989">PHPBB3-14989</a>] - url bbcode does not support irc protocol</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14992">PHPBB3-14992</a>] - User notifications table allowing duplicate entries</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14999">PHPBB3-14999</a>] - Next PM icon pointing in wrong direction</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15002">PHPBB3-15002</a>] - Topic icons not showing in search results</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15003">PHPBB3-15003</a>] - When using mark all, disabled check boxes should not become checked</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15006">PHPBB3-15006</a>] - Permission inheritance with checkbox not working</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15008">PHPBB3-15008</a>] - Disable emoji when smilies are disabled</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15010">PHPBB3-15010</a>] - Crash on user profile custom field</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15011">PHPBB3-15011</a>] - Error not checked on metadata load failure</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15012">PHPBB3-15012</a>] - Invalid constructor in FTP file updater</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15015">PHPBB3-15015</a>] - phpbb 3.2.0 install error in the board-wide emails description...</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15016">PHPBB3-15016</a>] - Smilies that contain some characters cause an exception to be thrown</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15023">PHPBB3-15023</a>] - Undo and properly fix post row paging</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15025">PHPBB3-15025</a>] - Use SSL in version check for extension</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15035">PHPBB3-15035</a>] - Add phpinfo.php to 3.2.x install directory</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15036">PHPBB3-15036</a>] - Failure at board setup in functional tests with install_config present</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15044">PHPBB3-15044</a>] - Installation does not create search index</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15047">PHPBB3-15047</a>] - Error migrating from 3.0.12 to 3.2. MS SQL Server</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15050">PHPBB3-15050</a>] - Updater incorrectly adds files when new file already exists</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15056">PHPBB3-15056</a>] - Mark forums read does not update subforum icons</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15058">PHPBB3-15058</a>] - At new feature release phpBB's CSS files should carry information for cache busting</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15062">PHPBB3-15062</a>] - Update to Rhea version number the CSS files</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15079">PHPBB3-15079</a>] - MySql Error when saving draft with Emoji</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15083">PHPBB3-15083</a>] - emoji's not always size constrained</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15084">PHPBB3-15084</a>] - Wrong order of breadcrumbs in module management</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15090">PHPBB3-15090</a>] - Missing acp_send_statistics -> Upgrading to 3.2.0 fails for phpBBs < 3.0.6-rc1</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15102">PHPBB3-15102</a>] - Missing parameter calling version_check</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15103">PHPBB3-15103</a>] - JPEG dimensions undetectable when JFIF header is missing</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15118">PHPBB3-15118</a>] - HTML error/typo in jumpbox.html </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15124">PHPBB3-15124</a>] - Navbar icon titles don't get hidden in responsive view</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15126">PHPBB3-15126</a>] - Incorrect links with clever quotes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15135">PHPBB3-15135</a>] - Undefined $user in metadata manager</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15137">PHPBB3-15137</a>] - Global Announcements shouldn't always be never ending</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15150">PHPBB3-15150</a>] - Yabber SSL/TLS certification</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15152">PHPBB3-15152</a>] - Update Font Awesome</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15158">PHPBB3-15158</a>] - Facebook OAuth login results in fatal error</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15163">PHPBB3-15163</a>] - Braces in smilies "emotion" are not treated as literals</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15173">PHPBB3-15173</a>] - Resizing the posting editor's text area lags</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15180">PHPBB3-15180</a>] - Container broken because of template.twig.environment changes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15186">PHPBB3-15186</a>] - The force_delete_allowed flag does not affect actual posts deletion ability</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15187">PHPBB3-15187</a>] - ACP Template files not purged during Extension Enable</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15198">PHPBB3-15198</a>] - Fix phpBB and PHP version info displayed in the ACP</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15202">PHPBB3-15202</a>] - Should not be possible to disable available extensions</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15212">PHPBB3-15212</a>] - Code box has double horizontal scrollbars</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15217">PHPBB3-15217</a>] - Allow extension to overwrite user::format_date()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15221">PHPBB3-15221</a>] - missing commas in language/en/install.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15222">PHPBB3-15222</a>] - Typo in generate_text_for_display_test.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15243">PHPBB3-15243</a>] - Check permissions before installing with SQLite</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15246">PHPBB3-15246</a>] - Memcache driver incorrectly handles Unix sockets</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15248">PHPBB3-15248</a>] - Event core.modify_posting_auth does not honor its parameters</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15252">PHPBB3-15252</a>] - Wrapping poll title and options text by extra <t> tags if edited a topic by user having no f_poll permission</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Improvement</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13603">PHPBB3-13603</a>] - New event upon index_body_online_block_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14557">PHPBB3-14557</a>] - Simplify updating overloaded events for extensions</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14849">PHPBB3-14849</a>] - Add ACP extension event</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14928">PHPBB3-14928</a>] - Users will not understand the phrase '"%s" is not a valid stability.'</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14973">PHPBB3-14973</a>] - BC break with the rename of db/tools.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14974">PHPBB3-14974</a>] - Cookie notice link not configurable but links to english website</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15037">PHPBB3-15037</a>] - Make imageset retina capable</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15068">PHPBB3-15068</a>] - Add ability to retrieve template vars from the template object</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15097">PHPBB3-15097</a>] - Board statistics page should show PHP version</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15123">PHPBB3-15123</a>] - Check if extension was enabled/disabled before enable or disable</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15142">PHPBB3-15142</a>] - Extension Version Check Should Support Branches</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15157">PHPBB3-15157</a>] - Fix lack of proper font support</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15176">PHPBB3-15176</a>] - Add setting for the maximum number of posts a user must have to have his activity shown in profile</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15199">PHPBB3-15199</a>] - Add core event to the function send() in the messenger</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15200">PHPBB3-15200</a>] - Allow extensions using custom templates for help/faq controllers </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15205">PHPBB3-15205</a>] - Add template events to forumlist_body.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15219">PHPBB3-15219</a>] - Add cron to update passwords hashes to bcrypt</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15226">PHPBB3-15226</a>] - Add index for latest topics query in feeds</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15227">PHPBB3-15227</a>] - Remove unused code in startup</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15237">PHPBB3-15237</a>] - Unguarded includes functions_user</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15238">PHPBB3-15238</a>] - Add console command to fix left/right IDs for the forums and modules</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15241">PHPBB3-15241</a>] - Add ACP template event acp_profile_contact_last</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15250">PHPBB3-15250</a>] - Add core event to MCP at the end of merge_posts</li>
|
||||||
|
</ul>
|
||||||
|
<h4>New Feature</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13730">PHPBB3-13730</a>] - [PHP] - core.delete_post_end</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14498">PHPBB3-14498</a>] - Not possible to deactivate display of "who is online" and birthdays for guests</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15040">PHPBB3-15040</a>] - Update s9e\TextFormatter to 0.9.1</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15045">PHPBB3-15045</a>] - Fix missing incorrect constructor for user object in version_test</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15086">PHPBB3-15086</a>] - Replace quote.gif with fontawesome icon</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15125">PHPBB3-15125</a>] - Remove the function play_qt_file in forum_fn.js</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15144">PHPBB3-15144</a>] - Bug - MCP Multiple attachments icon display</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<a name="v320rc1"></a><h3>Changes since 3.2.0-RC1</h3>
|
<a name="v320rc1"></a><h3>Changes since 3.2.0-RC1</h3>
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
@@ -609,6 +916,197 @@
|
|||||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14265">PHPBB3-14265</a>] - Make all tables available in the container</li>
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14265">PHPBB3-14265</a>] - Make all tables available in the container</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<a name="v3111"></a><h3>Changes since 3.1.11</h3>
|
||||||
|
|
||||||
|
<h4>Security Issue</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[SECURITY-211] - URLs with javascript scheme should not be made clickable</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Bug</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9533">PHPBB3-9533</a>] - phpbb_own_realpath() doesn't always replicate realpath() behaviour</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12835">PHPBB3-12835</a>] - Jump-box dropdown menu doesn't expand with according to line length in IE8</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13360">PHPBB3-13360</a>] - rename_too_long_indexes migration never deleted the old unique index</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13464">PHPBB3-13464</a>] - problem with drop down options and Arabic letters in chrome</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13574">PHPBB3-13574</a>] - Last post not showing in "Active topics" when Prosilver goes responsive</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15174">PHPBB3-15174</a>] - Unable to purge cache (ext & acp)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15285">PHPBB3-15285</a>] - Travis tests are failing due to trusty changes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15303">PHPBB3-15303</a>] - Typo in memcached driver</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15347">PHPBB3-15347</a>] - Password updater in cron generates invalid postgres SQL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15367">PHPBB3-15367</a>] - Sphinx search backend doesn't escape special characters</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Improvement</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10122">PHPBB3-10122</a>] - [list=] - should support "none", along with CSS2 types</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11063">PHPBB3-11063</a>] - Change version check to SSL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14820">PHPBB3-14820</a>] - Style Version Missing</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14919">PHPBB3-14919</a>] - Inconsistent use of globals vs class elements in acp_extensions</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14927">PHPBB3-14927</a>] - event core.user_add_modify_data</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14944">PHPBB3-14944</a>] - Add possibility to search for template loop indexes by key</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14995">PHPBB3-14995</a>] - Add ACP template events acp_ext_list_*_name_after</li>
|
||||||
|
</ul>
|
||||||
|
<h4>New Feature</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13344">PHPBB3-13344</a>] - Add new events for logging</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15122">PHPBB3-15122</a>] - Support using memcached instead of memcache</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Sub-task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11182">PHPBB3-11182</a>] - Ensure that template files use L_COLON instead of colons.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11676">PHPBB3-11676</a>] - generate_text_for_storage on includes/acp/acp_users.php</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10758">PHPBB3-10758</a>] - Improve Functional Test Code Coverage</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10791">PHPBB3-10791</a>] - Add a section for extensions to readme.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10792">PHPBB3-10792</a>] - Add a section for 3.0 to 3.1 upgrades to install.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13874">PHPBB3-13874</a>] - Add master to sami API docs</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a name="v3110"></a><h3>Changes since 3.1.10</h3>
|
||||||
|
|
||||||
|
<h4>Bug</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7336">PHPBB3-7336</a>] - Words in new topic title aren't found by search after topic is split</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8116">PHPBB3-8116</a>] - Server timeout or browsercrash after viewing postdetails</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8301">PHPBB3-8301</a>] - admin log generate slow queries</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9590">PHPBB3-9590</a>] - Unable to update permissions for more than 6 forums at a time</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11076">PHPBB3-11076</a>] - Update notification in ACP for minimum PHP version missing essential information</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11483">PHPBB3-11483</a>] - Forced Activation needs looking at.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11611">PHPBB3-11611</a>] - setup_github_network.php no longer creates a repository</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13247">PHPBB3-13247</a>] - Online indicator in post profile hides behind certain avatars</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13250">PHPBB3-13250</a>] - File cache does not write entries starting with _ and containing a slash</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13429">PHPBB3-13429</a>] - Changes tag in docblock of events should be unified</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13558">PHPBB3-13558</a>] - Error - stream_socket_enable_crypto()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13757">PHPBB3-13757</a>] - Negative PM count</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14468">PHPBB3-14468</a>] - [php] - 'core.viewforum_modify_topics_data' add parameter forum_id</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14549">PHPBB3-14549</a>] - Correctly redirect back after topic merge in MCP</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14770">PHPBB3-14770</a>] - Plupload: WRONG_FILESIZE is used wrong</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14795">PHPBB3-14795</a>] - Topic merge bug</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14801">PHPBB3-14801</a>] - Search highlight option doesn't always highlight unicode strings</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14802">PHPBB3-14802</a>] - Empty/blank lines should not be additional poll options</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14806">PHPBB3-14806</a>] - Authentication for e-mail is not working</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14819">PHPBB3-14819</a>] - Soft deleted posts visible in topic review</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14821">PHPBB3-14821</a>] - Do not expect parsed HTML in kernel subscriber output</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14830">PHPBB3-14830</a>] - FORM_INVALID error on ACP search and CPF settings</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14831">PHPBB3-14831</a>] - Extension migration file fails</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14838">PHPBB3-14838</a>] - feeds.attachments_base - server 500 error for large attachment tables</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14844">PHPBB3-14844</a>] - BBcodes B and I return <strong> and <em> tags instead of CSS under inherited styles</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14859">PHPBB3-14859</a>] - PM report notifications only sent out to full Global Moderators</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14860">PHPBB3-14860</a>] - Broken link on subscriptions page on mobile devices</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14863">PHPBB3-14863</a>] - "Array" in message title when permanently deleting posts</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14864">PHPBB3-14864</a>] - ACP datefromat text input still has 30 max length while dateformat field had been expanded to 64</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14876">PHPBB3-14876</a>] - Multibyte message is not displayed properly on exception</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14877">PHPBB3-14877</a>] - CSS error in ".codebox code" definition</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14881">PHPBB3-14881</a>] - Problems using EVENT (overall_footer_content_after)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14888">PHPBB3-14888</a>] - Missing check for disabled profile field types</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14889">PHPBB3-14889</a>] - Missing method declaration in profile fields type interface</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14890">PHPBB3-14890</a>] - Wrong validation of input field in profile field type string</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14906">PHPBB3-14906</a>] - Duplicated sig key in user_cache_data array</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14923">PHPBB3-14923</a>] - SQL PostgreSQL blocking errors during DB update installation</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14938">PHPBB3-14938</a>] - Inconsistent data results from ext_mgr->all_available() vs ext_mgr->is_available()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14941">PHPBB3-14941</a>] - MySQL Fulltext search index creating still fails on InnoDB</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14943">PHPBB3-14943</a>] - Template loop access gives PHP error</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14953">PHPBB3-14953</a>] - Incorrect "order by" definition in ucp_pm_viewfolder</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14968">PHPBB3-14968</a>] - Version check marks 3.1.10 boards as outdated </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14997">PHPBB3-14997</a>] - Bad Position for topiclist_row_topic_title_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14998">PHPBB3-14998</a>] - ACP Update link is incorrect!</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15003">PHPBB3-15003</a>] - When using mark all, disabled check boxes should not become checked</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15006">PHPBB3-15006</a>] - Permission inheritance with checkbox not working</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15011">PHPBB3-15011</a>] - Error not checked on metadata load failure</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15108">PHPBB3-15108</a>] - Duplicate code in request->overwrite</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15143">PHPBB3-15143</a>] - version check on branch is broken</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15146">PHPBB3-15146</a>] - Date profile field validation incorrect</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15150">PHPBB3-15150</a>] - Yabber SSL/TLS certification</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15186">PHPBB3-15186</a>] - The force_delete_allowed flag does not affect actual posts deletion ability</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15187">PHPBB3-15187</a>] - ACP Template files not purged during Extension Enable</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15246">PHPBB3-15246</a>] - Memcache driver incorrectly handles Unix sockets</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15248">PHPBB3-15248</a>] - Event core.modify_posting_auth does not honor its parameters</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Improvement</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9211">PHPBB3-9211</a>] - List subforums-links separately in parent-forums' legend</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12749">PHPBB3-12749</a>] - core.submit_post_end add subject to the event data</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13457">PHPBB3-13457</a>] - New Hooks for ucp_main</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13459">PHPBB3-13459</a>] - New Template-Event in overall_header.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13479">PHPBB3-13479</a>] - Add hook for modifying highlighting on viewtopic</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13601">PHPBB3-13601</a>] - New event upon acl_clear_prefetch</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13603">PHPBB3-13603</a>] - New event upon index_body_online_block_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13605">PHPBB3-13605</a>] - New event upon ucp_pm_compose_predefined_message</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13608">PHPBB3-13608</a>] - New event upon ucp_restore_permissions</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13609">PHPBB3-13609</a>] - New event upon ucp_switch_permissions</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13845">PHPBB3-13845</a>] - Add event when user changes or delete avatar</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14119">PHPBB3-14119</a>] - [PHP] - (User) unban event request</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14239">PHPBB3-14239</a>] - [PHP] - Add event ucp_remind_modify_select_sql</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14331">PHPBB3-14331</a>] - Add rank calculation or result event access</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14520">PHPBB3-14520</a>] - [Template] - ucp_pm_viewmessage_message_body_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14522">PHPBB3-14522</a>] - [Template] - ucp_register_buttons_before</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14524">PHPBB3-14524</a>] - [PHP] - core.ucp_register_requests_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14733">PHPBB3-14733</a>] - Support increasing hashing cost factor</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14750">PHPBB3-14750</a>] - Fileupload form should not set invalid attributes for file input</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14758">PHPBB3-14758</a>] - ACP-Parameter "Maximum thumbnail width in pixel" should be "Maximum thumbnail width/heigth in pixel:"</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14759">PHPBB3-14759</a>] - Event core.mcp_main_modify_shadow_sql</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14760">PHPBB3-14760</a>] - Event core.mcp_main_modify_fork_sql</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14786">PHPBB3-14786</a>] - Add mcp_forum_actions_before/after events</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14804">PHPBB3-14804</a>] - Add core event to MCP after merging topics</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14805">PHPBB3-14805</a>] - Allow building package for previous versions on PHP 7</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14808">PHPBB3-14808</a>] - Add template event overall_header_searchbox_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14817">PHPBB3-14817</a>] - Add core event on includes/functions_download.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14825">PHPBB3-14825</a>] - Add OAuth events</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14827">PHPBB3-14827</a>] - Possibility to add multiple form keys</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14842">PHPBB3-14842</a>] - Avatar size 0 - unlimited</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14847">PHPBB3-14847</a>] - Add php event to add options in ACP Attachments</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14848">PHPBB3-14848</a>] - Add ACP template events after extensions list titles</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14849">PHPBB3-14849</a>] - Add ACP extension event</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14850">PHPBB3-14850</a>] - Add core events for smilies</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14852">PHPBB3-14852</a>] - Add core event to the function build_header()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14853">PHPBB3-14853</a>] - Add core event to allow modifying PM attachments download auth</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14855">PHPBB3-14855</a>] - Update notifications and PM alert bubbles</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14870">PHPBB3-14870</a>] - Add php events to modify list of PMs</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14872">PHPBB3-14872</a>] - Remove count versus sizeof restriction in coding guidelines</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14874">PHPBB3-14874</a>] - Error on sending a .pak smiley</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14882">PHPBB3-14882</a>] - Add core event to MCP after move posts sync</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14887">PHPBB3-14887</a>] - ACP profile step 1 lang specific event</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14918">PHPBB3-14918</a>] - Provide quick access to extension version metadata</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14940">PHPBB3-14940</a>] - Add ACP template event acp_ext_details_end</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14957">PHPBB3-14957</a>] - Do not cache database config</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14958">PHPBB3-14958</a>] - Twig extension function lang() performs redundant template data copying</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15020">PHPBB3-15020</a>] - Add Events for mcp_topic_postrow_post_subject</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15059">PHPBB3-15059</a>] - Do not wrap content in code box</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15081">PHPBB3-15081</a>] - Add ACP template event acp_ext_details_notice</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15107">PHPBB3-15107</a>] - Add additional vars to event</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15131">PHPBB3-15131</a>] - Add variable to the 'core.mcp_main_modify_fork_sql' event</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15142">PHPBB3-15142</a>] - Extension Version Check Should Support Branches</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15151">PHPBB3-15151</a>] - ACP Cookie settings should contain explanatory text for all fields</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15199">PHPBB3-15199</a>] - Add core event to the function send() in the messenger</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15200">PHPBB3-15200</a>] - Allow extensions using custom templates for help/faq controllers </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15205">PHPBB3-15205</a>] - Add template events to forumlist_body.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15219">PHPBB3-15219</a>] - Add cron to update passwords hashes to bcrypt</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15226">PHPBB3-15226</a>] - Add index for latest topics query in feeds</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15237">PHPBB3-15237</a>] - Unguarded includes functions_user</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15238">PHPBB3-15238</a>] - Add console command to fix left/right IDs for the forums and modules</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15241">PHPBB3-15241</a>] - Add ACP template event acp_profile_contact_last</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15250">PHPBB3-15250</a>] - Add core event to MCP at the end of merge_posts</li>
|
||||||
|
</ul>
|
||||||
|
<h4>New Feature</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12545">PHPBB3-12545</a>] - new pre-posting event</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13730">PHPBB3-13730</a>] - [PHP] - core.delete_post_end</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14390">PHPBB3-14390</a>] - [prosilver] - ucp_main_front_user_details_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14498">PHPBB3-14498</a>] - Not possible to deactivate display of "who is online" and birthdays for guests</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14662">PHPBB3-14662</a>] - [Template] - memberlist_team_username_prepend & append</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14868">PHPBB3-14868</a>] - [Template] - mcp_forum_modify_select_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14996">PHPBB3-14996</a>] - [event] - Add Event search_results_topictitle_after</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Sub-task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13149">PHPBB3-13149</a>] - [Event] - core.phpbb_log_get_topic_auth_sql_before</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15178">PHPBB3-15178</a>] - Update 3.1.x dependencies</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<a name="v319"></a><h3>Changes since 3.1.9</h3>
|
<a name="v319"></a><h3>Changes since 3.1.9</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
|
@@ -20,15 +20,15 @@
|
|||||||
|
|
||||||
phpBB Project Manager: Marshalrusty (Yuriy Rusko)
|
phpBB Project Manager: Marshalrusty (Yuriy Rusko)
|
||||||
|
|
||||||
phpBB Product Manager: naderman (Nils Adermann)
|
|
||||||
|
|
||||||
phpBB Lead Developer: Marc (Marc Alexander)
|
phpBB Lead Developer: Marc (Marc Alexander)
|
||||||
|
|
||||||
phpBB Developers: bantu (Andreas Fischer)
|
phpBB Developers: bantu (Andreas Fischer)
|
||||||
CHItA (Máté Bartus)
|
CHItA (Máté Bartus)
|
||||||
|
Derky (Derk Ruitenbeek)
|
||||||
Elsensee (Oliver Schramm)
|
Elsensee (Oliver Schramm)
|
||||||
|
Hanakin (Michael Miday)
|
||||||
|
MichaelC (Michael Cullum)
|
||||||
Nicofuma (Tristan Darricau)
|
Nicofuma (Tristan Darricau)
|
||||||
prototech (Cesar Gallegos)
|
|
||||||
|
|
||||||
For a list of phpBB Team members, please see:
|
For a list of phpBB Team members, please see:
|
||||||
http://www.phpbb.com/about/team/
|
http://www.phpbb.com/about/team/
|
||||||
@@ -41,7 +41,10 @@ https://github.com/phpbb/phpbb/graphs/contributors
|
|||||||
phpBB Project Manager: theFinn (James Atkinson) [Founder - 04/2007]
|
phpBB Project Manager: theFinn (James Atkinson) [Founder - 04/2007]
|
||||||
SHS` (Jonathan Stanley)
|
SHS` (Jonathan Stanley)
|
||||||
|
|
||||||
phpBB Lead Developer: Acyd Burn (Meik Sievertsen) [09/2005 - 01/2010]
|
phpBB Product Manager: naderman (Nils Adermann) [02/2016 - 02/2017]
|
||||||
|
|
||||||
|
phpBB Lead Developer: naderman (Nils Adermann) [01/2010 - 02/2016]
|
||||||
|
Acyd Burn (Meik Sievertsen) [09/2005 - 01/2010]
|
||||||
psoTFX (Paul S. Owen) [2001 - 09/2005]
|
psoTFX (Paul S. Owen) [2001 - 09/2005]
|
||||||
|
|
||||||
phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
|
phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
|
||||||
@@ -61,6 +64,7 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
|
|||||||
kellanved (Henry Sudhof) [04/2007 - 03/2011]
|
kellanved (Henry Sudhof) [04/2007 - 03/2011]
|
||||||
nickvergessen (Joas Schilling)[04/2010 - 12/2015]
|
nickvergessen (Joas Schilling)[04/2010 - 12/2015]
|
||||||
Oleg (Oleg Pudeyev) [01/2011 - 05/2013]
|
Oleg (Oleg Pudeyev) [01/2011 - 05/2013]
|
||||||
|
prototech (Cesar Gallegos) [01/2014 - 12/2016]
|
||||||
rxu (Ruslan Uzdenov) [04/2010 - 12/2012]
|
rxu (Ruslan Uzdenov) [04/2010 - 12/2012]
|
||||||
TerraFrost (Jim Wigginton) [04/2009 - 01/2011]
|
TerraFrost (Jim Wigginton) [04/2009 - 01/2011]
|
||||||
ToonArmy (Chris Smith) [06/2008 - 11/2011]
|
ToonArmy (Chris Smith) [06/2008 - 11/2011]
|
||||||
|
@@ -147,7 +147,7 @@
|
|||||||
<li>Oracle</li>
|
<li>Oracle</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><strong>PHP 5.4.0+</strong> with support for the database you intend to use.</li>
|
<li><strong>PHP 5.4.7+</strong> with support for the database you intend to use.</li>
|
||||||
<li>The following PHP modules are required:
|
<li>The following PHP modules are required:
|
||||||
<ul>
|
<ul>
|
||||||
<li>json</li>
|
<li>json</li>
|
||||||
@@ -265,15 +265,15 @@
|
|||||||
|
|
||||||
<p>If you are currently using a stable release of phpBB, updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Note</strong>: Before updating, we heavily recommend you do a <em>full backup of your database and existing phpBB files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p>
|
<p>If you are currently using a stable release of phpBB, updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Note</strong>: Before updating, we heavily recommend you do a <em>full backup of your database and existing phpBB files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p>
|
||||||
|
|
||||||
<p><strong>Please make sure you update your phpBB source files too, even if you run the <code>database_update.php</code> file.</strong> If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
|
<p><strong>Please make sure you update your phpBB source files too, even if you just run the database updater.</strong> If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
|
||||||
|
|
||||||
<a name="update_full"></a><h3>4.i. Full package</h3>
|
<a name="update_full"></a><h3>4.i. Full package</h3>
|
||||||
|
|
||||||
<p>The full package is normally meant for new installations only, but if you want to replace all source files, this package comes in handy.</p>
|
<p>Updating using the full package is the recommended update method for boards without modifications to core phpBB files.</p>
|
||||||
|
|
||||||
<p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB files, you may want to leave your <code>files/</code>, <code>images/</code> and <code>ext/</code> directories in place, otherwise you will lose your file attachments, uploaded images and get error due to missing extension files. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <a href="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
|
<p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB files, you should leave your <code>files/</code>, <code>images/</code> and <code>ext/</code> directories in place, otherwise you will lose your file attachments, uploaded images and get errors due to missing extension files. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <a href="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
|
||||||
|
|
||||||
<p>You should now got to <code>/install/app.php/update</code> which will display a warning: <strong>No valid update directory was found, please make sure you uploaded the relevant files</strong>. Beneath that warning you will see a radion button <em>Update database only</em>, just click <strong>Submit</strong>. Depending on your previous version this will make a number of database changes. You may receive <em>FAILURES</em> during this procedure. They should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker). If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
|
<p>You should now got to <code>/install/app.php/update</code> which will display a warning: <strong>No valid update directory was found, please make sure you uploaded the relevant files</strong>. Beneath that warning you will see a radio button <em>Update database only</em>, just click <strong>Submit</strong>. Depending on your previous version this will make a number of database changes. You may receive <em>FAILURES</em> during this procedure. They should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker). If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
|
||||||
|
|
||||||
<p>Once <code>/install/app.php/update</code> has completed, it displays the success message: <strong>The database update was successful</strong>. You may proceed to the Administration Control Panel and then remove the install directory as advised.</p>
|
<p>Once <code>/install/app.php/update</code> has completed, it displays the success message: <strong>The database update was successful</strong>. You may proceed to the Administration Control Panel and then remove the install directory as advised.</p>
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@
|
|||||||
|
|
||||||
<p>The directory structure has been preserved, enabling you (if you wish) to simply upload the uncompressed contents of the archive to the appropriate location on your server, i.e. simply overwrite the existing files with the new versions. Do not forget that if you have installed any modifications (MODs) these files will overwrite the originals, possibly destroying them in the process. You will need to re-add MODs to any affected file before uploading.</p>
|
<p>The directory structure has been preserved, enabling you (if you wish) to simply upload the uncompressed contents of the archive to the appropriate location on your server, i.e. simply overwrite the existing files with the new versions. Do not forget that if you have installed any modifications (MODs) these files will overwrite the originals, possibly destroying them in the process. You will need to re-add MODs to any affected file before uploading.</p>
|
||||||
|
|
||||||
<p>As for the other update procedures, you should run <code>install/database_update.php</code> after you have finished updating the files. This will update your database schema and increment the version number. If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
|
<p>As for the other update procedures, you should go to <code>/install/app.php/update</code>, select "Update database only" and submit the page after you have finished updating the files. This will update your database schema and increment the version number. If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
|
||||||
|
|
||||||
<a name="update_patch"></a><h3>4.iii. Patch file</h3>
|
<a name="update_patch"></a><h3>4.iii. Patch file</h3>
|
||||||
|
|
||||||
@@ -297,11 +297,11 @@
|
|||||||
|
|
||||||
<p>If you do get failures, you should look at using the <a href="#update_files">Changed Files</a> package to replace the files which failed to patch. Please note that you will need to manually re-add any MODs to these particular files. Alternatively, if you know how, you can examine the .rej files to determine what failed where and make manual adjustments to the relevant source.</p>
|
<p>If you do get failures, you should look at using the <a href="#update_files">Changed Files</a> package to replace the files which failed to patch. Please note that you will need to manually re-add any MODs to these particular files. Alternatively, if you know how, you can examine the .rej files to determine what failed where and make manual adjustments to the relevant source.</p>
|
||||||
|
|
||||||
<p>You should, of course, delete the patch file (or files) after use. As for the other update procedures, you should run <code>install/database_update.php</code> after you have finished updating the files. This will update your database schema and data (if appropriate) and increment the version number. If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
|
<p>You should, of course, delete the patch file (or files) after use. As for the other update procedures, you should navigate to <code>/install/app.php/update</code>, select "Update database only" and submit the page after you have finished updating the files. This will update your database schema and data (if appropriate) and increment the version number. If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
|
||||||
|
|
||||||
<a name="update_auto"></a><h3>4.iv. Automatic update package</h3>
|
<a name="update_auto"></a><h3>4.iv. Automatic update package</h3>
|
||||||
|
|
||||||
<p>This update method is the recommended method for updating. This package detects changed files automatically and merges in changes if needed.</p>
|
<p>This update method is only recommended for installations with modifications to core phpBB files. This package detects changed files automatically and merges in changes if needed.</p>
|
||||||
|
|
||||||
<p>The automatic update package will update the board from a given version to the latest version. A number of automatic update files are available, and you should choose the one that corresponds to the version of the board that you are currently running. For example, if your current version is <strong>3.2.0</strong>, you need the <code>phpBB-3.2.0_to_3.2.1.zip/tar.bz2</code> file.</p>
|
<p>The automatic update package will update the board from a given version to the latest version. A number of automatic update files are available, and you should choose the one that corresponds to the version of the board that you are currently running. For example, if your current version is <strong>3.2.0</strong>, you need the <code>phpBB-3.2.0_to_3.2.1.zip/tar.bz2</code> file.</p>
|
||||||
|
|
||||||
@@ -456,9 +456,21 @@
|
|||||||
|
|
||||||
<a name="webserver_configuration"></a><h3>6.ii. Webserver configuration</h3>
|
<a name="webserver_configuration"></a><h3>6.ii. Webserver configuration</h3>
|
||||||
|
|
||||||
<p>Depending on your web server, you may have to configure your server to deny web access to the <code>cache/</code>, <code>files/</code>, <code>store/</code> and other directories. This is to prevent users from accessing sensitive files.</p>
|
<p>Depending on your web server, you may have to configure your server to deny web access to the <code>cache/</code>, <code>files/</code>, <code>includes</code>, <code>phpbb</code>, <code>store/</code>, and <code>vendor</code> directories. This is to prevent users from accessing sensitive files.</p>
|
||||||
|
|
||||||
<p>For <strong>Apache</strong> there are <code>.htaccess</code> files already in place to do this for you. Similarly, for <strong>Windows</strong> based servers using <strong>IIS</strong> there are <code>web.config</code> files already in place to do this for you. For other webservers, you will have to adjust the configuration yourself. Sample files for <strong>nginx</strong> and <strong>lighttpd</strong> to help you get started may be found in <code>docs/</code> directory.</p>
|
<p>
|
||||||
|
For <strong>Apache</strong> there are <code>.htaccess</code> files already in place to do this for the most sensitive files and folders. We do however recommend to completely deny all access to the aforementioned folders and their respective subfolders in your Apache configuration.<br />
|
||||||
|
On Apache 2.4, denying access to the <code>phpbb</code> folder in a phpBB instance located at <code>/var/www/html/</code> would be accomplished by adding the following access rules to the Apache configuration file (typically apache.conf):
|
||||||
|
<pre>
|
||||||
|
<Directory /var/www/html/phpbb/*>
|
||||||
|
Require all denied
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/html/phpbb>
|
||||||
|
Require all denied
|
||||||
|
</Directory></pre>
|
||||||
|
<br />
|
||||||
|
<p>The same settings can be applied to the other mentioned directories by replacing <code>phpbb</code> by the respective directory name. Please note that there are differences in syntax between Apache version <a href="https://httpd.apache.org/docs/2.2/howto/access.html">2.2</a> and <a href="https://httpd.apache.org/docs/2.4/howto/access.html">2.4</a>.</p>
|
||||||
|
<p>For <strong>Windows</strong> based servers using <strong>IIS</strong> there are <code>web.config</code> files already in place to do this for you. For other webservers, you will have to adjust the configuration yourself. Sample files for <strong>nginx</strong> and <strong>lighttpd</strong> to help you get started may be found in the <code>docs/</code> directory.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@@ -323,11 +323,11 @@
|
|||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>phpBB 3.2.x takes advantage of new features added in PHP 5.4. We recommend that you upgrade to the latest stable release of PHP to run phpBB. The minimum version required is PHP 5.4.0 and the maximum supported version is the latest stable version of PHP.</p>
|
<p>phpBB 3.2.x takes advantage of new features added in PHP 5.4. We recommend that you upgrade to the latest stable release of PHP to run phpBB. The minimum version required is PHP 5.4.7 and the maximum supported version is the latest stable version of PHP.</p>
|
||||||
|
|
||||||
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
|
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
|
||||||
|
|
||||||
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, PostgreSQL 8.x, Oracle 8 and SQLite 3. Versions of PHP used range from 5.4.x above 5.6.x to 7.0.x without problem.</p>
|
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, PostgreSQL 8.x, Oracle 8 and SQLite 3. Versions of PHP used range from 5.4.7 above 5.6.x to 7.1.x and 7.2.x without problem.</p>
|
||||||
|
|
||||||
<a name="phpsec"></a><h3>7.i. Notice on PHP security issues</h3>
|
<a name="phpsec"></a><h3>7.i. Notice on PHP security issues</h3>
|
||||||
|
|
||||||
|
@@ -115,6 +115,17 @@ code {
|
|||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
color: #006600;
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
border-color: #D1D7DC;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
padding: 0 4px
|
||||||
|
}
|
||||||
|
|
||||||
#wrap {
|
#wrap {
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
min-width: 650px;
|
min-width: 650px;
|
||||||
|
@@ -627,7 +627,7 @@ $min = ($i < $j) ? $i : $j;</pre>
|
|||||||
<pre>if (isset($forum) && $forum == 5)</pre>
|
<pre>if (isset($forum) && $forum == 5)</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>The <code>empty()</code> function is useful if you want to check if a variable is not set or being empty (an empty string, 0 as an integer or string, NULL, false, an empty array or a variable declared, but without a value in a class). Therefore empty should be used in favor of <code>isset($array) && sizeof($array) > 0</code> - this can be written in a shorter way as <code>!empty($array)</code>.</p>
|
<p>The <code>empty()</code> function is useful if you want to check if a variable is not set or being empty (an empty string, 0 as an integer or string, NULL, false, an empty array or a variable declared, but without a value in a class). Therefore empty should be used in favor of <code>isset($array) && count($array) > 0</code> - this can be written in a shorter way as <code>!empty($array)</code>.</p>
|
||||||
|
|
||||||
<h4>Switch statements:</h4>
|
<h4>Switch statements:</h4>
|
||||||
<p>Switch/case code blocks can get a bit long sometimes. To have some level of notice and being in-line with the opening/closing brace requirement (where they are on the same line for better readability), this also applies to switch/case code blocks and the breaks. An example:</p>
|
<p>Switch/case code blocks can get a bit long sometimes. To have some level of notice and being in-line with the opening/closing brace requirement (where they are on the same line for better readability), this also applies to switch/case code blocks and the breaks. An example:</p>
|
||||||
@@ -994,9 +994,9 @@ $sql = $db->sql_build_query('SELECT', $sql_array);</pre>
|
|||||||
<h4>Operations in loop definition: </h4>
|
<h4>Operations in loop definition: </h4>
|
||||||
<p>Always try to optimize your loops if operations are going on at the comparing part, since this part is executed every time the loop is parsed through. For assignments a descriptive name should be chosen. Example:</p>
|
<p>Always try to optimize your loops if operations are going on at the comparing part, since this part is executed every time the loop is parsed through. For assignments a descriptive name should be chosen. Example:</p>
|
||||||
|
|
||||||
<p class="bad">// On every iteration the sizeof function is called</p>
|
<p class="bad">// On every iteration the count function is called</p>
|
||||||
<div class="codebox"><pre>
|
<div class="codebox"><pre>
|
||||||
for ($i = 0; $i < sizeof($post_data); $i++)
|
for ($i = 0; $i < count($post_data); $i++)
|
||||||
{
|
{
|
||||||
do_something();
|
do_something();
|
||||||
}</pre>
|
}</pre>
|
||||||
@@ -1004,7 +1004,7 @@ for ($i = 0; $i < sizeof($post_data); $i++)
|
|||||||
|
|
||||||
<p class="good">// You are able to assign the (not changing) result within the loop itself</p>
|
<p class="good">// You are able to assign the (not changing) result within the loop itself</p>
|
||||||
<div class="codebox"><pre>
|
<div class="codebox"><pre>
|
||||||
for ($i = 0, $size = sizeof($post_data); $i < $size; $i++)
|
for ($i = 0, $size = count($post_data); $i < $size; $i++)
|
||||||
{
|
{
|
||||||
do_something();
|
do_something();
|
||||||
}</pre>
|
}</pre>
|
||||||
@@ -2387,7 +2387,7 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
|
|||||||
You have <code>[1/21/31] slon</code>, <code>[2/3/4] slona</code>, <code>[0/5/6] slonova</code> and <code>[7/8/9/11] ...</code> and some more difficult rules.
|
You have <code>[1/21/31] slon</code>, <code>[2/3/4] slona</code>, <code>[0/5/6] slonova</code> and <code>[7/8/9/11] ...</code> and some more difficult rules.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>The <a href="https://wiki.phpbb.com/Plural_Rules">plural system</a> takes care of this and can be used as follows:</p>
|
<p>The <a href="https://area51.phpbb.com/docs/dev/32x/language/plurals.html">plural system</a> takes care of this and can be used as follows:</p>
|
||||||
|
|
||||||
<p>The PHP code will basically look like this:</p>
|
<p>The PHP code will basically look like this:</p>
|
||||||
|
|
||||||
|
@@ -64,12 +64,30 @@ acp_ext_details_end
|
|||||||
* Since: 3.1.11-RC1
|
* Since: 3.1.11-RC1
|
||||||
* Purpose: Add more detailed information on extension after the available information.
|
* Purpose: Add more detailed information on extension after the available information.
|
||||||
|
|
||||||
|
acp_ext_details_notice
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_ext_details.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add extension detail notices after version check information.
|
||||||
|
|
||||||
|
acp_ext_list_disabled_name_after
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_ext_list.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add content after the name of disabled extensions in the list
|
||||||
|
|
||||||
acp_ext_list_disabled_title_after
|
acp_ext_list_disabled_title_after
|
||||||
===
|
===
|
||||||
* Location: adm/style/acp_ext_list.html
|
* Location: adm/style/acp_ext_list.html
|
||||||
* Since: 3.1.11-RC1
|
* Since: 3.1.11-RC1
|
||||||
* Purpose: Add text after disabled extensions section title.
|
* Purpose: Add text after disabled extensions section title.
|
||||||
|
|
||||||
|
acp_ext_list_enabled_name_after
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_ext_list.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add content after the name of enabled extensions in the list
|
||||||
|
|
||||||
acp_ext_list_enabled_title_after
|
acp_ext_list_enabled_title_after
|
||||||
===
|
===
|
||||||
* Location: adm/style/acp_ext_list.html
|
* Location: adm/style/acp_ext_list.html
|
||||||
@@ -387,6 +405,13 @@ acp_profile_contact_before
|
|||||||
* Since: 3.1.6-RC1
|
* Since: 3.1.6-RC1
|
||||||
* Purpose: Add extra options to custom profile field configuration in the ACP
|
* Purpose: Add extra options to custom profile field configuration in the ACP
|
||||||
|
|
||||||
|
acp_profile_contact_last
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ adm/style/acp_profile.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add contact specific options to custom profile fields in the ACP
|
||||||
|
|
||||||
acp_profile_step_one_lang_after
|
acp_profile_step_one_lang_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -408,6 +433,13 @@ acp_prune_forums_prepend
|
|||||||
* Since: 3.1.7-RC1
|
* Since: 3.1.7-RC1
|
||||||
* Purpose: Add content before the forum select form label
|
* Purpose: Add content before the forum select form label
|
||||||
|
|
||||||
|
acp_prune_forums_settings_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ adm/style/acp_prune_forums.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add content after the prune settings
|
||||||
|
|
||||||
acp_prune_users_find_username_append
|
acp_prune_users_find_username_append
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -473,6 +505,13 @@ acp_styles_list_before
|
|||||||
* Since: 3.1.7-RC1
|
* Since: 3.1.7-RC1
|
||||||
* Purpose: Add content before list of styles
|
* Purpose: Add content before list of styles
|
||||||
|
|
||||||
|
acp_users_mode_add
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ adm/style/acp_users.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add extra modes to the ACP user page
|
||||||
|
|
||||||
acp_users_profile_before
|
acp_users_profile_before
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -641,6 +680,34 @@ forumlist_body_category_header_row_prepend
|
|||||||
* Since: 3.1.5-RC1
|
* Since: 3.1.5-RC1
|
||||||
* Purpose: Add content before the header row of the category on the forum list.
|
* Purpose: Add content before the header row of the category on the forum list.
|
||||||
|
|
||||||
|
forumlist_body_forum_image_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add content after the forum image on the forum list.
|
||||||
|
|
||||||
|
forumlist_body_forum_image_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add content at the start of the forum image on the forum list.
|
||||||
|
|
||||||
|
forumlist_body_forum_image_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add content before the forum image on the forum list.
|
||||||
|
|
||||||
|
forumlist_body_forum_image_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add content at the end of the forum image on the forum list.
|
||||||
|
|
||||||
forumlist_body_forum_row_after
|
forumlist_body_forum_row_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -676,6 +743,20 @@ forumlist_body_last_post_title_prepend
|
|||||||
* Since: 3.1.0-a1
|
* Since: 3.1.0-a1
|
||||||
* Purpose: Add content before the post title of the latest post in a forum on the forum list.
|
* Purpose: Add content before the post title of the latest post in a forum on the forum list.
|
||||||
|
|
||||||
|
forumlist_body_subforum_link_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add content at the end of subforum link item.
|
||||||
|
|
||||||
|
forumlist_body_subforum_link_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add content at the start of subforum link item.
|
||||||
|
|
||||||
forumlist_body_subforums_after
|
forumlist_body_subforums_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -697,6 +778,13 @@ forumlist_body_last_row_after
|
|||||||
* Since: 3.1.0-b2
|
* Since: 3.1.0-b2
|
||||||
* Purpose: Add content after the very last row of the forum list.
|
* Purpose: Add content after the very last row of the forum list.
|
||||||
|
|
||||||
|
index_body_birthday_block_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/index_body.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add new statistic blocks before the Birthday block
|
||||||
|
|
||||||
index_body_block_birthday_append
|
index_body_block_birthday_append
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -900,6 +988,27 @@ mcp_topic_options_before
|
|||||||
* Since: 3.1.6-RC1
|
* Since: 3.1.6-RC1
|
||||||
* Purpose: Add some options (field, checkbox, ...) before the subject field when split a subject
|
* Purpose: Add some options (field, checkbox, ...) before the subject field when split a subject
|
||||||
|
|
||||||
|
mcp_topic_postrow_attachments_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/mcp_topic.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Show additional content after attachments in mcp topic review
|
||||||
|
|
||||||
|
mcp_topic_postrow_attachments_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/mcp_topic.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Show additional content before attachments in mcp topic review
|
||||||
|
|
||||||
|
mcp_topic_postrow_post_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/mcp_topic.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Show additional content after postrow begins in mcp topic review
|
||||||
|
|
||||||
mcp_topic_postrow_post_details_after
|
mcp_topic_postrow_post_details_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -914,6 +1023,20 @@ mcp_topic_postrow_post_details_before
|
|||||||
* Since: 3.1.10-RC1
|
* Since: 3.1.10-RC1
|
||||||
* Purpose: Add content before post details in topic moderation
|
* Purpose: Add content before post details in topic moderation
|
||||||
|
|
||||||
|
mcp_topic_postrow_post_subject_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/mcp_topic.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add content after post subject in topic moderation
|
||||||
|
|
||||||
|
mcp_topic_postrow_post_subject_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/mcp_topic.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add content before post subject in topic moderation
|
||||||
|
|
||||||
mcp_topic_topic_title_after
|
mcp_topic_topic_title_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -1423,6 +1546,20 @@ overall_header_stylesheets_after
|
|||||||
* Purpose: Add asset calls after stylesheets within the `</head>` tag.
|
* Purpose: Add asset calls after stylesheets within the `</head>` tag.
|
||||||
Note that INCLUDECSS will not work with this event.
|
Note that INCLUDECSS will not work with this event.
|
||||||
|
|
||||||
|
posting_attach_body_attach_row_controls_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/posting_attach_body.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add content after attachment control elements
|
||||||
|
|
||||||
|
posting_attach_body_attach_row_controls_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/posting_attach_body.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add content before attachment control elements
|
||||||
|
|
||||||
posting_editor_add_panel_tab
|
posting_editor_add_panel_tab
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -1801,6 +1938,13 @@ search_results_topic_before
|
|||||||
* Since: 3.1.0-b4
|
* Since: 3.1.0-b4
|
||||||
* Purpose: Add data before search result topics
|
* Purpose: Add data before search result topics
|
||||||
|
|
||||||
|
search_results_topic_title_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/search_results.html
|
||||||
|
* Since: 3.1.11-RC1
|
||||||
|
* Purpose: Add data after search results topic title
|
||||||
|
|
||||||
simple_footer_after
|
simple_footer_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
@@ -2604,6 +2748,13 @@ viewtopic_topic_title_after
|
|||||||
* Since: 3.1.7-RC1
|
* Since: 3.1.7-RC1
|
||||||
* Purpose: Add content directly after the topic title link on the View topic screen (outside of the h2 HTML tag)
|
* Purpose: Add content directly after the topic title link on the View topic screen (outside of the h2 HTML tag)
|
||||||
|
|
||||||
|
viewtopic_topic_title_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
* Since: 3.2.2-RC1
|
||||||
|
* Purpose: Add content directly before the topic title link on the View topic screen (outside of the h2 HTML tag)
|
||||||
|
|
||||||
viewtopic_topic_title_append
|
viewtopic_topic_title_append
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@@ -37,7 +37,7 @@ $HTTP["host"] == "www.myforums.com" {
|
|||||||
accesslog.filename = "/var/log/lighttpd/access-www.myforums.com.log"
|
accesslog.filename = "/var/log/lighttpd/access-www.myforums.com.log"
|
||||||
|
|
||||||
# Deny access to internal phpbb files.
|
# Deny access to internal phpbb files.
|
||||||
$HTTP["url"] =~ "^/(config\.php|common\.php|includes|cache|files|store|images/avatars/upload)" {
|
$HTTP["url"] =~ "^/(config\.php|common\.php|cache|files|images/avatars/upload|includes|phpbb|store|vendor)" {
|
||||||
url.access-deny = ( "" )
|
url.access-deny = ( "" )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -18,11 +18,11 @@ http {
|
|||||||
gzip_vary on;
|
gzip_vary on;
|
||||||
gzip_http_version 1.1;
|
gzip_http_version 1.1;
|
||||||
gzip_min_length 700;
|
gzip_min_length 700;
|
||||||
|
|
||||||
# Compression levels over 6 do not give an appreciable improvement
|
# Compression levels over 6 do not give an appreciable improvement
|
||||||
# in compression ratio, but take more resources.
|
# in compression ratio, but take more resources.
|
||||||
gzip_comp_level 6;
|
gzip_comp_level 6;
|
||||||
|
|
||||||
# IE 6 and lower do not support gzip with Vary correctly.
|
# IE 6 and lower do not support gzip with Vary correctly.
|
||||||
gzip_disable "msie6";
|
gzip_disable "msie6";
|
||||||
# Before nginx 0.7.63:
|
# Before nginx 0.7.63:
|
||||||
@@ -49,9 +49,7 @@ http {
|
|||||||
server_name myforums.com;
|
server_name myforums.com;
|
||||||
|
|
||||||
# A trick from http://wiki.nginx.org/Pitfalls#Taxing_Rewrites:
|
# A trick from http://wiki.nginx.org/Pitfalls#Taxing_Rewrites:
|
||||||
rewrite ^ http://www.myforums.com$request_uri permanent;
|
return 301 http://www.myforums.com$request_uri;
|
||||||
# Equivalent to:
|
|
||||||
#rewrite ^(.*)$ http://www.myforums.com$1 permanent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# The actual board domain.
|
# The actual board domain.
|
||||||
@@ -72,7 +70,7 @@ http {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Deny access to internal phpbb files.
|
# Deny access to internal phpbb files.
|
||||||
location ~ /(config\.php|common\.php|includes|cache|files|store|images/avatars/upload) {
|
location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb|store|vendor) {
|
||||||
deny all;
|
deny all;
|
||||||
# deny was ignored before 0.8.40 for connections over IPv6.
|
# deny was ignored before 0.8.40 for connections over IPv6.
|
||||||
# Use internal directive to prohibit access on older versions.
|
# Use internal directive to prohibit access on older versions.
|
||||||
|
@@ -159,6 +159,8 @@ $user->session_begin(false);
|
|||||||
$auth->acl($user->data);
|
$auth->acl($user->data);
|
||||||
$user->setup('viewtopic');
|
$user->setup('viewtopic');
|
||||||
|
|
||||||
|
$phpbb_content_visibility = $phpbb_container->get('content.visibility');
|
||||||
|
|
||||||
if (!$config['allow_attachments'] && !$config['allow_pm_attach'])
|
if (!$config['allow_attachments'] && !$config['allow_pm_attach'])
|
||||||
{
|
{
|
||||||
send_status_line(404, 'Not Found');
|
send_status_line(404, 'Not Found');
|
||||||
@@ -225,7 +227,7 @@ else
|
|||||||
$post_row = $db->sql_fetchrow($result);
|
$post_row = $db->sql_fetchrow($result);
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (!$post_row || ($post_row['post_visibility'] != ITEM_APPROVED && !$auth->acl_get('m_approve', $post_row['forum_id'])))
|
if (!$post_row || !$phpbb_content_visibility->is_visible('post', $post_row['forum_id'], $post_row))
|
||||||
{
|
{
|
||||||
// Attachment of a soft deleted post and the user is not allowed to see the post
|
// Attachment of a soft deleted post and the user is not allowed to see the post
|
||||||
send_status_line(404, 'Not Found');
|
send_status_line(404, 'Not Found');
|
||||||
@@ -272,7 +274,7 @@ else
|
|||||||
* @var string mode Download mode
|
* @var string mode Download mode
|
||||||
* @var bool thumbnail Flag indicating if the file is a thumbnail
|
* @var bool thumbnail Flag indicating if the file is a thumbnail
|
||||||
* @since 3.1.6-RC1
|
* @since 3.1.6-RC1
|
||||||
* @change 3.1.7-RC1 Fixing wrong name of a variable (replacing "extension" by "extensions")
|
* @changed 3.1.7-RC1 Fixing wrong name of a variable (replacing "extension" by "extensions")
|
||||||
*/
|
*/
|
||||||
$vars = array(
|
$vars = array(
|
||||||
'attach_id',
|
'attach_id',
|
||||||
|
Before Width: | Height: | Size: 278 B After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 267 B After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 271 B After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 294 B After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 297 B After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 296 B After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 4.6 KiB |
@@ -190,7 +190,7 @@ class acp_attachments
|
|||||||
validate_config_vars($display_vars['vars'], $cfg_array, $error);
|
validate_config_vars($display_vars['vars'], $cfg_array, $error);
|
||||||
|
|
||||||
// Do not write values if there is an error
|
// Do not write values if there is an error
|
||||||
if (sizeof($error))
|
if (count($error))
|
||||||
{
|
{
|
||||||
$submit = false;
|
$submit = false;
|
||||||
}
|
}
|
||||||
@@ -226,7 +226,7 @@ class acp_attachments
|
|||||||
// Check Settings
|
// Check Settings
|
||||||
$this->test_upload($error, $this->new_config['upload_path'], false);
|
$this->test_upload($error, $this->new_config['upload_path'], false);
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||||
}
|
}
|
||||||
@@ -256,14 +256,14 @@ class acp_attachments
|
|||||||
$supported_types = get_supported_image_types();
|
$supported_types = get_supported_image_types();
|
||||||
|
|
||||||
// Check Thumbnail Support
|
// Check Thumbnail Support
|
||||||
if (!$this->new_config['img_imagick'] && (!isset($supported_types['format']) || !sizeof($supported_types['format'])))
|
if (!$this->new_config['img_imagick'] && (!isset($supported_types['format']) || !count($supported_types['format'])))
|
||||||
{
|
{
|
||||||
$this->new_config['img_create_thumbnail'] = 0;
|
$this->new_config['img_create_thumbnail'] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'U_SEARCH_IMAGICK' => $this->u_action . '&action=imgmagick',
|
'U_SEARCH_IMAGICK' => $this->u_action . '&action=imgmagick',
|
||||||
'S_THUMBNAIL_SUPPORT' => (!$this->new_config['img_imagick'] && (!isset($supported_types['format']) || !sizeof($supported_types['format']))) ? false : true)
|
'S_THUMBNAIL_SUPPORT' => (!$this->new_config['img_imagick'] && (!isset($supported_types['format']) || !count($supported_types['format']))) ? false : true)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Secure Download Options - Same procedure as with banning
|
// Secure Download Options - Same procedure as with banning
|
||||||
@@ -290,7 +290,7 @@ class acp_attachments
|
|||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_SECURE_DOWNLOADS' => $this->new_config['secure_downloads'],
|
'S_SECURE_DOWNLOADS' => $this->new_config['secure_downloads'],
|
||||||
'S_DEFINED_IPS' => ($defined_ips != '') ? true : false,
|
'S_DEFINED_IPS' => ($defined_ips != '') ? true : false,
|
||||||
'S_WARNING' => (sizeof($error)) ? true : false,
|
'S_WARNING' => (count($error)) ? true : false,
|
||||||
|
|
||||||
'WARNING_MSG' => implode('<br />', $error),
|
'WARNING_MSG' => implode('<br />', $error),
|
||||||
'DEFINED_IPS' => $defined_ips,
|
'DEFINED_IPS' => $defined_ips,
|
||||||
@@ -363,7 +363,7 @@ class acp_attachments
|
|||||||
// Generate correct Change List
|
// Generate correct Change List
|
||||||
$extensions = array();
|
$extensions = array();
|
||||||
|
|
||||||
for ($i = 0, $size = sizeof($extension_change_list); $i < $size; $i++)
|
for ($i = 0, $size = count($extension_change_list); $i < $size; $i++)
|
||||||
{
|
{
|
||||||
$extensions[$extension_change_list[$i]]['group_id'] = $group_select_list[$i];
|
$extensions[$extension_change_list[$i]]['group_id'] = $group_select_list[$i];
|
||||||
}
|
}
|
||||||
@@ -390,7 +390,7 @@ class acp_attachments
|
|||||||
// Delete Extension?
|
// Delete Extension?
|
||||||
$extension_id_list = $request->variable('extension_id_list', array(0));
|
$extension_id_list = $request->variable('extension_id_list', array(0));
|
||||||
|
|
||||||
if (sizeof($extension_id_list))
|
if (count($extension_id_list))
|
||||||
{
|
{
|
||||||
$sql = 'SELECT extension
|
$sql = 'SELECT extension
|
||||||
FROM ' . EXTENSIONS_TABLE . '
|
FROM ' . EXTENSIONS_TABLE . '
|
||||||
@@ -420,7 +420,7 @@ class acp_attachments
|
|||||||
|
|
||||||
if ($add_extension && $add)
|
if ($add_extension && $add)
|
||||||
{
|
{
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
$sql = 'SELECT extension_id
|
$sql = 'SELECT extension_id
|
||||||
FROM ' . EXTENSIONS_TABLE . "
|
FROM ' . EXTENSIONS_TABLE . "
|
||||||
@@ -433,7 +433,7 @@ class acp_attachments
|
|||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
$sql_ary = array(
|
$sql_ary = array(
|
||||||
'group_id' => $add_extension_group,
|
'group_id' => $add_extension_group,
|
||||||
@@ -447,7 +447,7 @@ class acp_attachments
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
$notify[] = $user->lang['EXTENSIONS_UPDATED'];
|
$notify[] = $user->lang['EXTENSIONS_UPDATED'];
|
||||||
}
|
}
|
||||||
@@ -558,7 +558,7 @@ class acp_attachments
|
|||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
// Ok, build the update/insert array
|
// Ok, build the update/insert array
|
||||||
$upload_icon = $request->variable('upload_icon', 'no_image');
|
$upload_icon = $request->variable('upload_icon', 'no_image');
|
||||||
@@ -575,7 +575,7 @@ class acp_attachments
|
|||||||
$max_filesize = 0;
|
$max_filesize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($allowed_forums))
|
if (!count($allowed_forums))
|
||||||
{
|
{
|
||||||
$forum_select = false;
|
$forum_select = false;
|
||||||
}
|
}
|
||||||
@@ -612,7 +612,7 @@ class acp_attachments
|
|||||||
|
|
||||||
$extension_list = $request->variable('extensions', array(0));
|
$extension_list = $request->variable('extensions', array(0));
|
||||||
|
|
||||||
if ($action == 'edit' && sizeof($extension_list))
|
if ($action == 'edit' && count($extension_list))
|
||||||
{
|
{
|
||||||
$sql = 'UPDATE ' . EXTENSIONS_TABLE . "
|
$sql = 'UPDATE ' . EXTENSIONS_TABLE . "
|
||||||
SET group_id = 0
|
SET group_id = 0
|
||||||
@@ -620,7 +620,7 @@ class acp_attachments
|
|||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($extension_list))
|
if (count($extension_list))
|
||||||
{
|
{
|
||||||
$sql = 'UPDATE ' . EXTENSIONS_TABLE . "
|
$sql = 'UPDATE ' . EXTENSIONS_TABLE . "
|
||||||
SET group_id = $group_id
|
SET group_id = $group_id
|
||||||
@@ -630,7 +630,7 @@ class acp_attachments
|
|||||||
|
|
||||||
$cache->destroy('_extensions');
|
$cache->destroy('_extensions');
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
$notify[] = $user->lang['SUCCESS_EXTENSION_GROUP_' . strtoupper($action)];
|
$notify[] = $user->lang['SUCCESS_EXTENSION_GROUP_' . strtoupper($action)];
|
||||||
}
|
}
|
||||||
@@ -806,7 +806,7 @@ class acp_attachments
|
|||||||
'S_FILENAME_LIST' => $filename_list,
|
'S_FILENAME_LIST' => $filename_list,
|
||||||
'S_EDIT_GROUP' => true,
|
'S_EDIT_GROUP' => true,
|
||||||
'S_NO_IMAGE' => $no_image_select,
|
'S_NO_IMAGE' => $no_image_select,
|
||||||
'S_FORUM_IDS' => (sizeof($forum_ids)) ? true : false,
|
'S_FORUM_IDS' => (count($forum_ids)) ? true : false,
|
||||||
|
|
||||||
'U_EXTENSIONS' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=extensions"),
|
'U_EXTENSIONS' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=extensions"),
|
||||||
'U_BACK' => $this->u_action,
|
'U_BACK' => $this->u_action,
|
||||||
@@ -922,13 +922,16 @@ class acp_attachments
|
|||||||
|
|
||||||
case 'orphan':
|
case 'orphan':
|
||||||
|
|
||||||
|
/* @var $pagination \phpbb\pagination */
|
||||||
|
$pagination = $this->phpbb_container->get('pagination');
|
||||||
|
|
||||||
if ($submit)
|
if ($submit)
|
||||||
{
|
{
|
||||||
$delete_files = (isset($_POST['delete'])) ? array_keys($request->variable('delete', array('' => 0))) : array();
|
$delete_files = (isset($_POST['delete'])) ? array_keys($request->variable('delete', array('' => 0))) : array();
|
||||||
$add_files = (isset($_POST['add'])) ? array_keys($request->variable('add', array('' => 0))) : array();
|
$add_files = (isset($_POST['add'])) ? array_keys($request->variable('add', array('' => 0))) : array();
|
||||||
$post_ids = $request->variable('post_id', array('' => 0));
|
$post_ids = $request->variable('post_id', array('' => 0));
|
||||||
|
|
||||||
if (sizeof($delete_files))
|
if (count($delete_files))
|
||||||
{
|
{
|
||||||
$sql = 'SELECT *
|
$sql = 'SELECT *
|
||||||
FROM ' . ATTACHMENTS_TABLE . '
|
FROM ' . ATTACHMENTS_TABLE . '
|
||||||
@@ -951,7 +954,7 @@ class acp_attachments
|
|||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($delete_files))
|
if (count($delete_files))
|
||||||
{
|
{
|
||||||
$sql = 'DELETE FROM ' . ATTACHMENTS_TABLE . '
|
$sql = 'DELETE FROM ' . ATTACHMENTS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('attach_id', array_keys($delete_files));
|
WHERE ' . $db->sql_in_set('attach_id', array_keys($delete_files));
|
||||||
@@ -971,7 +974,7 @@ class acp_attachments
|
|||||||
}
|
}
|
||||||
unset($add_files);
|
unset($add_files);
|
||||||
|
|
||||||
if (sizeof($upload_list))
|
if (count($upload_list))
|
||||||
{
|
{
|
||||||
$template->assign_var('S_UPLOADING_FILES', true);
|
$template->assign_var('S_UPLOADING_FILES', true);
|
||||||
|
|
||||||
@@ -1064,13 +1067,29 @@ class acp_attachments
|
|||||||
'S_ORPHAN' => true)
|
'S_ORPHAN' => true)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$attachments_per_page = (int) $config['topics_per_page'];
|
||||||
|
|
||||||
|
// Get total number or orphans older than 3 hours
|
||||||
|
$sql = 'SELECT COUNT(attach_id) as num_files, SUM(filesize) as total_size
|
||||||
|
FROM ' . ATTACHMENTS_TABLE . '
|
||||||
|
WHERE is_orphan = 1
|
||||||
|
AND filetime < ' . (time() - 3*60*60);
|
||||||
|
$result = $this->db->sql_query($sql);
|
||||||
|
$row = $this->db->sql_fetchrow($result);
|
||||||
|
$num_files = (int) $row['num_files'];
|
||||||
|
$total_size = (int) $row['total_size'];
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$start = $request->variable('start', 0);
|
||||||
|
$start = $pagination->validate_start($start, $attachments_per_page, $num_files);
|
||||||
|
|
||||||
// Just get the files with is_orphan set and older than 3 hours
|
// Just get the files with is_orphan set and older than 3 hours
|
||||||
$sql = 'SELECT *
|
$sql = 'SELECT *
|
||||||
FROM ' . ATTACHMENTS_TABLE . '
|
FROM ' . ATTACHMENTS_TABLE . '
|
||||||
WHERE is_orphan = 1
|
WHERE is_orphan = 1
|
||||||
AND filetime < ' . (time() - 3*60*60) . '
|
AND filetime < ' . (time() - 3*60*60) . '
|
||||||
ORDER BY filetime DESC';
|
ORDER BY filetime DESC';
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query_limit($sql, $attachments_per_page, $start);
|
||||||
|
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
@@ -1086,6 +1105,20 @@ class acp_attachments
|
|||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$pagination->generate_template_pagination(
|
||||||
|
$this->u_action,
|
||||||
|
'pagination',
|
||||||
|
'start',
|
||||||
|
$num_files,
|
||||||
|
$attachments_per_page,
|
||||||
|
$start
|
||||||
|
);
|
||||||
|
|
||||||
|
$template->assign_vars(array(
|
||||||
|
'TOTAL_FILES' => $num_files,
|
||||||
|
'TOTAL_SIZE' => get_formatted_filesize($total_size),
|
||||||
|
));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'manage':
|
case 'manage':
|
||||||
@@ -1094,7 +1127,7 @@ class acp_attachments
|
|||||||
{
|
{
|
||||||
$delete_files = (isset($_POST['delete'])) ? array_keys($request->variable('delete', array('' => 0))) : array();
|
$delete_files = (isset($_POST['delete'])) ? array_keys($request->variable('delete', array('' => 0))) : array();
|
||||||
|
|
||||||
if (sizeof($delete_files))
|
if (count($delete_files))
|
||||||
{
|
{
|
||||||
// Select those attachments we want to delete...
|
// Select those attachments we want to delete...
|
||||||
$sql = 'SELECT real_filename
|
$sql = 'SELECT real_filename
|
||||||
@@ -1110,7 +1143,7 @@ class acp_attachments
|
|||||||
|
|
||||||
if ($num_deleted = $this->attachment_manager->delete('attach', $delete_files))
|
if ($num_deleted = $this->attachment_manager->delete('attach', $delete_files))
|
||||||
{
|
{
|
||||||
if (sizeof($delete_files) != $num_deleted)
|
if (count($delete_files) != $num_deleted)
|
||||||
{
|
{
|
||||||
$error[] = $user->lang['FILES_GONE'];
|
$error[] = $user->lang['FILES_GONE'];
|
||||||
}
|
}
|
||||||
@@ -1231,7 +1264,7 @@ class acp_attachments
|
|||||||
// Grab extensions
|
// Grab extensions
|
||||||
$extensions = $cache->obtain_attach_extensions(true);
|
$extensions = $cache->obtain_attach_extensions(true);
|
||||||
|
|
||||||
for ($i = 0, $end = sizeof($attachments_list); $i < $end; ++$i)
|
for ($i = 0, $end = count($attachments_list); $i < $end; ++$i)
|
||||||
{
|
{
|
||||||
$row = $attachments_list[$i];
|
$row = $attachments_list[$i];
|
||||||
|
|
||||||
@@ -1266,7 +1299,7 @@ class acp_attachments
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($error))
|
if (count($error))
|
||||||
{
|
{
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_WARNING' => true,
|
'S_WARNING' => true,
|
||||||
@@ -1274,7 +1307,7 @@ class acp_attachments
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($notify))
|
if (count($notify))
|
||||||
{
|
{
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_NOTIFY' => true,
|
'S_NOTIFY' => true,
|
||||||
@@ -1443,7 +1476,7 @@ class acp_attachments
|
|||||||
$row['group_name'] = $user->lang['NOT_ASSIGNED'];
|
$row['group_name'] = $user->lang['NOT_ASSIGNED'];
|
||||||
$group_name[] = $row;
|
$group_name[] = $row;
|
||||||
|
|
||||||
for ($i = 0, $groups_size = sizeof($group_name); $i < $groups_size; $i++)
|
for ($i = 0, $groups_size = count($group_name); $i < $groups_size; $i++)
|
||||||
{
|
{
|
||||||
if ($default_group === false)
|
if ($default_group === false)
|
||||||
{
|
{
|
||||||
@@ -1676,7 +1709,7 @@ class acp_attachments
|
|||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (sizeof($iplist))
|
if (count($iplist))
|
||||||
{
|
{
|
||||||
foreach ($iplist as $ip_entry)
|
foreach ($iplist as $ip_entry)
|
||||||
{
|
{
|
||||||
@@ -1686,7 +1719,7 @@ class acp_attachments
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($hostlist))
|
if (count($hostlist))
|
||||||
{
|
{
|
||||||
foreach ($hostlist as $host_entry)
|
foreach ($hostlist as $host_entry)
|
||||||
{
|
{
|
||||||
@@ -1709,7 +1742,7 @@ class acp_attachments
|
|||||||
{
|
{
|
||||||
$unip_sql = $request->variable('unip', array(0));
|
$unip_sql = $request->variable('unip', array(0));
|
||||||
|
|
||||||
if (sizeof($unip_sql))
|
if (count($unip_sql))
|
||||||
{
|
{
|
||||||
$l_unip_list = '';
|
$l_unip_list = '';
|
||||||
|
|
||||||
|
@@ -253,7 +253,7 @@ class acp_bbcodes
|
|||||||
|
|
||||||
if ($row)
|
if ($row)
|
||||||
{
|
{
|
||||||
$bbcode_id = $row['max_bbcode_id'] + 1;
|
$bbcode_id = (int) $row['max_bbcode_id'] + 1;
|
||||||
|
|
||||||
// Make sure it is greater than the core bbcode ids...
|
// Make sure it is greater than the core bbcode ids...
|
||||||
if ($bbcode_id <= NUM_CORE_BBCODES)
|
if ($bbcode_id <= NUM_CORE_BBCODES)
|
||||||
@@ -494,7 +494,7 @@ class acp_bbcodes
|
|||||||
// Pad backreference numbers from tokens
|
// Pad backreference numbers from tokens
|
||||||
if (preg_match_all('/(?<!\\\\)\$([0-9]+)/', $replace, $repad))
|
if (preg_match_all('/(?<!\\\\)\$([0-9]+)/', $replace, $repad))
|
||||||
{
|
{
|
||||||
$repad = $pad + sizeof(array_unique($repad[0]));
|
$repad = $pad + count(array_unique($repad[0]));
|
||||||
$replace = preg_replace_callback('/(?<!\\\\)\$([0-9]+)/', function ($match) use ($pad) {
|
$replace = preg_replace_callback('/(?<!\\\\)\$([0-9]+)/', function ($match) use ($pad) {
|
||||||
return '${' . ($match[1] + $pad) . '}';
|
return '${' . ($match[1] + $pad) . '}';
|
||||||
}, $replace);
|
}, $replace);
|
||||||
@@ -553,10 +553,10 @@ class acp_bbcodes
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lowercase tags
|
// Lowercase tags
|
||||||
$bbcode_tag = preg_replace('/.*?\[([a-z0-9_-]+=?).*/i', '$1', $bbcode_match);
|
$bbcode_tag = preg_replace('/.*?\[([a-z0-9_-]+).*/i', '$1', $bbcode_match);
|
||||||
$bbcode_search = preg_replace('/.*?\[([a-z0-9_-]+)=?.*/i', '$1', $bbcode_match);
|
$bbcode_search = preg_replace('/.*?\[([a-z0-9_-]+).*/i', '$1', $bbcode_match);
|
||||||
|
|
||||||
if (!preg_match('/^[a-zA-Z0-9_-]+=?$/', $bbcode_tag))
|
if (!preg_match('/^[a-zA-Z0-9_-]+$/', $bbcode_tag))
|
||||||
{
|
{
|
||||||
global $user;
|
global $user;
|
||||||
trigger_error($user->lang['BBCODE_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['BBCODE_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
@@ -26,7 +26,7 @@ if (!defined('IN_PHPBB'))
|
|||||||
class acp_board
|
class acp_board
|
||||||
{
|
{
|
||||||
var $u_action;
|
var $u_action;
|
||||||
var $new_config = array();
|
var $new_config;
|
||||||
|
|
||||||
function main($id, $mode)
|
function main($id, $mode)
|
||||||
{
|
{
|
||||||
@@ -196,6 +196,7 @@ class acp_board
|
|||||||
'allow_post_flash' => array('lang' => 'ALLOW_POST_FLASH', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_post_flash' => array('lang' => 'ALLOW_POST_FLASH', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'allow_smilies' => array('lang' => 'ALLOW_SMILIES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
'allow_smilies' => array('lang' => 'ALLOW_SMILIES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||||
'allow_post_links' => array('lang' => 'ALLOW_POST_LINKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_post_links' => array('lang' => 'ALLOW_POST_LINKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'allowed_schemes_links' => array('lang' => 'ALLOWED_SCHEMES_LINKS', 'validate' => 'string', 'type' => 'text:0:255', 'explain' => true),
|
||||||
'allow_nocensors' => array('lang' => 'ALLOW_NO_CENSORS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_nocensors' => array('lang' => 'ALLOW_NO_CENSORS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'allow_bookmarks' => array('lang' => 'ALLOW_BOOKMARKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_bookmarks' => array('lang' => 'ALLOW_BOOKMARKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'enable_post_confirm' => array('lang' => 'VISUAL_CONFIRM_POST', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'enable_post_confirm' => array('lang' => 'VISUAL_CONFIRM_POST', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
@@ -319,10 +320,10 @@ class acp_board
|
|||||||
'title' => 'ACP_COOKIE_SETTINGS',
|
'title' => 'ACP_COOKIE_SETTINGS',
|
||||||
'vars' => array(
|
'vars' => array(
|
||||||
'legend1' => 'ACP_COOKIE_SETTINGS',
|
'legend1' => 'ACP_COOKIE_SETTINGS',
|
||||||
'cookie_domain' => array('lang' => 'COOKIE_DOMAIN', 'validate' => 'string', 'type' => 'text::255', 'explain' => false),
|
'cookie_domain' => array('lang' => 'COOKIE_DOMAIN', 'validate' => 'string', 'type' => 'text::255', 'explain' => true),
|
||||||
'cookie_name' => array('lang' => 'COOKIE_NAME', 'validate' => 'string', 'type' => 'text::16', 'explain' => false),
|
'cookie_name' => array('lang' => 'COOKIE_NAME', 'validate' => 'string', 'type' => 'text::16', 'explain' => true),
|
||||||
'cookie_path' => array('lang' => 'COOKIE_PATH', 'validate' => 'string', 'type' => 'text::255', 'explain' => false),
|
'cookie_path' => array('lang' => 'COOKIE_PATH', 'validate' => 'string', 'type' => 'text::255', 'explain' => true),
|
||||||
'cookie_secure' => array('lang' => 'COOKIE_SECURE', 'validate' => 'bool', 'type' => 'radio:disabled_enabled', 'explain' => true),
|
'cookie_secure' => array('lang' => 'COOKIE_SECURE', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
||||||
'cookie_notice' => array('lang' => 'COOKIE_NOTICE', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
'cookie_notice' => array('lang' => 'COOKIE_NOTICE', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@@ -352,8 +353,10 @@ class acp_board
|
|||||||
'load_moderators' => array('lang' => 'YES_MODERATORS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
'load_moderators' => array('lang' => 'YES_MODERATORS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||||
'load_jumpbox' => array('lang' => 'YES_JUMPBOX', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
'load_jumpbox' => array('lang' => 'YES_JUMPBOX', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||||
'load_user_activity' => array('lang' => 'LOAD_USER_ACTIVITY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'load_user_activity' => array('lang' => 'LOAD_USER_ACTIVITY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'load_user_activity_limit' => array('lang' => 'LOAD_USER_ACTIVITY_LIMIT', 'validate' => 'int:0:99999999', 'type' => 'number:0:99999999', 'explain' => true),
|
||||||
'load_tplcompile' => array('lang' => 'RECOMPILE_STYLES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'load_tplcompile' => array('lang' => 'RECOMPILE_STYLES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'allow_cdn' => array('lang' => 'ALLOW_CDN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_cdn' => array('lang' => 'ALLOW_CDN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'enable_accurate_pm_button' => array('lang' => 'YES_ACCURATE_PM_BUTTON', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'allow_live_searches' => array('lang' => 'ALLOW_LIVE_SEARCHES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_live_searches' => array('lang' => 'ALLOW_LIVE_SEARCHES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
'legend3' => 'CUSTOM_PROFILE_FIELDS',
|
'legend3' => 'CUSTOM_PROFILE_FIELDS',
|
||||||
@@ -442,11 +445,11 @@ class acp_board
|
|||||||
'legend1' => 'GENERAL_SETTINGS',
|
'legend1' => 'GENERAL_SETTINGS',
|
||||||
'email_enable' => array('lang' => 'ENABLE_EMAIL', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
'email_enable' => array('lang' => 'ENABLE_EMAIL', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
||||||
'board_email_form' => array('lang' => 'BOARD_EMAIL_FORM', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
'board_email_form' => array('lang' => 'BOARD_EMAIL_FORM', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
||||||
'email_function_name' => array('lang' => 'EMAIL_FUNCTION_NAME', 'validate' => 'string', 'type' => 'text:20:50', 'explain' => true),
|
|
||||||
'email_package_size' => array('lang' => 'EMAIL_PACKAGE_SIZE', 'validate' => 'int:0', 'type' => 'number:0:99999', 'explain' => true),
|
'email_package_size' => array('lang' => 'EMAIL_PACKAGE_SIZE', 'validate' => 'int:0', 'type' => 'number:0:99999', 'explain' => true),
|
||||||
'board_contact' => array('lang' => 'CONTACT_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),
|
'board_contact' => array('lang' => 'CONTACT_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),
|
||||||
'board_contact_name' => array('lang' => 'CONTACT_EMAIL_NAME', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => true),
|
'board_contact_name' => array('lang' => 'CONTACT_EMAIL_NAME', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => true),
|
||||||
'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),
|
'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),
|
||||||
|
'email_force_sender' => array('lang' => 'EMAIL_FORCE_SENDER', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'board_email_sig' => array('lang' => 'EMAIL_SIG', 'validate' => 'string', 'type' => 'textarea:5:30', 'explain' => true),
|
'board_email_sig' => array('lang' => 'EMAIL_SIG', 'validate' => 'string', 'type' => 'textarea:5:30', 'explain' => true),
|
||||||
'board_hide_emails' => array('lang' => 'BOARD_HIDE_EMAILS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'board_hide_emails' => array('lang' => 'BOARD_HIDE_EMAILS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'send_test_email' => array('lang' => 'SEND_TEST_EMAIL', 'validate' => 'bool', 'type' => 'custom', 'method' => 'send_test_email', 'explain' => true),
|
'send_test_email' => array('lang' => 'SEND_TEST_EMAIL', 'validate' => 'bool', 'type' => 'custom', 'method' => 'send_test_email', 'explain' => true),
|
||||||
@@ -458,6 +461,9 @@ class acp_board
|
|||||||
'smtp_auth_method' => array('lang' => 'SMTP_AUTH_METHOD', 'validate' => 'string', 'type' => 'select', 'method' => 'mail_auth_select', 'explain' => true),
|
'smtp_auth_method' => array('lang' => 'SMTP_AUTH_METHOD', 'validate' => 'string', 'type' => 'select', 'method' => 'mail_auth_select', 'explain' => true),
|
||||||
'smtp_username' => array('lang' => 'SMTP_USERNAME', 'validate' => 'string', 'type' => 'text:25:255', 'explain' => true),
|
'smtp_username' => array('lang' => 'SMTP_USERNAME', 'validate' => 'string', 'type' => 'text:25:255', 'explain' => true),
|
||||||
'smtp_password' => array('lang' => 'SMTP_PASSWORD', 'validate' => 'string', 'type' => 'password:25:255', 'explain' => true),
|
'smtp_password' => array('lang' => 'SMTP_PASSWORD', 'validate' => 'string', 'type' => 'password:25:255', 'explain' => true),
|
||||||
|
'smtp_verify_peer' => array('lang' => 'SMTP_VERIFY_PEER', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'smtp_verify_peer_name' => array('lang' => 'SMTP_VERIFY_PEER_NAME', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'smtp_allow_self_signed'=> array('lang' => 'SMTP_ALLOW_SELF_SIGNED','validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
'legend3' => 'ACP_SUBMIT_CHANGES',
|
'legend3' => 'ACP_SUBMIT_CHANGES',
|
||||||
)
|
)
|
||||||
@@ -486,7 +492,7 @@ class acp_board
|
|||||||
$user->add_lang($display_vars['lang']);
|
$user->add_lang($display_vars['lang']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->new_config = $config;
|
$this->new_config = clone $config;
|
||||||
$cfg_array = (isset($_REQUEST['config'])) ? $request->variable('config', array('' => ''), true) : $this->new_config;
|
$cfg_array = (isset($_REQUEST['config'])) ? $request->variable('config', array('' => ''), true) : $this->new_config;
|
||||||
$error = array();
|
$error = array();
|
||||||
|
|
||||||
@@ -498,7 +504,7 @@ class acp_board
|
|||||||
$error[] = $user->lang['FORM_INVALID'];
|
$error[] = $user->lang['FORM_INVALID'];
|
||||||
}
|
}
|
||||||
// Do not write values if there is an error
|
// Do not write values if there is an error
|
||||||
if (sizeof($error))
|
if (count($error))
|
||||||
{
|
{
|
||||||
$submit = false;
|
$submit = false;
|
||||||
}
|
}
|
||||||
@@ -527,13 +533,6 @@ class acp_board
|
|||||||
|
|
||||||
$this->new_config[$config_name] = $config_value = $cfg_array[$config_name];
|
$this->new_config[$config_name] = $config_value = $cfg_array[$config_name];
|
||||||
|
|
||||||
if ($config_name == 'email_function_name')
|
|
||||||
{
|
|
||||||
$this->new_config['email_function_name'] = trim(str_replace(array('(', ')'), array('', ''), $this->new_config['email_function_name']));
|
|
||||||
$this->new_config['email_function_name'] = (empty($this->new_config['email_function_name']) || !function_exists($this->new_config['email_function_name'])) ? 'mail' : $this->new_config['email_function_name'];
|
|
||||||
$config_value = $this->new_config['email_function_name'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($submit)
|
if ($submit)
|
||||||
{
|
{
|
||||||
if (strpos($data['type'], 'password') === 0 && $config_value === '********')
|
if (strpos($data['type'], 'password') === 0 && $config_value === '********')
|
||||||
@@ -547,11 +546,17 @@ class acp_board
|
|||||||
|
|
||||||
if ($config_name == 'allow_quick_reply' && isset($_POST['allow_quick_reply_enable']))
|
if ($config_name == 'allow_quick_reply' && isset($_POST['allow_quick_reply_enable']))
|
||||||
{
|
{
|
||||||
enable_bitfield_column_flag(FORUMS_TABLE, 'forum_flags', log(FORUM_FLAG_QUICK_REPLY, 2));
|
enable_bitfield_column_flag(FORUMS_TABLE, 'forum_flags', round(log(FORUM_FLAG_QUICK_REPLY, 2)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Invalidate the text_formatter cache when posting options are changed
|
||||||
|
if ($mode == 'post' && $submit)
|
||||||
|
{
|
||||||
|
$phpbb_container->get('text_formatter.cache')->invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
// Store news and exclude ids
|
// Store news and exclude ids
|
||||||
if ($mode == 'feed' && $submit)
|
if ($mode == 'feed' && $submit)
|
||||||
{
|
{
|
||||||
@@ -679,7 +684,7 @@ class acp_board
|
|||||||
'L_TITLE' => $user->lang[$display_vars['title']],
|
'L_TITLE' => $user->lang[$display_vars['title']],
|
||||||
'L_TITLE_EXPLAIN' => $user->lang[$display_vars['title'] . '_EXPLAIN'],
|
'L_TITLE_EXPLAIN' => $user->lang[$display_vars['title'] . '_EXPLAIN'],
|
||||||
|
|
||||||
'S_ERROR' => (sizeof($error)) ? true : false,
|
'S_ERROR' => (count($error)) ? true : false,
|
||||||
'ERROR_MSG' => implode('<br />', $error),
|
'ERROR_MSG' => implode('<br />', $error),
|
||||||
|
|
||||||
'U_ACTION' => $this->u_action)
|
'U_ACTION' => $this->u_action)
|
||||||
@@ -1099,7 +1104,7 @@ class acp_board
|
|||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
// Already emptied for all...
|
// Already emptied for all...
|
||||||
if (sizeof($values))
|
if (count($values))
|
||||||
{
|
{
|
||||||
// Set for selected forums
|
// Set for selected forums
|
||||||
$sql = 'UPDATE ' . FORUMS_TABLE . '
|
$sql = 'UPDATE ' . FORUMS_TABLE . '
|
||||||
|
@@ -55,7 +55,7 @@ class acp_bots
|
|||||||
switch ($action)
|
switch ($action)
|
||||||
{
|
{
|
||||||
case 'activate':
|
case 'activate':
|
||||||
if ($bot_id || sizeof($mark))
|
if ($bot_id || count($mark))
|
||||||
{
|
{
|
||||||
$sql_id = ($bot_id) ? " = $bot_id" : ' IN (' . implode(', ', $mark) . ')';
|
$sql_id = ($bot_id) ? " = $bot_id" : ' IN (' . implode(', ', $mark) . ')';
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ class acp_bots
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'deactivate':
|
case 'deactivate':
|
||||||
if ($bot_id || sizeof($mark))
|
if ($bot_id || count($mark))
|
||||||
{
|
{
|
||||||
$sql_id = ($bot_id) ? " = $bot_id" : ' IN (' . implode(', ', $mark) . ')';
|
$sql_id = ($bot_id) ? " = $bot_id" : ' IN (' . implode(', ', $mark) . ')';
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ class acp_bots
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete':
|
case 'delete':
|
||||||
if ($bot_id || sizeof($mark))
|
if ($bot_id || count($mark))
|
||||||
{
|
{
|
||||||
if (confirm_box(true))
|
if (confirm_box(true))
|
||||||
{
|
{
|
||||||
@@ -109,7 +109,7 @@ class acp_bots
|
|||||||
WHERE bot_id $sql_id";
|
WHERE bot_id $sql_id";
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
if (sizeof($user_id_ary))
|
if (count($user_id_ary))
|
||||||
{
|
{
|
||||||
$_tables = array(USERS_TABLE, USER_GROUP_TABLE);
|
$_tables = array(USERS_TABLE, USER_GROUP_TABLE);
|
||||||
foreach ($_tables as $table)
|
foreach ($_tables as $table)
|
||||||
@@ -207,7 +207,7 @@ class acp_bots
|
|||||||
$error[] = $user->lang['BOT_NAME_TAKEN'];
|
$error[] = $user->lang['BOT_NAME_TAKEN'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
// New bot? Create a new user and group entry
|
// New bot? Create a new user and group entry
|
||||||
if ($action == 'add')
|
if ($action == 'add')
|
||||||
@@ -338,7 +338,7 @@ class acp_bots
|
|||||||
'L_TITLE' => $user->lang['BOT_' . $l_title],
|
'L_TITLE' => $user->lang['BOT_' . $l_title],
|
||||||
'U_ACTION' => $this->u_action . "&id=$bot_id&action=$action",
|
'U_ACTION' => $this->u_action . "&id=$bot_id&action=$action",
|
||||||
'U_BACK' => $this->u_action,
|
'U_BACK' => $this->u_action,
|
||||||
'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
'ERROR_MSG' => (count($error)) ? implode('<br />', $error) : '',
|
||||||
|
|
||||||
'BOT_NAME' => $bot_row['bot_name'],
|
'BOT_NAME' => $bot_row['bot_name'],
|
||||||
'BOT_IP' => $bot_row['bot_ip'],
|
'BOT_IP' => $bot_row['bot_ip'],
|
||||||
@@ -348,7 +348,7 @@ class acp_bots
|
|||||||
'S_ACTIVE_OPTIONS' => $s_active_options,
|
'S_ACTIVE_OPTIONS' => $s_active_options,
|
||||||
'S_STYLE_OPTIONS' => $style_select,
|
'S_STYLE_OPTIONS' => $style_select,
|
||||||
'S_LANG_OPTIONS' => $lang_select,
|
'S_LANG_OPTIONS' => $lang_select,
|
||||||
'S_ERROR' => (sizeof($error)) ? true : false,
|
'S_ERROR' => (count($error)) ? true : false,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@@ -59,7 +59,7 @@ class acp_database
|
|||||||
$format = $request->variable('method', '');
|
$format = $request->variable('method', '');
|
||||||
$where = $request->variable('where', '');
|
$where = $request->variable('where', '');
|
||||||
|
|
||||||
if (!sizeof($table))
|
if (!count($table))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['TABLE_SELECT_ERROR'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['TABLE_SELECT_ERROR'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
@@ -495,7 +495,7 @@ function sanitize_data_mssql($text)
|
|||||||
{
|
{
|
||||||
$val[] = "'" . $value . "'";
|
$val[] = "'" . $value . "'";
|
||||||
}
|
}
|
||||||
if (sizeof($matches[0]))
|
if (count($matches[0]))
|
||||||
{
|
{
|
||||||
$val[] = 'char(' . ord(array_shift($matches[0])) . ')';
|
$val[] = 'char(' . ord(array_shift($matches[0])) . ')';
|
||||||
}
|
}
|
||||||
@@ -519,7 +519,7 @@ function sanitize_data_oracle($text)
|
|||||||
{
|
{
|
||||||
$val[] = "'" . $value . "'";
|
$val[] = "'" . $value . "'";
|
||||||
}
|
}
|
||||||
if (sizeof($matches[0]))
|
if (count($matches[0]))
|
||||||
{
|
{
|
||||||
$val[] = 'chr(' . ord(array_shift($matches[0])) . ')';
|
$val[] = 'chr(' . ord(array_shift($matches[0])) . ')';
|
||||||
}
|
}
|
||||||
@@ -541,7 +541,7 @@ function sanitize_data_generic($text)
|
|||||||
{
|
{
|
||||||
$val[] = "'" . $value . "'";
|
$val[] = "'" . $value . "'";
|
||||||
}
|
}
|
||||||
if (sizeof($matches[0]))
|
if (count($matches[0]))
|
||||||
{
|
{
|
||||||
$val[] = "'" . array_shift($matches[0]) . "'";
|
$val[] = "'" . array_shift($matches[0]) . "'";
|
||||||
}
|
}
|
||||||
@@ -583,7 +583,7 @@ function fgetd_seekless(&$fp, $delim, $read, $seek, $eof, $buffer = 8192)
|
|||||||
static $array = array();
|
static $array = array();
|
||||||
static $record = '';
|
static $record = '';
|
||||||
|
|
||||||
if (!sizeof($array))
|
if (!count($array))
|
||||||
{
|
{
|
||||||
while (!$eof($fp))
|
while (!$eof($fp))
|
||||||
{
|
{
|
||||||
@@ -605,7 +605,7 @@ function fgetd_seekless(&$fp, $delim, $read, $seek, $eof, $buffer = 8192)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($array))
|
if (count($array))
|
||||||
{
|
{
|
||||||
return array_shift($array);
|
return array_shift($array);
|
||||||
}
|
}
|
||||||
|
@@ -68,7 +68,7 @@ class acp_email
|
|||||||
$error[] = $user->lang['NO_EMAIL_MESSAGE'];
|
$error[] = $user->lang['NO_EMAIL_MESSAGE'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
if (!empty($usernames))
|
if (!empty($usernames))
|
||||||
{
|
{
|
||||||
@@ -168,7 +168,7 @@ class acp_email
|
|||||||
{
|
{
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
if (sizeof($email_list))
|
if (count($email_list))
|
||||||
{
|
{
|
||||||
$j++;
|
$j++;
|
||||||
}
|
}
|
||||||
@@ -235,16 +235,16 @@ class acp_email
|
|||||||
);
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_email_send_before', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_email_send_before', compact($vars)));
|
||||||
|
|
||||||
for ($i = 0, $size = sizeof($email_list); $i < $size; $i++)
|
for ($i = 0, $size = count($email_list); $i < $size; $i++)
|
||||||
{
|
{
|
||||||
$used_lang = $email_list[$i][0]['lang'];
|
$used_lang = $email_list[$i][0]['lang'];
|
||||||
$used_method = $email_list[$i][0]['method'];
|
$used_method = $email_list[$i][0]['method'];
|
||||||
|
|
||||||
for ($j = 0, $list_size = sizeof($email_list[$i]); $j < $list_size; $j++)
|
for ($j = 0, $list_size = count($email_list[$i]); $j < $list_size; $j++)
|
||||||
{
|
{
|
||||||
$email_row = $email_list[$i][$j];
|
$email_row = $email_list[$i][$j];
|
||||||
|
|
||||||
$messenger->{((sizeof($email_list[$i]) == 1) ? 'to' : 'bcc')}($email_row['email'], $email_row['name']);
|
$messenger->{((count($email_list[$i]) == 1) ? 'to' : 'bcc')}($email_row['email'], $email_row['name']);
|
||||||
$messenger->im($email_row['jabber'], $email_row['name']);
|
$messenger->im($email_row['jabber'], $email_row['name']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,8 +322,8 @@ class acp_email
|
|||||||
$s_priority_options .= '<option value="' . MAIL_HIGH_PRIORITY . '">' . $user->lang['MAIL_HIGH_PRIORITY'] . '</option>';
|
$s_priority_options .= '<option value="' . MAIL_HIGH_PRIORITY . '">' . $user->lang['MAIL_HIGH_PRIORITY'] . '</option>';
|
||||||
|
|
||||||
$template_data = array(
|
$template_data = array(
|
||||||
'S_WARNING' => (sizeof($error)) ? true : false,
|
'S_WARNING' => (count($error)) ? true : false,
|
||||||
'WARNING_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
'WARNING_MSG' => (count($error)) ? implode('<br />', $error) : '',
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
'S_GROUP_OPTIONS' => $select_list,
|
'S_GROUP_OPTIONS' => $select_list,
|
||||||
'USERNAMES' => implode("\n", $usernames),
|
'USERNAMES' => implode("\n", $usernames),
|
||||||
|
@@ -25,71 +25,79 @@ if (!defined('IN_PHPBB'))
|
|||||||
class acp_extensions
|
class acp_extensions
|
||||||
{
|
{
|
||||||
var $u_action;
|
var $u_action;
|
||||||
|
var $tpl_name;
|
||||||
|
var $page_title;
|
||||||
|
|
||||||
private $db;
|
|
||||||
private $config;
|
private $config;
|
||||||
private $template;
|
private $template;
|
||||||
private $user;
|
private $user;
|
||||||
private $cache;
|
|
||||||
private $log;
|
private $log;
|
||||||
private $request;
|
private $request;
|
||||||
|
private $phpbb_dispatcher;
|
||||||
|
private $ext_manager;
|
||||||
|
|
||||||
function main()
|
function main()
|
||||||
{
|
{
|
||||||
// Start the page
|
// Start the page
|
||||||
global $config, $user, $template, $request, $phpbb_extension_manager, $db, $phpbb_root_path, $phpbb_log, $cache, $phpbb_dispatcher;
|
global $config, $user, $template, $request, $phpbb_extension_manager, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher;
|
||||||
|
|
||||||
$this->db = $db;
|
|
||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
$this->template = $template;
|
$this->template = $template;
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
$this->cache = $cache;
|
|
||||||
$this->request = $request;
|
$this->request = $request;
|
||||||
$this->log = $phpbb_log;
|
$this->log = $phpbb_log;
|
||||||
$this->phpbb_dispatcher = $phpbb_dispatcher;
|
$this->phpbb_dispatcher = $phpbb_dispatcher;
|
||||||
|
$this->ext_manager = $phpbb_extension_manager;
|
||||||
|
|
||||||
$user->add_lang(array('install', 'acp/extensions', 'migrator'));
|
$this->user->add_lang(array('install', 'acp/extensions', 'migrator'));
|
||||||
|
|
||||||
$this->page_title = 'ACP_EXTENSIONS';
|
$this->page_title = 'ACP_EXTENSIONS';
|
||||||
|
|
||||||
$action = $request->variable('action', 'list');
|
$action = $this->request->variable('action', 'list');
|
||||||
$ext_name = $request->variable('ext_name', '');
|
$ext_name = $this->request->variable('ext_name', '');
|
||||||
|
|
||||||
// What is a safe limit of execution time? Half the max execution time should be safe.
|
// What is a safe limit of execution time? Half the max execution time should be safe.
|
||||||
$safe_time_limit = (ini_get('max_execution_time') / 2);
|
$safe_time_limit = (ini_get('max_execution_time') / 2);
|
||||||
$start_time = time();
|
$start_time = time();
|
||||||
|
|
||||||
/**
|
|
||||||
* Event to run a specific action on extension
|
|
||||||
*
|
|
||||||
* @event core.acp_extensions_run_action
|
|
||||||
* @var string action Action to run
|
|
||||||
* @var string u_action Url we are at
|
|
||||||
* @var string ext_name Extension name from request
|
|
||||||
* @var int safe_time_limit Safe limit of execution time
|
|
||||||
* @var int start_time Start time
|
|
||||||
* @since 3.1.11-RC1
|
|
||||||
*/
|
|
||||||
$u_action = $this->u_action;
|
|
||||||
$vars = array('action', 'u_action', 'ext_name', 'safe_time_limit', 'start_time');
|
|
||||||
extract($this->phpbb_dispatcher->trigger_event('core.acp_extensions_run_action', compact($vars)));
|
|
||||||
|
|
||||||
// Cancel action
|
// Cancel action
|
||||||
if ($request->is_set_post('cancel'))
|
if ($this->request->is_set_post('cancel'))
|
||||||
{
|
{
|
||||||
$action = 'list';
|
$action = 'list';
|
||||||
$ext_name = '';
|
$ext_name = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($action, array('enable', 'disable', 'delete_data')) && !check_link_hash($request->variable('hash', ''), $action . '.' . $ext_name))
|
if (in_array($action, array('enable', 'disable', 'delete_data')) && !check_link_hash($this->request->variable('hash', ''), $action . '.' . $ext_name))
|
||||||
{
|
{
|
||||||
trigger_error('FORM_INVALID', E_USER_WARNING);
|
trigger_error('FORM_INVALID', E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event to run a specific action on extension
|
||||||
|
*
|
||||||
|
* @event core.acp_extensions_run_action_before
|
||||||
|
* @var string action Action to run; if the event completes execution of the action, should be set to 'none'
|
||||||
|
* @var string u_action Url we are at
|
||||||
|
* @var string ext_name Extension name from request
|
||||||
|
* @var int safe_time_limit Safe limit of execution time
|
||||||
|
* @var int start_time Start time
|
||||||
|
* @var string tpl_name Template file to load
|
||||||
|
* @since 3.1.11-RC1
|
||||||
|
* @changed 3.2.1-RC1 Renamed to core.acp_extensions_run_action_before, added tpl_name, added action 'none'
|
||||||
|
*/
|
||||||
|
$u_action = $this->u_action;
|
||||||
|
$tpl_name = '';
|
||||||
|
$vars = array('action', 'u_action', 'ext_name', 'safe_time_limit', 'start_time', 'tpl_name');
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.acp_extensions_run_action_before', compact($vars)));
|
||||||
|
|
||||||
|
// In case they have been updated by the event
|
||||||
|
$this->u_action = $u_action;
|
||||||
|
$this->tpl_name = $tpl_name;
|
||||||
|
|
||||||
// If they've specified an extension, let's load the metadata manager and validate it.
|
// If they've specified an extension, let's load the metadata manager and validate it.
|
||||||
if ($ext_name)
|
if ($ext_name)
|
||||||
{
|
{
|
||||||
$md_manager = new \phpbb\extension\metadata_manager($ext_name, $config, $phpbb_extension_manager, $phpbb_root_path);
|
$md_manager = $this->ext_manager->create_extension_metadata_manager($ext_name);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -98,13 +106,17 @@ class acp_extensions
|
|||||||
catch (exception_interface $e)
|
catch (exception_interface $e)
|
||||||
{
|
{
|
||||||
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
||||||
trigger_error($message, E_USER_WARNING);
|
trigger_error($message . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// What are we doing?
|
// What are we doing?
|
||||||
switch ($action)
|
switch ($action)
|
||||||
{
|
{
|
||||||
|
case 'none':
|
||||||
|
// Intentionally empty, used by extensions that execute additional actions in the prior event
|
||||||
|
break;
|
||||||
|
|
||||||
case 'set_config_version_check_force_unstable':
|
case 'set_config_version_check_force_unstable':
|
||||||
$force_unstable = $this->request->variable('force_unstable', false);
|
$force_unstable = $this->request->variable('force_unstable', false);
|
||||||
|
|
||||||
@@ -114,12 +126,12 @@ class acp_extensions
|
|||||||
'force_unstable' => $force_unstable,
|
'force_unstable' => $force_unstable,
|
||||||
));
|
));
|
||||||
|
|
||||||
confirm_box(false, $user->lang('EXTENSION_FORCE_UNSTABLE_CONFIRM'), $s_hidden_fields);
|
confirm_box(false, $this->user->lang('EXTENSION_FORCE_UNSTABLE_CONFIRM'), $s_hidden_fields);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$config->set('extension_force_unstable', false);
|
$this->config->set('extension_force_unstable', false);
|
||||||
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
trigger_error($this->user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -127,17 +139,17 @@ class acp_extensions
|
|||||||
default:
|
default:
|
||||||
if (confirm_box(true))
|
if (confirm_box(true))
|
||||||
{
|
{
|
||||||
$config->set('extension_force_unstable', true);
|
$this->config->set('extension_force_unstable', true);
|
||||||
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
trigger_error($this->user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->list_enabled_exts($phpbb_extension_manager);
|
$this->list_enabled_exts();
|
||||||
$this->list_disabled_exts($phpbb_extension_manager);
|
$this->list_disabled_exts();
|
||||||
$this->list_available_exts($phpbb_extension_manager);
|
$this->list_available_exts();
|
||||||
|
|
||||||
$this->template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1',
|
'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1',
|
||||||
'FORCE_UNSTABLE' => $config['extension_force_unstable'],
|
'FORCE_UNSTABLE' => $this->config['extension_force_unstable'],
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
));
|
));
|
||||||
|
|
||||||
@@ -145,30 +157,30 @@ class acp_extensions
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'enable_pre':
|
case 'enable_pre':
|
||||||
if (!$md_manager->validate_dir())
|
try
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['EXTENSION_DIR_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
$md_manager->validate_enable();
|
||||||
|
}
|
||||||
|
catch (exception_interface $e)
|
||||||
|
{
|
||||||
|
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
||||||
|
trigger_error($message . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$md_manager->validate_enable())
|
$extension = $this->ext_manager->get_extension($ext_name);
|
||||||
{
|
|
||||||
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
|
||||||
}
|
|
||||||
|
|
||||||
$extension = $phpbb_extension_manager->get_extension($ext_name);
|
|
||||||
if (!$extension->is_enableable())
|
if (!$extension->is_enableable())
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($phpbb_extension_manager->is_enabled($ext_name))
|
if ($this->ext_manager->is_enabled($ext_name))
|
||||||
{
|
{
|
||||||
redirect($this->u_action);
|
redirect($this->u_action);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->tpl_name = 'acp_ext_enable';
|
$this->tpl_name = 'acp_ext_enable';
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'PRE' => true,
|
'PRE' => true,
|
||||||
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_ENABLE_CONFIRM', $md_manager->get_metadata('display-name')),
|
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_ENABLE_CONFIRM', $md_manager->get_metadata('display-name')),
|
||||||
'U_ENABLE' => $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name),
|
'U_ENABLE' => $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name),
|
||||||
@@ -176,57 +188,66 @@ class acp_extensions
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'enable':
|
case 'enable':
|
||||||
if (!$md_manager->validate_dir())
|
try
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['EXTENSION_DIR_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
$md_manager->validate_enable();
|
||||||
|
}
|
||||||
|
catch (exception_interface $e)
|
||||||
|
{
|
||||||
|
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
||||||
|
trigger_error($message . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$md_manager->validate_enable())
|
$extension = $this->ext_manager->get_extension($ext_name);
|
||||||
{
|
|
||||||
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
|
||||||
}
|
|
||||||
|
|
||||||
$extension = $phpbb_extension_manager->get_extension($ext_name);
|
|
||||||
if (!$extension->is_enableable())
|
if (!$extension->is_enableable())
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
while ($phpbb_extension_manager->enable_step($ext_name))
|
while ($this->ext_manager->enable_step($ext_name))
|
||||||
{
|
{
|
||||||
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||||
if ((time() - $start_time) >= $safe_time_limit)
|
if ((time() - $start_time) >= $safe_time_limit)
|
||||||
{
|
{
|
||||||
$template->assign_var('S_NEXT_STEP', true);
|
$this->template->assign_var('S_NEXT_STEP', true);
|
||||||
|
|
||||||
meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name));
|
meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE', time(), array($ext_name));
|
|
||||||
|
// Update custom style for admin area
|
||||||
|
$this->template->set_custom_style(array(
|
||||||
|
array(
|
||||||
|
'name' => 'adm',
|
||||||
|
'ext_path' => 'adm/style/',
|
||||||
|
),
|
||||||
|
), array($phpbb_root_path . 'adm/style'));
|
||||||
|
|
||||||
|
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_ENABLE', time(), array($ext_name));
|
||||||
}
|
}
|
||||||
catch (\phpbb\db\migration\exception $e)
|
catch (\phpbb\db\migration\exception $e)
|
||||||
{
|
{
|
||||||
$template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user));
|
$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->tpl_name = 'acp_ext_enable';
|
$this->tpl_name = 'acp_ext_enable';
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'U_RETURN' => $this->u_action . '&action=list',
|
'U_RETURN' => $this->u_action . '&action=list',
|
||||||
));
|
));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'disable_pre':
|
case 'disable_pre':
|
||||||
if (!$phpbb_extension_manager->is_enabled($ext_name))
|
if (!$this->ext_manager->is_enabled($ext_name))
|
||||||
{
|
{
|
||||||
redirect($this->u_action);
|
redirect($this->u_action);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->tpl_name = 'acp_ext_disable';
|
$this->tpl_name = 'acp_ext_disable';
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'PRE' => true,
|
'PRE' => true,
|
||||||
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_DISABLE_CONFIRM', $md_manager->get_metadata('display-name')),
|
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_DISABLE_CONFIRM', $md_manager->get_metadata('display-name')),
|
||||||
'U_DISABLE' => $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name),
|
'U_DISABLE' => $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name),
|
||||||
@@ -234,38 +255,38 @@ class acp_extensions
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'disable':
|
case 'disable':
|
||||||
if (!$phpbb_extension_manager->is_enabled($ext_name))
|
if (!$this->ext_manager->is_enabled($ext_name))
|
||||||
{
|
{
|
||||||
redirect($this->u_action);
|
redirect($this->u_action);
|
||||||
}
|
}
|
||||||
|
|
||||||
while ($phpbb_extension_manager->disable_step($ext_name))
|
while ($this->ext_manager->disable_step($ext_name))
|
||||||
{
|
{
|
||||||
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||||
if ((time() - $start_time) >= $safe_time_limit)
|
if ((time() - $start_time) >= $safe_time_limit)
|
||||||
{
|
{
|
||||||
$template->assign_var('S_NEXT_STEP', true);
|
$this->template->assign_var('S_NEXT_STEP', true);
|
||||||
|
|
||||||
meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name));
|
meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_DISABLE', time(), array($ext_name));
|
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_DISABLE', time(), array($ext_name));
|
||||||
|
|
||||||
$this->tpl_name = 'acp_ext_disable';
|
$this->tpl_name = 'acp_ext_disable';
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'U_RETURN' => $this->u_action . '&action=list',
|
'U_RETURN' => $this->u_action . '&action=list',
|
||||||
));
|
));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete_data_pre':
|
case 'delete_data_pre':
|
||||||
if ($phpbb_extension_manager->is_enabled($ext_name))
|
if ($this->ext_manager->is_enabled($ext_name))
|
||||||
{
|
{
|
||||||
redirect($this->u_action);
|
redirect($this->u_action);
|
||||||
}
|
}
|
||||||
$this->tpl_name = 'acp_ext_delete_data';
|
$this->tpl_name = 'acp_ext_delete_data';
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'PRE' => true,
|
'PRE' => true,
|
||||||
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_DELETE_DATA_CONFIRM', $md_manager->get_metadata('display-name')),
|
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_DELETE_DATA_CONFIRM', $md_manager->get_metadata('display-name')),
|
||||||
'U_PURGE' => $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name),
|
'U_PURGE' => $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name),
|
||||||
@@ -273,75 +294,72 @@ class acp_extensions
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete_data':
|
case 'delete_data':
|
||||||
if ($phpbb_extension_manager->is_enabled($ext_name))
|
if ($this->ext_manager->is_enabled($ext_name))
|
||||||
{
|
{
|
||||||
redirect($this->u_action);
|
redirect($this->u_action);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
while ($phpbb_extension_manager->purge_step($ext_name))
|
while ($this->ext_manager->purge_step($ext_name))
|
||||||
{
|
{
|
||||||
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||||
if ((time() - $start_time) >= $safe_time_limit)
|
if ((time() - $start_time) >= $safe_time_limit)
|
||||||
{
|
{
|
||||||
$template->assign_var('S_NEXT_STEP', true);
|
$this->template->assign_var('S_NEXT_STEP', true);
|
||||||
|
|
||||||
meta_refresh(0, $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name));
|
meta_refresh(0, $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE', time(), array($ext_name));
|
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_PURGE', time(), array($ext_name));
|
||||||
}
|
}
|
||||||
catch (\phpbb\db\migration\exception $e)
|
catch (\phpbb\db\migration\exception $e)
|
||||||
{
|
{
|
||||||
$template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user));
|
$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->tpl_name = 'acp_ext_delete_data';
|
$this->tpl_name = 'acp_ext_delete_data';
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'U_RETURN' => $this->u_action . '&action=list',
|
'U_RETURN' => $this->u_action . '&action=list',
|
||||||
));
|
));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'details':
|
case 'details':
|
||||||
// Output it to the template
|
// Output it to the template
|
||||||
$md_manager->output_template_data($template);
|
|
||||||
|
|
||||||
$meta = $md_manager->get_metadata('all');
|
$meta = $md_manager->get_metadata('all');
|
||||||
|
$this->output_metadata_to_template($meta);
|
||||||
|
|
||||||
if (isset($meta['extra']['version-check']))
|
if (isset($meta['extra']['version-check']))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$updates_available = $phpbb_extension_manager->version_check($md_manager, $request->variable('versioncheck_force', false), $this->config['extension_force_unstable'] ? 'unstable' : null);
|
$updates_available = $this->ext_manager->version_check($md_manager, $this->request->variable('versioncheck_force', false), false, $this->config['extension_force_unstable'] ? 'unstable' : null);
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'S_UP_TO_DATE' => empty($updates_available),
|
'S_UP_TO_DATE' => empty($updates_available),
|
||||||
'UP_TO_DATE_MSG' => $this->user->lang(empty($updates_available) ? 'UP_TO_DATE' : 'NOT_UP_TO_DATE', $md_manager->get_metadata('display-name')),
|
'UP_TO_DATE_MSG' => $this->user->lang(empty($updates_available) ? 'UP_TO_DATE' : 'NOT_UP_TO_DATE', $md_manager->get_metadata('display-name')),
|
||||||
));
|
));
|
||||||
|
|
||||||
foreach ($updates_available as $branch => $version_data)
|
$this->template->assign_block_vars('updates_available', $updates_available);
|
||||||
{
|
|
||||||
$template->assign_block_vars('updates_available', $version_data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (exception_interface $e)
|
catch (exception_interface $e)
|
||||||
{
|
{
|
||||||
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'S_VERSIONCHECK_FAIL' => true,
|
'S_VERSIONCHECK_FAIL' => true,
|
||||||
'VERSIONCHECK_FAIL_REASON' => ($e->getMessage() !== 'VERSIONCHECK_FAIL') ? $message : '',
|
'VERSIONCHECK_FAIL_REASON' => ($e->getMessage() !== 'VERSIONCHECK_FAIL') ? $message : '',
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
$template->assign_var('S_VERSIONCHECK', true);
|
$this->template->assign_var('S_VERSIONCHECK', true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$template->assign_var('S_VERSIONCHECK', false);
|
$this->template->assign_var('S_VERSIONCHECK', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$this->template->assign_vars(array(
|
||||||
'U_BACK' => $this->u_action . '&action=list',
|
'U_BACK' => $this->u_action . '&action=list',
|
||||||
'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=details&versioncheck_force=1&ext_name=' . urlencode($md_manager->get_metadata('name')),
|
'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=details&versioncheck_force=1&ext_name=' . urlencode($md_manager->get_metadata('name')),
|
||||||
));
|
));
|
||||||
@@ -349,21 +367,41 @@ class acp_extensions
|
|||||||
$this->tpl_name = 'acp_ext_details';
|
$this->tpl_name = 'acp_ext_details';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event to run after a specific action on extension has completed
|
||||||
|
*
|
||||||
|
* @event core.acp_extensions_run_action_after
|
||||||
|
* @var string action Action that has run
|
||||||
|
* @var string u_action Url we are at
|
||||||
|
* @var string ext_name Extension name from request
|
||||||
|
* @var int safe_time_limit Safe limit of execution time
|
||||||
|
* @var int start_time Start time
|
||||||
|
* @var string tpl_name Template file to load
|
||||||
|
* @since 3.1.11-RC1
|
||||||
|
*/
|
||||||
|
$u_action = $this->u_action;
|
||||||
|
$tpl_name = $this->tpl_name;
|
||||||
|
$vars = array('action', 'u_action', 'ext_name', 'safe_time_limit', 'start_time', 'tpl_name');
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.acp_extensions_run_action_after', compact($vars)));
|
||||||
|
|
||||||
|
// In case they have been updated by the event
|
||||||
|
$this->u_action = $u_action;
|
||||||
|
$this->tpl_name = $tpl_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists all the enabled extensions and dumps to the template
|
* Lists all the enabled extensions and dumps to the template
|
||||||
*
|
*
|
||||||
* @param $phpbb_extension_manager An instance of the extension manager
|
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
public function list_enabled_exts(\phpbb\extension\manager $phpbb_extension_manager)
|
public function list_enabled_exts()
|
||||||
{
|
{
|
||||||
$enabled_extension_meta_data = array();
|
$enabled_extension_meta_data = array();
|
||||||
|
|
||||||
foreach ($phpbb_extension_manager->all_enabled() as $name => $location)
|
foreach ($this->ext_manager->all_enabled() as $name => $location)
|
||||||
{
|
{
|
||||||
$md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name);
|
$md_manager = $this->ext_manager->create_extension_metadata_manager($name);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -378,7 +416,7 @@ class acp_extensions
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
$force_update = $this->request->variable('versioncheck_force', false);
|
$force_update = $this->request->variable('versioncheck_force', false);
|
||||||
$updates = $phpbb_extension_manager->version_check($md_manager, $force_update, !$force_update);
|
$updates = $this->ext_manager->version_check($md_manager, $force_update, !$force_update);
|
||||||
|
|
||||||
$enabled_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
|
$enabled_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
|
||||||
$enabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
$enabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
||||||
@@ -426,16 +464,15 @@ class acp_extensions
|
|||||||
/**
|
/**
|
||||||
* Lists all the disabled extensions and dumps to the template
|
* Lists all the disabled extensions and dumps to the template
|
||||||
*
|
*
|
||||||
* @param $phpbb_extension_manager An instance of the extension manager
|
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
public function list_disabled_exts(\phpbb\extension\manager $phpbb_extension_manager)
|
public function list_disabled_exts()
|
||||||
{
|
{
|
||||||
$disabled_extension_meta_data = array();
|
$disabled_extension_meta_data = array();
|
||||||
|
|
||||||
foreach ($phpbb_extension_manager->all_disabled() as $name => $location)
|
foreach ($this->ext_manager->all_disabled() as $name => $location)
|
||||||
{
|
{
|
||||||
$md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name);
|
$md_manager = $this->ext_manager->create_extension_metadata_manager($name);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -448,7 +485,7 @@ class acp_extensions
|
|||||||
if (isset($meta['extra']['version-check']))
|
if (isset($meta['extra']['version-check']))
|
||||||
{
|
{
|
||||||
$force_update = $this->request->variable('versioncheck_force', false);
|
$force_update = $this->request->variable('versioncheck_force', false);
|
||||||
$updates = $phpbb_extension_manager->version_check($md_manager, $force_update, !$force_update);
|
$updates = $this->ext_manager->version_check($md_manager, $force_update, !$force_update);
|
||||||
|
|
||||||
$disabled_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
|
$disabled_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
|
||||||
$disabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
$disabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
||||||
@@ -496,18 +533,17 @@ class acp_extensions
|
|||||||
/**
|
/**
|
||||||
* Lists all the available extensions and dumps to the template
|
* Lists all the available extensions and dumps to the template
|
||||||
*
|
*
|
||||||
* @param $phpbb_extension_manager An instance of the extension manager
|
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
public function list_available_exts(\phpbb\extension\manager $phpbb_extension_manager)
|
public function list_available_exts()
|
||||||
{
|
{
|
||||||
$uninstalled = array_diff_key($phpbb_extension_manager->all_available(), $phpbb_extension_manager->all_configured());
|
$uninstalled = array_diff_key($this->ext_manager->all_available(), $this->ext_manager->all_configured());
|
||||||
|
|
||||||
$available_extension_meta_data = array();
|
$available_extension_meta_data = array();
|
||||||
|
|
||||||
foreach ($uninstalled as $name => $location)
|
foreach ($uninstalled as $name => $location)
|
||||||
{
|
{
|
||||||
$md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name);
|
$md_manager = $this->ext_manager->create_extension_metadata_manager($name);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -520,7 +556,7 @@ class acp_extensions
|
|||||||
if (isset($meta['extra']['version-check']))
|
if (isset($meta['extra']['version-check']))
|
||||||
{
|
{
|
||||||
$force_update = $this->request->variable('versioncheck_force', false);
|
$force_update = $this->request->variable('versioncheck_force', false);
|
||||||
$updates = $phpbb_extension_manager->version_check($md_manager, $force_update, !$force_update);
|
$updates = $this->ext_manager->version_check($md_manager, $force_update, !$force_update);
|
||||||
|
|
||||||
$available_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
|
$available_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
|
||||||
$available_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
$available_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
||||||
@@ -585,4 +621,41 @@ class acp_extensions
|
|||||||
{
|
{
|
||||||
return strnatcasecmp($val1['META_DISPLAY_NAME'], $val2['META_DISPLAY_NAME']);
|
return strnatcasecmp($val1['META_DISPLAY_NAME'], $val2['META_DISPLAY_NAME']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Outputs extension metadata into the template
|
||||||
|
*
|
||||||
|
* @param array $metadata Array with all metadata for the extension
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function output_metadata_to_template($metadata)
|
||||||
|
{
|
||||||
|
$this->template->assign_vars(array(
|
||||||
|
'META_NAME' => $metadata['name'],
|
||||||
|
'META_TYPE' => $metadata['type'],
|
||||||
|
'META_DESCRIPTION' => (isset($metadata['description'])) ? $metadata['description'] : '',
|
||||||
|
'META_HOMEPAGE' => (isset($metadata['homepage'])) ? $metadata['homepage'] : '',
|
||||||
|
'META_VERSION' => $metadata['version'],
|
||||||
|
'META_TIME' => (isset($metadata['time'])) ? $metadata['time'] : '',
|
||||||
|
'META_LICENSE' => $metadata['license'],
|
||||||
|
|
||||||
|
'META_REQUIRE_PHP' => (isset($metadata['require']['php'])) ? $metadata['require']['php'] : '',
|
||||||
|
'META_REQUIRE_PHP_FAIL' => (isset($metadata['require']['php'])) ? false : true,
|
||||||
|
|
||||||
|
'META_REQUIRE_PHPBB' => (isset($metadata['extra']['soft-require']['phpbb/phpbb'])) ? $metadata['extra']['soft-require']['phpbb/phpbb'] : '',
|
||||||
|
'META_REQUIRE_PHPBB_FAIL' => (isset($metadata['extra']['soft-require']['phpbb/phpbb'])) ? false : true,
|
||||||
|
|
||||||
|
'META_DISPLAY_NAME' => (isset($metadata['extra']['display-name'])) ? $metadata['extra']['display-name'] : '',
|
||||||
|
));
|
||||||
|
|
||||||
|
foreach ($metadata['authors'] as $author)
|
||||||
|
{
|
||||||
|
$this->template->assign_block_vars('meta_authors', array(
|
||||||
|
'AUTHOR_NAME' => $author['name'],
|
||||||
|
'AUTHOR_EMAIL' => (isset($author['email'])) ? $author['email'] : '',
|
||||||
|
'AUTHOR_HOMEPAGE' => (isset($author['homepage'])) ? $author['homepage'] : '',
|
||||||
|
'AUTHOR_ROLE' => (isset($author['role'])) ? $author['role'] : '',
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -90,7 +90,7 @@ class acp_forums
|
|||||||
|
|
||||||
$errors = $this->delete_forum($forum_id, $action_posts, $action_subforums, $posts_to_id, $subforums_to_id);
|
$errors = $this->delete_forum($forum_id, $action_posts, $action_subforums, $posts_to_id, $subforums_to_id);
|
||||||
|
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -198,7 +198,7 @@ class acp_forums
|
|||||||
|
|
||||||
$errors = $this->update_forum_data($forum_data);
|
$errors = $this->update_forum_data($forum_data);
|
||||||
|
|
||||||
if (!sizeof($errors))
|
if (!count($errors))
|
||||||
{
|
{
|
||||||
$forum_perm_from = $request->variable('forum_perm_from', 0);
|
$forum_perm_from = $request->variable('forum_perm_from', 0);
|
||||||
$cache->destroy('sql', FORUMS_TABLE);
|
$cache->destroy('sql', FORUMS_TABLE);
|
||||||
@@ -622,7 +622,7 @@ class acp_forums
|
|||||||
|
|
||||||
$template_data = array(
|
$template_data = array(
|
||||||
'S_EDIT_FORUM' => true,
|
'S_EDIT_FORUM' => true,
|
||||||
'S_ERROR' => (sizeof($errors)) ? true : false,
|
'S_ERROR' => (count($errors)) ? true : false,
|
||||||
'S_PARENT_ID' => $this->parent_id,
|
'S_PARENT_ID' => $this->parent_id,
|
||||||
'S_FORUM_PARENT_ID' => $forum_data['parent_id'],
|
'S_FORUM_PARENT_ID' => $forum_data['parent_id'],
|
||||||
'S_ADD_ACTION' => ($action == 'add') ? true : false,
|
'S_ADD_ACTION' => ($action == 'add') ? true : false,
|
||||||
@@ -632,7 +632,7 @@ class acp_forums
|
|||||||
|
|
||||||
'L_COPY_PERMISSIONS_EXPLAIN' => $user->lang['COPY_PERMISSIONS_' . strtoupper($action) . '_EXPLAIN'],
|
'L_COPY_PERMISSIONS_EXPLAIN' => $user->lang['COPY_PERMISSIONS_' . strtoupper($action) . '_EXPLAIN'],
|
||||||
'L_TITLE' => $user->lang[$this->page_title],
|
'L_TITLE' => $user->lang[$this->page_title],
|
||||||
'ERROR_MSG' => (sizeof($errors)) ? implode('<br />', $errors) : '',
|
'ERROR_MSG' => (count($errors)) ? implode('<br />', $errors) : '',
|
||||||
|
|
||||||
'FORUM_NAME' => $forum_data['forum_name'],
|
'FORUM_NAME' => $forum_data['forum_name'],
|
||||||
'FORUM_DATA_LINK' => $forum_data['forum_link'],
|
'FORUM_DATA_LINK' => $forum_data['forum_link'],
|
||||||
@@ -772,8 +772,8 @@ class acp_forums
|
|||||||
'S_FORUM_LINK' => ($forum_data['forum_type'] == FORUM_LINK) ? true : false,
|
'S_FORUM_LINK' => ($forum_data['forum_type'] == FORUM_LINK) ? true : false,
|
||||||
'S_HAS_SUBFORUMS' => ($forum_data['right_id'] - $forum_data['left_id'] > 1) ? true : false,
|
'S_HAS_SUBFORUMS' => ($forum_data['right_id'] - $forum_data['left_id'] > 1) ? true : false,
|
||||||
'S_FORUMS_LIST' => $forums_list,
|
'S_FORUMS_LIST' => $forums_list,
|
||||||
'S_ERROR' => (sizeof($errors)) ? true : false,
|
'S_ERROR' => (count($errors)) ? true : false,
|
||||||
'ERROR_MSG' => (sizeof($errors)) ? implode('<br />', $errors) : '')
|
'ERROR_MSG' => (count($errors)) ? implode('<br />', $errors) : '')
|
||||||
);
|
);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -924,7 +924,7 @@ class acp_forums
|
|||||||
unset($rowset);
|
unset($rowset);
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'ERROR_MSG' => (sizeof($errors)) ? implode('<br />', $errors) : '',
|
'ERROR_MSG' => (count($errors)) ? implode('<br />', $errors) : '',
|
||||||
'NAVIGATION' => $navigation,
|
'NAVIGATION' => $navigation,
|
||||||
'FORUM_BOX' => $forum_box,
|
'FORUM_BOX' => $forum_box,
|
||||||
'U_SEL_ACTION' => $this->u_action,
|
'U_SEL_ACTION' => $this->u_action,
|
||||||
@@ -1053,7 +1053,7 @@ class acp_forums
|
|||||||
// What are we going to do tonight Brain? The same thing we do everynight,
|
// What are we going to do tonight Brain? The same thing we do everynight,
|
||||||
// try to take over the world ... or decide whether to continue update
|
// try to take over the world ... or decide whether to continue update
|
||||||
// and if so, whether it's a new forum/cat/link or an existing one
|
// and if so, whether it's a new forum/cat/link or an existing one
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
@@ -1217,12 +1217,12 @@ class acp_forums
|
|||||||
$errors = array_merge($errors, $this->delete_forum_content($_row['forum_id']));
|
$errors = array_merge($errors, $this->delete_forum_content($_row['forum_id']));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($forum_ids))
|
if (count($forum_ids))
|
||||||
{
|
{
|
||||||
$sql = 'DELETE FROM ' . FORUMS_TABLE . '
|
$sql = 'DELETE FROM ' . FORUMS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('forum_id', $forum_ids);
|
WHERE ' . $db->sql_in_set('forum_id', $forum_ids);
|
||||||
@@ -1252,7 +1252,7 @@ class acp_forums
|
|||||||
$allowed_forums = array_diff($allowed_forums, $forum_ids);
|
$allowed_forums = array_diff($allowed_forums, $forum_ids);
|
||||||
|
|
||||||
$sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . "
|
$sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . "
|
||||||
SET allowed_forums = '" . ((sizeof($allowed_forums)) ? serialize($allowed_forums) : '') . "'
|
SET allowed_forums = '" . ((count($allowed_forums)) ? serialize($allowed_forums) : '') . "'
|
||||||
WHERE group_id = {$_row['group_id']}";
|
WHERE group_id = {$_row['group_id']}";
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
}
|
}
|
||||||
@@ -1321,7 +1321,7 @@ class acp_forums
|
|||||||
$forum_data_sql['forum_last_poster_colour'] = '';
|
$forum_data_sql['forum_last_poster_colour'] = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
@@ -1338,7 +1338,7 @@ class acp_forums
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
@@ -1431,12 +1431,14 @@ class acp_forums
|
|||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$db->sql_transaction('begin');
|
||||||
|
|
||||||
$moved_forums = get_forum_branch($from_id, 'children', 'descending');
|
$moved_forums = get_forum_branch($from_id, 'children', 'descending');
|
||||||
$from_data = $moved_forums[0];
|
$from_data = $moved_forums[0];
|
||||||
$diff = sizeof($moved_forums) * 2;
|
$diff = count($moved_forums) * 2;
|
||||||
|
|
||||||
$moved_ids = array();
|
$moved_ids = array();
|
||||||
for ($i = 0, $size = sizeof($moved_forums); $i < $size; ++$i)
|
for ($i = 0, $size = count($moved_forums); $i < $size; ++$i)
|
||||||
{
|
{
|
||||||
$moved_ids[] = $moved_forums[$i]['forum_id'];
|
$moved_ids[] = $moved_forums[$i]['forum_id'];
|
||||||
}
|
}
|
||||||
@@ -1502,6 +1504,8 @@ class acp_forums
|
|||||||
WHERE " . $db->sql_in_set('forum_id', $moved_ids);
|
WHERE " . $db->sql_in_set('forum_id', $moved_ids);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
$db->sql_transaction('commit');
|
||||||
|
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1612,7 +1616,7 @@ class acp_forums
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
@@ -1628,12 +1632,12 @@ class acp_forums
|
|||||||
$errors = array_merge($errors, $this->delete_forum_content($row['forum_id']));
|
$errors = array_merge($errors, $this->delete_forum_content($row['forum_id']));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
$diff = sizeof($forum_ids) * 2;
|
$diff = count($forum_ids) * 2;
|
||||||
|
|
||||||
$sql = 'DELETE FROM ' . FORUMS_TABLE . '
|
$sql = 'DELETE FROM ' . FORUMS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('forum_id', $forum_ids);
|
WHERE ' . $db->sql_in_set('forum_id', $forum_ids);
|
||||||
@@ -1706,7 +1710,7 @@ class acp_forums
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
@@ -1754,7 +1758,7 @@ class acp_forums
|
|||||||
$allowed_forums = array_diff($allowed_forums, $forum_ids);
|
$allowed_forums = array_diff($allowed_forums, $forum_ids);
|
||||||
|
|
||||||
$sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . "
|
$sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . "
|
||||||
SET allowed_forums = '" . ((sizeof($allowed_forums)) ? serialize($allowed_forums) : '') . "'
|
SET allowed_forums = '" . ((count($allowed_forums)) ? serialize($allowed_forums) : '') . "'
|
||||||
WHERE group_id = {$row['group_id']}";
|
WHERE group_id = {$row['group_id']}";
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
}
|
}
|
||||||
@@ -1927,9 +1931,9 @@ class acp_forums
|
|||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (sizeof($ids))
|
if (count($ids))
|
||||||
{
|
{
|
||||||
$start += sizeof($ids);
|
$start += count($ids);
|
||||||
|
|
||||||
foreach ($tables as $table)
|
foreach ($tables as $table)
|
||||||
{
|
{
|
||||||
@@ -1937,7 +1941,7 @@ class acp_forums
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (sizeof($ids) == $batch_size);
|
while (count($ids) == $batch_size);
|
||||||
}
|
}
|
||||||
unset($ids);
|
unset($ids);
|
||||||
|
|
||||||
@@ -1978,7 +1982,7 @@ class acp_forums
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Adjust users post counts
|
// Adjust users post counts
|
||||||
if (sizeof($post_counts))
|
if (count($post_counts))
|
||||||
{
|
{
|
||||||
foreach ($post_counts as $poster_id => $substract)
|
foreach ($post_counts as $poster_id => $substract)
|
||||||
{
|
{
|
||||||
@@ -2062,7 +2066,7 @@ class acp_forums
|
|||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (!sizeof($target))
|
if (!count($target))
|
||||||
{
|
{
|
||||||
// The forum is already on top or bottom
|
// The forum is already on top or bottom
|
||||||
return false;
|
return false;
|
||||||
|
@@ -187,7 +187,7 @@ class acp_groups
|
|||||||
|
|
||||||
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
||||||
|
|
||||||
$start = (sizeof($mark_ary) < 200) ? 0 : $start + 200;
|
$start = (count($mark_ary) < 200) ? 0 : $start + 200;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -486,7 +486,7 @@ class acp_groups
|
|||||||
$error = array_merge($error, $validation_error);
|
$error = array_merge($error, $validation_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
// Only set the rank, colour, etc. if it's changed or if we're adding a new
|
// Only set the rank, colour, etc. if it's changed or if we're adding a new
|
||||||
// group. This prevents existing group members being updated if no changes
|
// group. This prevents existing group members being updated if no changes
|
||||||
@@ -614,7 +614,7 @@ class acp_groups
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($error))
|
if (count($error))
|
||||||
{
|
{
|
||||||
$error = array_map(array(&$user, 'lang'), $error);
|
$error = array_map(array(&$user, 'lang'), $error);
|
||||||
$group_rank = $submit_ary['rank'];
|
$group_rank = $submit_ary['rank'];
|
||||||
@@ -732,12 +732,12 @@ class acp_groups
|
|||||||
'S_ADD_GROUP' => ($action == 'add') ? true : false,
|
'S_ADD_GROUP' => ($action == 'add') ? true : false,
|
||||||
'S_GROUP_PERM' => ($action == 'add' && $auth->acl_get('a_authgroups') && $auth->acl_gets('a_aauth', 'a_fauth', 'a_mauth', 'a_uauth')) ? true : false,
|
'S_GROUP_PERM' => ($action == 'add' && $auth->acl_get('a_authgroups') && $auth->acl_gets('a_aauth', 'a_fauth', 'a_mauth', 'a_uauth')) ? true : false,
|
||||||
'S_INCLUDE_SWATCH' => true,
|
'S_INCLUDE_SWATCH' => true,
|
||||||
'S_ERROR' => (sizeof($error)) ? true : false,
|
'S_ERROR' => (count($error)) ? true : false,
|
||||||
'S_SPECIAL_GROUP' => ($group_type == GROUP_SPECIAL) ? true : false,
|
'S_SPECIAL_GROUP' => ($group_type == GROUP_SPECIAL) ? true : false,
|
||||||
'S_USER_FOUNDER' => ($user->data['user_type'] == USER_FOUNDER) ? true : false,
|
'S_USER_FOUNDER' => ($user->data['user_type'] == USER_FOUNDER) ? true : false,
|
||||||
'S_AVATARS_ENABLED' => ($config['allow_avatar'] && $avatars_enabled),
|
'S_AVATARS_ENABLED' => ($config['allow_avatar'] && $avatars_enabled),
|
||||||
|
|
||||||
'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
'ERROR_MSG' => (count($error)) ? implode('<br />', $error) : '',
|
||||||
'GROUP_NAME' => $group_helper->get_name($group_name),
|
'GROUP_NAME' => $group_helper->get_name($group_name),
|
||||||
'GROUP_INTERNAL_NAME' => $group_name,
|
'GROUP_INTERNAL_NAME' => $group_name,
|
||||||
'GROUP_DESC' => $group_desc_data['text'],
|
'GROUP_DESC' => $group_desc_data['text'],
|
||||||
@@ -926,7 +926,7 @@ class acp_groups
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Get us all the groups
|
// Get us all the groups
|
||||||
$sql = 'SELECT g.group_id, g.group_name, g.group_type
|
$sql = 'SELECT g.group_id, g.group_name, g.group_type, g.group_colour
|
||||||
FROM ' . GROUPS_TABLE . ' g
|
FROM ' . GROUPS_TABLE . ' g
|
||||||
ORDER BY g.group_type ASC, g.group_name';
|
ORDER BY g.group_type ASC, g.group_name';
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
@@ -985,6 +985,7 @@ class acp_groups
|
|||||||
'S_GROUP_SPECIAL' => ($row['group_type'] == GROUP_SPECIAL) ? true : false,
|
'S_GROUP_SPECIAL' => ($row['group_type'] == GROUP_SPECIAL) ? true : false,
|
||||||
|
|
||||||
'GROUP_NAME' => $group_name,
|
'GROUP_NAME' => $group_name,
|
||||||
|
'GROUP_COLOR' => $row['group_colour'],
|
||||||
'TOTAL_MEMBERS' => $row['total_members'],
|
'TOTAL_MEMBERS' => $row['total_members'],
|
||||||
'PENDING_MEMBERS' => $row['pending_members']
|
'PENDING_MEMBERS' => $row['pending_members']
|
||||||
));
|
));
|
||||||
|
@@ -48,7 +48,7 @@ class acp_help_phpbb
|
|||||||
$error[] = $user->lang['FORM_INVALID'];
|
$error[] = $user->lang['FORM_INVALID'];
|
||||||
}
|
}
|
||||||
// Do not write values if there is an error
|
// Do not write values if there is an error
|
||||||
if (sizeof($error))
|
if (count($error))
|
||||||
{
|
{
|
||||||
$submit = false;
|
$submit = false;
|
||||||
}
|
}
|
||||||
|
@@ -166,7 +166,7 @@ class acp_icons
|
|||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (sizeof($smilies))
|
if (count($smilies))
|
||||||
{
|
{
|
||||||
foreach ($smilies as $row)
|
foreach ($smilies as $row)
|
||||||
{
|
{
|
||||||
@@ -301,7 +301,7 @@ class acp_icons
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ok, another row for adding an addition code for a pre-existing image...
|
// Ok, another row for adding an addition code for a pre-existing image...
|
||||||
if ($action == 'add' && $mode == 'smilies' && sizeof($smilies))
|
if ($action == 'add' && $mode == 'smilies' && count($smilies))
|
||||||
{
|
{
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_ADD_CODE' => true,
|
'S_ADD_CODE' => true,
|
||||||
@@ -378,7 +378,7 @@ class acp_icons
|
|||||||
{
|
{
|
||||||
$smiley_count = $this->item_count($table);
|
$smiley_count = $this->item_count($table);
|
||||||
|
|
||||||
$addable_smileys_count = sizeof($images);
|
$addable_smileys_count = count($images);
|
||||||
foreach ($images as $image)
|
foreach ($images as $image)
|
||||||
{
|
{
|
||||||
if (!isset($image_add[$image]))
|
if (!isset($image_add[$image]))
|
||||||
@@ -546,8 +546,8 @@ class acp_icons
|
|||||||
{
|
{
|
||||||
if (preg_match_all("#'(.*?)', ?#", $pak_entry, $data))
|
if (preg_match_all("#'(.*?)', ?#", $pak_entry, $data))
|
||||||
{
|
{
|
||||||
if ((sizeof($data[1]) != 4 && $mode == 'icons') ||
|
if ((count($data[1]) != 4 && $mode == 'icons') ||
|
||||||
((sizeof($data[1]) != 6 || (empty($data[1][4]) || empty($data[1][5]))) && $mode == 'smilies' ))
|
((count($data[1]) != 6 || (empty($data[1][4]) || empty($data[1][5]))) && $mode == 'smilies' ))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
@@ -605,7 +605,7 @@ class acp_icons
|
|||||||
if ($mode == 'smilies')
|
if ($mode == 'smilies')
|
||||||
{
|
{
|
||||||
$smiley_count = $this->item_count($table);
|
$smiley_count = $this->item_count($table);
|
||||||
if ($smiley_count + sizeof($pak_ary) > SMILEY_LIMIT)
|
if ($smiley_count + count($pak_ary) > SMILEY_LIMIT)
|
||||||
{
|
{
|
||||||
trigger_error($user->lang('TOO_MANY_SMILIES', SMILEY_LIMIT) . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang('TOO_MANY_SMILIES', SMILEY_LIMIT) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
@@ -616,8 +616,8 @@ class acp_icons
|
|||||||
$data = array();
|
$data = array();
|
||||||
if (preg_match_all("#'(.*?)', ?#", $pak_entry, $data))
|
if (preg_match_all("#'(.*?)', ?#", $pak_entry, $data))
|
||||||
{
|
{
|
||||||
if ((sizeof($data[1]) != 4 && $mode == 'icons') ||
|
if ((count($data[1]) != 4 && $mode == 'icons') ||
|
||||||
(sizeof($data[1]) != 6 && $mode == 'smilies'))
|
(count($data[1]) != 6 && $mode == 'smilies'))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
@@ -70,7 +70,7 @@ class acp_inactive
|
|||||||
$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
|
$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
|
||||||
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);
|
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);
|
||||||
|
|
||||||
if ($submit && sizeof($mark))
|
if ($submit && count($mark))
|
||||||
{
|
{
|
||||||
if ($action !== 'delete' && !check_form_key($form_key))
|
if ($action !== 'delete' && !check_form_key($form_key))
|
||||||
{
|
{
|
||||||
|
@@ -49,13 +49,16 @@ class acp_jabber
|
|||||||
$this->tpl_name = 'acp_jabber';
|
$this->tpl_name = 'acp_jabber';
|
||||||
$this->page_title = 'ACP_JABBER_SETTINGS';
|
$this->page_title = 'ACP_JABBER_SETTINGS';
|
||||||
|
|
||||||
$jab_enable = $request->variable('jab_enable', (bool) $config['jab_enable']);
|
$jab_enable = $request->variable('jab_enable', (bool) $config['jab_enable']);
|
||||||
$jab_host = $request->variable('jab_host', (string) $config['jab_host']);
|
$jab_host = $request->variable('jab_host', (string) $config['jab_host']);
|
||||||
$jab_port = $request->variable('jab_port', (int) $config['jab_port']);
|
$jab_port = $request->variable('jab_port', (int) $config['jab_port']);
|
||||||
$jab_username = $request->variable('jab_username', (string) $config['jab_username']);
|
$jab_username = $request->variable('jab_username', (string) $config['jab_username']);
|
||||||
$jab_password = $request->variable('jab_password', (string) $config['jab_password']);
|
$jab_password = $request->variable('jab_password', (string) $config['jab_password']);
|
||||||
$jab_package_size = $request->variable('jab_package_size', (int) $config['jab_package_size']);
|
$jab_package_size = $request->variable('jab_package_size', (int) $config['jab_package_size']);
|
||||||
$jab_use_ssl = $request->variable('jab_use_ssl', (bool) $config['jab_use_ssl']);
|
$jab_use_ssl = $request->variable('jab_use_ssl', (bool) $config['jab_use_ssl']);
|
||||||
|
$jab_verify_peer = $request->variable('jab_verify_peer', (bool) $config['jab_verify_peer']);
|
||||||
|
$jab_verify_peer_name = $request->variable('jab_verify_peer_name', (bool) $config['jab_verify_peer_name']);
|
||||||
|
$jab_allow_self_signed = $request->variable('jab_allow_self_signed', (bool) $config['jab_allow_self_signed']);
|
||||||
|
|
||||||
$form_name = 'acp_jabber';
|
$form_name = 'acp_jabber';
|
||||||
add_form_key($form_name);
|
add_form_key($form_name);
|
||||||
@@ -73,7 +76,7 @@ class acp_jabber
|
|||||||
// Is this feature enabled? Then try to establish a connection
|
// Is this feature enabled? Then try to establish a connection
|
||||||
if ($jab_enable)
|
if ($jab_enable)
|
||||||
{
|
{
|
||||||
$jabber = new jabber($jab_host, $jab_port, $jab_username, $jab_password, $jab_use_ssl);
|
$jabber = new jabber($jab_host, $jab_port, $jab_username, $jab_password, $jab_use_ssl, $jab_verify_peer, $jab_verify_peer_name, $jab_allow_self_signed);
|
||||||
|
|
||||||
if (!$jabber->connect())
|
if (!$jabber->connect())
|
||||||
{
|
{
|
||||||
@@ -113,6 +116,9 @@ class acp_jabber
|
|||||||
}
|
}
|
||||||
$config->set('jab_package_size', $jab_package_size);
|
$config->set('jab_package_size', $jab_package_size);
|
||||||
$config->set('jab_use_ssl', $jab_use_ssl);
|
$config->set('jab_use_ssl', $jab_use_ssl);
|
||||||
|
$config->set('jab_verify_peer', $jab_verify_peer);
|
||||||
|
$config->set('jab_verify_peer_name', $jab_verify_peer_name);
|
||||||
|
$config->set('jab_allow_self_signed', $jab_allow_self_signed);
|
||||||
|
|
||||||
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_' . $log);
|
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_' . $log);
|
||||||
trigger_error($message . adm_back_link($this->u_action));
|
trigger_error($message . adm_back_link($this->u_action));
|
||||||
@@ -128,6 +134,9 @@ class acp_jabber
|
|||||||
'JAB_PASSWORD' => $jab_password !== '' ? '********' : '',
|
'JAB_PASSWORD' => $jab_password !== '' ? '********' : '',
|
||||||
'JAB_PACKAGE_SIZE' => $jab_package_size,
|
'JAB_PACKAGE_SIZE' => $jab_package_size,
|
||||||
'JAB_USE_SSL' => $jab_use_ssl,
|
'JAB_USE_SSL' => $jab_use_ssl,
|
||||||
|
'JAB_VERIFY_PEER' => $jab_verify_peer,
|
||||||
|
'JAB_VERIFY_PEER_NAME' => $jab_verify_peer_name,
|
||||||
|
'JAB_ALLOW_SELF_SIGNED' => $jab_allow_self_signed,
|
||||||
'S_CAN_USE_SSL' => jabber::can_use_ssl(),
|
'S_CAN_USE_SSL' => jabber::can_use_ssl(),
|
||||||
'S_GTALK_NOTE' => (!@function_exists('dns_get_record')) ? true : false,
|
'S_GTALK_NOTE' => (!@function_exists('dns_get_record')) ? true : false,
|
||||||
));
|
));
|
||||||
|
@@ -32,7 +32,7 @@ class acp_language
|
|||||||
function main($id, $mode)
|
function main($id, $mode)
|
||||||
{
|
{
|
||||||
global $config, $db, $user, $template, $phpbb_log, $phpbb_container;
|
global $config, $db, $user, $template, $phpbb_log, $phpbb_container;
|
||||||
global $phpbb_root_path, $phpEx, $request;
|
global $phpbb_root_path, $phpEx, $request, $phpbb_dispatcher;
|
||||||
|
|
||||||
if (!function_exists('validate_language_iso_name'))
|
if (!function_exists('validate_language_iso_name'))
|
||||||
{
|
{
|
||||||
@@ -229,7 +229,20 @@ class acp_language
|
|||||||
|
|
||||||
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_LANGUAGE_PACK_DELETED', false, array($row['lang_english_name']));
|
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_LANGUAGE_PACK_DELETED', false, array($row['lang_english_name']));
|
||||||
|
|
||||||
trigger_error(sprintf($user->lang['LANGUAGE_PACK_DELETED'], $row['lang_english_name']) . adm_back_link($this->u_action));
|
$delete_message = sprintf($user->lang['LANGUAGE_PACK_DELETED'], $row['lang_english_name']);
|
||||||
|
$lang_iso = $row['lang_iso'];
|
||||||
|
/**
|
||||||
|
* Run code after language deleted
|
||||||
|
*
|
||||||
|
* @event core.acp_language_after_delete
|
||||||
|
* @var string lang_iso Language ISO code
|
||||||
|
* @var string delete_message Delete message appear to user
|
||||||
|
* @since 3.2.2-RC1
|
||||||
|
*/
|
||||||
|
$vars = array('lang_iso', 'delete_message');
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.acp_language_after_delete', compact($vars)));
|
||||||
|
|
||||||
|
trigger_error($delete_message . adm_back_link($this->u_action));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -402,7 +415,7 @@ class acp_language
|
|||||||
|
|
||||||
unset($installed);
|
unset($installed);
|
||||||
|
|
||||||
if (sizeof($new_ary))
|
if (count($new_ary))
|
||||||
{
|
{
|
||||||
foreach ($new_ary as $iso => $lang_ary)
|
foreach ($new_ary as $iso => $lang_ary)
|
||||||
{
|
{
|
||||||
|
@@ -57,7 +57,7 @@ class acp_logs
|
|||||||
{
|
{
|
||||||
$conditions = array();
|
$conditions = array();
|
||||||
|
|
||||||
if ($deletemark && sizeof($marked))
|
if ($deletemark && count($marked))
|
||||||
{
|
{
|
||||||
$conditions['log_id'] = array('IN' => $marked);
|
$conditions['log_id'] = array('IN' => $marked);
|
||||||
}
|
}
|
||||||
@@ -167,7 +167,7 @@ class acp_logs
|
|||||||
'IP' => $row['ip'],
|
'IP' => $row['ip'],
|
||||||
'DATE' => $user->format_date($row['time']),
|
'DATE' => $user->format_date($row['time']),
|
||||||
'ACTION' => $row['action'],
|
'ACTION' => $row['action'],
|
||||||
'DATA' => (sizeof($data)) ? implode(' | ', $data) : '',
|
'DATA' => (count($data)) ? implode(' | ', $data) : '',
|
||||||
'ID' => $row['id'],
|
'ID' => $row['id'],
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@@ -337,7 +337,7 @@ class acp_main
|
|||||||
}
|
}
|
||||||
unset($posted);
|
unset($posted);
|
||||||
|
|
||||||
if (sizeof($sql_ary))
|
if (count($sql_ary))
|
||||||
{
|
{
|
||||||
$db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary);
|
$db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary);
|
||||||
}
|
}
|
||||||
@@ -429,24 +429,32 @@ class acp_main
|
|||||||
// Version check
|
// Version check
|
||||||
$user->add_lang('install');
|
$user->add_lang('install');
|
||||||
|
|
||||||
if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.4', '<'))
|
if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.4.0', '<'))
|
||||||
{
|
{
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_PHP_VERSION_OLD' => true,
|
'S_PHP_VERSION_OLD' => true,
|
||||||
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], '<a href="https://www.phpbb.com/community/viewtopic.php?f=14&t=2152375">', '</a>'),
|
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], PHP_VERSION, '5.4.0', '<a href="https://www.phpbb.com/support/docs/en/3.2/ug/quickstart/requirements">', '</a>'),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($auth->acl_get('a_board'))
|
if ($auth->acl_get('a_board'))
|
||||||
{
|
{
|
||||||
/* @var $version_helper \phpbb\version_helper */
|
|
||||||
$version_helper = $phpbb_container->get('version_helper');
|
$version_helper = $phpbb_container->get('version_helper');
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$recheck = $request->variable('versioncheck_force', false);
|
$recheck = $request->variable('versioncheck_force', false);
|
||||||
$updates_available = $version_helper->get_suggested_updates($recheck);
|
$updates_available = $version_helper->get_update_on_branch($recheck);
|
||||||
|
$upgrades_available = $version_helper->get_suggested_updates();
|
||||||
|
if (!empty($upgrades_available))
|
||||||
|
{
|
||||||
|
$upgrades_available = array_pop($upgrades_available);
|
||||||
|
}
|
||||||
|
|
||||||
$template->assign_var('S_VERSION_UP_TO_DATE', empty($updates_available));
|
$template->assign_vars(array(
|
||||||
|
'S_VERSION_UP_TO_DATE' => empty($updates_available),
|
||||||
|
'S_VERSION_UPGRADEABLE' => !empty($upgrades_available),
|
||||||
|
'UPGRADE_INSTRUCTIONS' => !empty($upgrades_available) ? $user->lang('UPGRADE_INSTRUCTIONS', $upgrades_available['current'], $upgrades_available['announcement']) : false,
|
||||||
|
));
|
||||||
}
|
}
|
||||||
catch (\RuntimeException $e)
|
catch (\RuntimeException $e)
|
||||||
{
|
{
|
||||||
@@ -569,6 +577,7 @@ class acp_main
|
|||||||
'S_TOTAL_ORPHAN' => ($total_orphan === false) ? false : true,
|
'S_TOTAL_ORPHAN' => ($total_orphan === false) ? false : true,
|
||||||
'GZIP_COMPRESSION' => ($config['gzip_compress'] && @extension_loaded('zlib')) ? $user->lang['ON'] : $user->lang['OFF'],
|
'GZIP_COMPRESSION' => ($config['gzip_compress'] && @extension_loaded('zlib')) ? $user->lang['ON'] : $user->lang['OFF'],
|
||||||
'DATABASE_INFO' => $db->sql_server_info(),
|
'DATABASE_INFO' => $db->sql_server_info(),
|
||||||
|
'PHP_VERSION_INFO' => PHP_VERSION,
|
||||||
'BOARD_VERSION' => $config['version'],
|
'BOARD_VERSION' => $config['version'],
|
||||||
|
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
@@ -576,6 +585,7 @@ class acp_main
|
|||||||
'U_INACTIVE_USERS' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=inactive&mode=list'),
|
'U_INACTIVE_USERS' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=inactive&mode=list'),
|
||||||
'U_VERSIONCHECK' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=update&mode=version_check'),
|
'U_VERSIONCHECK' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=update&mode=version_check'),
|
||||||
'U_VERSIONCHECK_FORCE' => append_sid("{$phpbb_admin_path}index.$phpEx", 'versioncheck_force=1'),
|
'U_VERSIONCHECK_FORCE' => append_sid("{$phpbb_admin_path}index.$phpEx", 'versioncheck_force=1'),
|
||||||
|
'U_ATTACH_ORPHAN' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=acp_attachments&mode=orphan'),
|
||||||
|
|
||||||
'S_VERSIONCHECK' => ($auth->acl_get('a_board')) ? true : false,
|
'S_VERSIONCHECK' => ($auth->acl_get('a_board')) ? true : false,
|
||||||
'S_ACTION_OPTIONS' => ($auth->acl_get('a_board')) ? true : false,
|
'S_ACTION_OPTIONS' => ($auth->acl_get('a_board')) ? true : false,
|
||||||
|
@@ -249,7 +249,7 @@ class acp_modules
|
|||||||
trigger_error($msg . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
trigger_error($msg . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($errors))
|
if (!count($errors))
|
||||||
{
|
{
|
||||||
$module_manager->remove_cache_file($this->module_class);
|
$module_manager->remove_cache_file($this->module_class);
|
||||||
|
|
||||||
@@ -364,7 +364,7 @@ class acp_modules
|
|||||||
trigger_error($msg . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
trigger_error($msg . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($errors))
|
if (!count($errors))
|
||||||
{
|
{
|
||||||
$module_manager->remove_cache_file($this->module_class);
|
$module_manager->remove_cache_file($this->module_class);
|
||||||
|
|
||||||
@@ -430,7 +430,7 @@ class acp_modules
|
|||||||
array_change_key_case($module_data, CASE_UPPER))
|
array_change_key_case($module_data, CASE_UPPER))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_ERROR' => true,
|
'S_ERROR' => true,
|
||||||
@@ -444,7 +444,7 @@ class acp_modules
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Default management page
|
// Default management page
|
||||||
if (sizeof($errors))
|
if (count($errors))
|
||||||
{
|
{
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
|
@@ -348,7 +348,7 @@ class acp_permission_roles
|
|||||||
{
|
{
|
||||||
$hold_ary = $this->auth_admin->get_role_mask($role_id);
|
$hold_ary = $this->auth_admin->get_role_mask($role_id);
|
||||||
|
|
||||||
if (sizeof($hold_ary))
|
if (count($hold_ary))
|
||||||
{
|
{
|
||||||
$role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name'];
|
$role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name'];
|
||||||
|
|
||||||
@@ -496,7 +496,7 @@ class acp_permission_roles
|
|||||||
|
|
||||||
$content_array = $content_array[0];
|
$content_array = $content_array[0];
|
||||||
|
|
||||||
$template->assign_var('S_NUM_PERM_COLS', sizeof($categories));
|
$template->assign_var('S_NUM_PERM_COLS', count($categories));
|
||||||
|
|
||||||
// Assign to template
|
// Assign to template
|
||||||
foreach ($content_array as $cat => $cat_array)
|
foreach ($content_array as $cat => $cat_array)
|
||||||
|
@@ -131,11 +131,11 @@ class acp_permissions
|
|||||||
}
|
}
|
||||||
unset($usernames);
|
unset($usernames);
|
||||||
|
|
||||||
if (sizeof($username) && !sizeof($user_id))
|
if (count($username) && !count($user_id))
|
||||||
{
|
{
|
||||||
user_get_id_name($user_id, $username);
|
user_get_id_name($user_id, $username);
|
||||||
|
|
||||||
if (!sizeof($user_id))
|
if (!count($user_id))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['SELECTED_USER_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['SELECTED_USER_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
@@ -260,17 +260,17 @@ class acp_permissions
|
|||||||
{
|
{
|
||||||
$items = $this->retrieve_defined_user_groups($permission_scope, $forum_id, $permission_type);
|
$items = $this->retrieve_defined_user_groups($permission_scope, $forum_id, $permission_type);
|
||||||
|
|
||||||
if ($all_users && sizeof($items['user_ids']))
|
if ($all_users && count($items['user_ids']))
|
||||||
{
|
{
|
||||||
$user_id = $items['user_ids'];
|
$user_id = $items['user_ids'];
|
||||||
}
|
}
|
||||||
else if ($all_groups && sizeof($items['group_ids']))
|
else if ($all_groups && count($items['group_ids']))
|
||||||
{
|
{
|
||||||
$group_id = $items['group_ids'];
|
$group_id = $items['group_ids'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($user_id) || sizeof($group_id))
|
if (count($user_id) || count($group_id))
|
||||||
{
|
{
|
||||||
$this->remove_permissions($mode, $permission_type, $auth_admin, $user_id, $group_id, $forum_id);
|
$this->remove_permissions($mode, $permission_type, $auth_admin, $user_id, $group_id, $forum_id);
|
||||||
}
|
}
|
||||||
@@ -349,7 +349,7 @@ class acp_permissions
|
|||||||
{
|
{
|
||||||
case 'forum_dropdown':
|
case 'forum_dropdown':
|
||||||
|
|
||||||
if (sizeof($forum_id))
|
if (count($forum_id))
|
||||||
{
|
{
|
||||||
$this->check_existence('forum', $forum_id);
|
$this->check_existence('forum', $forum_id);
|
||||||
continue 2;
|
continue 2;
|
||||||
@@ -364,7 +364,7 @@ class acp_permissions
|
|||||||
|
|
||||||
case 'forums':
|
case 'forums':
|
||||||
|
|
||||||
if (sizeof($forum_id))
|
if (count($forum_id))
|
||||||
{
|
{
|
||||||
$this->check_existence('forum', $forum_id);
|
$this->check_existence('forum', $forum_id);
|
||||||
continue 2;
|
continue 2;
|
||||||
@@ -394,7 +394,7 @@ class acp_permissions
|
|||||||
|
|
||||||
case 'user':
|
case 'user':
|
||||||
|
|
||||||
if (sizeof($user_id))
|
if (count($user_id))
|
||||||
{
|
{
|
||||||
$this->check_existence('user', $user_id);
|
$this->check_existence('user', $user_id);
|
||||||
continue 2;
|
continue 2;
|
||||||
@@ -409,7 +409,7 @@ class acp_permissions
|
|||||||
|
|
||||||
case 'group':
|
case 'group':
|
||||||
|
|
||||||
if (sizeof($group_id))
|
if (count($group_id))
|
||||||
{
|
{
|
||||||
$this->check_existence('group', $group_id);
|
$this->check_existence('group', $group_id);
|
||||||
continue 2;
|
continue 2;
|
||||||
@@ -428,14 +428,14 @@ class acp_permissions
|
|||||||
$all_users = (isset($_POST['all_users'])) ? true : false;
|
$all_users = (isset($_POST['all_users'])) ? true : false;
|
||||||
$all_groups = (isset($_POST['all_groups'])) ? true : false;
|
$all_groups = (isset($_POST['all_groups'])) ? true : false;
|
||||||
|
|
||||||
if ((sizeof($user_id) && !$all_users) || (sizeof($group_id) && !$all_groups))
|
if ((count($user_id) && !$all_users) || (count($group_id) && !$all_groups))
|
||||||
{
|
{
|
||||||
if (sizeof($user_id))
|
if (count($user_id))
|
||||||
{
|
{
|
||||||
$this->check_existence('user', $user_id);
|
$this->check_existence('user', $user_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($group_id))
|
if (count($group_id))
|
||||||
{
|
{
|
||||||
$this->check_existence('group', $group_id);
|
$this->check_existence('group', $group_id);
|
||||||
}
|
}
|
||||||
@@ -446,13 +446,13 @@ class acp_permissions
|
|||||||
// Now we check the users... because the "all"-selection is different here (all defined users/groups)
|
// Now we check the users... because the "all"-selection is different here (all defined users/groups)
|
||||||
$items = $this->retrieve_defined_user_groups($permission_scope, $forum_id, $permission_type);
|
$items = $this->retrieve_defined_user_groups($permission_scope, $forum_id, $permission_type);
|
||||||
|
|
||||||
if ($all_users && sizeof($items['user_ids']))
|
if ($all_users && count($items['user_ids']))
|
||||||
{
|
{
|
||||||
$user_id = $items['user_ids'];
|
$user_id = $items['user_ids'];
|
||||||
continue 2;
|
continue 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($all_groups && sizeof($items['group_ids']))
|
if ($all_groups && count($items['group_ids']))
|
||||||
{
|
{
|
||||||
$group_id = $items['group_ids'];
|
$group_id = $items['group_ids'];
|
||||||
continue 2;
|
continue 2;
|
||||||
@@ -487,14 +487,14 @@ class acp_permissions
|
|||||||
'ANONYMOUS_USER_ID' => ANONYMOUS,
|
'ANONYMOUS_USER_ID' => ANONYMOUS,
|
||||||
|
|
||||||
'S_SELECT_VICTIM' => true,
|
'S_SELECT_VICTIM' => true,
|
||||||
'S_ALLOW_ALL_SELECT' => (sizeof($forum_id) > 5) ? false : true,
|
'S_ALLOW_ALL_SELECT' => (count($forum_id) > 5) ? false : true,
|
||||||
'S_CAN_SELECT_USER' => ($auth->acl_get('a_authusers')) ? true : false,
|
'S_CAN_SELECT_USER' => ($auth->acl_get('a_authusers')) ? true : false,
|
||||||
'S_CAN_SELECT_GROUP' => ($auth->acl_get('a_authgroups')) ? true : false,
|
'S_CAN_SELECT_GROUP' => ($auth->acl_get('a_authgroups')) ? true : false,
|
||||||
'S_HIDDEN_FIELDS' => $s_hidden_fields)
|
'S_HIDDEN_FIELDS' => $s_hidden_fields)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Let the forum names being displayed
|
// Let the forum names being displayed
|
||||||
if (sizeof($forum_id))
|
if (count($forum_id))
|
||||||
{
|
{
|
||||||
$sql = 'SELECT forum_name
|
$sql = 'SELECT forum_name
|
||||||
FROM ' . FORUMS_TABLE . '
|
FROM ' . FORUMS_TABLE . '
|
||||||
@@ -510,7 +510,7 @@ class acp_permissions
|
|||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_FORUM_NAMES' => (sizeof($forum_names)) ? true : false,
|
'S_FORUM_NAMES' => (count($forum_names)) ? true : false,
|
||||||
'FORUM_NAMES' => implode($user->lang['COMMA_SEPARATOR'], $forum_names))
|
'FORUM_NAMES' => implode($user->lang['COMMA_SEPARATOR'], $forum_names))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -527,13 +527,13 @@ class acp_permissions
|
|||||||
));
|
));
|
||||||
|
|
||||||
// Do not allow forum_ids being set and no other setting defined (will bog down the server too much)
|
// Do not allow forum_ids being set and no other setting defined (will bog down the server too much)
|
||||||
if (sizeof($forum_id) && !sizeof($user_id) && !sizeof($group_id))
|
if (count($forum_id) && !count($user_id) && !count($group_id))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['ONLY_FORUM_DEFINED'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['ONLY_FORUM_DEFINED'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_PERMISSION_DROPDOWN' => (sizeof($this->permission_dropdown) > 1) ? $this->build_permission_dropdown($this->permission_dropdown, $permission_type, $permission_scope) : false,
|
'S_PERMISSION_DROPDOWN' => (count($this->permission_dropdown) > 1) ? $this->build_permission_dropdown($this->permission_dropdown, $permission_type, $permission_scope) : false,
|
||||||
'L_PERMISSION_TYPE' => $this->permissions->get_type_lang($permission_type),
|
'L_PERMISSION_TYPE' => $this->permissions->get_type_lang($permission_type),
|
||||||
|
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
@@ -546,8 +546,8 @@ class acp_permissions
|
|||||||
'S_SETTING_PERMISSIONS' => true)
|
'S_SETTING_PERMISSIONS' => true)
|
||||||
);
|
);
|
||||||
|
|
||||||
$hold_ary = $auth_admin->get_mask('set', (sizeof($user_id)) ? $user_id : false, (sizeof($group_id)) ? $group_id : false, (sizeof($forum_id)) ? $forum_id : false, $permission_type, $permission_scope, ACL_NO);
|
$hold_ary = $auth_admin->get_mask('set', (count($user_id)) ? $user_id : false, (count($group_id)) ? $group_id : false, (count($forum_id)) ? $forum_id : false, $permission_type, $permission_scope, ACL_NO);
|
||||||
$auth_admin->display_mask('set', $permission_type, $hold_ary, ((sizeof($user_id)) ? 'user' : 'group'), (($permission_scope == 'local') ? true : false));
|
$auth_admin->display_mask('set', $permission_type, $hold_ary, ((count($user_id)) ? 'user' : 'group'), (($permission_scope == 'local') ? true : false));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -555,8 +555,8 @@ class acp_permissions
|
|||||||
'S_VIEWING_PERMISSIONS' => true)
|
'S_VIEWING_PERMISSIONS' => true)
|
||||||
);
|
);
|
||||||
|
|
||||||
$hold_ary = $auth_admin->get_mask('view', (sizeof($user_id)) ? $user_id : false, (sizeof($group_id)) ? $group_id : false, (sizeof($forum_id)) ? $forum_id : false, $permission_type, $permission_scope, ACL_NEVER);
|
$hold_ary = $auth_admin->get_mask('view', (count($user_id)) ? $user_id : false, (count($group_id)) ? $group_id : false, (count($forum_id)) ? $forum_id : false, $permission_type, $permission_scope, ACL_NEVER);
|
||||||
$auth_admin->display_mask('view', $permission_type, $hold_ary, ((sizeof($user_id)) ? 'user' : 'group'), (($permission_scope == 'local') ? true : false));
|
$auth_admin->display_mask('view', $permission_type, $hold_ary, ((count($user_id)) ? 'user' : 'group'), (($permission_scope == 'local') ? true : false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -652,7 +652,7 @@ class acp_permissions
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($ids))
|
if (count($ids))
|
||||||
{
|
{
|
||||||
$sql = "SELECT $sql_id
|
$sql = "SELECT $sql_id
|
||||||
FROM $table
|
FROM $table
|
||||||
@@ -667,7 +667,7 @@ class acp_permissions
|
|||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($ids))
|
if (!count($ids))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['SELECTED_' . strtoupper($mode) . '_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['SELECTED_' . strtoupper($mode) . '_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
@@ -684,7 +684,7 @@ class acp_permissions
|
|||||||
$psubmit = $request->variable('psubmit', array(0 => array(0 => 0)));
|
$psubmit = $request->variable('psubmit', array(0 => array(0 => 0)));
|
||||||
|
|
||||||
// User or group to be set?
|
// User or group to be set?
|
||||||
$ug_type = (sizeof($user_id)) ? 'user' : 'group';
|
$ug_type = (count($user_id)) ? 'user' : 'group';
|
||||||
|
|
||||||
// Check the permission setting again
|
// Check the permission setting again
|
||||||
if (!$auth->acl_get('a_' . str_replace('_', '', $permission_type) . 'auth') || !$auth->acl_get('a_auth' . $ug_type . 's'))
|
if (!$auth->acl_get('a_' . str_replace('_', '', $permission_type) . 'auth') || !$auth->acl_get('a_auth' . $ug_type . 's'))
|
||||||
@@ -715,7 +715,7 @@ class acp_permissions
|
|||||||
$ug_id = array($ug_id);
|
$ug_id = array($ug_id);
|
||||||
$forum_id = array($forum_id);
|
$forum_id = array($forum_id);
|
||||||
|
|
||||||
if (sizeof($inherit))
|
if (count($inherit))
|
||||||
{
|
{
|
||||||
foreach ($inherit as $_ug_id => $forum_id_ary)
|
foreach ($inherit as $_ug_id => $forum_id_ary)
|
||||||
{
|
{
|
||||||
@@ -771,7 +771,7 @@ class acp_permissions
|
|||||||
global $request;
|
global $request;
|
||||||
|
|
||||||
// User or group to be set?
|
// User or group to be set?
|
||||||
$ug_type = (sizeof($user_id)) ? 'user' : 'group';
|
$ug_type = (count($user_id)) ? 'user' : 'group';
|
||||||
|
|
||||||
// Check the permission setting again
|
// Check the permission setting again
|
||||||
if (!$auth->acl_get('a_' . str_replace('_', '', $permission_type) . 'auth') || !$auth->acl_get('a_auth' . $ug_type . 's'))
|
if (!$auth->acl_get('a_' . str_replace('_', '', $permission_type) . 'auth') || !$auth->acl_get('a_auth' . $ug_type . 's'))
|
||||||
@@ -870,7 +870,7 @@ class acp_permissions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof(array_diff_assoc($auth_settings, $test_auth_settings)))
|
if (count(array_diff_assoc($auth_settings, $test_auth_settings)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -886,7 +886,7 @@ class acp_permissions
|
|||||||
global $user, $db, $cache, $auth;
|
global $user, $db, $cache, $auth;
|
||||||
|
|
||||||
// User or group to be set?
|
// User or group to be set?
|
||||||
$ug_type = (sizeof($user_id)) ? 'user' : 'group';
|
$ug_type = (count($user_id)) ? 'user' : 'group';
|
||||||
|
|
||||||
// Check the permission setting again
|
// Check the permission setting again
|
||||||
if (!$auth->acl_get('a_' . str_replace('_', '', $permission_type) . 'auth') || !$auth->acl_get('a_auth' . $ug_type . 's'))
|
if (!$auth->acl_get('a_' . str_replace('_', '', $permission_type) . 'auth') || !$auth->acl_get('a_auth' . $ug_type . 's'))
|
||||||
@@ -895,7 +895,7 @@ class acp_permissions
|
|||||||
trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
$auth_admin->acl_delete($ug_type, (($ug_type == 'user') ? $user_id : $group_id), (sizeof($forum_id) ? $forum_id : false), $permission_type);
|
$auth_admin->acl_delete($ug_type, (($ug_type == 'user') ? $user_id : $group_id), (count($forum_id) ? $forum_id : false), $permission_type);
|
||||||
|
|
||||||
// Do we need to recache the moderator lists?
|
// Do we need to recache the moderator lists?
|
||||||
if ($permission_type == 'm_')
|
if ($permission_type == 'm_')
|
||||||
@@ -903,7 +903,7 @@ class acp_permissions
|
|||||||
phpbb_cache_moderators($db, $cache, $auth);
|
phpbb_cache_moderators($db, $cache, $auth);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->log_action($mode, 'del', $permission_type, $ug_type, (($ug_type == 'user') ? $user_id : $group_id), (sizeof($forum_id) ? $forum_id : array(0 => 0)));
|
$this->log_action($mode, 'del', $permission_type, $ug_type, (($ug_type == 'user') ? $user_id : $group_id), (count($forum_id) ? $forum_id : array(0 => 0)));
|
||||||
|
|
||||||
if ($mode == 'setting_forum_local' || $mode == 'setting_mod_local')
|
if ($mode == 'setting_forum_local' || $mode == 'setting_mod_local')
|
||||||
{
|
{
|
||||||
@@ -1053,7 +1053,7 @@ class acp_permissions
|
|||||||
$total = ACL_NO;
|
$total = ACL_NO;
|
||||||
$add_key = (($forum_id) ? '_LOCAL' : '');
|
$add_key = (($forum_id) ? '_LOCAL' : '');
|
||||||
|
|
||||||
if (sizeof($groups))
|
if (count($groups))
|
||||||
{
|
{
|
||||||
// Get group auth settings
|
// Get group auth settings
|
||||||
$hold_ary = $auth->acl_group_raw_data(array_keys($groups), $permission, $forum_id);
|
$hold_ary = $auth->acl_group_raw_data(array_keys($groups), $permission, $forum_id);
|
||||||
@@ -1099,7 +1099,7 @@ class acp_permissions
|
|||||||
|
|
||||||
// Get user specific permission... globally or for this forum
|
// Get user specific permission... globally or for this forum
|
||||||
$hold_ary = $auth->acl_user_raw_data($user_id, $permission, $forum_id);
|
$hold_ary = $auth->acl_user_raw_data($user_id, $permission, $forum_id);
|
||||||
$auth_setting = (!sizeof($hold_ary)) ? ACL_NO : $hold_ary[$user_id][$forum_id][$permission];
|
$auth_setting = (!count($hold_ary)) ? ACL_NO : $hold_ary[$user_id][$forum_id][$permission];
|
||||||
|
|
||||||
switch ($auth_setting)
|
switch ($auth_setting)
|
||||||
{
|
{
|
||||||
@@ -1258,7 +1258,7 @@ class acp_permissions
|
|||||||
/** @var \phpbb\group\helper $group_helper */
|
/** @var \phpbb\group\helper $group_helper */
|
||||||
$group_helper = $phpbb_container->get('group_helper');
|
$group_helper = $phpbb_container->get('group_helper');
|
||||||
|
|
||||||
$sql_forum_id = ($permission_scope == 'global') ? 'AND a.forum_id = 0' : ((sizeof($forum_id)) ? 'AND ' . $db->sql_in_set('a.forum_id', $forum_id) : 'AND a.forum_id <> 0');
|
$sql_forum_id = ($permission_scope == 'global') ? 'AND a.forum_id = 0' : ((count($forum_id)) ? 'AND ' . $db->sql_in_set('a.forum_id', $forum_id) : 'AND a.forum_id <> 0');
|
||||||
|
|
||||||
// Permission options are only able to be a permission set... therefore we will pre-fetch the possible options and also the possible roles
|
// Permission options are only able to be a permission set... therefore we will pre-fetch the possible options and also the possible roles
|
||||||
$option_ids = $role_ids = array();
|
$option_ids = $role_ids = array();
|
||||||
@@ -1274,7 +1274,7 @@ class acp_permissions
|
|||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (sizeof($option_ids))
|
if (count($option_ids))
|
||||||
{
|
{
|
||||||
$sql = 'SELECT DISTINCT role_id
|
$sql = 'SELECT DISTINCT role_id
|
||||||
FROM ' . ACL_ROLES_DATA_TABLE . '
|
FROM ' . ACL_ROLES_DATA_TABLE . '
|
||||||
@@ -1288,15 +1288,15 @@ class acp_permissions
|
|||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($option_ids) && sizeof($role_ids))
|
if (count($option_ids) && count($role_ids))
|
||||||
{
|
{
|
||||||
$sql_where = 'AND (' . $db->sql_in_set('a.auth_option_id', $option_ids) . ' OR ' . $db->sql_in_set('a.auth_role_id', $role_ids) . ')';
|
$sql_where = 'AND (' . $db->sql_in_set('a.auth_option_id', $option_ids) . ' OR ' . $db->sql_in_set('a.auth_role_id', $role_ids) . ')';
|
||||||
}
|
}
|
||||||
else if (sizeof($role_ids))
|
else if (count($role_ids))
|
||||||
{
|
{
|
||||||
$sql_where = 'AND ' . $db->sql_in_set('a.auth_role_id', $role_ids);
|
$sql_where = 'AND ' . $db->sql_in_set('a.auth_role_id', $role_ids);
|
||||||
}
|
}
|
||||||
else if (sizeof($option_ids))
|
else if (count($option_ids))
|
||||||
{
|
{
|
||||||
$sql_where = 'AND ' . $db->sql_in_set('a.auth_option_id', $option_ids);
|
$sql_where = 'AND ' . $db->sql_in_set('a.auth_option_id', $option_ids);
|
||||||
}
|
}
|
||||||
|
@@ -446,7 +446,7 @@ class acp_profile
|
|||||||
{
|
{
|
||||||
$exploded_options = (is_array($options)) ? $options : explode("\n", $options);
|
$exploded_options = (is_array($options)) ? $options : explode("\n", $options);
|
||||||
|
|
||||||
if (sizeof($exploded_options) == sizeof($lang_options) || $action == 'create')
|
if (count($exploded_options) == count($lang_options) || $action == 'create')
|
||||||
{
|
{
|
||||||
// The number of options in the field is equal to the number of options already in the database
|
// The number of options in the field is equal to the number of options already in the database
|
||||||
// Or we are creating a new dropdown list.
|
// Or we are creating a new dropdown list.
|
||||||
@@ -567,7 +567,7 @@ class acp_profile
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($error))
|
if (count($error))
|
||||||
{
|
{
|
||||||
$submit = false;
|
$submit = false;
|
||||||
}
|
}
|
||||||
@@ -600,9 +600,9 @@ class acp_profile
|
|||||||
$s_hidden_fields .= build_hidden_fields($_new_key_ary);
|
$s_hidden_fields .= build_hidden_fields($_new_key_ary);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
if (($step == 3 && (sizeof($this->lang_defs['iso']) == 1 || $save)) || ($action == 'edit' && $save))
|
if (($step == 3 && (count($this->lang_defs['iso']) == 1 || $save)) || ($action == 'edit' && $save))
|
||||||
{
|
{
|
||||||
if (!check_form_key($form_key))
|
if (!check_form_key($form_key))
|
||||||
{
|
{
|
||||||
@@ -616,7 +616,7 @@ class acp_profile
|
|||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_EDIT' => true,
|
'S_EDIT' => true,
|
||||||
'S_EDIT_MODE' => ($action == 'edit') ? true : false,
|
'S_EDIT_MODE' => ($action == 'edit') ? true : false,
|
||||||
'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
'ERROR_MSG' => (count($error)) ? implode('<br />', $error) : '',
|
||||||
|
|
||||||
'L_TITLE' => $user->lang['STEP_' . $step . '_TITLE_' . strtoupper($action)],
|
'L_TITLE' => $user->lang['STEP_' . $step . '_TITLE_' . strtoupper($action)],
|
||||||
'L_EXPLAIN' => $user->lang['STEP_' . $step . '_EXPLAIN_' . strtoupper($action)],
|
'L_EXPLAIN' => $user->lang['STEP_' . $step . '_EXPLAIN_' . strtoupper($action)],
|
||||||
@@ -664,7 +664,7 @@ class acp_profile
|
|||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_STEP_TWO' => true,
|
'S_STEP_TWO' => true,
|
||||||
'L_NEXT_STEP' => (sizeof($this->lang_defs['iso']) == 1) ? $user->lang['SAVE'] : $user->lang['PROFILE_LANG_OPTIONS'])
|
'L_NEXT_STEP' => (count($this->lang_defs['iso']) == 1) ? $user->lang['SAVE'] : $user->lang['PROFILE_LANG_OPTIONS'])
|
||||||
);
|
);
|
||||||
|
|
||||||
// Build options based on profile type
|
// Build options based on profile type
|
||||||
@@ -738,6 +738,32 @@ class acp_profile
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$tpl_name = $this->tpl_name;
|
||||||
|
$page_title = $this->page_title;
|
||||||
|
$u_action = $this->u_action;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event to handle actions on the ACP profile fields page
|
||||||
|
*
|
||||||
|
* @event core.acp_profile_action
|
||||||
|
* @var string action Action that is being performed
|
||||||
|
* @var string tpl_name Template file to load
|
||||||
|
* @var string page_title Page title
|
||||||
|
* @var string u_action The URL we are at, read only
|
||||||
|
* @since 3.2.2-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'action',
|
||||||
|
'tpl_name',
|
||||||
|
'page_title',
|
||||||
|
'u_action',
|
||||||
|
);
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.acp_profile_action', compact($vars)));
|
||||||
|
|
||||||
|
$this->tpl_name = $tpl_name;
|
||||||
|
$this->page_title = $page_title;
|
||||||
|
unset($u_action);
|
||||||
|
|
||||||
$sql = 'SELECT *
|
$sql = 'SELECT *
|
||||||
FROM ' . PROFILE_FIELDS_TABLE . '
|
FROM ' . PROFILE_FIELDS_TABLE . '
|
||||||
ORDER BY field_order';
|
ORDER BY field_order';
|
||||||
@@ -750,7 +776,7 @@ class acp_profile
|
|||||||
$active_value = (!$row['field_active']) ? 'activate' : 'deactivate';
|
$active_value = (!$row['field_active']) ? 'activate' : 'deactivate';
|
||||||
$id = $row['field_id'];
|
$id = $row['field_id'];
|
||||||
|
|
||||||
$s_need_edit = (sizeof($this->lang_defs['diff'][$row['field_id']])) ? true : false;
|
$s_need_edit = (count($this->lang_defs['diff'][$row['field_id']])) ? true : false;
|
||||||
|
|
||||||
if ($s_need_edit)
|
if ($s_need_edit)
|
||||||
{
|
{
|
||||||
@@ -762,7 +788,8 @@ class acp_profile
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$profile_field = $this->type_collection[$row['field_type']];
|
$profile_field = $this->type_collection[$row['field_type']];
|
||||||
$template->assign_block_vars('fields', array(
|
|
||||||
|
$field_block = array(
|
||||||
'FIELD_IDENT' => $row['field_ident'],
|
'FIELD_IDENT' => $row['field_ident'],
|
||||||
'FIELD_TYPE' => $profile_field->get_name(),
|
'FIELD_TYPE' => $profile_field->get_name(),
|
||||||
|
|
||||||
@@ -774,8 +801,26 @@ class acp_profile
|
|||||||
'U_MOVE_UP' => $this->u_action . "&action=move_up&field_id=$id" . '&hash=' . generate_link_hash('acp_profile'),
|
'U_MOVE_UP' => $this->u_action . "&action=move_up&field_id=$id" . '&hash=' . generate_link_hash('acp_profile'),
|
||||||
'U_MOVE_DOWN' => $this->u_action . "&action=move_down&field_id=$id" . '&hash=' . generate_link_hash('acp_profile'),
|
'U_MOVE_DOWN' => $this->u_action . "&action=move_down&field_id=$id" . '&hash=' . generate_link_hash('acp_profile'),
|
||||||
|
|
||||||
'S_NEED_EDIT' => $s_need_edit)
|
'S_NEED_EDIT' => $s_need_edit,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event to modify profile field data before it is assigned to the template
|
||||||
|
*
|
||||||
|
* @event core.acp_profile_modify_profile_row
|
||||||
|
* @var array row Array with data for the current profile field
|
||||||
|
* @var array field_block Template data that is being assigned to the 'fields' block
|
||||||
|
* @var object profile_field A profile field instance, implements \phpbb\profilefields\type\type_base
|
||||||
|
* @since 3.2.2-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'row',
|
||||||
|
'field_block',
|
||||||
|
'profile_field',
|
||||||
|
);
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.acp_profile_modify_profile_row', compact($vars)));
|
||||||
|
|
||||||
|
$template->assign_block_vars('fields', $field_block);
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
@@ -1011,7 +1056,7 @@ class acp_profile
|
|||||||
$this->update_insert(PROFILE_LANG_TABLE, $sql_ary, array('field_id' => $field_id, 'lang_id' => $default_lang_id));
|
$this->update_insert(PROFILE_LANG_TABLE, $sql_ary, array('field_id' => $field_id, 'lang_id' => $default_lang_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($cp->vars['l_lang_name']) && sizeof($cp->vars['l_lang_name']))
|
if (is_array($cp->vars['l_lang_name']) && count($cp->vars['l_lang_name']))
|
||||||
{
|
{
|
||||||
foreach ($cp->vars['l_lang_name'] as $lang_id => $data)
|
foreach ($cp->vars['l_lang_name'] as $lang_id => $data)
|
||||||
{
|
{
|
||||||
@@ -1087,7 +1132,7 @@ class acp_profile
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($cp->vars['l_lang_options']) && sizeof($cp->vars['l_lang_options']))
|
if (is_array($cp->vars['l_lang_options']) && count($cp->vars['l_lang_options']))
|
||||||
{
|
{
|
||||||
$empty_lang = array();
|
$empty_lang = array();
|
||||||
|
|
||||||
@@ -1098,7 +1143,7 @@ class acp_profile
|
|||||||
$lang_ary = explode("\n", $lang_ary);
|
$lang_ary = explode("\n", $lang_ary);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($lang_ary) != sizeof($cp->vars['lang_options']))
|
if (count($lang_ary) != count($cp->vars['lang_options']))
|
||||||
{
|
{
|
||||||
$empty_lang[$lang_id] = true;
|
$empty_lang[$lang_id] = true;
|
||||||
}
|
}
|
||||||
@@ -1150,7 +1195,7 @@ class acp_profile
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($profile_lang_fields))
|
if (count($profile_lang_fields))
|
||||||
{
|
{
|
||||||
foreach ($profile_lang_fields as $sql)
|
foreach ($profile_lang_fields as $sql)
|
||||||
{
|
{
|
||||||
@@ -1213,7 +1258,7 @@ class acp_profile
|
|||||||
$where_sql[] = $key . ' = ' . ((is_string($value)) ? "'" . $db->sql_escape($value) . "'" : (int) $value);
|
$where_sql[] = $key . ' = ' . ((is_string($value)) ? "'" . $db->sql_escape($value) . "'" : (int) $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($where_sql))
|
if (!count($where_sql))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1229,14 +1274,14 @@ class acp_profile
|
|||||||
{
|
{
|
||||||
$sql_ary = array_merge($where_fields, $sql_ary);
|
$sql_ary = array_merge($where_fields, $sql_ary);
|
||||||
|
|
||||||
if (sizeof($sql_ary))
|
if (count($sql_ary))
|
||||||
{
|
{
|
||||||
$db->sql_query("INSERT INTO $table " . $db->sql_build_array('INSERT', $sql_ary));
|
$db->sql_query("INSERT INTO $table " . $db->sql_build_array('INSERT', $sql_ary));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (sizeof($sql_ary))
|
if (count($sql_ary))
|
||||||
{
|
{
|
||||||
$sql = "UPDATE $table SET " . $db->sql_build_array('UPDATE', $sql_ary) . '
|
$sql = "UPDATE $table SET " . $db->sql_build_array('UPDATE', $sql_ary) . '
|
||||||
WHERE ' . implode(' AND ', $where_sql);
|
WHERE ' . implode(' AND ', $where_sql);
|
||||||
|
@@ -55,7 +55,7 @@ class acp_prune
|
|||||||
*/
|
*/
|
||||||
function prune_forums($id, $mode)
|
function prune_forums($id, $mode)
|
||||||
{
|
{
|
||||||
global $db, $user, $auth, $template, $phpbb_log, $request;
|
global $db, $user, $auth, $template, $phpbb_log, $request, $phpbb_dispatcher;
|
||||||
|
|
||||||
$all_forums = $request->variable('all_forums', 0);
|
$all_forums = $request->variable('all_forums', 0);
|
||||||
$forum_id = $request->variable('f', array(0));
|
$forum_id = $request->variable('f', array(0));
|
||||||
@@ -97,7 +97,7 @@ class acp_prune
|
|||||||
'S_PRUNED' => true)
|
'S_PRUNED' => true)
|
||||||
);
|
);
|
||||||
|
|
||||||
$sql_forum = (sizeof($forum_id)) ? ' AND ' . $db->sql_in_set('forum_id', $forum_id) : '';
|
$sql_forum = (count($forum_id)) ? ' AND ' . $db->sql_in_set('forum_id', $forum_id) : '';
|
||||||
|
|
||||||
// Get a list of forum's or the data for the forum that we are pruning.
|
// Get a list of forum's or the data for the forum that we are pruning.
|
||||||
$sql = 'SELECT forum_id, forum_name
|
$sql = 'SELECT forum_id, forum_name
|
||||||
@@ -165,7 +165,7 @@ class acp_prune
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
confirm_box(false, $user->lang['PRUNE_FORUM_CONFIRM'], build_hidden_fields(array(
|
$hidden_fields = array(
|
||||||
'i' => $id,
|
'i' => $id,
|
||||||
'mode' => $mode,
|
'mode' => $mode,
|
||||||
'submit' => 1,
|
'submit' => 1,
|
||||||
@@ -177,13 +177,25 @@ class acp_prune
|
|||||||
'prune_old_polls' => $request->variable('prune_old_polls', 0),
|
'prune_old_polls' => $request->variable('prune_old_polls', 0),
|
||||||
'prune_announce' => $request->variable('prune_announce', 0),
|
'prune_announce' => $request->variable('prune_announce', 0),
|
||||||
'prune_sticky' => $request->variable('prune_sticky', 0),
|
'prune_sticky' => $request->variable('prune_sticky', 0),
|
||||||
)));
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this event to pass data from the prune form to the confirmation screen
|
||||||
|
*
|
||||||
|
* @event core.prune_forums_settings_confirm
|
||||||
|
* @var array hidden_fields Hidden fields that are passed through the confirm screen
|
||||||
|
* @since 3.2.2-RC1
|
||||||
|
*/
|
||||||
|
$vars = array('hidden_fields');
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.prune_forums_settings_confirm', compact($vars)));
|
||||||
|
|
||||||
|
confirm_box(false, $user->lang['PRUNE_FORUM_CONFIRM'], build_hidden_fields($hidden_fields));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If they haven't selected a forum for pruning yet then
|
// If they haven't selected a forum for pruning yet then
|
||||||
// display a select box to use for pruning.
|
// display a select box to use for pruning.
|
||||||
if (!sizeof($forum_id))
|
if (!count($forum_id))
|
||||||
{
|
{
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
@@ -215,15 +227,27 @@ class acp_prune
|
|||||||
|
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
$l_selected_forums = (sizeof($forum_id) == 1) ? 'SELECTED_FORUM' : 'SELECTED_FORUMS';
|
$l_selected_forums = (count($forum_id) == 1) ? 'SELECTED_FORUM' : 'SELECTED_FORUMS';
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template_data = array(
|
||||||
'L_SELECTED_FORUMS' => $user->lang[$l_selected_forums],
|
'L_SELECTED_FORUMS' => $user->lang[$l_selected_forums],
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
'U_BACK' => $this->u_action,
|
'U_BACK' => $this->u_action,
|
||||||
'FORUM_LIST' => $forum_list,
|
'FORUM_LIST' => $forum_list,
|
||||||
'S_HIDDEN_FIELDS' => $s_hidden_fields)
|
'S_HIDDEN_FIELDS' => $s_hidden_fields,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event to add/modify prune forums settings template data
|
||||||
|
*
|
||||||
|
* @event core.prune_forums_settings_template_data
|
||||||
|
* @var array template_data Array with form template data
|
||||||
|
* @since 3.2.2-RC1
|
||||||
|
*/
|
||||||
|
$vars = array('template_data');
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.prune_forums_settings_template_data', compact($vars)));
|
||||||
|
|
||||||
|
$template->assign_vars($template_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,7 +276,7 @@ class acp_prune
|
|||||||
$user_ids = $usernames = array();
|
$user_ids = $usernames = array();
|
||||||
|
|
||||||
$this->get_prune_users($user_ids, $usernames);
|
$this->get_prune_users($user_ids, $usernames);
|
||||||
if (sizeof($user_ids))
|
if (count($user_ids))
|
||||||
{
|
{
|
||||||
if ($action == 'deactivate')
|
if ($action == 'deactivate')
|
||||||
{
|
{
|
||||||
@@ -291,7 +315,7 @@ class acp_prune
|
|||||||
$user_ids = $usernames = array();
|
$user_ids = $usernames = array();
|
||||||
$this->get_prune_users($user_ids, $usernames);
|
$this->get_prune_users($user_ids, $usernames);
|
||||||
|
|
||||||
if (!sizeof($user_ids))
|
if (!count($user_ids))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['USER_PRUNE_FAILURE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['USER_PRUNE_FAILURE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
@@ -434,7 +458,7 @@ class acp_prune
|
|||||||
}
|
}
|
||||||
// implicit else when both arrays are empty do nothing
|
// implicit else when both arrays are empty do nothing
|
||||||
|
|
||||||
if ((sizeof($active) && sizeof($active) != 3) || (sizeof($joined_before) && sizeof($joined_before) != 3) || (sizeof($joined_after) && sizeof($joined_after) != 3))
|
if ((count($active) && count($active) != 3) || (count($joined_before) && count($joined_before) != 3) || (count($joined_after) && count($joined_after) != 3))
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['WRONG_ACTIVE_JOINED_DATE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['WRONG_ACTIVE_JOINED_DATE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
@@ -448,15 +472,15 @@ class acp_prune
|
|||||||
$where_sql .= ($count !== false) ? " AND user_posts " . $key_match[$count_select] . ' ' . (int) $count . ' ' : '';
|
$where_sql .= ($count !== false) ? " AND user_posts " . $key_match[$count_select] . ' ' . (int) $count . ' ' : '';
|
||||||
|
|
||||||
// First handle pruning of users who never logged in, last active date is 0000-00-00
|
// First handle pruning of users who never logged in, last active date is 0000-00-00
|
||||||
if (sizeof($active) && (int) $active[0] == 0 && (int) $active[1] == 0 && (int) $active[2] == 0)
|
if (count($active) && (int) $active[0] == 0 && (int) $active[1] == 0 && (int) $active[2] == 0)
|
||||||
{
|
{
|
||||||
$where_sql .= ' AND user_lastvisit = 0';
|
$where_sql .= ' AND user_lastvisit = 0';
|
||||||
}
|
}
|
||||||
else if (sizeof($active) && $active_select != 'lt')
|
else if (count($active) && $active_select != 'lt')
|
||||||
{
|
{
|
||||||
$where_sql .= ' AND user_lastvisit ' . $key_match[$active_select] . ' ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]);
|
$where_sql .= ' AND user_lastvisit ' . $key_match[$active_select] . ' ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]);
|
||||||
}
|
}
|
||||||
else if (sizeof($active))
|
else if (count($active))
|
||||||
{
|
{
|
||||||
$where_sql .= ' AND (user_lastvisit > 0 AND user_lastvisit < ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]) . ')';
|
$where_sql .= ' AND (user_lastvisit > 0 AND user_lastvisit < ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]) . ')';
|
||||||
}
|
}
|
||||||
|
@@ -103,7 +103,7 @@ class acp_reasons
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!count($error))
|
||||||
{
|
{
|
||||||
// New reason?
|
// New reason?
|
||||||
if ($action == 'add')
|
if ($action == 'add')
|
||||||
@@ -171,7 +171,7 @@ class acp_reasons
|
|||||||
'L_TITLE' => $user->lang['REASON_' . $l_title],
|
'L_TITLE' => $user->lang['REASON_' . $l_title],
|
||||||
'U_ACTION' => $this->u_action . "&id=$reason_id&action=$action",
|
'U_ACTION' => $this->u_action . "&id=$reason_id&action=$action",
|
||||||
'U_BACK' => $this->u_action,
|
'U_BACK' => $this->u_action,
|
||||||
'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
'ERROR_MSG' => (count($error)) ? implode('<br />', $error) : '',
|
||||||
|
|
||||||
'REASON_TITLE' => $reason_row['reason_title'],
|
'REASON_TITLE' => $reason_row['reason_title'],
|
||||||
'REASON_DESCRIPTION' => $reason_row['reason_description'],
|
'REASON_DESCRIPTION' => $reason_row['reason_description'],
|
||||||
@@ -182,7 +182,7 @@ class acp_reasons
|
|||||||
'S_AVAILABLE_TITLES' => implode($user->lang['COMMA_SEPARATOR'], array_map('htmlspecialchars', array_keys($user->lang['report_reasons']['TITLE']))),
|
'S_AVAILABLE_TITLES' => implode($user->lang['COMMA_SEPARATOR'], array_map('htmlspecialchars', array_keys($user->lang['report_reasons']['TITLE']))),
|
||||||
'S_EDIT_REASON' => true,
|
'S_EDIT_REASON' => true,
|
||||||
'S_TRANSLATED' => $translated,
|
'S_TRANSLATED' => $translated,
|
||||||
'S_ERROR' => (sizeof($error)) ? true : false,
|
'S_ERROR' => (count($error)) ? true : false,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@@ -332,9 +332,9 @@ class acp_search
|
|||||||
$forum_ids[] = $row['forum_id'];
|
$forum_ids[] = $row['forum_id'];
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
$row_count += sizeof($ids);
|
$row_count += count($ids);
|
||||||
|
|
||||||
if (sizeof($ids))
|
if (count($ids))
|
||||||
{
|
{
|
||||||
$this->search->index_remove($ids, $posters, $forum_ids);
|
$this->search->index_remove($ids, $posters, $forum_ids);
|
||||||
}
|
}
|
||||||
@@ -474,8 +474,8 @@ class acp_search
|
|||||||
$statistics = array();
|
$statistics = array();
|
||||||
foreach ($data as $statistic => $value)
|
foreach ($data as $statistic => $value)
|
||||||
{
|
{
|
||||||
$n = sizeof($statistics);
|
$n = count($statistics);
|
||||||
if ($n && sizeof($statistics[$n - 1]) < 3)
|
if ($n && count($statistics[$n - 1]) < 3)
|
||||||
{
|
{
|
||||||
$statistics[$n - 1] += array('statistic_2' => $statistic, 'value_2' => $value);
|
$statistics[$n - 1] += array('statistic_2' => $statistic, 'value_2' => $value);
|
||||||
}
|
}
|
||||||
@@ -492,7 +492,7 @@ class acp_search
|
|||||||
'S_ACTIVE' => ($type == $config['search_type']) ? true : false,
|
'S_ACTIVE' => ($type == $config['search_type']) ? true : false,
|
||||||
'S_HIDDEN_FIELDS' => build_hidden_fields(array('search_type' => $type)),
|
'S_HIDDEN_FIELDS' => build_hidden_fields(array('search_type' => $type)),
|
||||||
'S_INDEXED' => (bool) $search->index_created(),
|
'S_INDEXED' => (bool) $search->index_created(),
|
||||||
'S_STATS' => (bool) sizeof($statistics))
|
'S_STATS' => (bool) count($statistics))
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ($statistics as $statistic)
|
foreach ($statistics as $statistic)
|
||||||
|