mirror of
https://github.com/phpbb/phpbb.git
synced 2025-09-11 00:30:53 +02:00
Compare commits
593 Commits
3.2.x
...
release-3.
Author | SHA1 | Date | |
---|---|---|---|
|
8d00784dfe | ||
|
17d4dcc30b | ||
|
16dbbdb34c | ||
|
433a23feb4 | ||
|
d4293866b3 | ||
|
9fa058a8bd | ||
|
4591cf9afa | ||
|
ed34079452 | ||
|
f6b47e2ee3 | ||
|
e900104e10 | ||
|
944a748cb6 | ||
|
eb8ace14c8 | ||
|
1b8193ab8b | ||
|
b83de54bb4 | ||
|
261bf416ee | ||
|
a0ffbfce31 | ||
|
82abd358a5 | ||
|
d50d1101fb | ||
|
b3f80239c1 | ||
|
f866a8fd1b | ||
|
dce0441ecf | ||
|
29c9621137 | ||
|
46b70ded94 | ||
|
20fb9385f5 | ||
|
db5121511d | ||
|
c7dd7d42c6 | ||
|
0806d34eee | ||
|
b9193f35c1 | ||
|
43e5337a0a | ||
|
1ae812d172 | ||
|
dd93bb1aad | ||
|
737155a43a | ||
|
372a3bfcde | ||
|
7ae7502146 | ||
|
7a294b5fcd | ||
|
79287abd7b | ||
|
cf450bd01f | ||
|
7e5d0b9ec8 | ||
|
314dfb294a | ||
|
6705adf47b | ||
|
d8dac3f80e | ||
|
16dad60eef | ||
|
7ef52f723c | ||
|
374dc92e8f | ||
|
3c91126806 | ||
|
7336678454 | ||
|
6ee537b3f2 | ||
|
f3a9301483 | ||
|
a3276c3ffe | ||
|
4956dc3197 | ||
|
b1c5ad6a61 | ||
|
364461b58f | ||
|
74a747d455 | ||
|
036871cd95 | ||
|
71a1c9fee7 | ||
|
80de9f6a68 | ||
|
c71d4c364a | ||
|
dcab076221 | ||
|
94808e2cbc | ||
|
82e61f501a | ||
|
37fddf8eef | ||
|
3669849368 | ||
|
ebf7e9f45f | ||
|
d000717d34 | ||
|
d191eed760 | ||
|
a750372a03 | ||
|
5dfba1b064 | ||
|
72747ed686 | ||
|
c7898ac3e4 | ||
|
c70d024f5f | ||
|
7cf148ea13 | ||
|
41f287fbea | ||
|
3ae799f4de | ||
|
202478d108 | ||
|
186a3d40c6 | ||
|
230472de45 | ||
|
b85c7be5ac | ||
|
5eae76b209 | ||
|
2ebbcbe233 | ||
|
b1596ffecb | ||
|
b9fccc9fce | ||
|
9345bc1610 | ||
|
78ae67ae28 | ||
|
044d327818 | ||
|
cc9b29488f | ||
|
843887fcb9 | ||
|
faca59b3a6 | ||
|
9b6149d3ac | ||
|
4c05257783 | ||
|
e6a84dcb60 | ||
|
1f3e073894 | ||
|
dbc164e131 | ||
|
16a163662b | ||
|
67a8d8ca90 | ||
|
0e974eb49a | ||
|
d5f9e3a05e | ||
|
d181713832 | ||
|
ffb0adfc59 | ||
|
a83b8e7792 | ||
|
2f7a9c6a00 | ||
|
4051bf2466 | ||
|
a0251ec1d9 | ||
|
84f01ed0da | ||
|
9ddb1bdddb | ||
|
d26622e992 | ||
|
0b3eb2f9ea | ||
|
581139ab15 | ||
|
8e54e5cc79 | ||
|
26c4dfb9d7 | ||
|
fce796517b | ||
|
2733ce0712 | ||
|
bcc90133a8 | ||
|
611b3c4e46 | ||
|
ac43c5c8bd | ||
|
b786dbc5d7 | ||
|
0efeef46e1 | ||
|
fd5ac318a5 | ||
|
2926ceba6a | ||
|
581fe4ec83 | ||
|
02689df8f7 | ||
|
d9749d5bb0 | ||
|
b7492a7b6f | ||
|
59afb76df4 | ||
|
d659276749 | ||
|
8be1ad4568 | ||
|
0fc6fbf916 | ||
|
8ffbd66cba | ||
|
ff3458ff03 | ||
|
5be4cca408 | ||
|
3009e7ffbe | ||
|
d7425b4998 | ||
|
186384e514 | ||
|
f9a364074d | ||
|
cb0f4790ae | ||
|
f26e83e4c6 | ||
|
5ef225381d | ||
|
8b4892b96b | ||
|
68326c6aa1 | ||
|
1a4739aed9 | ||
|
670dbaba1b | ||
|
6d71748e9a | ||
|
3089770fec | ||
|
5d5c3481b7 | ||
|
3837d2cfee | ||
|
ac6676a144 | ||
|
3986273fdb | ||
|
cbbba2dcc7 | ||
|
6b7d9af0c2 | ||
|
5ed02c2149 | ||
|
3be57cea04 | ||
|
dac910d27a | ||
|
380b7d0a98 | ||
|
bc045fd19b | ||
|
7b70984ef3 | ||
|
c37e696c1c | ||
|
c7d47e34e8 | ||
|
fd7524858c | ||
|
86085f96ab | ||
|
a8e2f4256b | ||
|
8b7e0563a5 | ||
|
3e9c2ea025 | ||
|
960e5af71c | ||
|
679f3b0c76 | ||
|
f7ac1d2629 | ||
|
77a15e3542 | ||
|
d55e421c0f | ||
|
db1040ec69 | ||
|
251473700a | ||
|
896b31272b | ||
|
0a4cc5d201 | ||
|
2a023c9e15 | ||
|
4a10062933 | ||
|
29be971fad | ||
|
0f57f3d90d | ||
|
4d15683733 | ||
|
8726baea9f | ||
|
15da5b108e | ||
|
63ebd658a9 | ||
|
9fff4cf253 | ||
|
1f10cd51ff | ||
|
e39753083d | ||
|
3149b45eba | ||
|
46a189fa4c | ||
|
e102a9a3cb | ||
|
92362441bd | ||
|
78a913581c | ||
|
63b7518a0f | ||
|
01b0ec19c6 | ||
|
eb94fe973b | ||
|
c628cd7e15 | ||
|
83d430419e | ||
|
9872316cac | ||
|
aed7e369c3 | ||
|
289524938c | ||
|
f2e6bda0d1 | ||
|
c11dbffbac | ||
|
f460194379 | ||
|
0cbe05faad | ||
|
a00b8c2920 | ||
|
9e0c3fc81e | ||
|
0d668fee36 | ||
|
149df2d7b6 | ||
|
c75502e09c | ||
|
9aee50968e | ||
|
0cd7033baa | ||
|
2c3a24b678 | ||
|
51bb05f286 | ||
|
791d633b8a | ||
|
e39c0be8f8 | ||
|
e0e410e8a2 | ||
|
5e5042e52a | ||
|
4679433ae1 | ||
|
3e22a2eebd | ||
|
79a6648b99 | ||
|
8dbda26623 | ||
|
5d6f8c8bd9 | ||
|
7ea063100e | ||
|
56bff6380e | ||
|
85837d48b2 | ||
|
ba17f16dc8 | ||
|
a340c362bc | ||
|
46a68d37ee | ||
|
e9fc3ed22e | ||
|
cbb5e6f765 | ||
|
219955fa6c | ||
|
95a696c4da | ||
|
85910fe5bc | ||
|
76b4a2faab | ||
|
0b39e4e854 | ||
|
78ce646c69 | ||
|
4ae43c7970 | ||
|
912eb28223 | ||
|
7df08fe12e | ||
|
729e2f5d08 | ||
|
e2de342d3a | ||
|
b14c7c3511 | ||
|
c2997ada7a | ||
|
6ccffec906 | ||
|
00682db8a6 | ||
|
0a7e98951b | ||
|
b6a99e7dca | ||
|
f09f5bc51c | ||
|
ce35aa8b0b | ||
|
930895f563 | ||
|
75e4fcd2e9 | ||
|
9887a9d76c | ||
|
b40fe17d93 | ||
|
1a2e5f6ee6 | ||
|
163aac74db | ||
|
d87fc02774 | ||
|
be17a8417d | ||
|
404768a607 | ||
|
9cb1119d1e | ||
|
1e67ffee1d | ||
|
40a69b8edf | ||
|
0e8e8c7b14 | ||
|
7ae8f98ec6 | ||
|
eb0195dd7c | ||
|
b6f400a014 | ||
|
b8616fe9ac | ||
|
f985f42dc2 | ||
|
734c1cd5bd | ||
|
95880a5f49 | ||
|
90a8e1dd1c | ||
|
ade88f020e | ||
|
fe7118aea0 | ||
|
396a8214db | ||
|
b0b3810aab | ||
|
a8fb843ded | ||
|
dfcc744275 | ||
|
e78632767c | ||
|
cf7c3dcab5 | ||
|
77da8b6507 | ||
|
06c894ff7f | ||
|
e75071fbd2 | ||
|
0a133fe009 | ||
|
4008800527 | ||
|
49ea5a4091 | ||
|
d9f9360c5b | ||
|
a671eaf25d | ||
|
829ac4062d | ||
|
33785d0fd3 | ||
|
465d0b1a4c | ||
|
6105260a8e | ||
|
2f220a07d1 | ||
|
32cc32c76a | ||
|
c5ae114315 | ||
|
bea1df7759 | ||
|
5ff519c7b2 | ||
|
eb13694b25 | ||
|
1001584c1b | ||
|
8c2d0c8c36 | ||
|
6f48b3c044 | ||
|
b80cbd0e7d | ||
|
4cda76b5c0 | ||
|
f7e51ca875 | ||
|
e8b4304c1b | ||
|
bd02c5bd08 | ||
|
60bc949ba1 | ||
|
25ae4fa355 | ||
|
68c197fd60 | ||
|
dd2eadf8ec | ||
|
3a443b5623 | ||
|
1eed2f98c3 | ||
|
e54aa94e77 | ||
|
d7c644a792 | ||
|
975fe1e153 | ||
|
b6c230753e | ||
|
1af05d9615 | ||
|
a85bb1332d | ||
|
f05022941d | ||
|
e00a154882 | ||
|
f21003f977 | ||
|
133dfd0a84 | ||
|
eee00652e7 | ||
|
7989f3f71f | ||
|
012fe18879 | ||
|
91b89b6374 | ||
|
36614e6f81 | ||
|
7fac5be2cc | ||
|
d7dd91d0e2 | ||
|
25d3292d30 | ||
|
a05d744266 | ||
|
772e801d4f | ||
|
27153d7e46 | ||
|
c0e9ef21fe | ||
|
0f3559528a | ||
|
760a03fffc | ||
|
a90f5e6bcc | ||
|
f4935ef500 | ||
|
ba945496b4 | ||
|
ae08036b2c | ||
|
a028dfab12 | ||
|
914199d50f | ||
|
7e8c6d8c0d | ||
|
9454377e55 | ||
|
1ef43bc1a1 | ||
|
13932e9aba | ||
|
fcff807834 | ||
|
281049eafd | ||
|
81cbefdae5 | ||
|
a7c02304a5 | ||
|
ccc21a8c94 | ||
|
d613984660 | ||
|
dcafa6a711 | ||
|
f920336be4 | ||
|
8048d817ca | ||
|
454ea081f1 | ||
|
7a3e351178 | ||
|
0b843505e8 | ||
|
d4652c1b20 | ||
|
7dd822942a | ||
|
826cc9751a | ||
|
f5f03d24e9 | ||
|
49ac98ffdb | ||
|
da6be75a18 | ||
|
fffcb2a6af | ||
|
c0bd3122e0 | ||
|
54fff02f95 | ||
|
784938e68b | ||
|
3947970d0b | ||
|
08ee5a608b | ||
|
0cbf06780e | ||
|
96335c0402 | ||
|
bf6f1cac8f | ||
|
9e772d1421 | ||
|
ba92e7d2d6 | ||
|
fa5a0d5e21 | ||
|
cefdf8bf19 | ||
|
eee18f3747 | ||
|
e991df195b | ||
|
1d1d963c14 | ||
|
cfea54f8f3 | ||
|
0a5599697f | ||
|
f41c51d1ec | ||
|
4ad288c544 | ||
|
fe030f67ef | ||
|
276f350bcb | ||
|
3f852a3233 | ||
|
9cb22f008d | ||
|
d880443ea2 | ||
|
b4d4709726 | ||
|
2f85fc53dc | ||
|
90722a3c66 | ||
|
2e634e9f96 | ||
|
e086d4039e | ||
|
d4e623ffee | ||
|
6078f58343 | ||
|
be3a58aff1 | ||
|
eaf42f3c72 | ||
|
189f3fd68e | ||
|
7543508570 | ||
|
e1962acd4e | ||
|
710a0b3ea3 | ||
|
2df9230902 | ||
|
423345d517 | ||
|
5a76d541a2 | ||
|
065feb3ff9 | ||
|
b0334d6b4f | ||
|
ee51bf26fa | ||
|
812edebfb7 | ||
|
31192fc08e | ||
|
3433f61ccb | ||
|
84fdba604d | ||
|
b12405dbc7 | ||
|
3e9682fe49 | ||
|
33be961aa0 | ||
|
860a370e8f | ||
|
a4a5b069ec | ||
|
c382536f47 | ||
|
b5e6f34cd9 | ||
|
ce518043e9 | ||
|
58fa8eabb7 | ||
|
b2c5f8fb48 | ||
|
01018630c9 | ||
|
f5d28a95b0 | ||
|
204e3b1fe0 | ||
|
6fc269b62a | ||
|
348979c13d | ||
|
5d2e144624 | ||
|
de039dcc7c | ||
|
6d4fdb1f15 | ||
|
5cef0d2035 | ||
|
8a979d6871 | ||
|
30f522351e | ||
|
a6803e6a18 | ||
|
05f9ef7134 | ||
|
fc8d0c54e9 | ||
|
5de54906f0 | ||
|
8f3f7d1e5e | ||
|
5741c8d8ee | ||
|
6007978e7b | ||
|
bd646cff52 | ||
|
95264e2152 | ||
|
6422bdb5ec | ||
|
7572bc050b | ||
|
bc59342e1a | ||
|
9e90b27ba1 | ||
|
e419c2cd3b | ||
|
183d1afcaa | ||
|
99d83673f5 | ||
|
2a69eb051d | ||
|
5540a0f8e0 | ||
|
730e1140e3 | ||
|
76ea1de0ab | ||
|
c04642f987 | ||
|
b4d36e3235 | ||
|
b9a40be9b4 | ||
|
00f639de7b | ||
|
84ce92896e | ||
|
dd3330d7c9 | ||
|
d639e107ec | ||
|
d72498a9c3 | ||
|
61fa4f006a | ||
|
9c1baf0fd7 | ||
|
fe04f59ca2 | ||
|
9207b13224 | ||
|
29d40fd3d6 | ||
|
0ebcb3f3a0 | ||
|
c2841cb6e2 | ||
|
f7ec97b88e | ||
|
b6cd02bacb | ||
|
52ed8bfaa1 | ||
|
8f0643a14c | ||
|
31ab3d93a2 | ||
|
89ae1c3221 | ||
|
3f33d89572 | ||
|
90f8498a44 | ||
|
2753f8ccc8 | ||
|
18d4b7f358 | ||
|
978d883abb | ||
|
d0e3c2c136 | ||
|
fe6dd5a8f7 | ||
|
33f9333f13 | ||
|
51ffab0045 | ||
|
4ad0d4ceeb | ||
|
4ff993fc1b | ||
|
3c0fd43f85 | ||
|
c92d4933cc | ||
|
9f19202152 | ||
|
e7795fe7ce | ||
|
9223781797 | ||
|
e76c673e2e | ||
|
ebac54aa9e | ||
|
d968392b4d | ||
|
05a86ca3b0 | ||
|
c0fde5d5fd | ||
|
40e61e4d1e | ||
|
ff35f65064 | ||
|
ac3c49e548 | ||
|
27fc256745 | ||
|
6643c904d5 | ||
|
ba088f6bdc | ||
|
84b6dd7e5f | ||
|
e46d8d329d | ||
|
a702142a34 | ||
|
c20fed43cd | ||
|
303b823847 | ||
|
4f402465bf | ||
|
917880e2bf | ||
|
db36318ad0 | ||
|
4f5a8f6983 | ||
|
3914515199 | ||
|
3c2e75b52a | ||
|
7c26569d93 | ||
|
30303647f0 | ||
|
284368b9d6 | ||
|
432482160d | ||
|
1609fa292d | ||
|
0fe4cbc17f | ||
|
98b3aacde4 | ||
|
0a2589b5e0 | ||
|
35fef8333a | ||
|
65b0698ef7 | ||
|
9e3141d9d3 | ||
|
688d022f42 | ||
|
ab0dae6003 | ||
|
64b053c997 | ||
|
1f87b25709 | ||
|
9f20ff7b9e | ||
|
139eb17bb7 | ||
|
b4d4336ef4 | ||
|
5815d21427 | ||
|
7dae1fe48c | ||
|
ec04f177d0 | ||
|
efc2e6e570 | ||
|
62e609c10c | ||
|
7e96098e29 | ||
|
ee667ac897 | ||
|
d227912ee8 | ||
|
68cba0cb26 | ||
|
cbe9833975 | ||
|
7b4ef7a101 | ||
|
f993d91865 | ||
|
94f4062b29 | ||
|
a66c4170a9 | ||
|
9b5b058925 | ||
|
341962ae74 | ||
|
4da589acba | ||
|
3e6fd7e8fd | ||
|
dc9b1c37b1 | ||
|
dc397755d5 | ||
|
4ff986f578 | ||
|
2578a2b9fc | ||
|
5de4780753 | ||
|
2ff5871ff4 | ||
|
5153413f7a | ||
|
a9a28859d4 | ||
|
62921c066c | ||
|
3e5247187c | ||
|
75d957e9e1 | ||
|
1b9507d93d | ||
|
16d8b0bf78 | ||
|
5a0c9763d1 | ||
|
5c001df380 | ||
|
e36da01264 | ||
|
deb556fbf0 | ||
|
574749daeb | ||
|
42b7782927 | ||
|
cdf3aa27df | ||
|
560704c9f3 | ||
|
3f3d88696b | ||
|
acab3b048d | ||
|
a08dce82c2 | ||
|
332b310809 | ||
|
dfcce400a4 | ||
|
f1c2f7baae | ||
|
7d4909dc06 | ||
|
cf12223b25 | ||
|
530e5bca87 | ||
|
26acd8a5e4 | ||
|
4282cf459e | ||
|
228e0f58a8 | ||
|
fe64174ca8 | ||
|
77315a014c | ||
|
c02be62ea1 | ||
|
5614f80b89 | ||
|
4e3ac92d05 | ||
|
571a6df993 | ||
|
296bf434b0 | ||
|
ab6835d849 | ||
|
271ac6b57e | ||
|
7a173877b7 | ||
|
41956a8b90 | ||
|
773d246a7e | ||
|
f165b8ece4 | ||
|
a33c875d2f | ||
|
1dc14c0f38 | ||
|
a4f48205fb | ||
|
1a8a8da7bf | ||
|
653305d461 | ||
|
cfaf24bd45 | ||
|
7a831c3e28 |
@@ -9,13 +9,13 @@ environment:
|
||||
matrix:
|
||||
- db: mssql
|
||||
db_version: sql2012sp1
|
||||
php: 7.0
|
||||
php: 7.1
|
||||
- db: mssql
|
||||
db_version: sql2014
|
||||
php: 7.0
|
||||
php: 7.1
|
||||
- db: mssql
|
||||
db_version: sql2016
|
||||
php: 7.1.12
|
||||
php: 7.2
|
||||
# - db: mssql
|
||||
# db_version: sql2017
|
||||
# php: 7.1
|
||||
@@ -64,10 +64,11 @@ before_test:
|
||||
# Get MSSQL driver
|
||||
if ($env:db -eq "mssql") {
|
||||
cd c:\tools\php\ext
|
||||
$DLLVersion = "4.1.6.1"
|
||||
curl -o php_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip https://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
|
||||
$DLLVersion = "5.3.0"
|
||||
$VCVersion = If ([System.Version]"$($env:php)" -ge [System.Version]"7.2") {"vc15"} Else {"vc14"}
|
||||
curl -o php_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip https://windows.php.net/downloads/pecl/releases/sqlsrv/$($:DLLVersion)/php_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-$($VCVersion)-x64.zip
|
||||
7z x -y php_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip > $null
|
||||
curl -o php_pdo_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip https://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
|
||||
curl -o php_pdo_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip https://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-$($VCVersion)-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
|
||||
|
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@@ -2,5 +2,5 @@
|
||||
|
||||
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)
|
||||
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/master/development/coding_guidelines.html) and [Git Contribution Guidelines](https://area51.phpbb.com/docs/dev/master/development/git.html)
|
||||
4. Send us a pull request
|
||||
|
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,9 +1,9 @@
|
||||
Checklist:
|
||||
|
||||
- [ ] Correct branch: master for new features; 3.2.x for fixes
|
||||
- [ ] Correct branch: master for new features; 3.3.x & 3.2.x for fixes
|
||||
- [ ] Tests pass
|
||||
- [ ] 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://area51.phpbb.com/docs/dev/3.2.x/development/git.html)
|
||||
- [ ] Code follows coding guidelines: [master](https://area51.phpbb.com/docs/dev/master/development/coding_guidelines.html), [3.3.x](https://area51.phpbb.com/docs/dev/3.3.x/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://area51.phpbb.com/docs/dev/3.3.x/development/git.html)
|
||||
|
||||
Tracker ticket (set the ticket ID to **your ticket ID**):
|
||||
|
||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@@ -16,6 +16,9 @@
|
||||
/phpBB/store/*
|
||||
/phpBB/styles/*
|
||||
!/phpBB/styles/prosilver
|
||||
/phpBB/styles/prosilver/theme/*/
|
||||
!/phpBB/styles/prosilver/theme/en
|
||||
!/phpBB/styles/prosilver/theme/images
|
||||
!/phpBB/styles/all
|
||||
/phpBB/vendor
|
||||
/tests/phpbb_unit_tests.sqlite*
|
||||
@@ -24,3 +27,4 @@
|
||||
/tests/vendor
|
||||
/vagrant/phpbb-install-config.yml
|
||||
.vagrant
|
||||
*.DS_Store*
|
||||
|
42
.travis.yml
42
.travis.yml
@@ -1,32 +1,26 @@
|
||||
language: php
|
||||
dist: trusty
|
||||
dist: xenial
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 5.4
|
||||
env: DB=none;NOTESTS=1
|
||||
- php: 5.4
|
||||
env: DB=mysqli # MyISAM
|
||||
- php: 5.4
|
||||
env: DB=mysql
|
||||
- php: 5.4
|
||||
env: DB=mariadb
|
||||
- php: 5.4
|
||||
env: DB=postgres
|
||||
- php: 5.4
|
||||
env: DB=sqlite3
|
||||
- php: 5.4
|
||||
env: DB=mysqli;SLOWTESTS=1
|
||||
- php: 5.5
|
||||
env: DB=mysqli
|
||||
- php: 5.6
|
||||
env: DB=mysqli
|
||||
- php: 7.0
|
||||
env: DB=mysqli
|
||||
- php: 7.1
|
||||
env: DB=mysqli
|
||||
env: DB=none;NOTESTS=1
|
||||
- php: 7.1
|
||||
env: DB=mariadb
|
||||
- php: 7.1
|
||||
env: DB=postgres
|
||||
- php: 7.1
|
||||
env: DB=sqlite3
|
||||
- php: 7.1
|
||||
env: DB=mysqli;SLOWTESTS=1
|
||||
- php: 7.1
|
||||
env: DB=mysqli # MyISAM
|
||||
- php: 7.2
|
||||
env: DB=mysqli
|
||||
- php: 7.3
|
||||
env: DB=mysqli
|
||||
- php: 7.4snapshot
|
||||
env: DB=mysqli
|
||||
- php: nightly
|
||||
env: DB=mysqli
|
||||
allow_failures:
|
||||
@@ -35,12 +29,16 @@ matrix:
|
||||
|
||||
services:
|
||||
- redis-server
|
||||
- postgresql
|
||||
- mysql
|
||||
- memcached
|
||||
|
||||
install:
|
||||
- travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
|
||||
|
||||
before_script:
|
||||
- travis/setup-database.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
|
||||
- travis/setup-ldap.sh $SLOWTESTS
|
||||
- phantomjs --webdriver=8910 > /dev/null &
|
||||
|
||||
script:
|
||||
|
@@ -2,9 +2,9 @@
|
||||
|
||||
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
||||
<!-- a few settings for the build -->
|
||||
<property name="newversion" value="3.2.10-dev" />
|
||||
<property name="newversion" value="3.3.0" />
|
||||
<property name="prevversion" value="3.2.9" />
|
||||
<property name="olderversions" value="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, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8" />
|
||||
<property name="olderversions" value="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, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.3.0-b1, 3.3.0-b2, 3.3.0-RC1" />
|
||||
<!-- no configuration should be needed beyond this point -->
|
||||
|
||||
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
||||
@@ -81,28 +81,36 @@
|
||||
--ignore=${project.basedir}/phpBB/phpbb/db/migration/data/v30x/*
|
||||
phpBB/phpbb"
|
||||
dir="." returnProperty="retval-php-strict" passthru="true" />
|
||||
<php function="preg_replace" returnProperty="sniffIgnoreList">
|
||||
<param value="/\s+/"/>
|
||||
<param value=""/>
|
||||
<param value="${project.basedir}/phpBB/cache/*,
|
||||
${project.basedir}/phpBB/develop/*,
|
||||
${project.basedir}/phpBB/ext/*,
|
||||
${project.basedir}/phpBB/includes/diff/*.php,
|
||||
${project.basedir}/phpBB/includes/sphinxapi.php,
|
||||
${project.basedir}/phpBB/includes/utf/data/*,
|
||||
${project.basedir}/phpBB/install/data/*,
|
||||
${project.basedir}/phpBB/install/database_update.php,
|
||||
${project.basedir}/phpBB/phpbb/*,
|
||||
${project.basedir}/phpBB/vendor/*,
|
||||
${project.basedir}/phpBB/vendor-ext/*,
|
||||
${project.basedir}/phpBB/config.php,
|
||||
${project.basedir}/phpBB/config_dev.php,
|
||||
${project.basedir}/phpBB/config_test.php"/>
|
||||
</php>
|
||||
<exec command="phpBB/vendor/bin/phpcs
|
||||
-s -p
|
||||
--extensions=php
|
||||
--standard=build/code_sniffer/ruleset-php-legacy-core.xml
|
||||
--ignore=${project.basedir}/phpBB/cache/*
|
||||
--ignore=${project.basedir}/phpBB/develop/*
|
||||
--ignore=${project.basedir}/phpBB/ext/*
|
||||
--ignore=${project.basedir}/phpBB/includes/diff/*.php
|
||||
--ignore=${project.basedir}/phpBB/includes/sphinxapi.php
|
||||
--ignore=${project.basedir}/phpBB/includes/utf/data/*
|
||||
--ignore=${project.basedir}/phpBB/install/data/*
|
||||
--ignore=${project.basedir}/phpBB/install/database_update.php
|
||||
--ignore=${project.basedir}/phpBB/phpbb/*
|
||||
--ignore=${project.basedir}/phpBB/vendor/*
|
||||
--ignore=${sniffIgnoreList}
|
||||
phpBB"
|
||||
dir="." returnProperty="retval-php-legacy" passthru="true" />
|
||||
<exec command="phpBB/vendor/bin/phpcs
|
||||
-s -p
|
||||
--extensions=php
|
||||
--standard=build/code_sniffer/ruleset-php-extensions.xml
|
||||
--ignore=${project.basedir}/phpBB/ext/*/tests/*
|
||||
--ignore=${project.basedir}/phpBB/ext/*/vendor/*
|
||||
--ignore=${project.basedir}/phpBB/ext/*/tests/*,${project.basedir}/phpBB/ext/*/vendor/*
|
||||
phpBB/ext"
|
||||
dir="." returnProperty="retval-php-ext" passthru="true" />
|
||||
<if>
|
||||
|
@@ -11,6 +11,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use PHP_CodeSniffer\Files\File;
|
||||
use PHP_CodeSniffer\Sniffs\Sniff;
|
||||
|
||||
/**
|
||||
* Checks that each PHP source file contains a valid header as defined by the
|
||||
* phpBB Coding Guidelines.
|
||||
@@ -18,7 +21,7 @@
|
||||
* @package code_sniffer
|
||||
* @author Manuel Pichler <mapi@phpundercontrol.org>
|
||||
*/
|
||||
class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
class phpbb_Sniffs_Commenting_FileCommentSniff implements Sniff
|
||||
{
|
||||
/**
|
||||
* Returns an array of tokens this test wants to listen for.
|
||||
@@ -33,13 +36,13 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
/**
|
||||
* Processes this test, when one of its tokens is encountered.
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
|
||||
* @param File $phpcsFile The file being scanned.
|
||||
* @param int $stackPtr The position of the current token
|
||||
* in the stack passed in $tokens.
|
||||
*
|
||||
* @return null
|
||||
* @return void
|
||||
*/
|
||||
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
|
||||
public function process(File $phpcsFile, $stackPtr): void
|
||||
{
|
||||
// We are only interested in the first file comment.
|
||||
if ($stackPtr !== 0)
|
||||
@@ -62,7 +65,7 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
// Mark as error if this is not a doc comment
|
||||
else if ($start === false || $tokens[$start]['code'] !== T_DOC_COMMENT_OPEN_TAG)
|
||||
{
|
||||
$phpcsFile->addError('Missing required file doc comment.', $stackPtr);
|
||||
$phpcsFile->addError('Missing required file doc comment.', $stackPtr, 'MissingComment');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -82,7 +85,7 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
if ($tokens[$token]['column'] === 1 && (($tokens[$token]['content'] !== '*' && $tokens[$token]['content'] !== ' ') || ($tokens[$token]['content'] === ' ' && $tokens[$token + 1]['content'] !== '*')))
|
||||
{
|
||||
$message = 'The file doc comment should not be indented.';
|
||||
$phpcsFile->addWarning($message, $token);
|
||||
$phpcsFile->addWarning($message, $token, 'CommentIndented');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,13 +98,13 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
if (!(($tokens[$start + 2]['content'] !== '*' && $tokens[$start + 4]['content'] !== '*') || ($tokens[$start + 3]['content'] !== '*' && $tokens[$start + 6]['content'] !== '*')))
|
||||
{
|
||||
$message = 'The first file comment line should be empty.';
|
||||
$phpcsFile->addWarning($message, ($start + 1));
|
||||
$phpcsFile->addWarning($message, ($start + 1), 'CommentFirstNotEmpty');
|
||||
}
|
||||
|
||||
if ($tokens[$end - 3]['content'] !== '*' && $tokens[$end - 6]['content'] !== '*')
|
||||
{
|
||||
$message = 'The last file comment line should be empty.';
|
||||
$phpcsFile->addWarning($message, $end - 1);
|
||||
$phpcsFile->addWarning($message, $end - 1, 'CommentLastNotEmpty');
|
||||
}
|
||||
|
||||
//$this->processPackage($phpcsFile, $start, $tags);
|
||||
@@ -113,59 +116,59 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
/**
|
||||
* Checks that the tags array contains a valid package tag
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsFile The context source file instance.
|
||||
* @param File $phpcsFile The context source file instance.
|
||||
* @param integer The stack pointer for the first comment token.
|
||||
* @param array(string=>array) $tags The found file doc comment tags.
|
||||
*
|
||||
* @return null
|
||||
* @return void
|
||||
*/
|
||||
protected function processPackage(PHP_CodeSniffer_File $phpcsFile, $ptr, $tags)
|
||||
protected function processPackage(File $phpcsFile, $ptr, $tags): void
|
||||
{
|
||||
if (!isset($tags['package']))
|
||||
{
|
||||
$message = 'Missing require @package tag in file doc comment.';
|
||||
$phpcsFile->addError($message, $ptr);
|
||||
$phpcsFile->addError($message, $ptr, 'MissingTagPackage');
|
||||
}
|
||||
else if (preg_match('/^([\w]+)$/', $tags['package'][0]) === 0)
|
||||
{
|
||||
$message = 'Invalid content found for @package tag.';
|
||||
$phpcsFile->addWarning($message, $tags['package'][1]);
|
||||
$phpcsFile->addWarning($message, $tags['package'][1], 'InvalidTagPackage');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the tags array contains a valid version tag
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsFile The context source file instance.
|
||||
* @param File $phpcsFile The context source file instance.
|
||||
* @param integer The stack pointer for the first comment token.
|
||||
* @param array(string=>array) $tags The found file doc comment tags.
|
||||
*
|
||||
* @return null
|
||||
* @return void
|
||||
*/
|
||||
protected function processVersion(PHP_CodeSniffer_File $phpcsFile, $ptr, $tags)
|
||||
protected function processVersion(File $phpcsFile, $ptr, $tags): void
|
||||
{
|
||||
if (!isset($tags['version']))
|
||||
{
|
||||
$message = 'Missing require @version tag in file doc comment.';
|
||||
$phpcsFile->addError($message, $ptr);
|
||||
$phpcsFile->addError($message, $ptr, 'MissingTagVersion');
|
||||
}
|
||||
else if (preg_match('/^\$Id:[^\$]+\$$/', $tags['version'][0]) === 0)
|
||||
{
|
||||
$message = 'Invalid content found for @version tag, use "$Id: $".';
|
||||
$phpcsFile->addError($message, $tags['version'][1]);
|
||||
$phpcsFile->addError($message, $tags['version'][1], 'InvalidTagVersion');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the tags array contains a valid copyright tag
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsFile The context source file instance.
|
||||
* @param File $phpcsFile The context source file instance.
|
||||
* @param integer The stack pointer for the first comment token.
|
||||
* @param array(string=>array) $tags The found file doc comment tags.
|
||||
*
|
||||
* @return null
|
||||
* @return void
|
||||
*/
|
||||
protected function processCopyright(PHP_CodeSniffer_File $phpcsFile, $ptr, $tags)
|
||||
protected function processCopyright(File $phpcsFile, $ptr, $tags): void
|
||||
{
|
||||
$copyright = '(c) phpBB Limited <https://www.phpbb.com>';
|
||||
$tokens = $phpcsFile->getTokens();
|
||||
@@ -177,7 +180,7 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
if ($tokens[$tag + 2]['content'] !== $copyright)
|
||||
{
|
||||
$message = 'Invalid content found for the first @copyright tag, use "' . $copyright . '".';
|
||||
$phpcsFile->addError($message, $tags['copyright'][0][1]);
|
||||
$phpcsFile->addError($message, $tags['copyright'][0][1], 'InvalidTagCopyright');
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -185,19 +188,19 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
}
|
||||
|
||||
$message = 'Missing require @copyright tag in file doc comment.';
|
||||
$phpcsFile->addError($message, $ptr);
|
||||
$phpcsFile->addError($message, $ptr, 'MissingTagCopyright');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the tags array contains a valid license tag
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsFile The context source file instance.
|
||||
* @param File $phpcsFile The context source file instance.
|
||||
* @param integer The stack pointer for the first comment token.
|
||||
* @param array(string=>array) $tags The found file doc comment tags.
|
||||
*
|
||||
* @return null
|
||||
* @return void
|
||||
*/
|
||||
protected function processLicense(PHP_CodeSniffer_File $phpcsFile, $ptr, $tags)
|
||||
protected function processLicense(File $phpcsFile, $ptr, $tags): void
|
||||
{
|
||||
$license = 'GNU General Public License, version 2 (GPL-2.0)';
|
||||
$tokens = $phpcsFile->getTokens();
|
||||
@@ -210,7 +213,7 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
if ($found)
|
||||
{
|
||||
$message = 'It must be only one @license tag in file doc comment.';
|
||||
$phpcsFile->addError($message, $ptr);
|
||||
$phpcsFile->addError($message, $ptr, 'MultiTagVersion');
|
||||
}
|
||||
|
||||
$found = true;
|
||||
@@ -218,7 +221,7 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
if ($tokens[$tag + 2]['content'] !== $license)
|
||||
{
|
||||
$message = 'Invalid content found for @license tag, use "' . $license . '".';
|
||||
$phpcsFile->addError($message, $tags['license'][0][1]);
|
||||
$phpcsFile->addError($message, $tags['license'][0][1], 'InvalidTagLicense');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -226,7 +229,7 @@ class phpbb_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff
|
||||
if (!$found)
|
||||
{
|
||||
$message = 'Missing require @license tag in file doc comment.';
|
||||
$phpcsFile->addError($message, $ptr);
|
||||
$phpcsFile->addError($message, $ptr, 'MissingTagLicense');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -11,11 +11,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use PHP_CodeSniffer\Files\File;
|
||||
use PHP_CodeSniffer\Sniffs\Sniff;
|
||||
|
||||
/**
|
||||
* Checks that the opening brace of a control structures is on the line after.
|
||||
* From Generic_Sniffs_Functions_OpeningFunctionBraceBsdAllmanSniff
|
||||
*/
|
||||
class phpbb_Sniffs_ControlStructures_OpeningBraceBsdAllmanSniff implements PHP_CodeSniffer_Sniff
|
||||
class phpbb_Sniffs_ControlStructures_OpeningBraceBsdAllmanSniff implements Sniff
|
||||
{
|
||||
/**
|
||||
* Registers the tokens that this sniff wants to listen for.
|
||||
@@ -36,13 +39,13 @@ class phpbb_Sniffs_ControlStructures_OpeningBraceBsdAllmanSniff implements PHP_C
|
||||
/**
|
||||
* Processes this test, when one of its tokens is encountered.
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
|
||||
* @param File $phpcsFile The file being scanned.
|
||||
* @param int $stackPtr The position of the current token in the
|
||||
* stack passed in $tokens.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
|
||||
public function process(File $phpcsFile, $stackPtr)
|
||||
{
|
||||
$tokens = $phpcsFile->getTokens();
|
||||
|
||||
|
@@ -11,11 +11,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use PHP_CodeSniffer\Files\File;
|
||||
use PHP_CodeSniffer\Sniffs\Sniff;
|
||||
|
||||
/**
|
||||
* Checks that there is exactly one space between the keyword and the opening
|
||||
* parenthesis of a control structures.
|
||||
*/
|
||||
class phpbb_Sniffs_ControlStructures_OpeningParenthesisSniff implements PHP_CodeSniffer_Sniff
|
||||
class phpbb_Sniffs_ControlStructures_OpeningParenthesisSniff implements Sniff
|
||||
{
|
||||
/**
|
||||
* Registers the tokens that this sniff wants to listen for.
|
||||
@@ -36,13 +39,13 @@ class phpbb_Sniffs_ControlStructures_OpeningParenthesisSniff implements PHP_Code
|
||||
/**
|
||||
* Processes this test, when one of its tokens is encountered.
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
|
||||
* @param File $phpcsFile The file being scanned.
|
||||
* @param int $stackPtr The position of the current token in the
|
||||
* stack passed in $tokens.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
|
||||
public function process(File $phpcsFile, $stackPtr)
|
||||
{
|
||||
$tokens = $phpcsFile->getTokens();
|
||||
|
||||
|
@@ -11,10 +11,13 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use PHP_CodeSniffer\Files\File;
|
||||
use PHP_CodeSniffer\Sniffs\Sniff;
|
||||
|
||||
/**
|
||||
* Checks that each use statement is used.
|
||||
*/
|
||||
class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
@@ -24,7 +27,7 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
return array(T_USE);
|
||||
}
|
||||
|
||||
protected function check($phpcsFile, $found_name, $full_name, $short_name, $line)
|
||||
protected function check(File $phpcsFile, $found_name, $full_name, $short_name, $line)
|
||||
{
|
||||
|
||||
if ($found_name === $full_name)
|
||||
@@ -44,7 +47,7 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
|
||||
public function process(File $phpcsFile, $stackPtr)
|
||||
{
|
||||
if ($this->should_ignore_use($phpcsFile, $stackPtr) === true)
|
||||
{
|
||||
@@ -179,13 +182,13 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
/**
|
||||
* Check if this use statement is part of the namespace block.
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
|
||||
* @param File $phpcsFile The file being scanned.
|
||||
* @param int $stackPtr The position of the current token in
|
||||
* the stack passed in $tokens.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function should_ignore_use(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
|
||||
private function should_ignore_use(File $phpcsFile, $stackPtr)
|
||||
{
|
||||
$tokens = $phpcsFile->getTokens();
|
||||
|
||||
@@ -207,7 +210,7 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PHP_CodeSniffer_File $phpcsFile
|
||||
* @param File $phpcsFile
|
||||
* @param int $field
|
||||
* @param array $tokens
|
||||
* @param string $class_name_full
|
||||
@@ -216,7 +219,7 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function checkDocblock(PHP_CodeSniffer_File $phpcsFile, $comment_end, $tokens, $class_name_full, $class_name_short)
|
||||
private function checkDocblock(File $phpcsFile, $comment_end, $tokens, $class_name_full, $class_name_short)
|
||||
{
|
||||
$ok = false;
|
||||
|
||||
|
@@ -32,7 +32,7 @@ $iterator = Symfony\Component\Finder\Finder::create()
|
||||
;
|
||||
|
||||
$config = array(
|
||||
'theme' => 'enhanced',
|
||||
'theme' => 'default',
|
||||
'title' => 'phpBB API Documentation',
|
||||
'build_dir' => __DIR__.'/api/output/%version%',
|
||||
'cache_dir' => __DIR__.'/api/cache/%version%',
|
||||
|
@@ -36,6 +36,13 @@ RewriteRule ^(.*)$ app.php [QSA,L]
|
||||
#Options +FollowSymLinks
|
||||
</IfModule>
|
||||
|
||||
# Apache content negotation tries to interpret non-existent paths as files if
|
||||
# MultiViews is enabled. This will however cause issues with paths containg
|
||||
# dots, e.g. for the cron tasks
|
||||
<IfModule mod_negotiation.c>
|
||||
Options -MultiViews
|
||||
</IfModule>
|
||||
|
||||
# With Apache 2.4 the "Order, Deny" syntax has been deprecated and moved from
|
||||
# module mod_authz_host to a new module called mod_access_compat (which may be
|
||||
# disabled) and a new "Require" syntax has been introduced to mod_authz_host.
|
||||
|
6
phpBB/adm/images/phpbb_logo.svg
Normal file
6
phpBB/adm/images/phpbb_logo.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 33 KiB |
@@ -49,7 +49,6 @@ if (!$auth->acl_get('a_'))
|
||||
define('IN_ADMIN', true);
|
||||
|
||||
// Some oft used variables
|
||||
$safe_mode = (@ini_get('safe_mode') == '1' || strtolower(@ini_get('safe_mode')) === 'on') ? true : false;
|
||||
$file_uploads = (@ini_get('file_uploads') == '1' || strtolower(@ini_get('file_uploads')) === 'on') ? true : false;
|
||||
$module_id = $request->variable('i', '');
|
||||
$mode = $request->variable('mode', '');
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<dl>
|
||||
<dt><label for="avatar_upload_file">{L_UPLOAD_AVATAR_FILE}{L_COLON}</label></dt>
|
||||
<dd><input type="hidden" name="MAX_FILE_SIZE" value="{AVATAR_UPLOAD_SIZE}" /><input type="file" name="avatar_upload_file" id="avatar_upload_file" class="inputbox autowidth" /></dd>
|
||||
<dd><input type="hidden" name="MAX_FILE_SIZE" value="{AVATAR_UPLOAD_SIZE}" /><input type="file" name="avatar_upload_file" id="avatar_upload_file" class="inputbox autowidth" accept="{{ AVATAR_ALLOWED_EXTENSIONS }}" /></dd>
|
||||
</dl>
|
||||
|
||||
<!-- IF S_UPLOAD_AVATAR_URL -->
|
||||
|
@@ -44,7 +44,7 @@
|
||||
<!-- INCLUDE acp_posting_buttons.html -->
|
||||
|
||||
<dl class="responsive-columns">
|
||||
<dt style="width: 90px;" id="color_palette_placeholder" data-orientation="v" data-height="12" data-width="15" data-bbcode="true">
|
||||
<dt style="width: 90px;" id="color_palette_placeholder" data-color-palette="v" data-height="12" data-width="15" data-bbcode="true">
|
||||
</dt>
|
||||
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px;">
|
||||
|
7
phpBB/adm/style/acp_ext_actions.html
Normal file
7
phpBB/adm/style/acp_ext_actions.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{% for action in enabled.actions %}
|
||||
<a href="{{ action.U_ACTION }}"{% if action.L_ACTION_EXPLAIN %} title="{{ action.L_ACTION_EXPLAIN }}"{% endif %}{% if action.COLOR %} style="color: {{ action.COLOR }};"{% endif %} data-ajax="{{ action.ACTION_AJAX }}" data-refresh="true">{{ action.L_ACTION }}</a>{% if not action.S_LAST_ROW %} | {% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% for action in disabled.actions %}
|
||||
<a href="{{ action.U_ACTION }}"{% if action.L_ACTION_EXPLAIN %} title="{{ action.L_ACTION_EXPLAIN }}"{% endif %}{% if action.COLOR %} style="color: {{ action.COLOR }};"{% endif %} data-ajax="{{ action.ACTION_AJAX }}" data-refresh="true">{{ action.L_ACTION }}</a>{% if not action.S_LAST_ROW %} | {% endif %}
|
||||
{% endfor %}
|
@@ -1,40 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<h1>{L_EXTENSIONS_ADMIN}</h1>
|
||||
|
||||
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
||||
<p>{L_EXTENSION_DELETE_DATA_EXPLAIN}</p>
|
||||
|
||||
<!-- IF MIGRATOR_ERROR -->
|
||||
<div class="errorbox">
|
||||
<p><strong>{L_MIGRATION_EXCEPTION_ERROR}</strong></p>
|
||||
<p>{MIGRATOR_ERROR}</p>
|
||||
<p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p>
|
||||
</div>
|
||||
<!-- ELSEIF PRE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_CONFIRM_MESSAGE}</p>
|
||||
</div>
|
||||
|
||||
<form id="acp_extensions" method="post" action="{U_PURGE}">
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_EXTENSION_DELETE_DATA}</legend>
|
||||
<input class="button1" type="submit" name="delete_data" value="{L_EXTENSION_DELETE_DATA}" />
|
||||
<input class="button2" type="submit" name="cancel" value="{L_CANCEL}" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ELSEIF S_NEXT_STEP -->
|
||||
<div class="errorbox">
|
||||
<p>{L_EXTENSION_DELETE_DATA_IN_PROGRESS}</p>
|
||||
</div>
|
||||
<!-- ELSE -->
|
||||
<div class="successbox">
|
||||
<p>{L_EXTENSION_DELETE_DATA_SUCCESS}</p>
|
||||
<br />
|
||||
<p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
@@ -1,34 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<h1>{L_EXTENSIONS_ADMIN}</h1>
|
||||
|
||||
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
||||
<p>{L_EXTENSION_DISABLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF PRE -->
|
||||
<fieldset>
|
||||
<h2>{L_CONFIRM}</h2>
|
||||
<p>{L_CONFIRM_MESSAGE}</p>
|
||||
</fieldset>
|
||||
|
||||
<form id="acp_extensions" method="post" action="{U_DISABLE}">
|
||||
<fieldset class="submit-buttons">
|
||||
<input class="button1" type="submit" name="disable" value="{L_EXTENSION_DISABLE}" />
|
||||
<input class="button2" type="submit" name="cancel" value="{L_CANCEL}" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ELSEIF S_NEXT_STEP -->
|
||||
<div class="successbox notice">
|
||||
<p>{L_EXTENSION_DISABLE_IN_PROGRESS}</p>
|
||||
</div>
|
||||
<!-- ELSE -->
|
||||
<div class="successbox">
|
||||
<p>{L_EXTENSION_DISABLE_SUCCESS}</p>
|
||||
<br />
|
||||
<p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
@@ -1,40 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<h1>{L_EXTENSIONS_ADMIN}</h1>
|
||||
|
||||
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
||||
<p>{L_EXTENSION_ENABLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF MIGRATOR_ERROR -->
|
||||
<div class="errorbox">
|
||||
<p><strong>{L_MIGRATION_EXCEPTION_ERROR}</strong></p>
|
||||
<p>{MIGRATOR_ERROR}</p>
|
||||
<p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p>
|
||||
</div>
|
||||
<!-- ELSEIF PRE -->
|
||||
<fieldset>
|
||||
<h2>{L_CONFIRM}</h2>
|
||||
<p>{L_CONFIRM_MESSAGE}</p>
|
||||
</fieldset>
|
||||
|
||||
<form id="acp_extensions" method="post" action="{U_ENABLE}">
|
||||
<fieldset class="submit-buttons">
|
||||
<input class="button1" type="submit" name="enable" value="{L_EXTENSION_ENABLE}" />
|
||||
<input class="button2" type="submit" name="cancel" value="{L_CANCEL}" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ELSEIF S_NEXT_STEP -->
|
||||
<div class="successbox notice">
|
||||
<p>{L_EXTENSION_ENABLE_IN_PROGRESS}</p>
|
||||
</div>
|
||||
<!-- ELSE -->
|
||||
<div class="successbox">
|
||||
<p>{L_EXTENSION_ENABLE_SUCCESS}</p>
|
||||
<br />
|
||||
<p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
@@ -7,7 +7,7 @@
|
||||
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
||||
|
||||
<fieldset class="quick">
|
||||
<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>
|
||||
<span class="small"><a href="https://www.phpbb.com/go/customise/extensions/3.3" 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>
|
||||
|
||||
<form id="version_check_settings" method="post" action="{U_ACTION}" style="display:none">
|
||||
@@ -42,8 +42,8 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- IF .enabled -->
|
||||
<tr>
|
||||
|
||||
<tr id="ext_enabled_header"<!-- IF not .enabled --> class="hidden"<!-- ENDIF -->>
|
||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong><!-- EVENT acp_ext_list_enabled_title_after --></td>
|
||||
</tr>
|
||||
<!-- BEGIN enabled -->
|
||||
@@ -59,17 +59,12 @@
|
||||
</td>
|
||||
<td style="text-align: center;"><a href="{enabled.U_DETAILS}">{L_DETAILS}</a></td>
|
||||
<td style="text-align: center;">
|
||||
<!-- BEGIN actions -->
|
||||
<a href="{enabled.actions.U_ACTION}"<!-- IF enabled.actions.L_ACTION_EXPLAIN --> title="{enabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF -->>{enabled.actions.L_ACTION}</a>
|
||||
<!-- IF not enabled.actions.S_LAST_ROW --> | <!-- ENDIF -->
|
||||
<!-- END actions -->
|
||||
<!-- INCLUDE acp_ext_actions.html -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END enabled -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .disabled -->
|
||||
<tr>
|
||||
<tr id="ext_disabled_header"<!-- IF not .disabled --> class="hidden"<!-- ENDIF -->>
|
||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong><!-- EVENT acp_ext_list_disabled_title_after --></td>
|
||||
</tr>
|
||||
<!-- BEGIN disabled -->
|
||||
@@ -87,14 +82,10 @@
|
||||
<!-- IF disabled.U_DETAILS --><a href="{disabled.U_DETAILS}">{L_DETAILS}</a><!-- ENDIF -->
|
||||
</td>
|
||||
<td style="text-align: center;">
|
||||
<!-- BEGIN actions -->
|
||||
<a href="{disabled.actions.U_ACTION}"<!-- IF disabled.actions.L_ACTION_EXPLAIN --> title="{disabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF -->>{disabled.actions.L_ACTION}</a>
|
||||
<!-- IF not disabled.actions.S_LAST_ROW --> | <!-- ENDIF -->
|
||||
<!-- END actions -->
|
||||
<!-- INCLUDE acp_ext_actions.html -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END disabled -->
|
||||
<!-- ENDIF -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -210,6 +210,11 @@
|
||||
<dd><label><input type="radio" class="radio" name="display_subforum_list" value="1"<!-- IF S_DISPLAY_SUBFORUM_LIST --> id="display_subforum_list" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="display_subforum_list" value="0"<!-- IF not S_DISPLAY_SUBFORUM_LIST --> id="display_subforum_list" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="display_subforum_limit">{L_LIMIT_SUBFORUMS}{L_COLON}</label><br /><span>{L_LIMIT_SUBFORUMS_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="display_subforum_limit" value="1"<!-- IF S_DISPLAY_SUBFORUM_LIMIT --> id="display_subforum_limit" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="display_subforum_limit" value="0"<!-- IF not S_DISPLAY_SUBFORUM_LIMIT --> id="display_subforum_limit" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="display_on_index">{L_LIST_INDEX}{L_COLON}</label><br /><span>{L_LIST_INDEX_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="display_on_index" value="1"<!-- IF S_DISPLAY_ON_INDEX --> id="display_on_index" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
|
@@ -100,7 +100,7 @@
|
||||
<input name="group_colour" type="text" id="group_colour" value="{GROUP_COLOUR}" size="6" maxlength="6" />
|
||||
<!-- IF GROUP_COLOUR --> <span style="background-color: #{GROUP_COLOUR}"> </span><!-- ENDIF --> <span>
|
||||
[ <a href="#" id="color_palette_toggle">{L_COLOUR_SWATCH}</a> ]</span>
|
||||
<div id="color_palette_placeholder" style="display: none;" data-orientation="h" data-height="12" data-width="15" data-target="#group_colour"></div>
|
||||
<div id="color_palette_placeholder" style="display: none;" data-color-palette="h" data-height="12" data-width="15" data-target="#group_colour"></div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
|
@@ -38,10 +38,12 @@
|
||||
<dd>{L_SEND_STATISTICS_LONG}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<script>
|
||||
var statsData = {{ S_STATS_DATA }};
|
||||
</script>
|
||||
<!-- EVENT acp_help_phpbb_stats_after -->
|
||||
<fieldset>
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="systemdata" value="{RAW_DATA}" />
|
||||
<input type="hidden" name="help_send_statistics_time" value="{COLLECT_STATS_TIME}" />
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
</p>
|
||||
@@ -52,7 +54,11 @@
|
||||
<form action="{U_COLLECT_STATS}" method="post" target="questionaire_result" id="questionnaire-form">
|
||||
<fieldset>
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="systemdata" value="{RAW_DATA}" />
|
||||
{% for providers in providers %}
|
||||
{% for values in providers.values %}
|
||||
<input type="hidden" name="{{ providers.NAME }}[{{ values.KEY }}]" value="{{ values.VALUE }}" />
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
<input class="button1" type="submit" id="submit_stats" name="submit" value="{L_SEND_STATISTICS}" />
|
||||
</p>
|
||||
</fieldset>
|
||||
|
@@ -69,7 +69,7 @@
|
||||
<p>{L_ACP_LANGUAGE_PACKS_EXPLAIN}</p>
|
||||
|
||||
<fieldset class="quick">
|
||||
<span class="small"><a href="https://www.phpbb.com/go/customise/language-packs/3.2" target="_blank">{L_BROWSE_LANGUAGE_PACKS_DATABASE}</a></span>
|
||||
<span class="small"><a href="https://www.phpbb.com/go/customise/language-packs/3.3" target="_blank">{L_BROWSE_LANGUAGE_PACKS_DATABASE}</a></span>
|
||||
</fieldset>
|
||||
|
||||
<table class="table1 zebra-table">
|
||||
|
@@ -94,89 +94,116 @@
|
||||
|
||||
<!-- EVENT acp_main_notice_after -->
|
||||
|
||||
<table class="table1 two-columns no-header" data-no-responsive-header="true">
|
||||
<caption>{L_FORUM_STATS}</caption>
|
||||
<col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_STATISTIC}</th>
|
||||
<th>{L_VALUE}</th>
|
||||
<th>{L_STATISTIC}</th>
|
||||
<th>{L_VALUE}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{L_NUMBER_POSTS}{L_COLON} </td>
|
||||
<td><strong>{TOTAL_POSTS}</strong></td>
|
||||
<td>{L_POSTS_PER_DAY}{L_COLON} </td>
|
||||
<td><strong>{POSTS_PER_DAY}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{L_NUMBER_TOPICS}{L_COLON} </td>
|
||||
<td><strong>{TOTAL_TOPICS}</strong></td>
|
||||
<td>{L_TOPICS_PER_DAY}{L_COLON} </td>
|
||||
<td><strong>{TOPICS_PER_DAY}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{L_NUMBER_USERS}{L_COLON} </td>
|
||||
<td><strong>{TOTAL_USERS}</strong></td>
|
||||
<td>{L_USERS_PER_DAY}{L_COLON} </td>
|
||||
<td><strong>{USERS_PER_DAY}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{L_NUMBER_FILES}{L_COLON} </td>
|
||||
<td><strong>{TOTAL_FILES}</strong></td>
|
||||
<td>{L_FILES_PER_DAY}{L_COLON} </td>
|
||||
<td><strong>{FILES_PER_DAY}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{L_BOARD_STARTED}{L_COLON} </td>
|
||||
<td><strong>{START_DATE}</strong></td>
|
||||
<td>{L_AVATAR_DIR_SIZE}{L_COLON} </td>
|
||||
<td><strong>{AVATAR_DIR_SIZE}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{L_DATABASE_SIZE}{L_COLON} </td>
|
||||
<td><strong>{DBSIZE}</strong></td>
|
||||
<td>{L_UPLOAD_DIR_SIZE}{L_COLON} </td>
|
||||
<td><strong>{UPLOAD_DIR_SIZE}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{L_DATABASE_SERVER_INFO}{L_COLON} </td>
|
||||
<td><strong>{DATABASE_INFO}</strong></td>
|
||||
<td>{L_GZIP_COMPRESSION}{L_COLON} </td>
|
||||
<td><strong>{GZIP_COMPRESSION}</strong></td>
|
||||
</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 -->
|
||||
<tr>
|
||||
<td>{L_BOARD_VERSION}{L_COLON} </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> ]
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="lside">
|
||||
<table class="table2 zebra-table no-header" data-no-responsive-header="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ lang('STATISTIC') }}</th>
|
||||
<th>{{ lang('VALUE') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('BOARD_STARTED') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ START_DATE }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('AVATAR_DIR_SIZE') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ AVATAR_DIR_SIZE }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('DATABASE_SIZE') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ DBSIZE }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('UPLOAD_DIR_SIZE') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ UPLOAD_DIR_SIZE }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('DATABASE_SERVER_INFO') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ DATABASE_INFO }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('GZIP_COMPRESSION') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ GZIP_COMPRESSION }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('PHP_VERSION') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ PHP_VERSION_INFO }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
{% if S_TOTAL_ORPHAN %}
|
||||
<td class="tabled">{{ lang('NUMBER_ORPHAN') ~ lang('COLON') }}</td>
|
||||
<td class="tabled">
|
||||
{% if TOTAL_ORPHAN > 0 %}
|
||||
<a href="{{ U_ATTACH_ORPHAN }}" title="{{ lang('MORE_INFORMATION') }}"><strong>{{ TOTAL_ORPHAN }}</strong></a>
|
||||
{% else %}
|
||||
<strong>{{ TOTAL_ORPHAN }}</strong>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% if S_VERSIONCHECK %}
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('BOARD_VERSION') ~ lang('COLON') }}</td>
|
||||
<td class="tabled">
|
||||
<strong><a href="{{ U_VERSIONCHECK }}" {% if S_VERSION_UP_TO_DATE %}style="color: #228822;" {% elseif not S_VERSIONCHECK_FAIL %}style="color: #BC2A4D;" {% endif %}title="{{ lang('MORE_INFORMATION') }}">{{ BOARD_VERSION }}</a></strong> [ <a href="{{ U_VERSIONCHECK_FORCE }}">{{ lang('VERSIONCHECK_FORCE_UPDATE') }}</a> ]
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table class="table2 zebra-table no-header" data-no-responsive-header="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ lang('STATISTIC') }}</th>
|
||||
<th>{{ lang('VALUE') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('NUMBER_POSTS') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOTAL_POSTS }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('POSTS_PER_DAY') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ POSTS_PER_DAY }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('NUMBER_TOPICS') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOTAL_TOPICS }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('TOPICS_PER_DAY') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOPICS_PER_DAY }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('NUMBER_USERS') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOTAL_USERS }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('USERS_PER_DAY') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ USERS_PER_DAY }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('NUMBER_FILES') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOTAL_FILES }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('FILES_PER_DAY') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ FILES_PER_DAY }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled"> </td>
|
||||
<td class="tabled"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- IF S_ACTION_OPTIONS -->
|
||||
<fieldset>
|
||||
|
@@ -33,7 +33,7 @@
|
||||
<!-- IF L_EXPLAIN --><p>{L_EXPLAIN}</p><!-- ENDIF -->
|
||||
|
||||
<fieldset class="quick">
|
||||
<span class="small"><a href="https://www.phpbb.com/go/customise/styles/3.2" target="_blank">{L_BROWSE_STYLES_DATABASE}</a></span>
|
||||
<span class="small"><a href="https://www.phpbb.com/go/customise/styles/3.3" target="_blank">{L_BROWSE_STYLES_DATABASE}</a></span>
|
||||
</fieldset>
|
||||
|
||||
<form id="acp_styles" method="post" action="{U_ACTION}">
|
||||
|
@@ -26,7 +26,7 @@
|
||||
<!-- INCLUDE acp_posting_buttons.html -->
|
||||
|
||||
<dl class="responsive-columns">
|
||||
<dt style="width: 90px;" id="color_palette_placeholder" data-orientation="v" data-height="12" data-width="15" data-bbcode="true">
|
||||
<dt style="width: 90px;" id="color_palette_placeholder" data-color-palette="v" data-height="12" data-width="15" data-bbcode="true">
|
||||
</dt>
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px;"><textarea name="signature" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{SIGNATURE}</textarea></dd>
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 5px;">
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* phpBB 3.2 Admin Style Sheet
|
||||
/* phpBB 3.3 Admin Style Sheet
|
||||
------------------------------------------------------------------------
|
||||
Original author: subBlue ( http://www.subblue.com/ )
|
||||
Copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
@@ -191,7 +191,7 @@ li {
|
||||
|
||||
#page-header {
|
||||
text-align: right;
|
||||
background: url("../images/phpbb_logo.png") top left no-repeat;
|
||||
background: url("../images/phpbb_logo.svg") top left no-repeat;
|
||||
height: 54px;
|
||||
font-size: 0.85em;
|
||||
margin-bottom: 10px;
|
||||
@@ -199,7 +199,7 @@ li {
|
||||
|
||||
.rtl #page-header {
|
||||
text-align: left;
|
||||
background: url("../images/phpbb_logo.png") top right no-repeat;
|
||||
background: url("../images/phpbb_logo.svg") top right no-repeat;
|
||||
}
|
||||
|
||||
#page-header h1 {
|
||||
@@ -723,9 +723,25 @@ td {
|
||||
}
|
||||
|
||||
.table1 {
|
||||
border-collapse: separate;
|
||||
border-spacing: 1px;
|
||||
clear: both;
|
||||
border-spacing: 1px;
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
.table2 {
|
||||
display: inline-block;
|
||||
border-spacing: 1px;
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
.lside {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tabled {
|
||||
width: 1%;
|
||||
}
|
||||
|
||||
dt#color_palette_placeholder table {
|
||||
|
@@ -228,6 +228,64 @@ function parse_document(container)
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Extension actions helper functions
|
||||
*/
|
||||
function move_to_enabled(element)
|
||||
{
|
||||
var disabled_header = document.querySelector('#ext_disabled_header');
|
||||
disabled_header.parentNode.insertBefore(element, disabled_header);
|
||||
element.classList.remove('ext_disabled');
|
||||
element.classList.add('ext_enabled');
|
||||
}
|
||||
function move_to_disabled(element)
|
||||
{
|
||||
var table_body = document.querySelector('#ext_disabled_header').parentNode;
|
||||
table_body.appendChild(element);
|
||||
element.classList.remove('ext_enabled');
|
||||
element.classList.add('ext_disabled');
|
||||
}
|
||||
function set_actions(container, actions) {
|
||||
container.innerHTML = '';
|
||||
for (var i = 0; i < actions.length; i++) {
|
||||
var a = document.createElement('a');
|
||||
a.href = actions[i].U_ACTION.split('&').join('&'); // replace all occurances
|
||||
a.title = actions[i].L_ACTION_EXPLAIN;
|
||||
if (actions[i].COLOR) {
|
||||
a.style = actions[i].COLOR;
|
||||
}
|
||||
a.innerHTML = actions[i].L_ACTION;
|
||||
// ajaxify this action as well
|
||||
phpbb.ajaxify({
|
||||
selector: a,
|
||||
refresh: true,
|
||||
callback: actions[i].ACTION_AJAX
|
||||
});
|
||||
|
||||
container.appendChild(a);
|
||||
|
||||
if (i < actions.length - 1) {
|
||||
container.innerHTML += ' | ';
|
||||
}
|
||||
}
|
||||
}
|
||||
function show_enabled_header() {
|
||||
document.querySelector('#ext_enabled_header').classList.remove('hidden');
|
||||
}
|
||||
function show_disabled_header() {
|
||||
document.querySelector('#ext_disabled_header').classList.remove('hidden');
|
||||
}
|
||||
function hide_disabled_header_if_empty() {
|
||||
if (!document.querySelector('.ext_disabled')) {
|
||||
document.querySelector('#ext_disabled_header').classList.add('hidden');
|
||||
}
|
||||
}
|
||||
function hide_enabled_header_if_empty() {
|
||||
if (!document.querySelector('.ext_enabled')) {
|
||||
document.querySelector('#ext_enabled_header').classList.add('hidden');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Run onload functions
|
||||
*/
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* global phpbb */
|
||||
/* global phpbb, statsData */
|
||||
|
||||
(function($) { // Avoid conflicts with other libraries
|
||||
|
||||
@@ -74,7 +74,7 @@ phpbb.prepareSendStats = function () {
|
||||
var $sendStatisticsSuccess = $('<input />', {
|
||||
type: 'hidden',
|
||||
name: 'send_statistics_response',
|
||||
value: res
|
||||
value: JSON.stringify(res)
|
||||
});
|
||||
$sendStatisticsSuccess.appendTo('p.submit-buttons');
|
||||
|
||||
@@ -87,7 +87,7 @@ phpbb.prepareSendStats = function () {
|
||||
$.ajax({
|
||||
url: $this.attr('data-ajax-action').replace('&', '&'),
|
||||
type: 'POST',
|
||||
data: 'systemdata=' + encodeURIComponent($this.find('input[name=systemdata]').val()),
|
||||
data: statsData,
|
||||
success: returnHandler,
|
||||
error: errorHandler,
|
||||
cache: false
|
||||
@@ -157,6 +157,34 @@ phpbb.addAjaxCallback('row_delete', function(res) {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Callbacks for extension actions
|
||||
*/
|
||||
phpbb.addAjaxCallback('ext_enable', function(res) {
|
||||
if (res.EXT_ENABLE_SUCCESS) {
|
||||
move_to_enabled(this.parentNode.parentNode);
|
||||
set_actions(this.parentNode, res.ACTIONS);
|
||||
show_enabled_header();
|
||||
hide_disabled_header_if_empty();
|
||||
}
|
||||
});
|
||||
phpbb.addAjaxCallback('ext_delete_data', function(res) {
|
||||
if (res.EXT_DELETE_DATA_SUCCESS) {
|
||||
move_to_disabled(this.parentNode.parentNode);
|
||||
set_actions(this.parentNode, res.ACTIONS);
|
||||
show_disabled_header();
|
||||
hide_enabled_header_if_empty();
|
||||
}
|
||||
});
|
||||
phpbb.addAjaxCallback('ext_disable', function(res) {
|
||||
if (res.EXT_DISABLE_SUCCESS) {
|
||||
move_to_disabled(this.parentNode.parentNode);
|
||||
set_actions(this.parentNode, res.ACTIONS);
|
||||
show_disabled_header();
|
||||
hide_enabled_header_if_empty();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Handler for submitting permissions form in chunks
|
||||
* This call will submit permissions forms in chunks of 5 fieldsets.
|
||||
|
@@ -5,8 +5,9 @@
|
||||
<div>{L_RECAPTCHA_NOSCRIPT}</div>
|
||||
</noscript>
|
||||
|
||||
{L_RECAPTCHA_INVISIBLE}
|
||||
<script src="{RECAPTCHA_SERVER}.js?hl={LA_RECAPTCHA_LANG}" async defer></script>
|
||||
<div class="g-recaptcha" data-sitekey="{RECAPTCHA_PUBKEY}"></div>
|
||||
<div class="g-recaptcha" data-sitekey="{RECAPTCHA_PUBKEY}" data-size="invisible"></div>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ELSE -->
|
||||
|
@@ -23,7 +23,7 @@ installLang = {
|
||||
</script>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.min.js">\x3C/script>');</script><!-- ENDIF -->
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.4.1.min.js">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
<!-- INCLUDEJS admin.js -->
|
||||
{$SCRIPTS}
|
||||
|
@@ -34,7 +34,7 @@
|
||||
</div>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.4.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
<!-- INCLUDEJS ajax.js -->
|
||||
<!-- INCLUDEJS admin.js -->
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
<h1>{L_ACP_FORUM_PERMISSIONS_COPY}</h1>
|
||||
|
||||
{L_ACP_FORUM_PERMISSIONS_COPY_EXPLAIN}
|
||||
<p>{L_ACP_FORUM_PERMISSIONS_COPY_EXPLAIN}</p>
|
||||
|
||||
<form id="forum_perm_copy" method="post" action="{U_ACTION}">
|
||||
|
||||
|
@@ -17,7 +17,7 @@
|
||||
</div>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.4.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
|
||||
<!-- EVENT acp_simple_footer_after -->
|
||||
|
12
phpBB/assets/cookieconsent/cookieconsent.min.css
vendored
12
phpBB/assets/cookieconsent/cookieconsent.min.css
vendored
@@ -1,6 +1,6 @@
|
||||
.cc-window{opacity:1;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{transition:transform 1s ease}.cc-animate.cc-revoke.cc-top{transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-bottom,.cc-animate.cc-revoke.cc-active.cc-top,.cc-revoke:hover{transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;transition:max-height 1s}
|
||||
.cc-link,.cc-revoke:hover{text-decoration:underline}.cc-revoke,.cc-window{position:fixed;overflow:hidden;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-banner .cc-btn:last-child{min-width:140px}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
|
||||
.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-ms-flex:1;flex:1}.cc-window.cc-banner{-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{-ms-flex:1;flex:1}.cc-compliance{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-compliance>.cc-btn{-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
|
||||
@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-ms-flex:1;flex:1}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-ms-flex-align:unset;align-items:unset}}
|
||||
.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
|
||||
.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em 2em 1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}
|
||||
.cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}
|
||||
.cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
|
||||
.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
|
||||
@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}}
|
||||
.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
|
||||
.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}
|
File diff suppressed because one or more lines are too long
@@ -11,7 +11,9 @@ phpbb.alertTime = 100;
|
||||
var keymap = {
|
||||
TAB: 9,
|
||||
ENTER: 13,
|
||||
ESC: 27
|
||||
ESC: 27,
|
||||
ARROW_UP: 38,
|
||||
ARROW_DOWN: 40
|
||||
};
|
||||
|
||||
var $dark = $('#darkenwrapper');
|
||||
@@ -561,7 +563,7 @@ phpbb.search.setValue = function($input, value, multiline) {
|
||||
phpbb.search.setValueOnClick = function($input, value, $row, $container) {
|
||||
$row.click(function() {
|
||||
phpbb.search.setValue($input, value.result, $input.attr('data-multiline'));
|
||||
$container.hide();
|
||||
phpbb.search.closeResults($input, $container);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -575,7 +577,7 @@ phpbb.search.setValueOnClick = function($input, value, $row, $container) {
|
||||
* @param {object} event Onkeyup event object.
|
||||
* @param {function} sendRequest Function to execute AJAX request.
|
||||
*
|
||||
* @returns {bool} Returns false.
|
||||
* @returns {boolean} Returns false.
|
||||
*/
|
||||
phpbb.search.filter = function(data, event, sendRequest) {
|
||||
var $this = $(this),
|
||||
@@ -584,9 +586,16 @@ phpbb.search.filter = function(data, event, sendRequest) {
|
||||
searchID = $this.attr('data-results'),
|
||||
keyword = phpbb.search.getKeyword($this, data[dataName], $this.attr('data-multiline')),
|
||||
cache = phpbb.search.cache.get(searchID),
|
||||
key = event.keyCode || event.which,
|
||||
proceed = true;
|
||||
data[dataName] = keyword;
|
||||
|
||||
// No need to search if enter was pressed
|
||||
// for selecting a value from the results.
|
||||
if (key === keymap.ENTER) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cache.timeout) {
|
||||
clearTimeout(cache.timeout);
|
||||
}
|
||||
@@ -697,22 +706,108 @@ phpbb.search.showResults = function(results, $input, $container, callback) {
|
||||
row.appendTo($resultContainer).show();
|
||||
});
|
||||
$container.show();
|
||||
|
||||
phpbb.search.navigateResults($input, $container, $resultContainer);
|
||||
};
|
||||
|
||||
/**
|
||||
* Clear search results.
|
||||
*
|
||||
* @param {jQuery} $container Search results container.
|
||||
* @param {jQuery} $container Search results container.
|
||||
*/
|
||||
phpbb.search.clearResults = function($container) {
|
||||
$container.children(':not(.search-result-tpl)').remove();
|
||||
};
|
||||
|
||||
/**
|
||||
* Close search results.
|
||||
*
|
||||
* @param {jQuery} $input Search input|textarea.
|
||||
* @param {jQuery} $container Search results container.
|
||||
*/
|
||||
phpbb.search.closeResults = function($input, $container) {
|
||||
$input.off('.phpbb.search');
|
||||
$container.hide();
|
||||
};
|
||||
|
||||
/**
|
||||
* Navigate search results.
|
||||
*
|
||||
* @param {jQuery} $input Search input|textarea.
|
||||
* @param {jQuery} $container Search results container.
|
||||
* @param {jQuery} $resultContainer Search results list container.
|
||||
*/
|
||||
phpbb.search.navigateResults = function($input, $container, $resultContainer) {
|
||||
// Add a namespace to the event (.phpbb.search),
|
||||
// so it can be unbound specifically later on.
|
||||
// Rebind it, to ensure the event is 'dynamic'.
|
||||
$input.off('.phpbb.search');
|
||||
$input.on('keydown.phpbb.search', function(event) {
|
||||
var key = event.keyCode || event.which,
|
||||
$active = $resultContainer.children('.active');
|
||||
|
||||
switch (key) {
|
||||
// Close the results
|
||||
case keymap.ESC:
|
||||
phpbb.search.closeResults($input, $container);
|
||||
break;
|
||||
|
||||
// Set the value for the selected result
|
||||
case keymap.ENTER:
|
||||
if ($active.length) {
|
||||
var value = $active.find('.search-result > span').text();
|
||||
|
||||
phpbb.search.setValue($input, value, $input.attr('data-multiline'));
|
||||
}
|
||||
|
||||
phpbb.search.closeResults($input, $container);
|
||||
|
||||
// Do not submit the form
|
||||
event.preventDefault();
|
||||
break;
|
||||
|
||||
// Navigate the results
|
||||
case keymap.ARROW_DOWN:
|
||||
case keymap.ARROW_UP:
|
||||
var up = key === keymap.ARROW_UP,
|
||||
$children = $resultContainer.children();
|
||||
|
||||
if (!$active.length) {
|
||||
if (up) {
|
||||
$children.last().addClass('active');
|
||||
} else {
|
||||
$children.first().addClass('active');
|
||||
}
|
||||
} else if ($children.length > 1) {
|
||||
if (up) {
|
||||
if ($active.is(':first-child')) {
|
||||
$children.last().addClass('active');
|
||||
} else {
|
||||
$active.prev().addClass('active');
|
||||
}
|
||||
} else {
|
||||
if ($active.is(':last-child')) {
|
||||
$children.first().addClass('active');
|
||||
} else {
|
||||
$active.next().addClass('active');
|
||||
}
|
||||
}
|
||||
|
||||
$active.removeClass('active');
|
||||
}
|
||||
|
||||
// Do not change cursor position in the input element
|
||||
event.preventDefault();
|
||||
break;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$('#phpbb').click(function() {
|
||||
var $this = $(this);
|
||||
|
||||
if (!$this.is('.live-search') && !$this.parents().is('.live-search')) {
|
||||
$('.live-search').hide();
|
||||
phpbb.search.closeResults($('input, textarea'), $('.live-search'));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1492,7 +1587,7 @@ phpbb.colorPalette = function(dir, width, height) {
|
||||
* @param {jQuery} el jQuery object for the palette container.
|
||||
*/
|
||||
phpbb.registerPalette = function(el) {
|
||||
var orientation = el.attr('data-orientation'),
|
||||
var orientation = el.attr('data-color-palette') || el.attr('data-orientation'), // data-orientation kept for backwards compat.
|
||||
height = el.attr('data-height'),
|
||||
width = el.attr('data-width'),
|
||||
target = el.attr('data-target'),
|
||||
@@ -1650,6 +1745,50 @@ phpbb.lazyLoadAvatars = function loadAvatars() {
|
||||
});
|
||||
};
|
||||
|
||||
var recaptchaForm = $('.g-recaptcha').parents('form');
|
||||
var submitButton = null;
|
||||
var programaticallySubmitted = false;
|
||||
|
||||
phpbb.recaptchaOnLoad = function () {
|
||||
// Listen to submit buttons in order to know which one was pressed
|
||||
$('input[type="submit"]').each(function () {
|
||||
$(this).on('click', function () {
|
||||
submitButton = this;
|
||||
});
|
||||
});
|
||||
|
||||
recaptchaForm.on('submit', function (e) {
|
||||
if (!programaticallySubmitted) {
|
||||
grecaptcha.execute();
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
phpbb.recaptchaOnSubmit = function () {
|
||||
programaticallySubmitted = true;
|
||||
// If concrete button was clicked (e.g. preview instead of submit),
|
||||
// let's trigger the same action
|
||||
if (submitButton) {
|
||||
submitButton.click();
|
||||
} else {
|
||||
// Rename input[name="submit"] so that we can submit the form
|
||||
if (typeof recaptchaForm.submit !== 'function') {
|
||||
recaptchaForm.submit.name = 'submit_btn';
|
||||
}
|
||||
recaptchaForm.submit();
|
||||
}
|
||||
}
|
||||
|
||||
// reCAPTCHA doesn't accept callback functions nested inside objects
|
||||
// so we need to make this helper functions here
|
||||
window.phpbbRecaptchaOnLoad = function() {
|
||||
phpbb.recaptchaOnLoad();
|
||||
}
|
||||
window.phpbbRecaptchaOnSubmit = function() {
|
||||
phpbb.recaptchaOnSubmit();
|
||||
}
|
||||
|
||||
$(window).on('load', phpbb.lazyLoadAvatars);
|
||||
|
||||
/**
|
||||
@@ -1662,7 +1801,7 @@ $(function() {
|
||||
|
||||
phpbb.registerPageDropdowns();
|
||||
|
||||
$('[data-orientation]').each(function() {
|
||||
$('[data-color-palette], [data-orientation]').each(function() {
|
||||
phpbb.registerPalette($(this));
|
||||
});
|
||||
|
||||
|
2
phpBB/assets/javascript/jquery-3.4.1.min.js
vendored
Normal file
2
phpBB/assets/javascript/jquery-3.4.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5
phpBB/assets/javascript/jquery.min.js
vendored
5
phpBB/assets/javascript/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Minimum Requirement: PHP 5.4.0
|
||||
* Minimum Requirement: PHP 7.1.3
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
@@ -132,6 +132,8 @@ catch (InvalidArgumentException $e)
|
||||
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
|
||||
$phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver'));
|
||||
|
||||
$phpbb_container->get('dbal.conn')->set_debug_sql_explain($phpbb_container->getParameter('debug.sql_explain'));
|
||||
$phpbb_container->get('dbal.conn')->set_debug_load_time($phpbb_container->getParameter('debug.load_time'));
|
||||
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
|
||||
|
||||
register_compatibility_globals();
|
||||
|
@@ -25,51 +25,52 @@
|
||||
"phpbb/phpbb-core": "self.version"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4",
|
||||
"bantu/ini-get-wrapper": "1.0.*",
|
||||
"php": "^7.1.3",
|
||||
"ext-json": "*",
|
||||
"bantu/ini-get-wrapper": "~1.0",
|
||||
"google/recaptcha": "~1.1",
|
||||
"guzzlehttp/guzzle": "~5.3",
|
||||
"guzzlehttp/guzzle": "~6.3",
|
||||
"lusitanian/oauth": "^0.8.1",
|
||||
"marc1706/fast-image-size": "^1.1",
|
||||
"paragonie/random_compat": "^2.0",
|
||||
"patchwork/utf8": "^1.1",
|
||||
"s9e/text-formatter": "^1.3",
|
||||
"symfony/config": "^2.8",
|
||||
"symfony/console": "^2.8",
|
||||
"symfony/debug": "^2.8",
|
||||
"symfony/dependency-injection": "^2.8",
|
||||
"symfony/event-dispatcher": "^2.8",
|
||||
"symfony/filesystem": "^2.8",
|
||||
"symfony/finder": "^2.8",
|
||||
"symfony/http-foundation": "^2.8",
|
||||
"symfony/http-kernel": "^2.8",
|
||||
"symfony/proxy-manager-bridge": "^2.8",
|
||||
"symfony/routing": "^2.8",
|
||||
"symfony/twig-bridge": "^2.8",
|
||||
"symfony/yaml": "^2.8",
|
||||
"twig/twig": "^1.0"
|
||||
"s9e/text-formatter": "^2.0",
|
||||
"symfony/config": "~3.4",
|
||||
"symfony/console": "~3.4",
|
||||
"symfony/debug": "~3.4",
|
||||
"symfony/dependency-injection": "~3.4",
|
||||
"symfony/event-dispatcher": "~3.4",
|
||||
"symfony/filesystem": "~3.4",
|
||||
"symfony/finder": "~3.4",
|
||||
"symfony/http-foundation": "~3.4",
|
||||
"symfony/http-kernel": "~3.4",
|
||||
"symfony/process": "^3.4",
|
||||
"symfony/proxy-manager-bridge": "~3.4",
|
||||
"symfony/routing": "~3.4",
|
||||
"symfony/twig-bridge": "~3.4",
|
||||
"symfony/yaml": "~3.4",
|
||||
"twig/twig": "^1.0 || ^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"fabpot/goutte": "~2.0",
|
||||
"facebook/webdriver": "~1.1",
|
||||
"laravel/homestead": "~2.2",
|
||||
"phing/phing": "2.4.*",
|
||||
"phpunit/dbunit": "1.3.*",
|
||||
"phpunit/phpunit": "^4.1",
|
||||
"sami/sami": "1.*",
|
||||
"squizlabs/php_codesniffer": "2.*",
|
||||
"symfony/browser-kit": "^2.8",
|
||||
"symfony/css-selector": "^2.8",
|
||||
"symfony/dom-crawler": "^2.8"
|
||||
"fabpot/goutte": "~3.2",
|
||||
"facebook/webdriver": "~1.6",
|
||||
"laravel/homestead": "~7.0",
|
||||
"phing/phing": "~2.4",
|
||||
"phpunit/dbunit": "~4.0",
|
||||
"phpunit/phpunit": "^7.0",
|
||||
"squizlabs/php_codesniffer": "~3.4",
|
||||
"symfony/browser-kit": "~3.4",
|
||||
"symfony/css-selector": "~3.4",
|
||||
"symfony/dom-crawler": "~3.4",
|
||||
"sami/sami": "^4.1"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.2.x-dev"
|
||||
"dev-master": "3.3.x-dev"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "5.4.7"
|
||||
"php": "7.1.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
2659
phpBB/composer.lock
generated
2659
phpBB/composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -14,6 +14,8 @@ parameters:
|
||||
|
||||
# List of default password driver types
|
||||
passwords.algorithms:
|
||||
- passwords.driver.argon2id
|
||||
- passwords.driver.argon2i
|
||||
- passwords.driver.bcrypt_2y
|
||||
- passwords.driver.bcrypt
|
||||
- passwords.driver.salted_md5
|
||||
|
@@ -27,6 +27,7 @@ imports:
|
||||
- { resource: services_text_formatter.yml }
|
||||
- { resource: services_text_reparser.yml }
|
||||
- { resource: services_twig.yml }
|
||||
- { resource: services_ucp.yml }
|
||||
- { resource: services_user.yml }
|
||||
|
||||
- { resource: tables.yml }
|
||||
|
@@ -15,12 +15,12 @@ services:
|
||||
auth.provider.db:
|
||||
class: phpbb\auth\provider\db
|
||||
arguments:
|
||||
- '@dbal.conn'
|
||||
- '@captcha.factory'
|
||||
- '@config'
|
||||
- '@dbal.conn'
|
||||
- '@passwords.manager'
|
||||
- '@request'
|
||||
- '@user'
|
||||
- '@service_container'
|
||||
- '%core.root_path%'
|
||||
- '%core.php_ext%'
|
||||
tags:
|
||||
@@ -29,9 +29,9 @@ services:
|
||||
auth.provider.apache:
|
||||
class: phpbb\auth\provider\apache
|
||||
arguments:
|
||||
- '@dbal.conn'
|
||||
- '@config'
|
||||
- '@passwords.manager'
|
||||
- '@dbal.conn'
|
||||
- '@language'
|
||||
- '@request'
|
||||
- '@user'
|
||||
- '%core.root_path%'
|
||||
@@ -42,9 +42,9 @@ services:
|
||||
auth.provider.ldap:
|
||||
class: phpbb\auth\provider\ldap
|
||||
arguments:
|
||||
- '@dbal.conn'
|
||||
- '@config'
|
||||
- '@passwords.manager'
|
||||
- '@dbal.conn'
|
||||
- '@language'
|
||||
- '@user'
|
||||
tags:
|
||||
- { name: auth.provider }
|
||||
@@ -52,18 +52,18 @@ services:
|
||||
auth.provider.oauth:
|
||||
class: phpbb\auth\provider\oauth\oauth
|
||||
arguments:
|
||||
- '@dbal.conn'
|
||||
- '@config'
|
||||
- '@passwords.manager'
|
||||
- '@dbal.conn'
|
||||
- '@auth.provider.db'
|
||||
- '@dispatcher'
|
||||
- '@language'
|
||||
- '@request'
|
||||
- '@auth.provider.oauth.service_collection'
|
||||
- '@user'
|
||||
- '%tables.auth_provider_oauth_token_storage%'
|
||||
- '%tables.auth_provider_oauth_states%'
|
||||
- '%tables.auth_provider_oauth_account_assoc%'
|
||||
- '@auth.provider.oauth.service_collection'
|
||||
- '%tables.users%'
|
||||
- '@service_container'
|
||||
- '@dispatcher'
|
||||
- '%core.root_path%'
|
||||
- '%core.php_ext%'
|
||||
tags:
|
||||
|
@@ -158,14 +158,6 @@ services:
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
||||
console.command.fixup.recalculate_email_hash:
|
||||
class: phpbb\console\command\fixup\recalculate_email_hash
|
||||
arguments:
|
||||
- '@user'
|
||||
- '@dbal.conn'
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
||||
console.command.fixup.update_hashes:
|
||||
class: phpbb\console\command\fixup\update_hashes
|
||||
arguments:
|
||||
|
@@ -3,6 +3,7 @@ services:
|
||||
class: phpbb\cron\manager
|
||||
arguments:
|
||||
- '@cron.task_collection'
|
||||
- '@routing.helper'
|
||||
- '%core.root_path%'
|
||||
- '%core.php_ext%'
|
||||
|
||||
@@ -13,6 +14,18 @@ services:
|
||||
- '@config'
|
||||
- '@dbal.conn'
|
||||
|
||||
cron.controller:
|
||||
class: phpbb\cron\controller\cron
|
||||
|
||||
cron.event_listener:
|
||||
class: phpbb\cron\event\cron_runner_listener
|
||||
arguments:
|
||||
- '@cron.lock_db'
|
||||
- '@cron.manager'
|
||||
- '@request'
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
||||
|
||||
# ----- Cron tasks -----
|
||||
cron.task_collection:
|
||||
class: phpbb\di\service_collection
|
||||
|
@@ -1,4 +1,7 @@
|
||||
parameters:
|
||||
passwords.driver.argon2_memory_cost: 1024
|
||||
passwords.driver.argon2_threads: 2
|
||||
passwords.driver.argon2_time_cost: 2
|
||||
passwords.driver.bcrypt_cost: 10
|
||||
|
||||
services:
|
||||
@@ -27,6 +30,23 @@ services:
|
||||
tags:
|
||||
- { name: service_collection, tag: passwords.driver }
|
||||
|
||||
passwords.driver.argon2i:
|
||||
class: phpbb\passwords\driver\argon2i
|
||||
arguments:
|
||||
- '@config'
|
||||
- '@passwords.driver_helper'
|
||||
- '%passwords.driver.argon2_memory_cost%'
|
||||
- '%passwords.driver.argon2_threads%'
|
||||
- '%passwords.driver.argon2_time_cost%'
|
||||
tags:
|
||||
- { name: passwords.driver }
|
||||
|
||||
passwords.driver.argon2id:
|
||||
class: phpbb\passwords\driver\argon2id
|
||||
parent: passwords.driver.argon2i
|
||||
tags:
|
||||
- { name: passwords.driver }
|
||||
|
||||
passwords.driver.bcrypt:
|
||||
class: phpbb\passwords\driver\bcrypt
|
||||
arguments:
|
||||
|
@@ -12,8 +12,6 @@ services:
|
||||
class: Symfony\Component\HttpKernel\EventListener\RouterListener
|
||||
arguments:
|
||||
- '@router'
|
||||
- null
|
||||
- null
|
||||
- '@request_stack'
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
||||
|
@@ -4,6 +4,11 @@ parameters:
|
||||
text_formatter.cache.renderer.key: _text_formatter_renderer
|
||||
|
||||
services:
|
||||
text_formatter.acp_utils:
|
||||
class: phpbb\textformatter\s9e\acp_utils
|
||||
arguments:
|
||||
- '@text_formatter.s9e.factory'
|
||||
|
||||
text_formatter.cache:
|
||||
alias: text_formatter.s9e.factory
|
||||
|
||||
|
@@ -38,10 +38,23 @@ services:
|
||||
class: phpbb\template\twig\extension
|
||||
arguments:
|
||||
- '@template_context'
|
||||
- '@template.twig.environment'
|
||||
- '@language'
|
||||
tags:
|
||||
- { name: twig.extension }
|
||||
|
||||
template.twig.extensions.avatar:
|
||||
class: phpbb\template\twig\extension\avatar
|
||||
tags:
|
||||
- { name: twig.extension }
|
||||
|
||||
template.twig.extensions.config:
|
||||
class: phpbb\template\twig\extension\config
|
||||
arguments:
|
||||
- '@config'
|
||||
tags:
|
||||
- { name: twig.extension }
|
||||
|
||||
template.twig.extensions.routing:
|
||||
class: phpbb\template\twig\extension\routing
|
||||
arguments:
|
||||
@@ -49,6 +62,11 @@ services:
|
||||
tags:
|
||||
- { name: twig.extension }
|
||||
|
||||
template.twig.extensions.username:
|
||||
class: phpbb\template\twig\extension\username
|
||||
tags:
|
||||
- { name: twig.extension }
|
||||
|
||||
template.twig.extensions.debug:
|
||||
class: Twig_Extension_Debug
|
||||
|
||||
|
17
phpBB/config/default/container/services_ucp.yml
Normal file
17
phpBB/config/default/container/services_ucp.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
services:
|
||||
phpbb.ucp.controller.reset_password:
|
||||
class: phpbb\ucp\controller\reset_password
|
||||
arguments:
|
||||
- '@config'
|
||||
- '@dbal.conn'
|
||||
- '@dispatcher'
|
||||
- '@controller.helper'
|
||||
- '@language'
|
||||
- '@log'
|
||||
- '@passwords.manager'
|
||||
- '@request'
|
||||
- '@template'
|
||||
- '@user'
|
||||
- '%tables.users%'
|
||||
- '%core.root_path%'
|
||||
- '%core.php_ext%'
|
3
phpBB/config/default/routing/cron.yml
Normal file
3
phpBB/config/default/routing/cron.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
phpbb_cron_run:
|
||||
path: /{cron_type}
|
||||
defaults: { _controller: cron.controller:handle }
|
@@ -8,6 +8,10 @@
|
||||
# instantiate the 'foo_service' service and call the 'method' method.
|
||||
#
|
||||
|
||||
phpbb_cron_routing:
|
||||
resource: cron.yml
|
||||
prefix: /cron
|
||||
|
||||
phpbb_feed_routing:
|
||||
resource: feed.yml
|
||||
prefix: /feed
|
||||
@@ -22,3 +26,7 @@ phpbb_help_routing:
|
||||
|
||||
phpbb_report_routing:
|
||||
resource: report.yml
|
||||
|
||||
phpbb_ucp_routing:
|
||||
resource: ucp.yml
|
||||
prefix: /user
|
||||
|
7
phpBB/config/default/routing/ucp.yml
Normal file
7
phpBB/config/default/routing/ucp.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
phpbb_ucp_reset_password_controller:
|
||||
path: /reset_password
|
||||
defaults: { _controller: phpbb.ucp.controller.reset_password:reset }
|
||||
|
||||
phpbb_ucp_forgot_password_controller:
|
||||
path: /forgot_password
|
||||
defaults: { _controller: phpbb.ucp.controller.reset_password:request }
|
@@ -3,11 +3,19 @@ imports:
|
||||
|
||||
core:
|
||||
require_dev_dependencies: true
|
||||
allow_install_dir: true
|
||||
|
||||
debug:
|
||||
exceptions: true
|
||||
load_time: true
|
||||
sql_explain: true
|
||||
memory: true
|
||||
show_errors: true
|
||||
|
||||
twig:
|
||||
debug: true
|
||||
auto_reload: true
|
||||
enable_debug_extension: true
|
||||
|
||||
session:
|
||||
log_errors: true
|
||||
|
@@ -3,3 +3,4 @@ imports:
|
||||
|
||||
core:
|
||||
require_dev_dependencies: true
|
||||
allow_install_dir: true
|
||||
|
@@ -11,10 +11,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
|
||||
/**
|
||||
*/
|
||||
define('IN_PHPBB', true);
|
||||
define('IN_CRON', true);
|
||||
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
include($phpbb_root_path . 'common.' . $phpEx);
|
||||
@@ -23,62 +24,14 @@ include($phpbb_root_path . 'common.' . $phpEx);
|
||||
$user->session_begin(false);
|
||||
$auth->acl($user->data);
|
||||
|
||||
function output_image()
|
||||
{
|
||||
// Output transparent gif
|
||||
header('Cache-Control: no-cache');
|
||||
header('Content-type: image/gif');
|
||||
header('Content-length: 43');
|
||||
|
||||
echo base64_decode('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
|
||||
|
||||
// Flush here to prevent browser from showing the page as loading while
|
||||
// running cron.
|
||||
flush();
|
||||
}
|
||||
|
||||
// Thanks to various fatal errors and lack of try/finally, it is quite easy to leave
|
||||
// the cron lock locked, especially when working on cron-related code.
|
||||
//
|
||||
// Attempt to alleviate the problem by doing setup outside of the lock as much as possible.
|
||||
|
||||
$cron_type = $request->variable('cron_type', '');
|
||||
|
||||
// Comment this line out for debugging so the page does not return an image.
|
||||
output_image();
|
||||
$get_params_array = $request->get_super_global(\phpbb\request\request_interface::GET);
|
||||
|
||||
/* @var $cron_lock \phpbb\lock\db */
|
||||
$cron_lock = $phpbb_container->get('cron.lock_db');
|
||||
if ($cron_lock->acquire())
|
||||
{
|
||||
/* @var $cron \phpbb\cron\manager */
|
||||
$cron = $phpbb_container->get('cron.manager');
|
||||
|
||||
$task = $cron->find_task($cron_type);
|
||||
if ($task)
|
||||
{
|
||||
/**
|
||||
* This event enables you to catch the task before it runs
|
||||
*
|
||||
* @event core.cron_run_before
|
||||
* @var \phpbb\cron\task\wrapper task Current Cron task
|
||||
* @since 3.1.8-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'task',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.cron_run_before', compact($vars)));
|
||||
|
||||
if ($task->is_parametrized())
|
||||
{
|
||||
$task->parse_parameters($request);
|
||||
}
|
||||
if ($task->is_ready())
|
||||
{
|
||||
$task->run();
|
||||
}
|
||||
}
|
||||
$cron_lock->release();
|
||||
}
|
||||
|
||||
garbage_collection();
|
||||
/** @var \phpbb\controller\helper $controller_helper */
|
||||
$controller_helper = $phpbb_container->get('controller.helper');
|
||||
$response = new RedirectResponse(
|
||||
$controller_helper->route('phpbb_cron_run', $get_params_array, false),
|
||||
301
|
||||
);
|
||||
$response->send();
|
||||
|
@@ -211,7 +211,7 @@ foreach ($prefixes as $prefix)
|
||||
);
|
||||
|
||||
$db->sql_query('INSERT INTO ' . ACL_OPTIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
|
||||
|
||||
|
||||
echo "<p><b>Adding $auth_option...</b></p>\n";
|
||||
|
||||
mass_auth('group', 0, 'guests', $auth_option, ACL_NEVER);
|
||||
@@ -232,7 +232,7 @@ $db->sql_query($sql);
|
||||
$cache->destroy('_acl_options');
|
||||
|
||||
echo "<p><b>Done</b></p>\n";
|
||||
|
||||
|
||||
/*
|
||||
$ug_type = user|group
|
||||
$forum_id = forum ids (array|int|0) -> 0 == all forums
|
||||
@@ -375,11 +375,6 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting)
|
||||
case 'insert':
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
$sql = 'VALUES ' . implode(', ', preg_replace('#^(.*?)$#', '(\1)', $sql_subary));
|
||||
break;
|
||||
|
||||
case 'sqlite3':
|
||||
$sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary));
|
||||
break;
|
||||
|
@@ -1,74 +0,0 @@
|
||||
<?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.
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
//
|
||||
// This script is potentially dangerous.
|
||||
// Remove or comment the next line (die(".... ) to enable this script.
|
||||
// Do NOT FORGET to either remove this script or disable it after you have used it.
|
||||
//
|
||||
die("Please read the first lines of this script for instructions on how to enable it");
|
||||
@set_time_limit(300);
|
||||
|
||||
$db = $dbhost = $dbuser = $dbpasswd = $dbport = $dbname = '';
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
define('ANONYMOUS', 1);
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
$phpbb_root_path='./../';
|
||||
include($phpbb_root_path . 'config.'.$phpEx);
|
||||
require($phpbb_root_path . 'includes/acm/acm_' . $acm_type . '.'.$phpEx);
|
||||
require($phpbb_root_path . 'includes/db/' . $dbms . '.'.$phpEx);
|
||||
include($phpbb_root_path . 'includes/functions.'.$phpEx);
|
||||
|
||||
$cache = new acm();
|
||||
$db = new sql_db();
|
||||
|
||||
// Connect to DB
|
||||
$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false);
|
||||
|
||||
$start = 0;
|
||||
do
|
||||
{
|
||||
// Batch query for group members, call group_user_del
|
||||
$sql = "SELECT user_id, user_email
|
||||
FROM {$table_prefix}users
|
||||
LIMIT $start, 100";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$sql = "UPDATE {$table_prefix}users
|
||||
SET user_email_hash = " . (crc32(strtolower($row['user_email'])) . strlen($row['user_email'])) . '
|
||||
WHERE user_id = ' . $row['user_id'];
|
||||
$db->sql_query($sql);
|
||||
|
||||
$start++;
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
echo "<br />Batch -> $start\n";
|
||||
flush();
|
||||
}
|
||||
else
|
||||
{
|
||||
$start = 0;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
while ($start);
|
||||
|
||||
echo "<p><b>Done</b></p>\n";
|
@@ -21,7 +21,6 @@
|
||||
$schema_path = dirname(__FILE__) . '/../install/schemas/';
|
||||
$supported_dbms = array(
|
||||
'mssql',
|
||||
'mysql_40',
|
||||
'mysql_41',
|
||||
'oracle',
|
||||
'postgres',
|
||||
|
@@ -1,212 +0,0 @@
|
||||
<?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.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file creates SQL statements to upgrade phpBB on MySQL 3.x/4.0.x to 4.1.x/5.x
|
||||
*/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
//
|
||||
// This script is potentially dangerous.
|
||||
// Remove or comment the next line (die(".... ) to enable this script.
|
||||
// Do NOT FORGET to either remove this script or disable it after you have used it.
|
||||
//
|
||||
die("Please read the first lines of this script for instructions on how to enable it");
|
||||
|
||||
define('IN_PHPBB', true);
|
||||
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
include($phpbb_root_path . 'common.' . $phpEx);
|
||||
|
||||
$prefix = $table_prefix;
|
||||
|
||||
$newline = "\n";
|
||||
|
||||
if (PHP_SAPI !== 'cli')
|
||||
{
|
||||
$newline = '<br>';
|
||||
}
|
||||
|
||||
$sql = 'DESCRIBE ' . POSTS_TABLE . ' post_text';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$row = $db->sql_fetchrow($result);
|
||||
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$mysql_indexer = $drop_index = false;
|
||||
|
||||
if (strtolower($row['Type']) === 'mediumtext')
|
||||
{
|
||||
$mysql_indexer = true;
|
||||
}
|
||||
|
||||
if (strtolower($row['Key']) === 'mul')
|
||||
{
|
||||
$drop_index = true;
|
||||
}
|
||||
|
||||
echo "USE $dbname;$newline$newline";
|
||||
|
||||
|
||||
@set_time_limit(0);
|
||||
|
||||
$finder = new \phpbb\finder(new \phpbb\filesystem\filesystem(), $phpbb_root_path);
|
||||
$classes = $finder->core_path('phpbb/')
|
||||
->directory('/db/migration/data')
|
||||
->get_classes();
|
||||
|
||||
$factory = new \phpbb\db\tools\factory();
|
||||
$db_tools = $factory->get($db, true);
|
||||
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator($classes, $config, $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix);
|
||||
$schema_data = $schema_generator->get_schema();
|
||||
$dbms_type_map = \phpbb\db\tools\tools::get_dbms_type_map();
|
||||
|
||||
foreach ($schema_data as $table_name => $table_data)
|
||||
{
|
||||
$table_name = str_replace('phpbb_', $prefix, $table_name);
|
||||
// Write comment about table
|
||||
echo "# Table: '{$table_name}'$newline";
|
||||
|
||||
// Create Table statement
|
||||
$generator = $textimage = false;
|
||||
|
||||
// Do we need to DROP a fulltext index before we alter the table?
|
||||
if ($table_name == ($prefix . 'posts') && $drop_index)
|
||||
{
|
||||
echo "ALTER TABLE {$table_name}{$newline}";
|
||||
echo "DROP INDEX post_text,{$newline}DROP INDEX post_subject,{$newline}DROP INDEX post_content;{$newline}{$newline}";
|
||||
}
|
||||
|
||||
$line = "ALTER TABLE {$table_name} $newline";
|
||||
|
||||
// Table specific so we don't get overlap
|
||||
$modded_array = array();
|
||||
|
||||
// Write columns one by one...
|
||||
foreach ($table_data['COLUMNS'] as $column_name => $column_data)
|
||||
{
|
||||
// Get type
|
||||
if (strpos($column_data[0], ':') !== false)
|
||||
{
|
||||
list($orig_column_type, $column_length) = explode(':', $column_data[0]);
|
||||
$column_type = sprintf($dbms_type_map['mysql_41'][$orig_column_type . ':'], $column_length);
|
||||
|
||||
if (isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit']) &&
|
||||
isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0]))
|
||||
{
|
||||
switch ($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0])
|
||||
{
|
||||
case 'mult':
|
||||
if (($column_length * $dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][1]) > $dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][2])
|
||||
{
|
||||
$modded_array[$column_name] = $column_type;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$orig_column_type .= ':';
|
||||
}
|
||||
else
|
||||
{
|
||||
$orig_column_type = $column_data[0];
|
||||
$other_column_type = $dbms_type_map['mysql_40'][$column_data[0]];
|
||||
if ($other_column_type == 'text' || $other_column_type == 'blob')
|
||||
{
|
||||
$modded_array[$column_name] = $column_type;
|
||||
}
|
||||
$column_type = $dbms_type_map['mysql_41'][$column_data[0]];
|
||||
}
|
||||
|
||||
// Adjust default value if db-dependent specified
|
||||
if (is_array($column_data[1]))
|
||||
{
|
||||
$column_data[1] = (isset($column_data[1][$dbms])) ? $column_data[1][$dbms] : $column_data[1]['default'];
|
||||
}
|
||||
|
||||
$line .= "\tMODIFY {$column_name} {$column_type} ";
|
||||
|
||||
// For hexadecimal values do not use single quotes
|
||||
if (!is_null($column_data[1]) && substr($column_type, -4) !== 'text' && substr($column_type, -4) !== 'blob')
|
||||
{
|
||||
$line .= (strpos($column_data[1], '0x') === 0) ? "DEFAULT {$column_data[1]} " : "DEFAULT '{$column_data[1]}' ";
|
||||
}
|
||||
$line .= 'NOT NULL';
|
||||
|
||||
if (isset($column_data[2]))
|
||||
{
|
||||
if ($column_data[2] == 'auto_increment')
|
||||
{
|
||||
$line .= ' auto_increment';
|
||||
}
|
||||
else if ($column_data[2] == 'true_sort')
|
||||
{
|
||||
$line .= ' COLLATE utf8_unicode_ci';
|
||||
}
|
||||
else if ($column_data[2] == 'no_sort')
|
||||
{
|
||||
$line .= ' COLLATE utf8_bin';
|
||||
}
|
||||
}
|
||||
else if (preg_match('/(?:var)?char|(?:medium)?text/i', $column_type))
|
||||
{
|
||||
$line .= ' COLLATE utf8_bin';
|
||||
}
|
||||
|
||||
$line .= ",$newline";
|
||||
}
|
||||
|
||||
// Write Keys
|
||||
if (isset($table_data['KEYS']))
|
||||
{
|
||||
foreach ($table_data['KEYS'] as $key_name => $key_data)
|
||||
{
|
||||
$temp = '';
|
||||
if (!is_array($key_data[1]))
|
||||
{
|
||||
$key_data[1] = array($key_data[1]);
|
||||
}
|
||||
|
||||
$temp .= ($key_data[0] == 'INDEX') ? "\tADD KEY" : '';
|
||||
$temp .= ($key_data[0] == 'UNIQUE') ? "\tADD UNIQUE" : '';
|
||||
$repair = false;
|
||||
foreach ($key_data[1] as $key => $col_name)
|
||||
{
|
||||
if (isset($modded_array[$col_name]))
|
||||
{
|
||||
$repair = true;
|
||||
}
|
||||
}
|
||||
if ($repair)
|
||||
{
|
||||
$line .= "\tDROP INDEX " . $key_name . ",$newline";
|
||||
$line .= $temp;
|
||||
$line .= ' ' . $key_name . ' (' . implode(', ', $key_data[1]) . "),$newline";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//$line .= "\tCONVERT TO CHARACTER SET `utf8`$newline";
|
||||
$line .= "\tDEFAULT CHARSET=utf8 COLLATE=utf8_bin;$newline$newline";
|
||||
|
||||
echo $line . "$newline";
|
||||
|
||||
// Do we now need to re-add the fulltext index? ;)
|
||||
if ($table_name == ($prefix . 'posts') && $drop_index)
|
||||
{
|
||||
echo "ALTER TABLE $table_name ADD FULLTEXT (post_subject), ADD FULLTEXT (post_text), ADD FULLTEXT post_content (post_subject, post_text);{$newline}";
|
||||
}
|
||||
}
|
@@ -8,46 +8,6 @@
|
||||
//
|
||||
die("Please read the first lines of this script for instructions on how to enable it");
|
||||
|
||||
|
||||
// IP regular expressions
|
||||
|
||||
$dec_octet = '(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])';
|
||||
$h16 = '[\dA-F]{1,4}';
|
||||
$ipv4 = "(?:$dec_octet\.){3}$dec_octet";
|
||||
$ls32 = "(?:$h16:$h16|$ipv4)";
|
||||
|
||||
$ipv6_construct = array(
|
||||
array(false, '', '{6}', $ls32),
|
||||
array(false, '::', '{0,5}', "(?:$h16(?::$h16)?|$ipv4)"),
|
||||
array('', ':', '{4}', $ls32),
|
||||
array('{1,2}', ':', '{3}', $ls32),
|
||||
array('{1,3}', ':', '{2}', $ls32),
|
||||
array('{1,4}', ':', '', $ls32),
|
||||
array('{1,5}', ':', false, $ls32),
|
||||
array('{1,6}', ':', false, $h16),
|
||||
array('{1,7}', ':', false, ''),
|
||||
array(false, '::', false, '')
|
||||
);
|
||||
|
||||
$ipv6 = '(?:';
|
||||
foreach ($ipv6_construct as $ip_type)
|
||||
{
|
||||
$ipv6 .= '(?:';
|
||||
if ($ip_type[0] !== false)
|
||||
{
|
||||
$ipv6 .= "(?:$h16:)" . $ip_type[0];
|
||||
}
|
||||
$ipv6 .= $ip_type[1];
|
||||
if ($ip_type[2] !== false)
|
||||
{
|
||||
$ipv6 .= "(?:$h16:)" . $ip_type[2];
|
||||
}
|
||||
$ipv6 .= $ip_type[3] . ')|';
|
||||
}
|
||||
$ipv6 = substr($ipv6, 0, -1) . ')';
|
||||
|
||||
echo 'IPv4: ' . $ipv4 . "<br />\nIPv6: " . $ipv6 . "<br />\n";
|
||||
|
||||
// URL regular expressions
|
||||
|
||||
$pct_encoded = "%[\dA-F]{2}";
|
||||
|
@@ -8,45 +8,6 @@
|
||||
//
|
||||
die("Please read the first lines of this script for instructions on how to enable it");
|
||||
|
||||
// IP regular expressions
|
||||
|
||||
$dec_octet = '(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])';
|
||||
$h16 = '[\dA-F]{1,4}';
|
||||
$ipv4 = "(?:$dec_octet\.){3}$dec_octet";
|
||||
$ls32 = "(?:$h16:$h16|$ipv4)";
|
||||
|
||||
$ipv6_construct = array(
|
||||
array(false, '', '{6}', $ls32),
|
||||
array(false, '::', '{0,5}', "(?:$h16(?::$h16)?|$ipv4)"),
|
||||
array('', ':', '{4}', $ls32),
|
||||
array('{1,2}', ':', '{3}', $ls32),
|
||||
array('{1,3}', ':', '{2}', $ls32),
|
||||
array('{1,4}', ':', '', $ls32),
|
||||
array('{1,5}', ':', false, $ls32),
|
||||
array('{1,6}', ':', false, $h16),
|
||||
array('{1,7}', ':', false, ''),
|
||||
array(false, '::', false, '')
|
||||
);
|
||||
|
||||
$ipv6 = '(?:';
|
||||
foreach ($ipv6_construct as $ip_type)
|
||||
{
|
||||
$ipv6 .= '(?:';
|
||||
if ($ip_type[0] !== false)
|
||||
{
|
||||
$ipv6 .= "(?:$h16:)" . $ip_type[0];
|
||||
}
|
||||
$ipv6 .= $ip_type[1];
|
||||
if ($ip_type[2] !== false)
|
||||
{
|
||||
$ipv6 .= "(?:$h16:)" . $ip_type[2];
|
||||
}
|
||||
$ipv6 .= $ip_type[3] . ')|';
|
||||
}
|
||||
$ipv6 = substr($ipv6, 0, -1) . ')';
|
||||
|
||||
echo 'IPv4: ' . $ipv4 . "<br /><br />\n\nIPv6: " . $ipv6 . "<br /><br />\n\n";
|
||||
|
||||
// URL regular expressions
|
||||
|
||||
/* IDN2008 characters derivation
|
||||
@@ -72,7 +33,7 @@ $no_hangul = '\x{1100}-\x{115F}\x{A960}-\x{A97C}\x{1160}-\x{11A7}\x{D7B0}-\x{D7C
|
||||
*/
|
||||
$no_cdm = '\x{20D0}-\x{20FF}'; // \p{block=Combining_Diacritical_Marks_For_Symbols}
|
||||
$no_musical = '\x{1D100}-\x{1D1FF}'; // \p{block=Musical_Symbols}
|
||||
$no_ancient_greek_musical = '\x{1D200}-\x{1D24F}'; // \p{block=Ancient_Greek_Musical_Notation}
|
||||
$no_ancient_greek_musical = '\x{1D200}-\x{1D24F}'; // \p{block=Ancient_Greek_Musical_Notation}
|
||||
/* Remove certain exceptions:
|
||||
** U+0640 ARABIC TATWEEL
|
||||
** U+07FA NKO LAJANYALAN
|
||||
|
@@ -1,56 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Corrects user_email_hash values if DB moved from 32-bit system to 64-bit system or vice versa.
|
||||
* The CRC32 function in PHP generates different results for both systems.
|
||||
* @PHP dev team: no, a hexdec() applied to it does not solve the issue. And please document it.
|
||||
*
|
||||
*/
|
||||
die("Please read the first lines of this script for instructions on how to enable it");
|
||||
|
||||
set_time_limit(0);
|
||||
|
||||
define('IN_PHPBB', true);
|
||||
$phpbb_root_path = './../';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
include($phpbb_root_path . 'common.' . $phpEx);
|
||||
|
||||
// Start session management
|
||||
$user->session_begin();
|
||||
$auth->acl($user->data);
|
||||
$user->setup();
|
||||
|
||||
$start = $request->variable('start', 0);
|
||||
$num_items = 1000;
|
||||
|
||||
echo '<br />Updating user email hashes' . "\n";
|
||||
|
||||
$sql = 'SELECT user_id, user_email
|
||||
FROM ' . USERS_TABLE . '
|
||||
ORDER BY user_id ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$echos = 0;
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$echos++;
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . "
|
||||
SET user_email_hash = '" . $db->sql_escape(phpbb_email_hash($row['user_email'])) . "'
|
||||
WHERE user_id = " . (int) $row['user_id'];
|
||||
$db->sql_query($sql);
|
||||
|
||||
if ($echos == 200)
|
||||
{
|
||||
echo '<br />';
|
||||
$echos = 0;
|
||||
}
|
||||
|
||||
echo '.';
|
||||
flush();
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
echo 'FINISHED';
|
||||
|
||||
// Done
|
||||
$db->sql_close();
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="phpBB 3.2.x Changelog" />
|
||||
<meta name="description" content="phpBB 3.3.x Changelog" />
|
||||
<title>phpBB • Changelog</title>
|
||||
|
||||
<link href="assets/css/stylesheet.css" rel="stylesheet" type="text/css" media="screen" />
|
||||
@@ -20,8 +20,8 @@
|
||||
<div class="inner">
|
||||
|
||||
<div id="doc-description">
|
||||
<a href="../index.php" id="logo"><img src="assets/images/site_logo.gif" alt="" /></a>
|
||||
<h1>phpBB 3.2.x Changelog</h1>
|
||||
<a href="../index.php" id="logo"><span class="site_logo"></span></a>
|
||||
<h1>phpBB 3.3.x Changelog</h1>
|
||||
<p style="display: none;"><a href="#start_here">Skip</a></p>
|
||||
</div>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<!-- BEGIN DOCUMENT -->
|
||||
|
||||
<p class="paragraph main-description">
|
||||
This is a non-exhaustive (but still near complete) changelog for phpBB 3.2.x including release candidate versions.
|
||||
This is a non-exhaustive (but still near complete) changelog for phpBB 3.3.x including release candidate versions.
|
||||
Our thanks to all those people who've contributed bug reports and code fixes.
|
||||
</p>
|
||||
|
||||
@@ -50,6 +50,10 @@
|
||||
<ol>
|
||||
<li><a href="#changelog">Changelog</a>
|
||||
<ul>
|
||||
<li><a href="#v330rc1">Changes since 3.3.0-RC1</a></li>
|
||||
<li><a href="#v330b2">Changes since 3.3.0-b2</a></li>
|
||||
<li><a href="#v330b1">Changes since 3.3.0-b1</a></li>
|
||||
<li><a href="#v32x">Changes since 3.2.x</a></li>
|
||||
<li><a href="#v329rc1">Changes since 3.2.9-RC1</a></li>
|
||||
<li><a href="#v328">Changes since 3.2.8</a></li>
|
||||
<li><a href="#v328rc1">Changes since 3.2.8-RC1</a></li>
|
||||
@@ -142,6 +146,212 @@
|
||||
<div class="inner">
|
||||
|
||||
<div class="content">
|
||||
<a name="v330rc1"></a><h3>Changes since 3.3.0-RC1</h3>
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15592">PHPBB3-15592</a>] - "Place inline" button appears when BBcode is disabled (Post settings)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15902">PHPBB3-15902</a>] - Out of range error with Sphinx search</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16209">PHPBB3-16209</a>] - Nginx example configuration file blocks an image in the ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16230">PHPBB3-16230</a>] - Check phrasing of FILESYSTEM_CANNOT_* lang keys</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16257">PHPBB3-16257</a>] - Typo in Email Settings section</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16260">PHPBB3-16260</a>] - Missing check whether the index exists in ACP - PHP 7.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16261">PHPBB3-16261</a>] - Missing check whether the index exists in install - PHP 7.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16262">PHPBB3-16262</a>] - php 7.3 compact() calls with undefined variables causing error page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16263">PHPBB3-16263</a>] - Apache auth provider test fails on bamboo</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16266">PHPBB3-16266</a>] - Error on clean install with PHP 7.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16267">PHPBB3-16267</a>] - Check whether the index exists in ACP BBcodes - PHP 7.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16273">PHPBB3-16273</a>] - Trying to access array offset on value of type bool in Memberlist</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16274">PHPBB3-16274</a>] - compact() calls with undefined variables in search.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16276">PHPBB3-16276</a>] - Undefined $mode property in bbcode_firstpass class</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16278">PHPBB3-16278</a>] - Update instructions (INSTALL.html)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16281">PHPBB3-16281</a>] - Extensions' Tab does not show up automatically</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16282">PHPBB3-16282</a>] - Default jQuery CDN URL is outdated on new installs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16285">PHPBB3-16285</a>] - Missing sanity checks in migrations for 3.3</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16287">PHPBB3-16287</a>] - At first ACP screen after install, error message regarding statistics submission</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16293">PHPBB3-16293</a>] - Update hashes cron produces invalid hashes while updating from 3.0</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16221">PHPBB3-16221</a>] - ACP statistics are ugly</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16277">PHPBB3-16277</a>] - Move from each() function</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16279">PHPBB3-16279</a>] - Add permission for Emojii in topic title</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16283">PHPBB3-16283</a>] - Update requirements for 3.3.0</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16290">PHPBB3-16290</a>] - Update to new SVG logo in package docs</li>
|
||||
</ul>
|
||||
<h4>Security</h4>
|
||||
<ul>
|
||||
<li>[SECURITY-249] - Group avatar overwrite on invalid submit</li>
|
||||
<li>[SECURITY-250] - Group leader can be tricked into approving user</li>
|
||||
</ul>
|
||||
<h4>Hardening</h4>
|
||||
<ul>
|
||||
<li>[SECURITY-251] - Unwanted move of PMs to folders</li>
|
||||
<li>[SECURITY-252] - PMs of unsuspecting users can be marked as important</li>
|
||||
<li>[SECURITY-253] - PM export without proper validation</li>
|
||||
</ul>
|
||||
|
||||
<a name="v330b2"></a><h3>Changes since 3.3.0-b2</h3>
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16056">PHPBB3-16056</a>] - JPEG dimensions undetectable for some kind of jpeg files</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16211">PHPBB3-16211</a>] - COPPA should not be skippable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16226">PHPBB3-16226</a>] - Cron Tasks are not running on some Apache Server</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16227">PHPBB3-16227</a>] - If click login or acp login add errors</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16228">PHPBB3-16228</a>] - BBCode definitions with an optional attribute and a non-TEXT content are not merged correctly</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16235">PHPBB3-16235</a>] - Ignore patterns in ext-sniff.sh are not processed</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16242">PHPBB3-16242</a>] - Redirect loop when install folder doesn't exist</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16255">PHPBB3-16255</a>] - PHP 7.4 Deprecation warning on curly braces offsets</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16258">PHPBB3-16258</a>] - Sample Sphinx configuration file causes delta index to only include the most recent post</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15294">PHPBB3-15294</a>] - Server slowed down when having high session count</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16203">PHPBB3-16203</a>] - Enable Emojis and rich text in sent Emails</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16223">PHPBB3-16223</a>] - Remove no longer supported memcache</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16236">PHPBB3-16236</a>] - Bump phpBB 3.3 maximum PHP version requirement to PHP 7.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16239">PHPBB3-16239</a>] - Remove deprecated phpbb\db\tools</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16247">PHPBB3-16247</a>] - Quote PM has no identifier.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16248">PHPBB3-16248</a>] - update to new svg version of logo</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16224">PHPBB3-16224</a>] - Update composer dependencies</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16241">PHPBB3-16241</a>] - Color Palette Syntax Breaks Backwards Compatibility</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16246">PHPBB3-16246</a>] - Prettify and update README Automated Testing section</li>
|
||||
</ul>
|
||||
|
||||
<a name="v330b1"></a><h3>Changes since 3.3.0-b1</h3>
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16008">PHPBB3-16008</a>] - oAuth does not respect custom server settings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16167">PHPBB3-16167</a>] - phpbb_email_hash creates false duplicates</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16188">PHPBB3-16188</a>] - Statistics Panel in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16192">PHPBB3-16192</a>] - Installing Extensions Via CLI Broken</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16205">PHPBB3-16205</a>] - Undefined variable 'zebra' in search.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16210">PHPBB3-16210</a>] - Terms of use should not be skippable</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12539">PHPBB3-12539</a>] - Live Member Search Improvements</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12559">PHPBB3-12559</a>] - Add forum setting to limit subforums legend to direct children only</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12574">PHPBB3-12574</a>] - Don't require the passwords_manager in the constructor of the auth plugins</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15958">PHPBB3-15958</a>] - Created forums and default forum created during install have diferent options</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16187">PHPBB3-16187</a>] - Correctly display registration using external services</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16189">PHPBB3-16189</a>] - Deprecate inet_ntop and inet_pton wrappers</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16190">PHPBB3-16190</a>] - Deprecate phpbb's checkdnsrr wrapper</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16195">PHPBB3-16195</a>] - Copy forum permissions missing paragraph</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16196">PHPBB3-16196</a>] - Remove random_compat</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16206">PHPBB3-16206</a>] - Remove offsetExists reimplementation in service_collection</li>
|
||||
</ul>
|
||||
|
||||
<a name="v32x"></a><h3>Changes since 3.2.x</h3>
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14670">PHPBB3-14670</a>] - Use latest symfony branch in master</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14769">PHPBB3-14769</a>] - CLI Installer Fails</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14815">PHPBB3-14815</a>] - The facebook page link is not displayed properly in membership.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15255">PHPBB3-15255</a>] - Language variables of filesystem exception should moved</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-15377">PHPBB3-15377</a>] - INCLUDECSS and INCLUDEJS broken on all front controllers (app.php)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15400">PHPBB3-15400</a>] - app.php urls aren't working in vagrant because of nginx</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15424">PHPBB3-15424</a>] - Fix typos in coding guidelines, comments, events list & credits</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15436">PHPBB3-15436</a>] - Remove folder icons from index</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-15643">PHPBB3-15643</a>] - $phpbb_filesystem->resolve_path() may triggers open_basedir restriction</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15686">PHPBB3-15686</a>] - Update homestead for vagrant</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15720">PHPBB3-15720</a>] - Redirections dont need to escape ampersands</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15725">PHPBB3-15725</a>] - Testing framework fails to install extensions because of outdated assertion</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15744">PHPBB3-15744</a>] - Not all sql querys need to free memory</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15828">PHPBB3-15828</a>] - php 7.3 warning in installing 3.2.3 and installtion failed</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15846">PHPBB3-15846</a>] - Wrong id for downloadable extension group</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15922">PHPBB3-15922</a>] - Remove support for APC cache</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15935">PHPBB3-15935</a>] - Check if APCu is installed before installing it</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15938">PHPBB3-15938</a>] - Static attributes blacklist references no longer existing classes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15991">PHPBB3-15991</a>] - Tables in ACP are displayed incorrectly</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16003">PHPBB3-16003</a>] - Post count not updated when deleting only post in topic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16048">PHPBB3-16048</a>] - Unable to restore any backup from ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16050">PHPBB3-16050</a>] - PHP warning in MCP banning tab on PHP 7.2+</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16057">PHPBB3-16057</a>] - Fix vagrant in 3.3</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16074">PHPBB3-16074</a>] - Twemoji -fe0f sequence not rendering</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16076">PHPBB3-16076</a>] - Limit attachment size by extension group</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16131">PHPBB3-16131</a>] - Force vagrant to install phpBB with a specific PHP version</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11515">PHPBB3-11515</a>] - Add interface for lock classes and add new methods</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11838">PHPBB3-11838</a>] - OAuth registration from ucp_register</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12591">PHPBB3-12591</a>] - Improve breadcrumb functionality with new "Home page"/"Forum index" link</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14465">PHPBB3-14465</a>] - Remove maximum password length setting</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14573">PHPBB3-14573</a>] - Extend breadcrumb to support more pages</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14948">PHPBB3-14948</a>] - Changes 3.3 PHP requirement to 7.1</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14972">PHPBB3-14972</a>] - PHP 7.2 compatibility: wrong sizeof/count parameter type</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15088">PHPBB3-15088</a>] - Optimize code for extension manager to avoid repetitions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15153">PHPBB3-15153</a>] - Update laravel/homestead box for vagrant</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15203">PHPBB3-15203</a>] - Missing constants during web installation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15257">PHPBB3-15257</a>] - Extensions may indicate reasons why they cannot enable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15269">PHPBB3-15269</a>] - Set development environment and enable all debugs when installing with vagrant</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15274">PHPBB3-15274</a>] - Migration "custom" tool does not allow parameters</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15295">PHPBB3-15295</a>] - Restore MyIsam and mysql environments to test suite</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15330">PHPBB3-15330</a>] - Twig function to know if a language string is defined</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15413">PHPBB3-15413</a>] - Login from any page and redirecting back there</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15508">PHPBB3-15508</a>] - Upgrade Twig to version 2.x</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15564">PHPBB3-15564</a>] - Switch to Invisible reCAPTCHA</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15580">PHPBB3-15580</a>] - Remove extra settings in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15610">PHPBB3-15610</a>] - Improving UI of Board Statistics in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15646">PHPBB3-15646</a>] - Add support for Argon2i passwords</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15663">PHPBB3-15663</a>] - Remove flash support in attachments</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15664">PHPBB3-15664</a>] - Manage extensions with ajax</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15671">PHPBB3-15671</a>] - Limit accepted formats to allowed extensions in avatars upload</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15694">PHPBB3-15694</a>] - Add style-related language files into .gitignore</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15714">PHPBB3-15714</a>] - Login after register</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15718">PHPBB3-15718</a>] - Update CONTRIBUTING.md</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15772">PHPBB3-15772</a>] - Hide warning message in acp when install dir is present and allow_install_dir is true</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15905">PHPBB3-15905</a>] - Create multiple twig extensions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15940">PHPBB3-15940</a>] - Expose user_id to notif method's is_available and add event before it to load user data</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15987">PHPBB3-15987</a>] - Make table parameters an array</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16016">PHPBB3-16016</a>] - Provide a base class to implement password hashing via native functions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16017">PHPBB3-16017</a>] - Add support for Argon2id password hashing</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16081">PHPBB3-16081</a>] - Remove eAccelerator as its latest supported PHP version is 5.3</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16082">PHPBB3-16082</a>] - Remove XCache as it does not support PHP 7</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16115">PHPBB3-16115</a>] - Add PHP 7.4 builds to travis CI</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16144">PHPBB3-16144</a>] - NO_STYLE_DATA - Provide extra fallback to board's default style for $user.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16148">PHPBB3-16148</a>] - Add template events to acp_groups.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16159">PHPBB3-16159</a>] - Wrap post times in html time tag</li>
|
||||
</ul>
|
||||
<h4>New Feature</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11327">PHPBB3-11327</a>] - Implement reset password functionality via form instead of sending password</li>
|
||||
</ul>
|
||||
<h4>Sub-task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12624">PHPBB3-12624</a>] - Add debug.load_time</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12627">PHPBB3-12627</a>] - Add debug.sql_explain</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12628">PHPBB3-12628</a>] - Add debug.memory</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12629">PHPBB3-12629</a>] - Add debug.errors_show</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12635">PHPBB3-12635</a>] - Add allow_install_dir</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12636">PHPBB3-12636</a>] - Add log.session_errors</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14542">PHPBB3-14542</a>] - Move cron to controller</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14584">PHPBB3-14584</a>] - Move deprecated globals and functions to compatibility_*.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14761">PHPBB3-14761</a>] - Update travis tests setup too, move myisam from PHP 5.4 to 5.5</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15244">PHPBB3-15244</a>] - Remove the UNGLOBALISE-related code</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15410">PHPBB3-15410</a>] - Remove obsolete code from BBCodes ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15422">PHPBB3-15422</a>] - Remove the unnecessary helpline function and help_line variable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15738">PHPBB3-15738</a>] - Remove code related with safe mode</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15746">PHPBB3-15746</a>] - Update dependencies for 3.2.3</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15921">PHPBB3-15921</a>] - Update TextFormatter to 1.3.2</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15927">PHPBB3-15927</a>] - Fix ACP table display error</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16051">PHPBB3-16051</a>] - Remove mysql driver as it's unsupported</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16052">PHPBB3-16052</a>] - Branch off 3.3.x branch</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16067">PHPBB3-16067</a>] - Define trusty build environment for travis builds</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16072">PHPBB3-16072</a>] - Update s9e/text-formatter</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16112">PHPBB3-16112</a>] - Update composer dependencies to latest</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16175">PHPBB3-16175</a>] - Update composer.json dependencies for 3.3.0-b1</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16185">PHPBB3-16185</a>] - Use Xenial build environment on travis-ci</li>
|
||||
</ul>
|
||||
|
||||
<a name="v329rc1"></a><h3>Changes since 3.2.9-RC1</h3>
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
|
@@ -84,10 +84,10 @@ prosilver by subBlue Design, Tom Beddard, (c) 2004 phpBB Limited
|
||||
|
||||
phpBB contains code from the following applications:
|
||||
|
||||
LGPL licenced:
|
||||
LGPL licensed:
|
||||
Smarty (c) 2001, 2002 by ispi of Lincoln, Inc, http://smarty.php.net/
|
||||
|
||||
GPL licenced:
|
||||
GPL licensed:
|
||||
phpMyAdmin (c) 2001, 2003 phpMyAdmin Devel team, http://www.phpmyadmin.net/
|
||||
Jabber Class (c) 2006 Flyspray.org, http://www.flyspray.org/
|
||||
Chora (c) 2000-2006, The Horde Project. http://horde.org/chora/
|
||||
@@ -101,7 +101,7 @@ Pear (c) 2001-2004 PHP Group, http://pear.php.net
|
||||
|
||||
Text_Diff-0.2.1 http://pear.php.net/package/Text_Diff
|
||||
|
||||
MIT licenced:
|
||||
MIT licensed:
|
||||
Symfony2 (c) 2004-2011 Fabien Potencier, https://symfony.com/
|
||||
Cookie Consent (c) 2015 Silktide Ltd, https://cookieconsent.insites.com
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="phpBB 3.2.x frequently asked questions" />
|
||||
<meta name="description" content="phpBB 3.3.x frequently asked questions" />
|
||||
<title>phpBB • FAQ</title>
|
||||
|
||||
<link href="assets/css/stylesheet.css" rel="stylesheet" type="text/css" media="screen" />
|
||||
@@ -20,9 +20,9 @@
|
||||
<div class="inner">
|
||||
|
||||
<div id="doc-description">
|
||||
<a href="../index.php" id="logo"><img src="assets/images/site_logo.gif" alt="" /></a>
|
||||
<h1>phpBB 3.2.x FAQ</h1>
|
||||
<p>phpBB 3.2.x frequently asked questions</p>
|
||||
<a href="../index.php" id="logo"><span class="site_logo"></span></a>
|
||||
<h1>phpBB 3.3.x FAQ</h1>
|
||||
<p>phpBB 3.3.x frequently asked questions</p>
|
||||
<p style="display: none;"><a href="#start_here">Skip</a></p>
|
||||
</div>
|
||||
|
||||
@@ -249,7 +249,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Please read the paragraph about permissions in our extensive <a href="https://www.phpbb.com/support/docs/en/3.2/ug/">online documentation</a>.</p>
|
||||
<p>Please read the paragraph about permissions in our extensive <a href="https://www.phpbb.com/support/docs/en/3.3/ug/">online documentation</a>.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -305,7 +305,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Please read our <a href="https://www.phpbb.com/support/docs/en/3.2/ug/">extensive user documentation</a> first, it may just explain what you want to know.</p>
|
||||
<p>Please read our <a href="https://www.phpbb.com/support/docs/en/3.3/ug/">extensive user documentation</a> first, it may just explain what you want to know.</p>
|
||||
|
||||
<p>Feel free to search our community forum for the information you require. <strong>PLEASE DO NOT</strong> post your question without having first used search, chances are someone has already asked and answered your question. You can find our board here:</p>
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="phpBB 3.2.x Installation, updating and conversion informations" />
|
||||
<meta name="description" content="phpBB 3.3.x Installation, updating and conversion information" />
|
||||
<title>phpBB • Install</title>
|
||||
|
||||
<link href="assets/css/stylesheet.css" rel="stylesheet" type="text/css" media="screen" />
|
||||
@@ -20,9 +20,9 @@
|
||||
<div class="inner">
|
||||
|
||||
<div id="doc-description">
|
||||
<a href="../index.php" id="logo"><img src="assets/images/site_logo.gif" alt="" /></a>
|
||||
<h1>phpBB 3.2.x Install</h1>
|
||||
<p>phpBB 3.2.x Installation, updating and conversion informations</p>
|
||||
<a href="../index.php" id="logo"><span class="site_logo"></span></a>
|
||||
<h1>phpBB 3.3.x Install</h1>
|
||||
<p>phpBB 3.3.x Installation, updating and conversion information</p>
|
||||
<p style="display: none;"><a href="#start_here">Skip</a></p>
|
||||
</div>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<p>
|
||||
A basic overview of running phpBB can be found in the accompanying <a href="README.html">README</a> file.
|
||||
Please ensure you read that document in addition to this! For more detailed information on using, installing,
|
||||
updating and converting phpBB you should read <a href="https://www.phpbb.com/support/docs/en/3.2/ug/">the documentation</a>
|
||||
updating and converting phpBB you should read <a href="https://www.phpbb.com/support/docs/en/3.3/ug/">the documentation</a>
|
||||
available online.
|
||||
</p>
|
||||
</div>
|
||||
@@ -59,7 +59,7 @@
|
||||
<li><a href="#quickinstall">Quick install</a></li>
|
||||
<li><a href="#require">Requirements</a></li>
|
||||
<li><a href="#install">New installation</a></li>
|
||||
<li><a href="#update">Updating from stable releases of phpBB 3.2.x</a>
|
||||
<li><a href="#update">Updating from stable releases of phpBB 3.3.x</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#update_full">Full package</a></li>
|
||||
<li><a href="#update_files">Changed files</a></li>
|
||||
@@ -68,8 +68,8 @@
|
||||
<li><a href="#update_all">All package types</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><a href="#update30_31">Updating from phpBB 3.0.x/3.1.x to phpBB 3.2.x</a></li>
|
||||
<li><a href="#convert">Conversion from phpBB 2.0.x to phpBB 3.2.x</a>
|
||||
<li><a href="#update30_31">Updating from phpBB 3.0.x/3.1.x to phpBB 3.2.x or phpBB 3.3.x</a></li>
|
||||
<li><a href="#convert">Conversion from phpBB 2.0.x to phpBB 3.3.x</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#prereq">Requirements before converting</a></li>
|
||||
<li><a href="#conversion">Converting</a></li>
|
||||
@@ -101,18 +101,18 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>If you have basic knowledge of using FTP and are sure your hosting service or server will run phpBB3 you can use these steps to quickly get started. For a more detailed explanation you should skip this and go to <a href="#require">section 2</a> below.</p>
|
||||
<p>If you have basic knowledge of using FTP and are sure your hosting service or server will run phpBB you can use these steps to quickly get started. For a more detailed explanation you should skip this and go to <a href="#require">section 2</a> below.</p>
|
||||
|
||||
<ol>
|
||||
<li>Decompress the phpBB3 archive to a local directory on your system.</li>
|
||||
<li>Decompress the phpBB archive to a local directory on your system.</li>
|
||||
<li>Upload all the files contained in this archive (retaining the directory structure) to a web accessible directory on your server or hosting account.</li>
|
||||
<li>Change the permissions on config.php to be writable by all (666 or -rw-rw-rw- within your FTP Client)</li>
|
||||
<li>Change the permissions on the following directories to be writable by all (777 or -rwxrwxrwx within your FTP Client):<br />
|
||||
<code>store/</code>, <code>cache/</code>, <code>files/</code> and <code>images/avatars/upload/</code>.</li>
|
||||
<li>Point your web browser to the location where you uploaded the phpBB3 files with the addition of <code>install/app.php</code> or simply <code>install/</code>, e.g. <code>http://www.example.com/phpBB3/install/app.php</code>, <code>http://www.example.com/forum/install/</code>.</li>
|
||||
<li>Point your web browser to the location where you uploaded the phpBB files with the addition of <code>install/app.php</code> or simply <code>install/</code>, e.g. <code>http://www.example.com/phpBB3/install/app.php</code>, <code>http://www.example.com/forum/install/</code>.</li>
|
||||
<li>Click the <strong><em>INSTALL</em></strong> tab, follow the steps and fill out all the requested information.</li>
|
||||
<li>Change the permissions on config.php to be writable only by yourself (644 or -rw-r--r-- within your FTP Client)</li>
|
||||
<li>phpBB3 should now be available, please <strong>MAKE SURE</strong> you read at least <a href="#postinstall">Section 6</a> below for important, security related post-installation instructions, and also take note of <a href="#anti_spam">Section 7</a> regarding anti-spam measures.</li>
|
||||
<li>phpBB should now be available, please <strong>MAKE SURE</strong> you read at least <a href="#postinstall">Section 6</a> below for important, security related post-installation instructions, and also take note of <a href="#anti_spam">Section 7</a> regarding anti-spam measures.</li>
|
||||
</ol>
|
||||
|
||||
<p>If you experienced problems or do not know how to proceed with any of the steps above please read the rest of this document.</p>
|
||||
@@ -133,13 +133,13 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>phpBB 3.2.x has a few requirements which must be met before you are able to install and use it.</p>
|
||||
<p>phpBB 3.3.x has a few requirements which must be met before you are able to install and use it.</p>
|
||||
|
||||
<ul>
|
||||
<li>A webserver or web hosting account running on any major Operating System with support for PHP</li>
|
||||
<li>A SQL database system, <strong>one of</strong>:
|
||||
<ul>
|
||||
<li>MySQL 3.23 or above (MySQLi supported)</li>
|
||||
<li>MySQL 4.1.3 or above (MySQLi required)</li>
|
||||
<li>MariaDB 5.1 or above</li>
|
||||
<li>PostgreSQL 8.3+</li>
|
||||
<li>SQLite 3.6.15+</li>
|
||||
@@ -147,10 +147,11 @@
|
||||
<li>Oracle</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>PHP 5.4.7+</strong> but less than <strong>PHP 7.3</strong> with support for the database you intend to use.</li>
|
||||
<li><strong>PHP 7.1.3+</strong> up to and including <strong>PHP 7.4</strong> with support for the database you intend to use.</li>
|
||||
<li>The following PHP modules are required:
|
||||
<ul>
|
||||
<li>json</li>
|
||||
<li>XML support</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>getimagesize() function must be enabled.</li>
|
||||
@@ -158,13 +159,12 @@
|
||||
<ul>
|
||||
<li>zlib Compression support</li>
|
||||
<li>Remote FTP support</li>
|
||||
<li>XML support</li>
|
||||
<li>GD Support</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>If your server or hosting account does not meet the requirements above then you will be unable to install phpBB 3.2.x.</p>
|
||||
<p>If your server or hosting account does not meet the requirements above then you will be unable to install phpBB 3.3.x.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="update"></a><h2>4. Updating from stable releases of phpBB 3.2.x</h2>
|
||||
<a name="update"></a><h2>4. Updating from stable releases of phpBB 3.3.x</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner">
|
||||
@@ -280,7 +280,7 @@
|
||||
|
||||
<p>This package is meant for those wanting to only replace the files that were changed between a previous version and the latest version.</p>
|
||||
|
||||
<p>This package contains a number of archives, each contains the files changed from a given release to the latest version. You should select the appropriate archive for your current version, e.g. if you currently have <strong>3.2.0</strong> you should select the appropriate <code>phpBB-3.2.1-files.zip/tar.bz2</code> file.</p>
|
||||
<p>This package contains a number of archives, each contains the files changed from a given release to the latest version. You should select the appropriate archive for your current version, e.g. if you currently have <strong>3.3.0</strong> you should select the appropriate <code>phpBB-3.3.1-files.zip/tar.bz2</code> file.</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>
|
||||
|
||||
@@ -292,7 +292,7 @@
|
||||
|
||||
<p>The patch file is one solution for those with changes in to the phpBB core files and do not want to re-add them back to all the changed files. To use this you will need command line access to a standard UNIX type <strong>patch</strong> application. If you do not have access to such an application, but still want to use this update approach, we strongly recommend the <a href="#update_auto">Automatic update package</a> explained below. It is also the recommended update method.</p>
|
||||
|
||||
<p>A number of patch files are provided to allow you to update from previous stable releases. Select the correct patch, e.g. if your current version is <strong>3.2.0</strong>, you need the <code>phpBB-3.2.1-patch.zip/tar.bz2</code> file. Place the correct patch in the parent directory containing the phpBB core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <code>patch -cl -d [PHPBB DIRECTORY] -p1 < [PATCH NAME]</code> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</p>
|
||||
<p>A number of patch files are provided to allow you to update from previous stable releases. Select the correct patch, e.g. if your current version is <strong>3.3.0</strong>, you need the <code>phpBB-3.3.1-patch.zip/tar.bz2</code> file. Place the correct patch in the parent directory containing the phpBB core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <code>patch -cl -d [PHPBB DIRECTORY] -p1 < [PATCH NAME]</code> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</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>
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
|
||||
<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.3.0</strong>, you need the <code>phpBB-3.3.0_to_3.3.1.zip/tar.bz2</code> file.</p>
|
||||
|
||||
<p>To perform the update, either follow the instructions from the <strong>Administration Control Panel->System</strong> Tab - this should point out that you are running an outdated version and will guide you through the update - or follow the instructions listed below.</p>
|
||||
|
||||
@@ -331,16 +331,16 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="update30_31"></a><h2>5. Updating from phpBB 3.0.x/3.1x to phpBB 3.2.x</h2>
|
||||
<a name="update30_31"></a><h2>5. Updating from phpBB 3.0.x/3.1x to phpBB 3.2.x or phpBB 3.3.x</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Updating from phpBB 3.0.x or 3.1.x to 3.2.x is just the same as <a href="#update">updating from stable releases of phpBB 3.2.x</a></p>
|
||||
<p>Updating from phpBB 3.0.x or 3.1.x to 3.2.x or 3.3.x is just the same as <a href="#update">updating from stable releases of phpBB 3.3.x</a></p>
|
||||
|
||||
<p>However you can also start with a new set of phpBB 3.2.x files.</p>
|
||||
<p>However you can also start with a new set of phpBB 3.3.x files.</p>
|
||||
|
||||
<ol>
|
||||
<li>Delete all files <strong>EXCEPT</strong> for the following:
|
||||
@@ -353,7 +353,7 @@
|
||||
<li>(The <code>ext/</code> directory</li>
|
||||
</ul></li>
|
||||
|
||||
<li>Upload the contents of the 3.2.x Full Package into your forum's directory. Make sure the root level .htaccess file is included in the upload.</li>
|
||||
<li>Upload the contents of the 3.3.x Full Package (<strong>except</strong> for config.php) into your forum's directory. Make sure the root level .htaccess file is included in the upload.</li>
|
||||
<li>Browse to <code>/install/app.php/update</code></li>
|
||||
<li>Read the notice <em>Update database only</em> and press <strong>Submit</strong></li>
|
||||
<li>Delete the <code>install/</code> directory</li>
|
||||
@@ -367,28 +367,28 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="convert"></a><h2>6. Conversion from phpBB 2.0.x to phpBB 3.2.x</h2>
|
||||
<a name="convert"></a><h2>6. Conversion from phpBB 2.0.x to phpBB 3.3.x</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner">
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This paragraph explains the steps necessary to convert your existing phpBB2 installation to phpBB3.</p>
|
||||
<p>This paragraph explains the steps necessary to convert your existing phpBB2 installation to phpBB 3.x.</p>
|
||||
|
||||
<a name="prereq"></a><h3>5.i. Requirements before converting</h3>
|
||||
|
||||
<p>Before converting, we heavily recommend you do a <em>full backup of your database and files</em>! If you are unsure how to achieve this, please ask your hosting provider for advice. You basically need to follow the instructions given for <a href="#install">New installations</a>. Please <strong>do not</strong> overwrite any old files - install phpBB3 at a different location.</p>
|
||||
<p>Before converting, we heavily recommend you do a <em>full backup of your database and files</em>! If you are unsure how to achieve this, please ask your hosting provider for advice. You basically need to follow the instructions given for <a href="#install">New installations</a>. Please <strong>do not</strong> overwrite any old files - install phpBB 3.x at a different location.</p>
|
||||
|
||||
<p>Once you made a backup of everything and also have a brand new phpBB3 installation, you can now begin the conversion.</p>
|
||||
<p>Once you made a backup of everything and also have a brand new phpBB 3.x installation, you can now begin the conversion.</p>
|
||||
|
||||
<p>Note that the conversion requires <code>CREATE</code> and <code>DROP</code> privileges for the phpBB3 database user account.</p>
|
||||
<p>Note that the conversion requires <code>CREATE</code> and <code>DROP</code> privileges for the phpBB 3.x database user account.</p>
|
||||
|
||||
<a name="conversion"></a><h3>5.ii. Converting</h3>
|
||||
|
||||
<p>To begin the conversion, visit the <code>install/</code> folder of your phpBB3 installation (the same as you have done for installing). Now you will see a new tab <em>Convert</em>. Click this tab.</p>
|
||||
<p>To begin the conversion, visit the <code>install/</code> folder of your phpBB 3.x installation (the same as you have done for installing). Now you will see a new tab <em>Convert</em>. Click this tab.</p>
|
||||
|
||||
<p>As with install, the conversion is automated. Your previous 2.0.x database tables will not be changed and the original 2.0.x files will remain unaltered. The conversion is actually only filling your phpBB3 database tables and copying additional data over to your phpBB3 installation. This has the benefit that if something goes wrong, you are able to either re-run the conversion or continue a conversion, while your old board is still accessible. We really recommend that you disable your old installation while converting, else you may have inconsistent data after the conversion.</p>
|
||||
<p>As with install, the conversion is automated. Your previous 2.0.x database tables will not be changed and the original 2.0.x files will remain unaltered. The conversion is actually only filling your phpBB 3.x database tables and copying additional data over to your phpBB 3.x installation. This has the benefit that if something goes wrong, you are able to either re-run the conversion or continue a conversion, while your old board is still accessible. We really recommend that you disable your old installation while converting, else you may have inconsistent data after the conversion.</p>
|
||||
|
||||
<p>Please note that this conversion process may take quite some time and depending on your hosting provider this may result in it failing (due to web server resource limits or other timeout issues). If this is the case, you should ask your provider if they are willing to allow the convert script to temporarily exceed their limits (be nice and they will probably be quite helpful). If your host is unwilling to increase the limits to run the convertor, please see this article for performing the conversion on your local machine: <a href="https://www.phpbb.com/kb/article/offline-conversions/">Knowledge Base - Offline Conversions</a></p>
|
||||
|
||||
@@ -412,9 +412,9 @@
|
||||
|
||||
<p><strong>http 500 / white pages</strong> The conversion is a load-heavy procedure. Restrictions imposed by some server hosting providers can cause problems. The most common causes are: values too low for the PHP settings <code>memory_limit</code> and <code>max_execution_time</code>. Limits on the allowed CPU time are also a frequent cause for such errors, as are limits on the number of database queries allowed. If you cannot change such settings, then contact your hosting provider or run the conversion procedure on a different computer. The phpBB.com forums are also an excellent location to ask for support.</p>
|
||||
|
||||
<p><strong>Password conversion</strong> Due to the utf-8 based handling of passwords in phpBB3, it is not always possible to transfer all passwords. For passwords "lost in translation" the easiest workaround is to use the <em>I forgot my password</em> link on the login page.</p>
|
||||
<p><strong>Password conversion</strong> Due to the utf-8 based handling of passwords in phpBB 3.x, it is not always possible to transfer all passwords. For passwords "lost in translation" the easiest workaround is to use the <em>I forgot my password</em> link on the login page.</p>
|
||||
|
||||
<p><strong>Path to your former board</strong> The convertor expects the relative path to your old board's files. So, for instance, if the old board is located at <code>http://www.yourdomain.com/forum</code> and the phpBB3 installation is located at <code>http://www.yourdomain.com/phpBB3</code>, then the correct value would be <code>../forum</code>. Note that the webserver user must be able to access the source installation's files.</p>
|
||||
<p><strong>Path to your former board</strong> The convertor expects the relative path to your old board's files. So, for instance, if the old board is located at <code>http://www.yourdomain.com/forum</code> and the phpBB 3.x installation is located at <code>http://www.yourdomain.com/phpBB3</code>, then the correct value would be <code>../forum</code>. Note that the webserver user must be able to access the source installation's files.</p>
|
||||
|
||||
<p><strong>Missing images</strong> If your default board language's language pack does not include all images, then some images might be missing in your installation. Always use a complete language pack as default language.</p>
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="phpBB 3.2.x Readme" />
|
||||
<meta name="description" content="phpBB 3.3.x Readme" />
|
||||
<title>phpBB • Readme</title>
|
||||
|
||||
<link href="assets/css/stylesheet.css" rel="stylesheet" type="text/css" media="screen" />
|
||||
@@ -20,8 +20,8 @@
|
||||
<div class="inner">
|
||||
|
||||
<div id="doc-description">
|
||||
<a href="../index.php" id="logo"><img src="assets/images/site_logo.gif" alt="" /></a>
|
||||
<h1>phpBB 3.2.x Readme</h1>
|
||||
<a href="../index.php" id="logo"><span class="site_logo"></span></a>
|
||||
<h1>phpBB 3.3.x Readme</h1>
|
||||
<p style="display: none;"><a href="#start_here">Skip</a></p>
|
||||
</div>
|
||||
|
||||
@@ -91,13 +91,13 @@
|
||||
<div class="content">
|
||||
<p>Installation, update and conversion instructions can be found in the <a href="INSTALL.html">INSTALL</a> document in this directory. If you are intending on converting from a phpBB 2.0.x or 3.0.x installation we highly recommend that you backup any existing data before proceeding!</p>
|
||||
|
||||
<p>Users of phpBB 3.0, 3.1 and 3.2 Beta versions cannot directly update.</p>
|
||||
<p>Users of phpBB 3.0, 3.1, 3.2, and 3.3 Beta versions cannot directly update.</p>
|
||||
|
||||
<p>Please note that we don't support the following installation types:</p>
|
||||
<ul>
|
||||
<li>Updates from phpBB Beta versions and lower to phpBB Release Candidates and higher</li>
|
||||
<li>Conversions from phpBB 2.0.x to phpBB 3.0 Beta, 3.1 Beta and 3.2 Beta versions</li>
|
||||
<li>phpBB 3.0 Beta, 3.1 Beta or 3.2 beta installations</li>
|
||||
<li>Conversions from phpBB 2.0.x to phpBB 3.0 Beta, 3.1 Beta, 3.2 Beta, and 3.3 Beta versions</li>
|
||||
<li>phpBB 3.0 Beta, 3.1 Beta, 3.2 beta, or 3.3 beta installations</li>
|
||||
</ul>
|
||||
|
||||
<p>We give support for the following installation types:</p>
|
||||
@@ -106,8 +106,8 @@
|
||||
<li>Updates from phpBB 3.0 RC1, 3.1 RC1 and 3.2 RC1 to the latest version</li>
|
||||
<li>Note: if using the <em>Automatic Update Package</em>, updates are supported from phpBB 3.0.2 onward. To update a pre-3.0.2 installation, first update to 3.0.2 and then update to the current version.</li>
|
||||
<li>Conversions from phpBB 2.0.x to the latest version</li>
|
||||
<li>New installations of phpBB 3.1.x - only the latest released version</li>
|
||||
<li>New installations of phpBB 3.2.x - only the latest released version</li>
|
||||
<li>New installations of phpBB 3.3.x - only the latest released version</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@@ -184,7 +184,7 @@
|
||||
|
||||
<p>Comprehensive documentation is now available on the phpBB website:</p>
|
||||
|
||||
<p><a href="https://www.phpbb.com/support/docs/en/3.2/ug/">https://www.phpbb.com/support/docs/en/3.2/ug/</a></p>
|
||||
<p><a href="https://www.phpbb.com/support/docs/en/3.3/ug/">https://www.phpbb.com/support/docs/en/3.3/ug/</a></p>
|
||||
|
||||
<p>This covers everything from installation to setting permissions and managing users.</p>
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This is a stable release of phpBB. The 3.2.x line is feature frozen, with point releases principally including fixes for bugs and security issues. Feature alterations and minor feature additions may be done if deemed absolutely required. The next major release will be phpBB 3.3 which is currently under development. Please do not post questions asking when 3.3 will be available, no release date has been set.</p>
|
||||
<p>This is a stable release of phpBB. The 3.3.x line is feature frozen, with point releases principally including fixes for bugs and security issues. Feature alterations and minor feature additions may be done if deemed absolutely required. The next major release will be phpBB 3.3 which is currently under development. Please do not post questions asking when 3.3 will be available, no release date has been set.</p>
|
||||
|
||||
<p>Those interested in the development of phpBB should keep an eye on the development forums to see how things are progressing:</p>
|
||||
|
||||
@@ -265,7 +265,7 @@
|
||||
|
||||
<ul>
|
||||
<li>Your server type/version, e.g. Apache 2.2.3, IIS 7, Sambar, etc.</li>
|
||||
<li>PHP version and mode of operation, e.g. PHP 5.4.0 as a module, PHP 5.4.0 running as CGI, etc.</li>
|
||||
<li>PHP version and mode of operation, e.g. PHP 7.1.3 as a module, PHP 7.1.3 running as CGI, etc.</li>
|
||||
<li>DB type/version, e.g. MySQL 5.0.77, PostgreSQL 9.0.6, MSSQL Server 2000 (via ODBC), etc.</li>
|
||||
</ul>
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
|
||||
<p>Please be as detailed as you can in your report, and if possible, list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request to our repository <a href="https://github.com/phpbb/phpbb">on GitHub</a>.</p>
|
||||
|
||||
<p>If you create a patch, it is very much appreciated (but not required) if you follow the phpBB coding guidelines. Please note that the coding guidelines are somewhat different between different versions of phpBB. For phpBB 3.2.x the coding guidelines may be found here: <a href="http://area51.phpbb.com/docs/32x/coding-guidelines.html">http://area51.phpbb.com/docs/32x/coding-guidelines.html</a></p>
|
||||
<p>If you create a patch, it is very much appreciated (but not required) if you follow the phpBB coding guidelines. Please note that the coding guidelines are somewhat different between different versions of phpBB. For phpBB 3.3.x the coding guidelines may be found here: <a href="http://area51.phpbb.com/docs/33x/coding-guidelines.html">http://area51.phpbb.com/docs/33x/coding-guidelines.html</a></p>
|
||||
|
||||
<p>Once a bug has been submitted you will be emailed any follow up comments added to it. <strong>Please</strong> if you are requested to supply additional information, do so! It is frustrating for us to receive bug reports, ask for additional information but get nothing. In these cases we have a policy of closing the bug, which may leave a very real problem in place. Obviously we would rather not have this situation arise.</p>
|
||||
|
||||
@@ -323,11 +323,11 @@
|
||||
|
||||
<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.7 and the maximum supported version is the latest stable version of PHP.</p>
|
||||
<p>phpBB 3.3.x takes advantage of new features added in PHP 7.1. We recommend that you upgrade to the latest stable release of PHP to run phpBB. The minimum version required is PHP 7.1.3 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>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>
|
||||
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQLi 4.1.3, 4.x, 5.x, MariaDB 5.x, PostgreSQL 8.x, Oracle 8 and SQLite 3. Versions of PHP used range from 7.1.3 to 7.2.x and 7.3.x without issues.</p>
|
||||
|
||||
<a name="phpsec"></a><h3>7.i. Notice on PHP security issues</h3>
|
||||
|
||||
|
@@ -104,14 +104,14 @@ h4 {
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
code {
|
||||
color: #006600;
|
||||
font-weight: normal;
|
||||
font-family: 'Courier New', monospace;
|
||||
border-color: #D1D7DC;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
background-color: #FAFAFA;
|
||||
code {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -154,6 +154,14 @@ a#logo:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.site_logo {
|
||||
background-image: url("../images/site_logo.svg");
|
||||
background-repeat: no-repeat;
|
||||
display: inline-block;
|
||||
width: 149px;
|
||||
height: 52px;
|
||||
}
|
||||
|
||||
#doc-description {
|
||||
float: left;
|
||||
width: 70%;
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.0 KiB |
6
phpBB/docs/assets/images/site_logo.svg
Normal file
6
phpBB/docs/assets/images/site_logo.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 33 KiB |
@@ -20,7 +20,7 @@
|
||||
<div class="inner">
|
||||
|
||||
<div id="doc-description">
|
||||
<a href="../index.php" id="logo"><img src="assets/images/site_logo.gif" alt="" /></a>
|
||||
<a href="../index.php" id="logo"><span class="site_logo"></span></a>
|
||||
<h1>Auth API</h1>
|
||||
<p>This is an explanation of how to use the phpBB auth/acl API</p>
|
||||
<p style="display: none;"><a href="#start_here">Skip</a></p>
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="Rhea coding guidelines document" />
|
||||
<meta name="description" content="Proteus coding guidelines document" />
|
||||
<title>phpBB3 • Coding Guidelines</title>
|
||||
|
||||
<link href="assets/css/stylesheet.css" rel="stylesheet" type="text/css" media="screen" />
|
||||
@@ -20,9 +20,9 @@
|
||||
<div class="inner">
|
||||
|
||||
<div id="doc-description">
|
||||
<a href="../index.php" id="logo"><img src="assets/images/site_logo.gif" alt="" /></a>
|
||||
<a href="../index.php" id="logo"><span class="site_logo"></span></a>
|
||||
<h1>Coding Guidelines</h1>
|
||||
<p>Rhea coding guidelines document</p>
|
||||
<p>Proteus coding guidelines document</p>
|
||||
<p style="display: none;"><a href="#start_here">Skip</a></p>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<!-- BEGIN DOCUMENT -->
|
||||
|
||||
<p class="paragraph main-description">
|
||||
These are the phpBB Coding Guidelines for Rhea, all attempts should be made to follow them as closely as possible.
|
||||
These are the phpBB Coding Guidelines for Proteus, all attempts should be made to follow them as closely as possible.
|
||||
</p>
|
||||
|
||||
<h1>Coding Guidelines</h1>
|
||||
@@ -234,9 +234,9 @@ PHPBB_USE_BOARD_URL_PATH (use generate_board_url() for image paths instead of
|
||||
PHPBB_DISABLE_ACP_EDITOR (disable ACP style editor for templates)
|
||||
PHPBB_DISABLE_CONFIG_CHECK (disable ACP config.php writeable check)
|
||||
|
||||
PHPBB_ACM_MEMCACHE_PORT (overwrite memcached port, default is 11211)
|
||||
PHPBB_ACM_MEMCACHE_COMPRESS (overwrite memcached compress setting, default is disabled)
|
||||
PHPBB_ACM_MEMCACHE_HOST (overwrite memcached host name, default is localhost)
|
||||
PHPBB_ACM_MEMCACHED_PORT (overwrite memcached port, default is 11211)
|
||||
PHPBB_ACM_MEMCACHED_COMPRESS (overwrite memcached compress setting, default is disabled)
|
||||
PHPBB_ACM_MEMCACHED_HOST (overwrite memcached host name, default is localhost)
|
||||
|
||||
PHPBB_ACM_REDIS_HOST (overwrite redis host name, default is localhost)
|
||||
PHPBB_ACM_REDIS_PORT (overwrite redis port, default is 6379)
|
||||
@@ -738,7 +738,7 @@ static private function f()</pre>
|
||||
<a name="sql"></a><h3>2.iii. SQL/SQL Layout</h3>
|
||||
|
||||
<h4>Common SQL Guidelines: </h4>
|
||||
<p>All SQL should be cross-DB compatible, if DB specific SQL is used alternatives must be provided which work on all supported DB's (MySQL3/4/5, MSSQL (7.0 and 2000), PostgreSQL (8.3+), SQLite, Oracle8, ODBC (generalised if possible)).</p>
|
||||
<p>All SQL should be cross-DB compatible, if DB specific SQL is used alternatives must be provided which work on all supported DB's (MySQL4/5, MSSQL (7.0 and 2000), PostgreSQL (8.3+), SQLite, Oracle8, ODBC (generalised if possible)).</p>
|
||||
<p>All SQL commands should utilise the DataBase Abstraction Layer (DBAL)</p>
|
||||
|
||||
<h4>SQL code layout:</h4>
|
||||
@@ -1184,8 +1184,8 @@ append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;
|
||||
# General Information about this style
|
||||
name = prosilver_duplicate
|
||||
copyright = © phpBB Limited, 2007
|
||||
style_version = 3.2.0
|
||||
phpbb_version = 3.2.0
|
||||
style_version = 3.3.0
|
||||
phpbb_version = 3.3.0
|
||||
|
||||
# Defining a different template bitfield
|
||||
# template_bitfield = lNg=
|
||||
@@ -1211,7 +1211,7 @@ parent = prosilver</pre>
|
||||
<td class="gensmall">TEST</td>
|
||||
</pre></div>
|
||||
|
||||
<p>Try to match text class types with existing useage, e.g. don't use the nav class where viewtopic uses gensmall for example.</p>
|
||||
<p>Try to match text class types with existing usage, e.g. don't use the nav class where viewtopic uses gensmall for example.</p>
|
||||
|
||||
<p>Row colours/classes are now defined by the template, use an <code>IF S_ROW_COUNT</code> switch, see viewtopic or viewforum for an example.</p>
|
||||
|
||||
@@ -1223,7 +1223,7 @@ parent = prosilver</pre>
|
||||
|
||||
<p>The separate catXXXX and thXXX classes are gone. When defining a header cell just use <code><th></code> rather than <code><th class="thHead"></code> etc. Similarly for cat, don't use <code><td class="catLeft"></code> use <code><td class="cat"></code> etc.</p>
|
||||
|
||||
<p>Try to retain consistency of basic layout and class useage, i.e. _EXPLAIN text should generally be placed below the title it explains, e.g. <code>{L_POST_USERNAME}<br /><span class="gensmall">{L_POST_USERNAME_EXPLAIN}</span></code> is the typical way of handling this ... there may be exceptions and this isn't a hard and fast rule.</p>
|
||||
<p>Try to retain consistency of basic layout and class usage, i.e. _EXPLAIN text should generally be placed below the title it explains, e.g. <code>{L_POST_USERNAME}<br /><span class="gensmall">{L_POST_USERNAME_EXPLAIN}</span></code> is the typical way of handling this ... there may be exceptions and this isn't a hard and fast rule.</p>
|
||||
|
||||
<p>Try to keep template conditional and other statements tabbed in line with the block to which they refer.</p>
|
||||
|
||||
@@ -1767,7 +1767,7 @@ This may span multiple lines.
|
||||
<p>The <a href="http://en.wikipedia.org/wiki/Universal_Character_Set">Universal Character Set (UCS)</a> described in ISO/IEC 10646 consists of a large amount of characters. Each of them has a unique name and a code point which is an integer number. <a href="http://en.wikipedia.org/wiki/Unicode">Unicode</a> - which is an industry standard - complements the Universal Character Set with further information about the characters' properties and alternative character encodings. More information on Unicode can be found on the <a href="http://www.unicode.org/">Unicode Consortium's website</a>. One of the Unicode encodings is the <a href="http://en.wikipedia.org/wiki/UTF-8">8-bit Unicode Transformation Format (UTF-8)</a>. It encodes characters with up to four bytes aiming for maximum compatibility with the <a href="http://en.wikipedia.org/wiki/ASCII">American Standard Code for Information Interchange</a> which is a 7-bit encoding of a relatively small subset of the UCS.</p>
|
||||
|
||||
<h4>phpBB's use of Unicode</h4>
|
||||
<p>Unfortunately PHP does not faciliate the use of Unicode prior to version 6. Most functions simply treat strings as sequences of bytes assuming that each character takes up exactly one byte. This behaviour still allows for storing UTF-8 encoded text in PHP strings but many operations on strings have unexpected results. To circumvent this problem we have created some alternative functions to PHP's native string operations which use code points instead of bytes. These functions can be found in <code>/includes/utf/utf_tools.php</code>. They are also covered in the <a href="http://area51.phpbb.com/docs/code/">phpBB3 Sourcecode Documentation</a>. A lot of native PHP functions still work with UTF-8 as long as you stick to certain restrictions. For example <code>explode</code> still works as long as the first and the last character of the delimiter string are ASCII characters.</p>
|
||||
<p>Unfortunately PHP does not facilitate the use of Unicode prior to version 6. Most functions simply treat strings as sequences of bytes assuming that each character takes up exactly one byte. This behaviour still allows for storing UTF-8 encoded text in PHP strings but many operations on strings have unexpected results. To circumvent this problem we have created some alternative functions to PHP's native string operations which use code points instead of bytes. These functions can be found in <code>/includes/utf/utf_tools.php</code>. They are also covered in the <a href="http://area51.phpbb.com/docs/code/">phpBB3 Sourcecode Documentation</a>. A lot of native PHP functions still work with UTF-8 as long as you stick to certain restrictions. For example <code>explode</code> still works as long as the first and the last character of the delimiter string are ASCII characters.</p>
|
||||
|
||||
<p>phpBB only uses the ASCII and the UTF-8 character encodings. Still all Strings are UTF-8 encoded because ASCII is a subset of UTF-8. The only exceptions to this rule are code sections which deal with external systems which use other encodings and character sets. Such external data should be converted to UTF-8 using the <code>utf8_recode()</code> function supplied with phpBB. It supports a variety of other character sets and encodings, a full list can be found below.</p>
|
||||
|
||||
@@ -1848,7 +1848,7 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
|
||||
|
||||
<p>The <abbr title="Internet Engineering Task Force">IETF</abbr> recently published <a href="http://tools.ietf.org/html/rfc4646">RFC 4646</a> for tags used to identify languages, which in combination with <a href="http://tools.ietf.org/html/rfc4647">RFC 4647</a> obseletes the older <a href="http://tools.ietf.org/html/rfc3066">RFC 3006</a> and older-still <a href="http://tools.ietf.org/html/rfc1766">RFC 1766</a>. <a href="http://tools.ietf.org/html/rfc4646">RFC 4646</a> uses <a href="http://www.loc.gov/standards/iso639-2/php/English_list.php">ISO 639-1/ISO 639-2</a>, <a href="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a>, <a href="http://www.unicode.org/iso15924/iso15924-codes.html">ISO 15924</a> and <a href="http://unstats.un.org/unsd/methods/m49/m49.htm">UN M.49</a> to define a language tag. Each complete tag is composed of subtags which are not case sensitive and can also be empty.</p>
|
||||
|
||||
<p>Ordering of the subtags in the case that they are all non-empty is: <code>language</code>-<code>script</code>-<code>region</code>-<code>variant</code>-<code>extension</code>-<code>privateuse</code>. Should any subtag be empty, its corresponding hyphen would also be ommited. Thus, the language tag for English will be <code>en</code> <strong>and not</strong> <code>en-----</code>.</p>
|
||||
<p>Ordering of the subtags in the case that they are all non-empty is: <code>language</code>-<code>script</code>-<code>region</code>-<code>variant</code>-<code>extension</code>-<code>privateuse</code>. Should any subtag be empty, its corresponding hyphen would also be omitted. Thus, the language tag for English will be <code>en</code> <strong>and not</strong> <code>en-----</code>.</p>
|
||||
|
||||
<p>Most language tags consist of a two- or three-letter language subtag (from <a href="http://www.loc.gov/standards/iso639-2/php/English_list.php">ISO 639-1/ISO 639-2</a>). Sometimes, this is followed by a two-letter or three-digit region subtag (from <a href="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> or <a href="http://unstats.un.org/unsd/methods/m49/m49.htm">UN M.49</a>). Some examples are:</p>
|
||||
|
||||
@@ -1902,7 +1902,7 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
|
||||
|
||||
<p>The ultimate aim of a language tag is to convey the needed <strong>useful distingushing information</strong>, whilst keeping it as <strong>short as possible</strong>. So for example, use <code>en</code>, <code>fr</code> and <code>ja</code> as opposed to <code>en-GB</code>, <code>fr-FR</code> and <code>ja-JP</code>, since we know English, French and Japanese are the native language of Great Britain, France and Japan respectively.</p>
|
||||
|
||||
<p>Next is the <a href="http://www.unicode.org/iso15924/iso15924-codes.html">ISO 15924</a> language script code and when one should or shouldn't use it. For example, whilst <code>en-Latn</code> is syntaxically correct for describing English written with Latin script, real world English writing is <strong>more-or-less exclusively in the Latin script</strong>. For such languages like English that are written in a single script, the <a href="http://www.iana.org/assignments/language-subtag-registry"><abbr title="Internet Assigned Numbers Authority">IANA</abbr> Language Subtag Registry</a> has a "Suppress-Script" field meaning the script code <strong>should be ommitted</strong> unless a specific language tag requires a specific script code. Some languages are <strong>written in more than one script</strong> and in such cases, the script code <strong>is encouraged</strong> since an end-user may be able to read their language in one script, but not the other. Some examples are:</p>
|
||||
<p>Next is the <a href="http://www.unicode.org/iso15924/iso15924-codes.html">ISO 15924</a> language script code and when one should or shouldn't use it. For example, whilst <code>en-Latn</code> is syntaxically correct for describing English written with Latin script, real world English writing is <strong>more-or-less exclusively in the Latin script</strong>. For such languages like English that are written in a single script, the <a href="http://www.iana.org/assignments/language-subtag-registry"><abbr title="Internet Assigned Numbers Authority">IANA</abbr> Language Subtag Registry</a> has a "Suppress-Script" field meaning the script code <strong>should be omitted</strong> unless a specific language tag requires a specific script code. Some languages are <strong>written in more than one script</strong> and in such cases, the script code <strong>is encouraged</strong> since an end-user may be able to read their language in one script, but not the other. Some examples are:</p>
|
||||
|
||||
<table>
|
||||
<caption>Examples of using a language subtag in combination with a script subtag</caption>
|
||||
@@ -1967,7 +1967,7 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Usage of the three-digit <a href="http://unstats.un.org/unsd/methods/m49/m49.htm">UN M.49</a> code over the two-letter <a href="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> code should hapen if a macro-geographical entity is required and/or the <a href="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> is ambiguous.</p>
|
||||
<p>Usage of the three-digit <a href="http://unstats.un.org/unsd/methods/m49/m49.htm">UN M.49</a> code over the two-letter <a href="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> code should happen if a macro-geographical entity is required and/or the <a href="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> is ambiguous.</p>
|
||||
|
||||
<p>Examples of English using marco-geographical regions:</p>
|
||||
|
||||
|
@@ -257,11 +257,6 @@ else
|
||||
$display_cat = ATTACHMENT_CATEGORY_NONE;
|
||||
}
|
||||
|
||||
if ($display_cat == ATTACHMENT_CATEGORY_FLASH && !$user->optionget('viewflash'))
|
||||
{
|
||||
$display_cat = ATTACHMENT_CATEGORY_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event to modify data before sending file to browser
|
||||
*
|
||||
|
@@ -36,17 +36,17 @@ $mode = $request->variable('mode', '');
|
||||
|
||||
if ($forum_id !== 0)
|
||||
{
|
||||
$url = $controller_helper->route('phpbb_feed_forum', array('forum_id' => $forum_id));
|
||||
$url = $controller_helper->route('phpbb_feed_forum', array('forum_id' => $forum_id), false);
|
||||
}
|
||||
else if ($topic_id !== 0)
|
||||
{
|
||||
$url = $controller_helper->route('phpbb_feed_topic', array('topic_id' => $topic_id));
|
||||
$url = $controller_helper->route('phpbb_feed_topic', array('topic_id' => $topic_id), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
$url = $controller_helper->route('phpbb_feed_overall', array('mode' => $mode));
|
||||
$url = $controller_helper->route('phpbb_feed_overall', array('mode' => $mode), false);
|
||||
}
|
||||
catch (InvalidParameterException $e)
|
||||
{
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 254 B |
@@ -610,7 +610,6 @@ class acp_attachments
|
||||
$cat_lang = array(
|
||||
ATTACHMENT_CATEGORY_NONE => $user->lang['NO_FILE_CAT'],
|
||||
ATTACHMENT_CATEGORY_IMAGE => $user->lang['CAT_IMAGES'],
|
||||
ATTACHMENT_CATEGORY_FLASH => $user->lang['CAT_FLASH_FILES'],
|
||||
);
|
||||
|
||||
$group_id = $request->variable('g', 0);
|
||||
@@ -1385,7 +1384,6 @@ class acp_attachments
|
||||
$types = array(
|
||||
ATTACHMENT_CATEGORY_NONE => $user->lang['NO_FILE_CAT'],
|
||||
ATTACHMENT_CATEGORY_IMAGE => $user->lang['CAT_IMAGES'],
|
||||
ATTACHMENT_CATEGORY_FLASH => $user->lang['CAT_FLASH_FILES'],
|
||||
);
|
||||
|
||||
if ($group_id)
|
||||
|
@@ -157,7 +157,7 @@ class acp_bbcodes
|
||||
* @var string bbcode_tpl The bbcode HTML replacement string
|
||||
* @var string bbcode_helpline The bbcode help line string
|
||||
* @var array hidden_fields Array of hidden fields for use when
|
||||
* submitting form when $warn_text is true
|
||||
* submitting form when $warn_unsafe is true
|
||||
* @since 3.1.0-a3
|
||||
*/
|
||||
$vars = array(
|
||||
@@ -172,14 +172,25 @@ class acp_bbcodes
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_bbcodes_modify_create', compact($vars)));
|
||||
|
||||
$warn_text = preg_match('%<[^>]*\{text[\d]*\}[^>]*>%i', $bbcode_tpl);
|
||||
$acp_utils = $phpbb_container->get('text_formatter.acp_utils');
|
||||
$bbcode_info = $acp_utils->analyse_bbcode($bbcode_match, $bbcode_tpl);
|
||||
$warn_unsafe = ($bbcode_info['status'] === $acp_utils::BBCODE_STATUS_UNSAFE);
|
||||
|
||||
if (!$warn_text && !check_form_key($form_key))
|
||||
if ($bbcode_info['status'] === $acp_utils::BBCODE_STATUS_INVALID_TEMPLATE)
|
||||
{
|
||||
trigger_error($user->lang['BBCODE_INVALID_TEMPLATE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
if ($bbcode_info['status'] === $acp_utils::BBCODE_STATUS_INVALID_DEFINITION)
|
||||
{
|
||||
trigger_error($user->lang['BBCODE_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!$warn_unsafe && !check_form_key($form_key))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!$warn_text || confirm_box(true))
|
||||
if (!$warn_unsafe || confirm_box(true))
|
||||
{
|
||||
$data = $this->build_regexp($bbcode_match, $bbcode_tpl);
|
||||
|
||||
@@ -196,7 +207,10 @@ class acp_bbcodes
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Grab the end, interrogate the last closing tag
|
||||
if ($info['test'] === '1' || in_array(strtolower($data['bbcode_tag']), $hard_coded) || (preg_match('#\[/([^[]*)]$#', $bbcode_match, $regs) && in_array(strtolower($regs[1]), $hard_coded)))
|
||||
if (isset($info['test']) && $info['test'] === '1'
|
||||
|| in_array(strtolower($data['bbcode_tag']), $hard_coded)
|
||||
|| (preg_match('#\[/([^[]*)]$#', $bbcode_match, $regs) && in_array(strtolower($regs[1]), $hard_coded))
|
||||
)
|
||||
{
|
||||
trigger_error($user->lang['BBCODE_INVALID_TAG_NAME'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
@@ -446,144 +460,7 @@ class acp_bbcodes
|
||||
function build_regexp(&$bbcode_match, &$bbcode_tpl)
|
||||
{
|
||||
$bbcode_match = trim($bbcode_match);
|
||||
$bbcode_tpl = trim($bbcode_tpl);
|
||||
|
||||
// Allow unicode characters for URL|LOCAL_URL|RELATIVE_URL|INTTEXT tokens
|
||||
$utf8 = preg_match('/(URL|LOCAL_URL|RELATIVE_URL|INTTEXT)/', $bbcode_match);
|
||||
|
||||
$fp_match = preg_quote($bbcode_match, '!');
|
||||
$fp_replace = preg_replace('#^\[(.*?)\]#', '[$1:$uid]', $bbcode_match);
|
||||
$fp_replace = preg_replace('#\[/(.*?)\]$#', '[/$1:$uid]', $fp_replace);
|
||||
|
||||
$sp_match = preg_quote($bbcode_match, '!');
|
||||
$sp_match = preg_replace('#^\\\\\[(.*?)\\\\\]#', '\[$1:$uid\]', $sp_match);
|
||||
$sp_match = preg_replace('#\\\\\[/(.*?)\\\\\]$#', '\[/$1:$uid\]', $sp_match);
|
||||
$sp_replace = $bbcode_tpl;
|
||||
|
||||
// @todo Make sure to change this too if something changed in message parsing
|
||||
$tokens = array(
|
||||
'URL' => array(
|
||||
'!(?:(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('url')) . ')|(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('www_url')) . '))!ie' => "\$this->bbcode_specialchars(('\$1') ? '\$1' : 'http://\$2')"
|
||||
),
|
||||
'LOCAL_URL' => array(
|
||||
'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e' => "\$this->bbcode_specialchars('$1')"
|
||||
),
|
||||
'RELATIVE_URL' => array(
|
||||
'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e' => "\$this->bbcode_specialchars('$1')"
|
||||
),
|
||||
'EMAIL' => array(
|
||||
'!(' . get_preg_expression('email') . ')!ie' => "\$this->bbcode_specialchars('$1')"
|
||||
),
|
||||
'TEXT' => array(
|
||||
'!(.*?)!es' => "str_replace(array(\"\\r\\n\", '\\\"', '\\'', '(', ')'), array(\"\\n\", '\"', ''', '(', ')'), trim('\$1'))"
|
||||
),
|
||||
'SIMPLETEXT' => array(
|
||||
'!([a-zA-Z0-9-+.,_ ]+)!' => "$1"
|
||||
),
|
||||
'INTTEXT' => array(
|
||||
'!([\p{L}\p{N}\-+,_. ]+)!u' => "$1"
|
||||
),
|
||||
'IDENTIFIER' => array(
|
||||
'!([a-zA-Z0-9-_]+)!' => "$1"
|
||||
),
|
||||
'COLOR' => array(
|
||||
'!([a-z]+|#[0-9abcdef]+)!i' => '$1'
|
||||
),
|
||||
'NUMBER' => array(
|
||||
'!([0-9]+)!' => '$1'
|
||||
)
|
||||
);
|
||||
|
||||
$sp_tokens = array(
|
||||
'URL' => '(?i)((?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('url')) . ')|(?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('www_url')) . '))(?-i)',
|
||||
'LOCAL_URL' => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)',
|
||||
'RELATIVE_URL' => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)',
|
||||
'EMAIL' => '(' . get_preg_expression('email') . ')',
|
||||
'TEXT' => '(.*?)',
|
||||
'SIMPLETEXT' => '([a-zA-Z0-9-+.,_ ]+)',
|
||||
'INTTEXT' => '([\p{L}\p{N}\-+,_. ]+)',
|
||||
'IDENTIFIER' => '([a-zA-Z0-9-_]+)',
|
||||
'COLOR' => '([a-zA-Z]+|#[0-9abcdefABCDEF]+)',
|
||||
'NUMBER' => '([0-9]+)',
|
||||
);
|
||||
|
||||
$pad = 0;
|
||||
$modifiers = 'i';
|
||||
$modifiers .= ($utf8) ? 'u' : '';
|
||||
|
||||
if (preg_match_all('/\{(' . implode('|', array_keys($tokens)) . ')[0-9]*\}/i', $bbcode_match, $m))
|
||||
{
|
||||
foreach ($m[0] as $n => $token)
|
||||
{
|
||||
$token_type = $m[1][$n];
|
||||
|
||||
reset($tokens[strtoupper($token_type)]);
|
||||
list($match, $replace) = each($tokens[strtoupper($token_type)]);
|
||||
|
||||
// Pad backreference numbers from tokens
|
||||
if (preg_match_all('/(?<!\\\\)\$([0-9]+)/', $replace, $repad))
|
||||
{
|
||||
$repad = $pad + count(array_unique($repad[0]));
|
||||
$replace = preg_replace_callback('/(?<!\\\\)\$([0-9]+)/', function ($match) use ($pad) {
|
||||
return '${' . ($match[1] + $pad) . '}';
|
||||
}, $replace);
|
||||
$pad = $repad;
|
||||
}
|
||||
|
||||
// Obtain pattern modifiers to use and alter the regex accordingly
|
||||
$regex = preg_replace('/!(.*)!([a-z]*)/', '$1', $match);
|
||||
$regex_modifiers = preg_replace('/!(.*)!([a-z]*)/', '$2', $match);
|
||||
|
||||
for ($i = 0, $size = strlen($regex_modifiers); $i < $size; ++$i)
|
||||
{
|
||||
if (strpos($modifiers, $regex_modifiers[$i]) === false)
|
||||
{
|
||||
$modifiers .= $regex_modifiers[$i];
|
||||
|
||||
if ($regex_modifiers[$i] == 'e')
|
||||
{
|
||||
$fp_replace = "'" . str_replace("'", "\\'", $fp_replace) . "'";
|
||||
}
|
||||
}
|
||||
|
||||
if ($regex_modifiers[$i] == 'e')
|
||||
{
|
||||
$replace = "'.$replace.'";
|
||||
}
|
||||
}
|
||||
|
||||
$fp_match = str_replace(preg_quote($token, '!'), $regex, $fp_match);
|
||||
$fp_replace = str_replace($token, $replace, $fp_replace);
|
||||
|
||||
$sp_match = str_replace(preg_quote($token, '!'), $sp_tokens[$token_type], $sp_match);
|
||||
|
||||
// Prepend the board url to local relative links
|
||||
$replace_prepend = ($token_type === 'LOCAL_URL') ? generate_board_url() . '/' : '';
|
||||
|
||||
$sp_replace = str_replace($token, $replace_prepend . '${' . ($n + 1) . '}', $sp_replace);
|
||||
}
|
||||
|
||||
$fp_match = '!' . $fp_match . '!' . $modifiers;
|
||||
$sp_match = '!' . $sp_match . '!s' . (($utf8) ? 'u' : '');
|
||||
|
||||
if (strpos($fp_match, 'e') !== false)
|
||||
{
|
||||
$fp_replace = str_replace("'.'", '', $fp_replace);
|
||||
$fp_replace = str_replace(".''.", '.', $fp_replace);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// No replacement is present, no need for a second-pass pattern replacement
|
||||
// A simple str_replace will suffice
|
||||
$fp_match = '!' . $fp_match . '!' . $modifiers;
|
||||
$sp_match = $fp_replace;
|
||||
$sp_replace = '';
|
||||
}
|
||||
|
||||
// Lowercase tags
|
||||
$bbcode_tag = 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))
|
||||
{
|
||||
@@ -591,25 +468,13 @@ class acp_bbcodes
|
||||
trigger_error($user->lang['BBCODE_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$fp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
|
||||
return strtolower($match[0]);
|
||||
}, $fp_match);
|
||||
$fp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
|
||||
return strtolower($match[0]);
|
||||
}, $fp_replace);
|
||||
$sp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
|
||||
return strtolower($match[0]);
|
||||
}, $sp_match);
|
||||
$sp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
|
||||
return strtolower($match[0]);
|
||||
}, $sp_replace);
|
||||
|
||||
return array(
|
||||
'bbcode_tag' => $bbcode_tag,
|
||||
'first_pass_match' => $fp_match,
|
||||
'first_pass_replace' => $fp_replace,
|
||||
'second_pass_match' => $sp_match,
|
||||
'second_pass_replace' => $sp_replace
|
||||
'first_pass_match' => '/(?!)/',
|
||||
'first_pass_replace' => '',
|
||||
// Use a non-matching, valid regexp to effectively disable this BBCode
|
||||
'second_pass_match' => '/(?!)/',
|
||||
'second_pass_replace' => ''
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -85,34 +85,26 @@ class acp_board
|
||||
$display_vars = array(
|
||||
'title' => 'ACP_BOARD_FEATURES',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_BOARD_FEATURES',
|
||||
'allow_privmsg' => array('lang' => 'BOARD_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'allow_topic_notify' => array('lang' => 'ALLOW_TOPIC_NOTIFY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_forum_notify' => array('lang' => 'ALLOW_FORUM_NOTIFY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_namechange' => array('lang' => 'ALLOW_NAME_CHANGE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_attachments' => array('lang' => 'ALLOW_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_pm_attach' => array('lang' => 'ALLOW_PM_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_pm_report' => array('lang' => 'ALLOW_PM_REPORT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'allow_bbcode' => array('lang' => 'ALLOW_BBCODE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_smilies' => array('lang' => 'ALLOW_SMILIES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_sig' => array('lang' => 'ALLOW_SIG', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'legend1' => 'ACP_BOARD_FEATURES',
|
||||
'allow_privmsg' => array('lang' => 'BOARD_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'allow_topic_notify' => array('lang' => 'ALLOW_TOPIC_NOTIFY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_forum_notify' => array('lang' => 'ALLOW_FORUM_NOTIFY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_namechange' => array('lang' => 'ALLOW_NAME_CHANGE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_attachments' => array('lang' => 'ALLOW_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_pm_attach' => array('lang' => 'ALLOW_PM_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_pm_report' => array('lang' => 'ALLOW_PM_REPORT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'allow_bbcode' => array('lang' => 'ALLOW_BBCODE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_smilies' => array('lang' => 'ALLOW_SMILIES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_sig' => array('lang' => 'ALLOW_SIG', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'allow_board_notifications' => array('lang' => 'ALLOW_BOARD_NOTIFICATIONS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'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_birthdays' => array('lang' => 'ALLOW_BIRTHDAYS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'display_last_subject' => array('lang' => 'DISPLAY_LAST_SUBJECT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'allow_quick_reply' => array('lang' => 'ALLOW_QUICK_REPLY', 'validate' => 'bool', 'type' => 'custom', 'method' => 'quick_reply', '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_birthdays' => array('lang' => 'ALLOW_BIRTHDAYS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'display_last_subject' => array('lang' => 'DISPLAY_LAST_SUBJECT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'display_unapproved_posts' => array('lang' => 'DISPLAY_UNAPPROVED_POSTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'allow_quick_reply' => array('lang' => 'ALLOW_QUICK_REPLY', 'validate' => 'bool', 'type' => 'custom', 'method' => 'quick_reply', 'explain' => true),
|
||||
|
||||
'legend2' => 'ACP_LOAD_SETTINGS',
|
||||
'load_birthdays' => array('lang' => 'YES_BIRTHDAYS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'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_cpf_memberlist' => array('lang' => 'LOAD_CPF_MEMBERLIST', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'load_cpf_pm' => array('lang' => 'LOAD_CPF_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'load_cpf_viewprofile' => array('lang' => 'LOAD_CPF_VIEWPROFILE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'load_cpf_viewtopic' => array('lang' => 'LOAD_CPF_VIEWTOPIC', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
|
||||
'legend3' => 'ACP_SUBMIT_CHANGES',
|
||||
'legend2' => 'ACP_SUBMIT_CHANGES',
|
||||
)
|
||||
);
|
||||
break;
|
||||
@@ -263,7 +255,6 @@ class acp_board
|
||||
'vars' => array(
|
||||
'legend1' => 'GENERAL_SETTINGS',
|
||||
'max_name_chars' => array('lang' => 'USERNAME_LENGTH', 'validate' => 'int:8:180', 'type' => false, 'method' => false, 'explain' => false,),
|
||||
'max_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:8:255', 'type' => false, 'method' => false, 'explain' => false,),
|
||||
|
||||
'require_activation' => array('lang' => 'ACC_ACTIVATION', 'validate' => 'int', 'type' => 'select', 'method' => 'select_acc_activation', 'explain' => true),
|
||||
'new_member_post_limit' => array('lang' => 'NEW_MEMBER_POST_LIMIT', 'validate' => 'int:0:255', 'type' => 'number:0:255', 'explain' => true, 'append' => ' ' . $user->lang['POSTS']),
|
||||
@@ -426,7 +417,6 @@ class acp_board
|
||||
'remote_upload_verify' => array('lang' => 'UPLOAD_CERT_VALID', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'check_dnsbl' => array('lang' => 'CHECK_DNSBL', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'email_check_mx' => array('lang' => 'EMAIL_CHECK_MX', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'max_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:8:255', 'type' => false, 'method' => false, 'explain' => false,),
|
||||
'min_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:1', 'type' => 'custom', 'method' => 'password_length', 'explain' => true),
|
||||
'pass_complex' => array('lang' => 'PASSWORD_TYPE', 'validate' => 'string', 'type' => 'select', 'method' => 'select_password_chars', 'explain' => true),
|
||||
'chg_passforce' => array('lang' => 'FORCE_PASS_CHANGE', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
||||
@@ -540,13 +530,16 @@ class acp_board
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
if (strpos($data['type'], 'password') === 0 && $config_value === '********')
|
||||
if (isset($data['type']) && strpos($data['type'], 'password') === 0 && $config_value === '********')
|
||||
{
|
||||
// Do not update password fields if the content is ********,
|
||||
// because that is the password replacement we use to not
|
||||
// send the password to the output
|
||||
/**
|
||||
* Do not update password fields if the content is ********,
|
||||
* because that is the password replacement we use to not
|
||||
* send the password to the output
|
||||
*/
|
||||
continue;
|
||||
}
|
||||
|
||||
$config->set($config_name, $config_value);
|
||||
|
||||
if ($config_name == 'allow_quick_reply' && isset($_POST['allow_quick_reply_enable']))
|
||||
@@ -904,13 +897,13 @@ class acp_board
|
||||
}
|
||||
|
||||
/**
|
||||
* Maximum/Minimum password length
|
||||
* Minimum password length
|
||||
*/
|
||||
function password_length($value, $key)
|
||||
{
|
||||
global $user;
|
||||
|
||||
return '<input id="' . $key . '" type="number" min="1" max="999" name="config[min_pass_chars]" value="' . $value . '" /> ' . $user->lang['MIN_CHARS'] . ' <input type="number" min="8" max="255" name="config[max_pass_chars]" value="' . $this->new_config['max_pass_chars'] . '" /> ' . $user->lang['MAX_CHARS'];
|
||||
return '<input id="' . $key . '" type="number" min="1" max="999" name="config[min_pass_chars]" value="' . $value . '" /> ' . $user->lang['MIN_CHARS'];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -248,8 +248,6 @@ class acp_database
|
||||
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
case 'mysqli':
|
||||
case 'sqlite3':
|
||||
while (($sql = $fgetd($fp, ";\n", $read, $seek, $eof)) !== false)
|
||||
|
@@ -38,7 +38,7 @@ class acp_extensions
|
||||
private $phpbb_container;
|
||||
private $php_ini;
|
||||
|
||||
function main()
|
||||
function main($id, $mode)
|
||||
{
|
||||
// Start the page
|
||||
global $config, $user, $template, $request, $phpbb_extension_manager, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher, $phpbb_container;
|
||||
@@ -172,23 +172,27 @@ class acp_extensions
|
||||
}
|
||||
|
||||
$extension = $this->ext_manager->get_extension($ext_name);
|
||||
if (!$extension->is_enableable())
|
||||
{
|
||||
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$this->check_is_enableable($extension);
|
||||
|
||||
if ($this->ext_manager->is_enabled($ext_name))
|
||||
{
|
||||
redirect($this->u_action);
|
||||
}
|
||||
|
||||
$this->tpl_name = 'acp_ext_enable';
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'PRE' => true,
|
||||
'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),
|
||||
));
|
||||
if (confirm_box(true))
|
||||
{
|
||||
redirect($this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name));
|
||||
}
|
||||
else
|
||||
{
|
||||
confirm_box(false, $this->user->lang('EXTENSION_ENABLE_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array(
|
||||
'i' => $id,
|
||||
'mode' => $mode,
|
||||
'action' => 'enable_pre',
|
||||
'ext_name' => $ext_name,
|
||||
)));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'enable':
|
||||
@@ -203,10 +207,8 @@ class acp_extensions
|
||||
}
|
||||
|
||||
$extension = $this->ext_manager->get_extension($ext_name);
|
||||
if (!$extension->is_enableable())
|
||||
{
|
||||
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$this->check_is_enableable($extension);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -215,9 +217,8 @@ class acp_extensions
|
||||
// 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)
|
||||
{
|
||||
$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));
|
||||
trigger_error('EXTENSION_ENABLE_IN_PROGRESS', E_USER_NOTICE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,14 +234,29 @@ class acp_extensions
|
||||
}
|
||||
catch (\phpbb\db\migration\exception $e)
|
||||
{
|
||||
$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user));
|
||||
trigger_error($this->user->lang('MIGRATION_EXCEPTION_ERROR', $e->getLocalisedMessage($this->user)), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$this->tpl_name = 'acp_ext_enable';
|
||||
if ($this->request->is_ajax())
|
||||
{
|
||||
$actions = $this->output_actions('enabled', [
|
||||
'DISABLE' => $this->u_action . '&action=disable_pre&ext_name=' . urlencode($ext_name),
|
||||
]);
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'U_RETURN' => $this->u_action . '&action=list',
|
||||
));
|
||||
$data = [
|
||||
'EXT_ENABLE_SUCCESS' => true,
|
||||
'ACTIONS' => $actions,
|
||||
'REFRESH_DATA' => [
|
||||
'url' => '',
|
||||
'time' => 0,
|
||||
],
|
||||
];
|
||||
|
||||
$json_response = new \phpbb\json_response;
|
||||
$json_response->send($data);
|
||||
}
|
||||
|
||||
trigger_error($this->user->lang('EXTENSION_ENABLE_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);
|
||||
break;
|
||||
|
||||
case 'disable_pre':
|
||||
@@ -249,13 +265,19 @@ class acp_extensions
|
||||
redirect($this->u_action);
|
||||
}
|
||||
|
||||
$this->tpl_name = 'acp_ext_disable';
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'PRE' => true,
|
||||
'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),
|
||||
));
|
||||
if (confirm_box(true))
|
||||
{
|
||||
redirect($this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name));
|
||||
}
|
||||
else
|
||||
{
|
||||
confirm_box(false, $this->user->lang('EXTENSION_DISABLE_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array(
|
||||
'i' => $id,
|
||||
'mode' => $mode,
|
||||
'action' => 'disable_pre',
|
||||
'ext_name' => $ext_name,
|
||||
)));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'disable':
|
||||
@@ -272,15 +294,32 @@ class acp_extensions
|
||||
$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));
|
||||
trigger_error('EXTENSION_DISABLE_IN_PROGRESS', E_USER_NOTICE);
|
||||
}
|
||||
}
|
||||
$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';
|
||||
if ($this->request->is_ajax())
|
||||
{
|
||||
$actions = $this->output_actions('disabled', [
|
||||
'ENABLE' => $this->u_action . '&action=enable_pre&ext_name=' . urlencode($ext_name),
|
||||
'DELETE_DATA' => $this->u_action . '&action=delete_data_pre&ext_name=' . urlencode($ext_name),
|
||||
]);
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'U_RETURN' => $this->u_action . '&action=list',
|
||||
));
|
||||
$data = [
|
||||
'EXT_DISABLE_SUCCESS' => true,
|
||||
'ACTIONS' => $actions,
|
||||
'REFRESH_DATA' => [
|
||||
'url' => '',
|
||||
'time' => 0,
|
||||
],
|
||||
];
|
||||
|
||||
$json_response = new \phpbb\json_response;
|
||||
$json_response->send($data);
|
||||
}
|
||||
|
||||
trigger_error($this->user->lang('EXTENSION_DISABLE_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);
|
||||
break;
|
||||
|
||||
case 'delete_data_pre':
|
||||
@@ -288,13 +327,20 @@ class acp_extensions
|
||||
{
|
||||
redirect($this->u_action);
|
||||
}
|
||||
$this->tpl_name = 'acp_ext_delete_data';
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'PRE' => true,
|
||||
'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),
|
||||
));
|
||||
if (confirm_box(true))
|
||||
{
|
||||
redirect($this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name));
|
||||
}
|
||||
else
|
||||
{
|
||||
confirm_box(false, $this->user->lang('EXTENSION_DELETE_DATA_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array(
|
||||
'i' => $id,
|
||||
'mode' => $mode,
|
||||
'action' => 'delete_data_pre',
|
||||
'ext_name' => $ext_name,
|
||||
)));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'delete_data':
|
||||
@@ -313,20 +359,36 @@ class acp_extensions
|
||||
$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));
|
||||
trigger_error('EXTENSION_DELETE_DATA_IN_PROGRESS', E_USER_NOTICE);
|
||||
}
|
||||
}
|
||||
$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)
|
||||
{
|
||||
$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user));
|
||||
trigger_error($this->user->lang('MIGRATION_EXCEPTION_ERROR', $e->getLocalisedMessage($this->user)), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$this->tpl_name = 'acp_ext_delete_data';
|
||||
if ($this->request->is_ajax())
|
||||
{
|
||||
$actions = $this->output_actions('disabled', [
|
||||
'ENABLE' => $this->u_action . '&action=enable_pre&ext_name=' . urlencode($ext_name),
|
||||
]);
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'U_RETURN' => $this->u_action . '&action=list',
|
||||
));
|
||||
$data = [
|
||||
'EXT_DELETE_DATA_SUCCESS' => true,
|
||||
'ACTIONS' => $actions,
|
||||
'REFRESH_DATA' => [
|
||||
'url' => '',
|
||||
'time' => 0,
|
||||
],
|
||||
];
|
||||
|
||||
$json_response = new \phpbb\json_response;
|
||||
$json_response->send($data);
|
||||
}
|
||||
|
||||
trigger_error($this->user->lang('EXTENSION_DELETE_DATA_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);
|
||||
break;
|
||||
|
||||
case 'details':
|
||||
@@ -605,17 +667,37 @@ class acp_extensions
|
||||
*
|
||||
* @param string $block
|
||||
* @param array $actions
|
||||
* @return array List of actions to be performed on the extension
|
||||
*/
|
||||
private function output_actions($block, $actions)
|
||||
{
|
||||
foreach ($actions as $lang => $url)
|
||||
$vars_ary = array();
|
||||
foreach ($actions as $lang => $options)
|
||||
{
|
||||
$this->template->assign_block_vars($block . '.actions', array(
|
||||
$url = $options;
|
||||
if (is_array($options))
|
||||
{
|
||||
$url = $options['url'];
|
||||
}
|
||||
|
||||
$vars = array(
|
||||
'L_ACTION' => $this->user->lang('EXTENSION_' . $lang),
|
||||
'L_ACTION_EXPLAIN' => (isset($this->user->lang['EXTENSION_' . $lang . '_EXPLAIN'])) ? $this->user->lang('EXTENSION_' . $lang . '_EXPLAIN') : '',
|
||||
'U_ACTION' => $url,
|
||||
));
|
||||
'ACTION_AJAX' => 'ext_' . strtolower($lang),
|
||||
);
|
||||
|
||||
if (isset($options['color']))
|
||||
{
|
||||
$vars['COLOR'] = $options['color'];
|
||||
}
|
||||
|
||||
$this->template->assign_block_vars($block . '.actions', $vars);
|
||||
|
||||
$vars_ary[] = $vars;
|
||||
}
|
||||
|
||||
return $vars_ary;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -662,4 +744,28 @@ class acp_extensions
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the extension can be enabled. Triggers error if not.
|
||||
* Error message can be set by the extension.
|
||||
*
|
||||
* @param \phpbb\extension\extension_interface $extension Extension to check
|
||||
*/
|
||||
protected function check_is_enableable(\phpbb\extension\extension_interface $extension)
|
||||
{
|
||||
$message = $extension->is_enableable();
|
||||
if ($message !== true)
|
||||
{
|
||||
if (empty($message))
|
||||
{
|
||||
$message = $this->user->lang('EXTENSION_NOT_ENABLEABLE');
|
||||
}
|
||||
else if (is_array($message))
|
||||
{
|
||||
$message = implode('<br>', $message);
|
||||
}
|
||||
|
||||
trigger_error($message . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -131,11 +131,12 @@ class acp_forums
|
||||
'forum_rules_link' => $request->variable('forum_rules_link', ''),
|
||||
'forum_image' => $request->variable('forum_image', ''),
|
||||
'forum_style' => $request->variable('forum_style', 0),
|
||||
'display_subforum_list' => $request->variable('display_subforum_list', false),
|
||||
'display_on_index' => $request->variable('display_on_index', false),
|
||||
'display_subforum_list' => $request->variable('display_subforum_list', true),
|
||||
'display_subforum_limit'=> $request->variable('display_subforum_limit', false),
|
||||
'display_on_index' => $request->variable('display_on_index', true),
|
||||
'forum_topics_per_page' => $request->variable('topics_per_page', 0),
|
||||
'enable_indexing' => $request->variable('enable_indexing', true),
|
||||
'enable_icons' => $request->variable('enable_icons', false),
|
||||
'enable_icons' => $request->variable('enable_icons', true),
|
||||
'enable_prune' => $request->variable('enable_prune', false),
|
||||
'enable_post_review' => $request->variable('enable_post_review', true),
|
||||
'enable_quick_reply' => $request->variable('enable_quick_reply', false),
|
||||
@@ -454,10 +455,11 @@ class acp_forums
|
||||
'forum_image' => '',
|
||||
'forum_style' => 0,
|
||||
'display_subforum_list' => true,
|
||||
'display_on_index' => false,
|
||||
'display_subforum_limit' => false,
|
||||
'display_on_index' => true,
|
||||
'forum_topics_per_page' => 0,
|
||||
'enable_indexing' => true,
|
||||
'enable_icons' => false,
|
||||
'enable_icons' => true,
|
||||
'enable_prune' => false,
|
||||
'prune_days' => 7,
|
||||
'prune_viewed' => 7,
|
||||
@@ -676,6 +678,7 @@ class acp_forums
|
||||
'S_ENABLE_INDEXING' => ($forum_data['enable_indexing']) ? true : false,
|
||||
'S_TOPIC_ICONS' => ($forum_data['enable_icons']) ? true : false,
|
||||
'S_DISPLAY_SUBFORUM_LIST' => ($forum_data['display_subforum_list']) ? true : false,
|
||||
'S_DISPLAY_SUBFORUM_LIMIT' => ($forum_data['display_subforum_limit']) ? true : false,
|
||||
'S_DISPLAY_ON_INDEX' => ($forum_data['display_on_index']) ? true : false,
|
||||
'S_PRUNE_ENABLE' => ($forum_data['enable_prune']) ? true : false,
|
||||
'S_PRUNE_SHADOW_ENABLE' => ($forum_data['enable_shadow_prune']) ? true : false,
|
||||
@@ -1901,7 +1904,6 @@ class acp_forums
|
||||
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
case 'mysql4':
|
||||
case 'mysqli':
|
||||
|
||||
// Delete everything else and thank MySQL for offering multi-table deletion
|
||||
|
@@ -32,7 +32,7 @@ class acp_help_phpbb
|
||||
include($phpbb_root_path . 'includes/questionnaire/questionnaire.' . $phpEx);
|
||||
}
|
||||
|
||||
$collect_url = "https://www.phpbb.com/stats/receive_stats.php";
|
||||
$collect_url = "https://www.phpbb.com/statistics/send";
|
||||
|
||||
$this->tpl_name = 'acp_help_phpbb';
|
||||
$this->page_title = 'ACP_HELP_PHPBB';
|
||||
@@ -90,13 +90,15 @@ class acp_help_phpbb
|
||||
|
||||
if (!empty($response))
|
||||
{
|
||||
if ((strpos($response, 'Thank you') !== false || strpos($response, 'Flood protection') !== false))
|
||||
$decoded_response = json_decode(htmlspecialchars_decode($response), true);
|
||||
|
||||
if ($decoded_response && isset($decoded_response['status']) && $decoded_response['status'] == 'ok')
|
||||
{
|
||||
trigger_error($user->lang('THANKS_SEND_STATISTICS') . adm_back_link($this->u_action));
|
||||
}
|
||||
else
|
||||
{
|
||||
trigger_error($user->lang('FAIL_SEND_STATISTICS') . adm_back_link($this->u_action));
|
||||
trigger_error($user->lang('FAIL_SEND_STATISTICS') . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,7 +108,8 @@ class acp_help_phpbb
|
||||
$template->assign_vars(array(
|
||||
'U_COLLECT_STATS' => $collect_url,
|
||||
'S_COLLECT_STATS' => (!empty($config['help_send_statistics'])) ? true : false,
|
||||
'RAW_DATA' => $collector->get_data_for_form(),
|
||||
'S_STATS' => $collector->get_data_raw(),
|
||||
'S_STATS_DATA' => json_encode($collector->get_data_raw()),
|
||||
'U_ACP_MAIN' => append_sid("{$phpbb_admin_path}index.$phpEx"),
|
||||
'U_ACTION' => $this->u_action,
|
||||
// Pass earliest time we should try to send stats again
|
||||
|
@@ -657,7 +657,7 @@ class acp_main
|
||||
}
|
||||
|
||||
// Warn if install is still present
|
||||
if (file_exists($phpbb_root_path . 'install') && !is_file($phpbb_root_path . 'install'))
|
||||
if (!defined('IN_INSTALL') && !$phpbb_container->getParameter('allow_install_dir') && file_exists($phpbb_root_path . 'install') && !is_file($phpbb_root_path . 'install'))
|
||||
{
|
||||
$template->assign_var('S_REMOVE_INSTALL', true);
|
||||
}
|
||||
|
@@ -694,8 +694,8 @@ class acp_permissions
|
||||
}
|
||||
|
||||
// We loop through the auth settings defined in our submit
|
||||
list($ug_id, ) = each($psubmit);
|
||||
list($forum_id, ) = each($psubmit[$ug_id]);
|
||||
$ug_id = key($psubmit);
|
||||
$forum_id = key($psubmit[$ug_id]);
|
||||
|
||||
$settings = $request->variable('setting', array(0 => array(0 => array('' => 0))), false, \phpbb\request\request_interface::POST);
|
||||
if (empty($settings) || empty($settings[$ug_id]) || empty($settings[$ug_id][$forum_id]))
|
||||
|
@@ -222,8 +222,6 @@ class acp_reasons
|
||||
{
|
||||
// The ugly one!
|
||||
case 'mysqli':
|
||||
case 'mysql4':
|
||||
case 'mysql':
|
||||
// Change the reports using this reason to 'other'
|
||||
$sql = 'UPDATE ' . REPORTS_TABLE . '
|
||||
SET reason_id = ' . $other_reason_id . ", report_text = CONCAT('" . $db->sql_escape($reason_row['reason_description']) . "\n\n', report_text)
|
||||
|
@@ -844,9 +844,9 @@ class acp_users
|
||||
// Validation data - we do not check the password complexity setting here
|
||||
$check_ary = array(
|
||||
'new_password' => array(
|
||||
array('string', true, $config['min_pass_chars'], $config['max_pass_chars']),
|
||||
array('string', true, $config['min_pass_chars'], 0),
|
||||
array('password')),
|
||||
'password_confirm' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']),
|
||||
'password_confirm' => array('string', true, $config['min_pass_chars'], 0),
|
||||
);
|
||||
|
||||
// Check username if altered
|
||||
@@ -966,10 +966,7 @@ class acp_users
|
||||
|
||||
if ($update_email !== false)
|
||||
{
|
||||
$sql_ary += array(
|
||||
'user_email' => $update_email,
|
||||
'user_email_hash' => phpbb_email_hash($update_email),
|
||||
);
|
||||
$sql_ary += ['user_email' => $update_email];
|
||||
|
||||
$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_UPDATE_EMAIL', false, array(
|
||||
'reportee_id' => $user_id,
|
||||
@@ -1130,7 +1127,7 @@ class acp_users
|
||||
|
||||
$template->assign_vars(array(
|
||||
'L_NAME_CHARS_EXPLAIN' => $user->lang($config['allow_name_chars'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_name_chars']), $user->lang('CHARACTERS', (int) $config['max_name_chars'])),
|
||||
'L_CHANGE_PASSWORD_EXPLAIN' => $user->lang($config['pass_complex'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_pass_chars']), $user->lang('CHARACTERS', (int) $config['max_pass_chars'])),
|
||||
'L_CHANGE_PASSWORD_EXPLAIN' => $user->lang($config['pass_complex'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_pass_chars'])),
|
||||
'L_POSTS_IN_QUEUE' => $user->lang('NUM_POSTS_IN_QUEUE', $user_row['posts_in_queue']),
|
||||
'S_FOUNDER' => ($user->data['user_type'] == USER_FOUNDER) ? true : false,
|
||||
|
||||
|
@@ -460,8 +460,7 @@ class auth_admin extends \phpbb\auth\auth
|
||||
'S_GROUP_MODE' => ($user_mode == 'group') ? true : false)
|
||||
);
|
||||
|
||||
@reset($content_array);
|
||||
while (list($ug_id, $ug_array) = each($content_array))
|
||||
foreach ($content_array as $ug_id => $ug_array)
|
||||
{
|
||||
// Build role dropdown options
|
||||
$current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
|
||||
@@ -471,8 +470,7 @@ class auth_admin extends \phpbb\auth\auth
|
||||
$s_role_options = '';
|
||||
$current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
|
||||
|
||||
@reset($roles);
|
||||
while (list($role_id, $role_row) = each($roles))
|
||||
foreach ($roles as $role_id => $role_row)
|
||||
{
|
||||
$role_description = (!empty($user->lang[$role_row['role_description']])) ? $user->lang[$role_row['role_description']] : nl2br($role_row['role_description']);
|
||||
$role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name'];
|
||||
@@ -559,8 +557,7 @@ class auth_admin extends \phpbb\auth\auth
|
||||
'S_GROUP_MODE' => ($user_mode == 'group') ? true : false)
|
||||
);
|
||||
|
||||
@reset($content_array);
|
||||
while (list($forum_id, $forum_array) = each($content_array))
|
||||
foreach ($content_array as $forum_id => $forum_array)
|
||||
{
|
||||
// Build role dropdown options
|
||||
$current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
|
||||
@@ -570,8 +567,7 @@ class auth_admin extends \phpbb\auth\auth
|
||||
$current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
|
||||
$s_role_options = '';
|
||||
|
||||
@reset($roles);
|
||||
while (list($role_id, $role_row) = each($roles))
|
||||
foreach ($roles as $role_id => $role_row)
|
||||
{
|
||||
$role_description = (!empty($user->lang[$role_row['role_description']])) ? $user->lang[$role_row['role_description']] : nl2br($role_row['role_description']);
|
||||
$role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name'];
|
||||
@@ -1138,8 +1134,7 @@ class auth_admin extends \phpbb\auth\auth
|
||||
/* @var $phpbb_permissions \phpbb\permissions */
|
||||
$phpbb_permissions = $phpbb_container->get('acl.permissions');
|
||||
|
||||
@reset($category_array);
|
||||
while (list($cat, $cat_array) = each($category_array))
|
||||
foreach ($category_array as $cat => $cat_array)
|
||||
{
|
||||
if (!$phpbb_permissions->category_defined($cat))
|
||||
{
|
||||
@@ -1169,8 +1164,7 @@ class auth_admin extends \phpbb\auth\auth
|
||||
}
|
||||
unset($key_array, $values_array);
|
||||
*/
|
||||
@reset($cat_array['permissions']);
|
||||
while (list($permission, $allowed) = each($cat_array['permissions']))
|
||||
foreach ($cat_array['permissions'] as $permission => $allowed)
|
||||
{
|
||||
if (!$phpbb_permissions->permission_defined($permission))
|
||||
{
|
||||
@@ -1237,8 +1231,7 @@ class auth_admin extends \phpbb\auth\auth
|
||||
$permissions = $permission_row[$forum_id];
|
||||
ksort($permissions);
|
||||
|
||||
@reset($permissions);
|
||||
while (list($permission, $auth_setting) = each($permissions))
|
||||
foreach ($permissions as $permission => $auth_setting)
|
||||
{
|
||||
$cat = $phpbb_permissions->get_permission_category($permission);
|
||||
|
||||
|
@@ -44,7 +44,7 @@ class bbcode
|
||||
/**
|
||||
* Init bbcode cache entries if bitfield is specified
|
||||
*
|
||||
* @param string $bbcode_bitfield The bbcode bitfield
|
||||
* @param string $bitfield The bbcode bitfield
|
||||
*/
|
||||
function bbcode_set_bitfield($bitfield = '')
|
||||
{
|
||||
|
@@ -18,6 +18,14 @@ if (!defined('IN_PHPBB'))
|
||||
exit;
|
||||
}
|
||||
|
||||
//
|
||||
// Deprecated globals
|
||||
//
|
||||
define('ATTACHMENT_CATEGORY_WM', 2); // Windows Media Files - Streaming - @deprecated 3.2
|
||||
define('ATTACHMENT_CATEGORY_RM', 3); // Real Media Files - Streaming - @deprecated 3.2
|
||||
define('ATTACHMENT_CATEGORY_QUICKTIME', 6); // Quicktime/Mov files - @deprecated 3.2
|
||||
define('ATTACHMENT_CATEGORY_FLASH', 5); // Flash/SWF files - @deprecated 3.3
|
||||
|
||||
/**
|
||||
* Sets compatibility globals in the global scope
|
||||
*
|
||||
|
@@ -28,7 +28,7 @@ if (!defined('IN_PHPBB'))
|
||||
*/
|
||||
|
||||
// phpBB Version
|
||||
@define('PHPBB_VERSION', '3.2.10-dev');
|
||||
@define('PHPBB_VERSION', '3.3.0');
|
||||
|
||||
// QA-related
|
||||
// define('PHPBB_QA', 1);
|
||||
@@ -171,11 +171,7 @@ define('CONFIRM_REPORT', 4);
|
||||
// Categories - Attachments
|
||||
define('ATTACHMENT_CATEGORY_NONE', 0);
|
||||
define('ATTACHMENT_CATEGORY_IMAGE', 1); // Inline Images
|
||||
define('ATTACHMENT_CATEGORY_WM', 2); // Windows Media Files - Streaming - @deprecated 3.2
|
||||
define('ATTACHMENT_CATEGORY_RM', 3); // Real Media Files - Streaming - @deprecated 3.2
|
||||
define('ATTACHMENT_CATEGORY_THUMB', 4); // Not used within the database, only while displaying posts
|
||||
define('ATTACHMENT_CATEGORY_FLASH', 5); // Flash/SWF files
|
||||
define('ATTACHMENT_CATEGORY_QUICKTIME', 6); // Quicktime/Mov files - @deprecated 3.2
|
||||
|
||||
// BBCode UID length
|
||||
define('BBCODE_UID_LEN', 8);
|
||||
|
@@ -285,8 +285,9 @@ class diff_engine
|
||||
$matches = $ymatches[$line];
|
||||
|
||||
reset($matches);
|
||||
while (list(, $y) = each($matches))
|
||||
while ($y = current($matches))
|
||||
{
|
||||
next($matches);
|
||||
if (empty($this->in_seq[$y]))
|
||||
{
|
||||
$k = $this->_lcs_pos($y);
|
||||
@@ -296,8 +297,9 @@ class diff_engine
|
||||
}
|
||||
|
||||
// no reset() here
|
||||
while (list(, $y) = each($matches))
|
||||
while ($y = current($matches))
|
||||
{
|
||||
next($matches);
|
||||
if ($y > $this->seq[$k - 1])
|
||||
{
|
||||
// Optimization: this is a common case: next match is just replacing previous match.
|
||||
|
@@ -51,18 +51,6 @@ function phpbb_load_extensions_autoloaders($phpbb_root_path)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Casts a variable to the given type.
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
function set_var(&$result, $var, $type, $multibyte = false)
|
||||
{
|
||||
// no need for dependency injection here, if you have the object, call the method yourself!
|
||||
$type_cast_helper = new \phpbb\request\type_cast_helper();
|
||||
$type_cast_helper->set_var($result, $var, $type, $multibyte);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an alphanumeric random string of given length
|
||||
*
|
||||
@@ -275,18 +263,6 @@ function still_on_time($extra_time = 15)
|
||||
return (ceil($current_time - $start_time) < $max_execution_time) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hashes an email address to a big integer
|
||||
*
|
||||
* @param string $email Email address
|
||||
*
|
||||
* @return string Unsigned Big Integer
|
||||
*/
|
||||
function phpbb_email_hash($email)
|
||||
{
|
||||
return sprintf('%u', crc32(strtolower($email))) . strlen($email);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for version_compare() that allows using uppercase A and B
|
||||
* for alpha and beta releases.
|
||||
@@ -2288,6 +2264,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
|
||||
|
||||
$err = '';
|
||||
$form_name = 'login';
|
||||
$username = $autologin = false;
|
||||
|
||||
// Make sure user->setup() has been called
|
||||
if (!$user->is_setup())
|
||||
@@ -2528,11 +2505,14 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
|
||||
|
||||
$s_hidden_fields = build_hidden_fields($s_hidden_fields);
|
||||
|
||||
/** @var \phpbb\controller\helper $controller_helper */
|
||||
$controller_helper = $phpbb_container->get('controller.helper');
|
||||
|
||||
$login_box_template_data = array(
|
||||
'LOGIN_ERROR' => $err,
|
||||
'LOGIN_EXPLAIN' => $l_explain,
|
||||
|
||||
'U_SEND_PASSWORD' => ($config['email_enable']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=sendpassword') : '',
|
||||
'U_SEND_PASSWORD' => ($config['email_enable']) ? $controller_helper->route('phpbb_ucp_forgot_password_controller') : '',
|
||||
'U_RESEND_ACTIVATION' => ($config['require_activation'] == USER_ACTIVATION_SELF && $config['email_enable']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=resend_act') : '',
|
||||
'U_TERMS_USE' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=terms'),
|
||||
'U_PRIVACY' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=privacy'),
|
||||
@@ -2860,10 +2840,13 @@ function get_preg_expression($mode)
|
||||
// Whoa these look impressive!
|
||||
// The code to generate the following two regular expressions which match valid IPv4/IPv6 addresses
|
||||
// can be found in the develop directory
|
||||
|
||||
// @deprecated
|
||||
case 'ipv4':
|
||||
return '#^(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$#';
|
||||
break;
|
||||
|
||||
// @deprecated
|
||||
case 'ipv6':
|
||||
return '#^(?:(?:(?:[\dA-F]{1,4}:){6}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:::(?:[\dA-F]{1,4}:){0,5}(?:[\dA-F]{1,4}(?::[\dA-F]{1,4})?|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:):(?:[\dA-F]{1,4}:){4}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,2}:(?:[\dA-F]{1,4}:){3}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,3}:(?:[\dA-F]{1,4}:){2}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,4}:(?:[\dA-F]{1,4}:)(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,5}:(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,6}:[\dA-F]{1,4})|(?:(?:[\dA-F]{1,4}:){1,7}:)|(?:::))$#i';
|
||||
break;
|
||||
@@ -2989,331 +2972,26 @@ function short_ipv6($ip, $length)
|
||||
* @return mixed false if specified address is not valid,
|
||||
* string otherwise
|
||||
*/
|
||||
function phpbb_ip_normalise($address)
|
||||
function phpbb_ip_normalise(string $address)
|
||||
{
|
||||
$address = trim($address);
|
||||
$ip_normalised = false;
|
||||
|
||||
if (empty($address) || !is_string($address))
|
||||
if (filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4))
|
||||
{
|
||||
return false;
|
||||
$ip_normalised = $address;
|
||||
}
|
||||
else if (filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6))
|
||||
{
|
||||
$ip_normalised = inet_ntop(inet_pton($address));
|
||||
|
||||
// If is ipv4
|
||||
if (stripos($ip_normalised, '::ffff:') === 0)
|
||||
{
|
||||
$ip_normalised = substr($ip_normalised, 7);
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match(get_preg_expression('ipv4'), $address))
|
||||
{
|
||||
return $address;
|
||||
}
|
||||
|
||||
return phpbb_inet_ntop(phpbb_inet_pton($address));
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for inet_ntop()
|
||||
*
|
||||
* Converts a packed internet address to a human readable representation
|
||||
* inet_ntop() is supported by PHP since 5.1.0, since 5.3.0 also on Windows.
|
||||
*
|
||||
* @param string $in_addr A 32bit IPv4, or 128bit IPv6 address.
|
||||
*
|
||||
* @return mixed false on failure,
|
||||
* string otherwise
|
||||
*/
|
||||
function phpbb_inet_ntop($in_addr)
|
||||
{
|
||||
$in_addr = bin2hex($in_addr);
|
||||
|
||||
switch (strlen($in_addr))
|
||||
{
|
||||
case 8:
|
||||
return implode('.', array_map('hexdec', str_split($in_addr, 2)));
|
||||
|
||||
case 32:
|
||||
if (substr($in_addr, 0, 24) === '00000000000000000000ffff')
|
||||
{
|
||||
return phpbb_inet_ntop(pack('H*', substr($in_addr, 24)));
|
||||
}
|
||||
|
||||
$parts = str_split($in_addr, 4);
|
||||
$parts = preg_replace('/^0+(?!$)/', '', $parts);
|
||||
$ret = implode(':', $parts);
|
||||
|
||||
$matches = array();
|
||||
preg_match_all('/(?<=:|^)(?::?0){2,}/', $ret, $matches, PREG_OFFSET_CAPTURE);
|
||||
$matches = $matches[0];
|
||||
|
||||
if (empty($matches))
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$longest_match = '';
|
||||
$longest_match_offset = 0;
|
||||
foreach ($matches as $match)
|
||||
{
|
||||
if (strlen($match[0]) > strlen($longest_match))
|
||||
{
|
||||
$longest_match = $match[0];
|
||||
$longest_match_offset = $match[1];
|
||||
}
|
||||
}
|
||||
|
||||
$ret = substr_replace($ret, '', $longest_match_offset, strlen($longest_match));
|
||||
|
||||
if ($longest_match_offset == strlen($ret))
|
||||
{
|
||||
$ret .= ':';
|
||||
}
|
||||
|
||||
if ($longest_match_offset == 0)
|
||||
{
|
||||
$ret = ':' . $ret;
|
||||
}
|
||||
|
||||
return $ret;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for inet_pton()
|
||||
*
|
||||
* Converts a human readable IP address to its packed in_addr representation
|
||||
* inet_pton() is supported by PHP since 5.1.0, since 5.3.0 also on Windows.
|
||||
*
|
||||
* @param string $address A human readable IPv4 or IPv6 address.
|
||||
*
|
||||
* @return mixed false if address is invalid,
|
||||
* in_addr representation of the given address otherwise (string)
|
||||
*/
|
||||
function phpbb_inet_pton($address)
|
||||
{
|
||||
$ret = '';
|
||||
if (preg_match(get_preg_expression('ipv4'), $address))
|
||||
{
|
||||
foreach (explode('.', $address) as $part)
|
||||
{
|
||||
$ret .= ($part <= 0xF ? '0' : '') . dechex($part);
|
||||
}
|
||||
|
||||
return pack('H*', $ret);
|
||||
}
|
||||
|
||||
if (preg_match(get_preg_expression('ipv6'), $address))
|
||||
{
|
||||
$parts = explode(':', $address);
|
||||
$missing_parts = 8 - count($parts) + 1;
|
||||
|
||||
if (substr($address, 0, 2) === '::')
|
||||
{
|
||||
++$missing_parts;
|
||||
}
|
||||
|
||||
if (substr($address, -2) === '::')
|
||||
{
|
||||
++$missing_parts;
|
||||
}
|
||||
|
||||
$embedded_ipv4 = false;
|
||||
$last_part = end($parts);
|
||||
|
||||
if (preg_match(get_preg_expression('ipv4'), $last_part))
|
||||
{
|
||||
$parts[count($parts) - 1] = '';
|
||||
$last_part = phpbb_inet_pton($last_part);
|
||||
$embedded_ipv4 = true;
|
||||
--$missing_parts;
|
||||
}
|
||||
|
||||
foreach ($parts as $i => $part)
|
||||
{
|
||||
if (strlen($part))
|
||||
{
|
||||
$ret .= str_pad($part, 4, '0', STR_PAD_LEFT);
|
||||
}
|
||||
else if ($i && $i < count($parts) - 1)
|
||||
{
|
||||
$ret .= str_repeat('0000', $missing_parts);
|
||||
}
|
||||
}
|
||||
|
||||
$ret = pack('H*', $ret);
|
||||
|
||||
if ($embedded_ipv4)
|
||||
{
|
||||
$ret .= $last_part;
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for php's checkdnsrr function.
|
||||
*
|
||||
* @param string $host Fully-Qualified Domain Name
|
||||
* @param string $type Resource record type to lookup
|
||||
* Supported types are: MX (default), A, AAAA, NS, TXT, CNAME
|
||||
* Other types may work or may not work
|
||||
*
|
||||
* @return mixed true if entry found,
|
||||
* false if entry not found,
|
||||
* null if this function is not supported by this environment
|
||||
*
|
||||
* Since null can also be returned, you probably want to compare the result
|
||||
* with === true or === false,
|
||||
*/
|
||||
function phpbb_checkdnsrr($host, $type = 'MX')
|
||||
{
|
||||
// The dot indicates to search the DNS root (helps those having DNS prefixes on the same domain)
|
||||
if (substr($host, -1) == '.')
|
||||
{
|
||||
$host_fqdn = $host;
|
||||
$host = substr($host, 0, -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
$host_fqdn = $host . '.';
|
||||
}
|
||||
// $host has format some.host.example.com
|
||||
// $host_fqdn has format some.host.example.com.
|
||||
|
||||
// If we're looking for an A record we can use gethostbyname()
|
||||
if ($type == 'A' && function_exists('gethostbyname'))
|
||||
{
|
||||
return (@gethostbyname($host_fqdn) == $host_fqdn) ? false : true;
|
||||
}
|
||||
|
||||
if (function_exists('checkdnsrr'))
|
||||
{
|
||||
return checkdnsrr($host_fqdn, $type);
|
||||
}
|
||||
|
||||
if (function_exists('dns_get_record'))
|
||||
{
|
||||
// dns_get_record() expects an integer as second parameter
|
||||
// We have to convert the string $type to the corresponding integer constant.
|
||||
$type_constant = 'DNS_' . $type;
|
||||
$type_param = (defined($type_constant)) ? constant($type_constant) : DNS_ANY;
|
||||
|
||||
// dns_get_record() might throw E_WARNING and return false for records that do not exist
|
||||
$resultset = @dns_get_record($host_fqdn, $type_param);
|
||||
|
||||
if (empty($resultset) || !is_array($resultset))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if ($type_param == DNS_ANY)
|
||||
{
|
||||
// $resultset is a non-empty array
|
||||
return true;
|
||||
}
|
||||
|
||||
foreach ($resultset as $result)
|
||||
{
|
||||
if (
|
||||
isset($result['host']) && $result['host'] == $host &&
|
||||
isset($result['type']) && $result['type'] == $type
|
||||
)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// If we're on Windows we can still try to call nslookup via exec() as a last resort
|
||||
if (DIRECTORY_SEPARATOR == '\\' && function_exists('exec'))
|
||||
{
|
||||
@exec('nslookup -type=' . escapeshellarg($type) . ' ' . escapeshellarg($host_fqdn), $output);
|
||||
|
||||
// If output is empty, the nslookup failed
|
||||
if (empty($output))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
foreach ($output as $line)
|
||||
{
|
||||
$line = trim($line);
|
||||
|
||||
if (empty($line))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Squash tabs and multiple whitespaces to a single whitespace.
|
||||
$line = preg_replace('/\s+/', ' ', $line);
|
||||
|
||||
switch ($type)
|
||||
{
|
||||
case 'MX':
|
||||
if (stripos($line, "$host MX") === 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'NS':
|
||||
if (stripos($line, "$host nameserver") === 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'TXT':
|
||||
if (stripos($line, "$host text") === 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'CNAME':
|
||||
if (stripos($line, "$host canonical name") === 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
case 'AAAA':
|
||||
// AAAA records returned by nslookup on Windows XP/2003 have this format.
|
||||
// Later Windows versions use the A record format below for AAAA records.
|
||||
if (stripos($line, "$host AAAA IPv6 address") === 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
// No break
|
||||
|
||||
case 'A':
|
||||
if (!empty($host_matches))
|
||||
{
|
||||
// Second line
|
||||
if (stripos($line, "Address: ") === 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$host_matches = false;
|
||||
}
|
||||
}
|
||||
else if (stripos($line, "Name: $host") === 0)
|
||||
{
|
||||
// First line
|
||||
$host_matches = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return $ip_normalised;
|
||||
}
|
||||
|
||||
// Handler, header and footer
|
||||
@@ -3325,6 +3003,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||
{
|
||||
global $cache, $db, $auth, $template, $config, $user, $request;
|
||||
global $phpbb_root_path, $msg_title, $msg_long_text, $phpbb_log;
|
||||
global $phpbb_container;
|
||||
|
||||
// Do not display notices if we suppress them via @
|
||||
if (error_reporting() == 0 && $errno != E_USER_ERROR && $errno != E_USER_WARNING && $errno != E_USER_NOTICE)
|
||||
@@ -3345,7 +3024,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||
|
||||
// Check the error reporting level and return if the error level does not match
|
||||
// If DEBUG is defined the default level is E_ALL
|
||||
if (($errno & ((defined('DEBUG')) ? E_ALL : error_reporting())) == 0)
|
||||
if (($errno & ($phpbb_container->getParameter('debug.show_errors') ? E_ALL : error_reporting())) == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -3403,7 +3082,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||
$log_text .= '<br /><br />BACKTRACE<br />' . $backtrace;
|
||||
}
|
||||
|
||||
if (defined('IN_INSTALL') || defined('DEBUG') || isset($auth) && $auth->acl_get('a_'))
|
||||
if (defined('IN_INSTALL') || ($phpbb_container != null && $phpbb_container->getParameter('debug.show_errors')) || isset($auth) && $auth->acl_get('a_'))
|
||||
{
|
||||
$msg_text = $log_text;
|
||||
|
||||
@@ -4291,7 +3970,8 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||
}
|
||||
else
|
||||
{
|
||||
$u_login_logout = append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login');
|
||||
$redirect = $request->variable('redirect', rawurlencode($user->page['page']));
|
||||
$u_login_logout = append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login&redirect=' . $redirect);
|
||||
$l_login_logout = $user->lang['LOGIN'];
|
||||
}
|
||||
|
||||
@@ -4439,7 +4119,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||
|
||||
/**
|
||||
* Workaround for missing template variable in pre phpBB 3.2.6 styles.
|
||||
* @deprecated 3.2.7 (To be removed: 3.3.0-a1)
|
||||
* @deprecated 3.2.7 (To be removed: 4.0.0-a1)
|
||||
*/
|
||||
$form_token_login = $template->retrieve_var('S_FORM_TOKEN_LOGIN');
|
||||
if (!empty($form_token_login))
|
||||
@@ -4566,7 +4246,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||
'T_STYLESHEET_LINK' => "{$web_path}styles/" . rawurlencode($user->style['style_path']) . '/theme/stylesheet.css?assets_version=' . $config['assets_version'],
|
||||
'T_STYLESHEET_LANG_LINK'=> "{$web_path}styles/" . rawurlencode($user->style['style_path']) . '/theme/' . $user->lang_name . '/stylesheet.css?assets_version=' . $config['assets_version'],
|
||||
'T_FONT_AWESOME_LINK' => !empty($config['allow_cdn']) && !empty($config['load_font_awesome_url']) ? $config['load_font_awesome_url'] : "{$web_path}assets/css/font-awesome.min.css?assets_version=" . $config['assets_version'],
|
||||
'T_JQUERY_LINK' => !empty($config['allow_cdn']) && !empty($config['load_jquery_url']) ? $config['load_jquery_url'] : "{$web_path}assets/javascript/jquery.min.js?assets_version=" . $config['assets_version'],
|
||||
'T_JQUERY_LINK' => !empty($config['allow_cdn']) && !empty($config['load_jquery_url']) ? $config['load_jquery_url'] : "{$web_path}assets/javascript/jquery-3.4.1.min.js?assets_version=" . $config['assets_version'],
|
||||
'S_ALLOW_CDN' => !empty($config['allow_cdn']),
|
||||
'S_COOKIE_NOTICE' => !empty($config['cookie_notice']),
|
||||
|
||||
@@ -4638,7 +4318,9 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||
*/
|
||||
function phpbb_check_and_display_sql_report(\phpbb\request\request_interface $request, \phpbb\auth\auth $auth, \phpbb\db\driver\driver_interface $db)
|
||||
{
|
||||
if ($request->variable('explain', false) && $auth->acl_get('a_') && defined('DEBUG'))
|
||||
global $phpbb_container;
|
||||
|
||||
if ($phpbb_container->getParameter('debug.sql_explain') && $request->variable('explain', false) && $auth->acl_get('a_'))
|
||||
{
|
||||
$db->sql_report('display');
|
||||
}
|
||||
@@ -4656,19 +4338,22 @@ function phpbb_check_and_display_sql_report(\phpbb\request\request_interface $re
|
||||
*/
|
||||
function phpbb_generate_debug_output(\phpbb\db\driver\driver_interface $db, \phpbb\config\config $config, \phpbb\auth\auth $auth, \phpbb\user $user, \phpbb\event\dispatcher_interface $phpbb_dispatcher)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
$debug_info = array();
|
||||
|
||||
// Output page creation time
|
||||
if (defined('PHPBB_DISPLAY_LOAD_TIME'))
|
||||
if ($phpbb_container->getParameter('debug.load_time'))
|
||||
{
|
||||
if (isset($GLOBALS['starttime']))
|
||||
{
|
||||
$totaltime = microtime(true) - $GLOBALS['starttime'];
|
||||
$debug_info[] = sprintf('<span title="SQL time: %.3fs / PHP time: %.3fs">Time: %.3fs</span>', $db->get_sql_time(), ($totaltime - $db->get_sql_time()), $totaltime);
|
||||
}
|
||||
}
|
||||
|
||||
$debug_info[] = sprintf('<span title="Cached: %d">Queries: %d</span>', $db->sql_num_queries(true), $db->sql_num_queries());
|
||||
|
||||
if ($phpbb_container->getParameter('debug.memory'))
|
||||
{
|
||||
$memory_usage = memory_get_peak_usage();
|
||||
if ($memory_usage)
|
||||
{
|
||||
@@ -4676,16 +4361,18 @@ function phpbb_generate_debug_output(\phpbb\db\driver\driver_interface $db, \php
|
||||
|
||||
$debug_info[] = 'Peak Memory Usage: ' . $memory_usage;
|
||||
}
|
||||
}
|
||||
|
||||
if (defined('DEBUG'))
|
||||
{
|
||||
$debug_info[] = 'GZIP: ' . (($config['gzip_compress'] && @extension_loaded('zlib')) ? 'On' : 'Off');
|
||||
|
||||
if ($user->load)
|
||||
{
|
||||
$debug_info[] = 'Load: ' . $user->load;
|
||||
}
|
||||
}
|
||||
|
||||
if ($phpbb_container->getParameter('debug.sql_explain'))
|
||||
{
|
||||
$debug_info[] = sprintf('<span title="Cached: %d">Queries: %d</span>', $db->sql_num_queries(true), $db->sql_num_queries());
|
||||
|
||||
if ($auth->acl_get('a_'))
|
||||
{
|
||||
|
@@ -177,7 +177,7 @@ function adm_page_footer($copyright_html = true)
|
||||
'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
|
||||
'S_COPYRIGHT_HTML' => $copyright_html,
|
||||
'CREDIT_LINE' => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Limited'),
|
||||
'T_JQUERY_LINK' => !empty($config['allow_cdn']) && !empty($config['load_jquery_url']) ? $config['load_jquery_url'] : "{$phpbb_root_path}assets/javascript/jquery.min.js",
|
||||
'T_JQUERY_LINK' => !empty($config['allow_cdn']) && !empty($config['load_jquery_url']) ? $config['load_jquery_url'] : "{$phpbb_root_path}assets/javascript/jquery-3.4.1.min.js",
|
||||
'S_ALLOW_CDN' => !empty($config['allow_cdn']),
|
||||
'VERSION' => $config['version'])
|
||||
);
|
||||
|
@@ -1190,28 +1190,6 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =
|
||||
return count($post_ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Attachments
|
||||
*
|
||||
* @deprecated 3.2.0-a1 (To be removed: 3.4.0)
|
||||
*
|
||||
* @param string $mode can be: post|message|topic|attach|user
|
||||
* @param mixed $ids can be: post_ids, message_ids, topic_ids, attach_ids, user_ids
|
||||
* @param bool $resync set this to false if you are deleting posts or topics
|
||||
*/
|
||||
function delete_attachments($mode, $ids, $resync = true)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
/** @var \phpbb\attachment\manager $attachment_manager */
|
||||
$attachment_manager = $phpbb_container->get('attachment.manager');
|
||||
$num_deleted = $attachment_manager->delete($mode, $ids, $resync);
|
||||
|
||||
unset($attachment_manager);
|
||||
|
||||
return $num_deleted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes shadow topics pointing to a specified forum.
|
||||
*
|
||||
@@ -1323,23 +1301,6 @@ function update_posted_info(&$topic_ids)
|
||||
$db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete attached file
|
||||
*
|
||||
* @deprecated 3.2.0-a1 (To be removed: 3.4.0)
|
||||
*/
|
||||
function phpbb_unlink($filename, $mode = 'file', $entry_removed = false)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
/** @var \phpbb\attachment\manager $attachment_manager */
|
||||
$attachment_manager = $phpbb_container->get('attachment.manager');
|
||||
$unlink = $attachment_manager->unlink($filename, $mode, $entry_removed);
|
||||
unset($attachment_manager);
|
||||
|
||||
return $unlink;
|
||||
}
|
||||
|
||||
/**
|
||||
* All-encompasing sync function
|
||||
*
|
||||
@@ -1423,7 +1384,6 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
|
||||
$db->sql_transaction('begin');
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
case 'mysql4':
|
||||
case 'mysqli':
|
||||
$sql = 'DELETE FROM ' . TOPICS_TABLE . '
|
||||
USING ' . TOPICS_TABLE . ' t1, ' . TOPICS_TABLE . " t2
|
||||
@@ -2722,8 +2682,7 @@ function phpbb_update_foes($db, $auth, $group_id = false, $user_id = false)
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
case 'mysqli':
|
||||
case 'mysql4':
|
||||
$sql = 'DELETE ' . (($db->get_sql_layer() === 'mysqli' || version_compare($db->sql_server_info(true), '4.1', '>=')) ? 'z.*' : ZEBRA_TABLE) . '
|
||||
$sql = 'DELETE z.*
|
||||
FROM ' . ZEBRA_TABLE . ' z, ' . USER_GROUP_TABLE . ' ug
|
||||
WHERE z.zebra_id = ug.user_id
|
||||
AND z.foe = 1
|
||||
@@ -2879,8 +2838,6 @@ function get_database_size()
|
||||
// This code is heavily influenced by a similar routine in phpMyAdmin 2.2.0
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
case 'mysqli':
|
||||
$sql = 'SELECT VERSION() AS mysql_version';
|
||||
$result = $db->sql_query($sql);
|
||||
|
@@ -22,7 +22,7 @@ if (!defined('IN_PHPBB'))
|
||||
/**
|
||||
* Get user avatar
|
||||
*
|
||||
* @deprecated 3.1.0-a1 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0-a1 (To be removed: 4.0.0)
|
||||
*
|
||||
* @param string $avatar Users assigned avatar name
|
||||
* @param int $avatar_type Type of avatar
|
||||
@@ -50,7 +50,7 @@ function get_user_avatar($avatar, $avatar_type, $avatar_width, $avatar_height, $
|
||||
/**
|
||||
* Hash the password
|
||||
*
|
||||
* @deprecated 3.1.0-a2 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0-a2 (To be removed: 4.0.0)
|
||||
*
|
||||
* @param string $password Password to be hashed
|
||||
*
|
||||
@@ -68,7 +68,7 @@ function phpbb_hash($password)
|
||||
/**
|
||||
* Check for correct password
|
||||
*
|
||||
* @deprecated 3.1.0-a2 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0-a2 (To be removed: 4.0.0)
|
||||
*
|
||||
* @param string $password The password in plain text
|
||||
* @param string $hash The stored password hash
|
||||
@@ -92,7 +92,7 @@ function phpbb_check_hash($password, $hash)
|
||||
* @param string $path Path to clean
|
||||
* @return string Cleaned path
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
*/
|
||||
function phpbb_clean_path($path)
|
||||
{
|
||||
@@ -136,7 +136,7 @@ function phpbb_clean_path($path)
|
||||
*
|
||||
* @return string Returns the options for timezone selector only
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
*/
|
||||
function tz_select($default = '', $truncate = false)
|
||||
{
|
||||
@@ -150,7 +150,7 @@ function tz_select($default = '', $truncate = false)
|
||||
* via admin_permissions. Changes of usernames and group names
|
||||
* must be carried through for the moderators table.
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
* @return null
|
||||
*/
|
||||
function cache_moderators()
|
||||
@@ -162,7 +162,7 @@ function cache_moderators()
|
||||
/**
|
||||
* Removes moderators and administrators from foe lists.
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
* @param array|bool $group_id If an array, remove all members of this group from foe lists, or false to ignore
|
||||
* @param array|bool $user_id If an array, remove this user from foe lists, or false to ignore
|
||||
* @return null
|
||||
@@ -182,7 +182,7 @@ function update_foes($group_id = false, $user_id = false)
|
||||
* @param string &$rank_img the rank image as full img tag is stored here after execution
|
||||
* @param string &$rank_img_src the rank image source is stored here after execution
|
||||
*
|
||||
* @deprecated 3.1.0-RC5 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0-RC5 (To be removed: 4.0.0)
|
||||
*
|
||||
* Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false
|
||||
*/
|
||||
@@ -232,7 +232,7 @@ function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port
|
||||
*
|
||||
* @return int|bool Returns the log_id, if the entry was added to the database, false otherwise.
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
*/
|
||||
function add_log()
|
||||
{
|
||||
@@ -280,7 +280,7 @@ function add_log()
|
||||
*
|
||||
* @return null
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
*/
|
||||
function set_config($config_name, $config_value, $is_dynamic = false, \phpbb\config\config $set_config = null)
|
||||
{
|
||||
@@ -310,7 +310,7 @@ function set_config($config_name, $config_value, $is_dynamic = false, \phpbb\con
|
||||
*
|
||||
* @return null
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
*/
|
||||
function set_config_count($config_name, $increment, $is_dynamic = false, \phpbb\config\config $set_config = null)
|
||||
{
|
||||
@@ -331,7 +331,7 @@ function set_config_count($config_name, $increment, $is_dynamic = false, \phpbb\
|
||||
* See {@link \phpbb\request\request_interface::variable \phpbb\request\request_interface::variable} for
|
||||
* documentation of this function's use.
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
* @param mixed $var_name The form variable's name from which data shall be retrieved.
|
||||
* If the value is an array this may be an array of indizes which will give
|
||||
* direct access to a value at any depth. E.g. if the value of "var" is array(1 => "a")
|
||||
@@ -389,7 +389,7 @@ function request_var($var_name, $default, $multibyte = false, $cookie = false, $
|
||||
/**
|
||||
* Get tables of a database
|
||||
*
|
||||
* @deprecated 3.1.0 (To be removed: 3.3.0)
|
||||
* @deprecated 3.1.0 (To be removed: 4.0.0)
|
||||
*/
|
||||
function get_tables($db)
|
||||
{
|
||||
@@ -492,7 +492,7 @@ function phpbb_realpath($path)
|
||||
* @param $number int|float The number we want to get the plural case for. Float numbers are floored.
|
||||
* @return int The plural-case we need to use for the number plural-rule combination
|
||||
*
|
||||
* @deprecated 3.2.0-dev (To be removed: 3.3.0)
|
||||
* @deprecated 3.2.0-dev (To be removed: 4.0.0)
|
||||
*/
|
||||
function phpbb_get_plural_form($rule, $number)
|
||||
{
|
||||
@@ -511,3 +511,165 @@ function phpbb_pcre_utf8_support()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Casts a variable to the given type.
|
||||
*
|
||||
* @deprecated 3.1 (To be removed 4.0.0)
|
||||
*/
|
||||
function set_var(&$result, $var, $type, $multibyte = false)
|
||||
{
|
||||
// no need for dependency injection here, if you have the object, call the method yourself!
|
||||
$type_cast_helper = new \phpbb\request\type_cast_helper();
|
||||
$type_cast_helper->set_var($result, $var, $type, $multibyte);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Attachments
|
||||
*
|
||||
* @deprecated 3.2.0-a1 (To be removed: 4.0.0)
|
||||
*
|
||||
* @param string $mode can be: post|message|topic|attach|user
|
||||
* @param mixed $ids can be: post_ids, message_ids, topic_ids, attach_ids, user_ids
|
||||
* @param bool $resync set this to false if you are deleting posts or topics
|
||||
*/
|
||||
function delete_attachments($mode, $ids, $resync = true)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
/** @var \phpbb\attachment\manager $attachment_manager */
|
||||
$attachment_manager = $phpbb_container->get('attachment.manager');
|
||||
$num_deleted = $attachment_manager->delete($mode, $ids, $resync);
|
||||
|
||||
unset($attachment_manager);
|
||||
|
||||
return $num_deleted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete attached file
|
||||
*
|
||||
* @deprecated 3.2.0-a1 (To be removed: 4.0.0)
|
||||
*/
|
||||
function phpbb_unlink($filename, $mode = 'file', $entry_removed = false)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
/** @var \phpbb\attachment\manager $attachment_manager */
|
||||
$attachment_manager = $phpbb_container->get('attachment.manager');
|
||||
$unlink = $attachment_manager->unlink($filename, $mode, $entry_removed);
|
||||
unset($attachment_manager);
|
||||
|
||||
return $unlink;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display reasons
|
||||
*
|
||||
* @deprecated 3.2.0-dev (To be removed: 4.0.0)
|
||||
*/
|
||||
function display_reasons($reason_id = 0)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
$phpbb_container->get('phpbb.report.report_reason_list_provider')->display_reasons($reason_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload Attachment - filedata is generated here
|
||||
* Uses upload class
|
||||
*
|
||||
* @deprecated 3.2.0-a1 (To be removed: 4.0.0)
|
||||
*
|
||||
* @param string $form_name The form name of the file upload input
|
||||
* @param int $forum_id The id of the forum
|
||||
* @param bool $local Whether the file is local or not
|
||||
* @param string $local_storage The path to the local file
|
||||
* @param bool $is_message Whether it is a PM or not
|
||||
* @param array $local_filedata A filespec object created for the local file
|
||||
*
|
||||
* @return array File data array
|
||||
*/
|
||||
function upload_attachment($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
/** @var \phpbb\attachment\manager $attachment_manager */
|
||||
$attachment_manager = $phpbb_container->get('attachment.manager');
|
||||
$file = $attachment_manager->upload($form_name, $forum_id, $local, $local_storage, $is_message, $local_filedata);
|
||||
unset($attachment_manager);
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for php's checkdnsrr function.
|
||||
*
|
||||
* @param string $host Fully-Qualified Domain Name
|
||||
* @param string $type Resource record type to lookup
|
||||
* Supported types are: MX (default), A, AAAA, NS, TXT, CNAME
|
||||
* Other types may work or may not work
|
||||
*
|
||||
* @return mixed true if entry found,
|
||||
* false if entry not found,
|
||||
* null if this function is not supported by this environment
|
||||
*
|
||||
* Since null can also be returned, you probably want to compare the result
|
||||
* with === true or === false,
|
||||
*
|
||||
* @deprecated 3.3.0-b2 (To be removed: 4.0.0)
|
||||
*/
|
||||
function phpbb_checkdnsrr($host, $type = 'MX')
|
||||
{
|
||||
return checkdnsrr($host, $type);
|
||||
}
|
||||
|
||||
/*
|
||||
* Wrapper for inet_ntop()
|
||||
*
|
||||
* Converts a packed internet address to a human readable representation
|
||||
* inet_ntop() is supported by PHP since 5.1.0, since 5.3.0 also on Windows.
|
||||
*
|
||||
* @param string $in_addr A 32bit IPv4, or 128bit IPv6 address.
|
||||
*
|
||||
* @return mixed false on failure,
|
||||
* string otherwise
|
||||
*
|
||||
* @deprecated 3.3.0-b2 (To be removed: 4.0.0)
|
||||
*/
|
||||
function phpbb_inet_ntop($in_addr)
|
||||
{
|
||||
return inet_ntop($in_addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for inet_pton()
|
||||
*
|
||||
* Converts a human readable IP address to its packed in_addr representation
|
||||
* inet_pton() is supported by PHP since 5.1.0, since 5.3.0 also on Windows.
|
||||
*
|
||||
* @param string $address A human readable IPv4 or IPv6 address.
|
||||
*
|
||||
* @return mixed false if address is invalid,
|
||||
* in_addr representation of the given address otherwise (string)
|
||||
*
|
||||
* @deprecated 3.3.0-b2 (To be removed: 4.0.0)
|
||||
*/
|
||||
function phpbb_inet_pton($address)
|
||||
{
|
||||
return inet_pton($address);
|
||||
}
|
||||
|
||||
/**
|
||||
* Hashes an email address to a big integer
|
||||
*
|
||||
* @param string $email Email address
|
||||
*
|
||||
* @return string Unsigned Big Integer
|
||||
*
|
||||
* @deprecated 3.3.0-b2 (To be removed: 4.0.0)
|
||||
*/
|
||||
function phpbb_email_hash($email)
|
||||
{
|
||||
return sprintf('%u', crc32(strtolower($email))) . strlen($email);
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user