mirror of
https://github.com/phpbb/phpbb.git
synced 2025-09-26 07:49:06 +02:00
Compare commits
2212 Commits
release-3.
...
release-3.
Author | SHA1 | Date | |
---|---|---|---|
|
2973c2f6db | ||
|
57ef18ecc0 | ||
|
e9e305ee9f | ||
|
1d256fef61 | ||
|
599073cab2 | ||
|
b7ffee0945 | ||
|
56c1b9b5bd | ||
|
18c00a902f | ||
|
8497104bdb | ||
|
4038bb9dc3 | ||
|
935c1a3ea2 | ||
|
6eb49d0907 | ||
|
7fe0cc7f26 | ||
|
28cf33eb2f | ||
|
cf47bed67e | ||
|
1e28669407 | ||
|
58cc1f4ef3 | ||
|
45d64a1627 | ||
|
10f92dbb68 | ||
|
bc7bd15312 | ||
|
5c40766dc4 | ||
|
661140c50b | ||
|
294c517256 | ||
|
de660fe0c8 | ||
|
e602889213 | ||
|
f4b1444248 | ||
|
13e6cd5992 | ||
|
dd9267b678 | ||
|
f646fcdefa | ||
|
99c97b951f | ||
|
f41c8eef47 | ||
|
17b4838ee3 | ||
|
a0092bdd18 | ||
|
c0b81a1a48 | ||
|
89afa0cb5e | ||
|
a62a303318 | ||
|
cacd9375fd | ||
|
7763969625 | ||
|
a2e7205154 | ||
|
350c9213ee | ||
|
7365764476 | ||
|
dd4c982792 | ||
|
2088ee5e84 | ||
|
926a0a4e33 | ||
|
30144052da | ||
|
8298095421 | ||
|
55dbe070e3 | ||
|
8639be4bd4 | ||
|
ffc655a1ba | ||
|
922e7699ed | ||
|
c790e81fb6 | ||
|
42851d0d9f | ||
|
00d1351e55 | ||
|
48a233e415 | ||
|
6798c337f8 | ||
|
99b745982e | ||
|
bde7b119b2 | ||
|
5013075af7 | ||
|
40881b537e | ||
|
efece4136b | ||
|
38177e9052 | ||
|
a4296a9e6b | ||
|
d7477760d6 | ||
|
294b3ff922 | ||
|
ad77f0d0ab | ||
|
5a9c01716f | ||
|
5b03cd422a | ||
|
e5d2e82ef5 | ||
|
8eacbf8305 | ||
|
5976dc2141 | ||
|
3647cf2cfe | ||
|
dd3ebe2b71 | ||
|
f3460fe9eb | ||
|
15960a7918 | ||
|
fa893f092b | ||
|
99b07b884b | ||
|
7f9bcc2743 | ||
|
d875eaa405 | ||
|
db40145fd5 | ||
|
8c77da9c30 | ||
|
09f0b417be | ||
|
8432e506c4 | ||
|
77d1010081 | ||
|
4003f54d0b | ||
|
abaef09a14 | ||
|
127121f1d2 | ||
|
e53cd79067 | ||
|
8bdff227d9 | ||
|
df7dae9600 | ||
|
e21a8e02cd | ||
|
db9874546b | ||
|
e125f1f709 | ||
|
9e15802805 | ||
|
f98f2c5896 | ||
|
c2d91650bd | ||
|
51b773e588 | ||
|
ef4db99709 | ||
|
cd0e682984 | ||
|
431b399c68 | ||
|
56d8a7e43f | ||
|
2976314205 | ||
|
be6bb09984 | ||
|
8a8232109c | ||
|
f3ead808f3 | ||
|
276502ce58 | ||
|
8899fcfdc2 | ||
|
2aba9b0e3f | ||
|
80a12f7108 | ||
|
6cef48af2f | ||
|
607fe555af | ||
|
166c4eeb7e | ||
|
bf55502c62 | ||
|
df5fcafcb9 | ||
|
1fb7e6d2c8 | ||
|
1c1c981b17 | ||
|
7c661746cf | ||
|
24dd47adcf | ||
|
f853f6523f | ||
|
a63a1913fa | ||
|
ef593afec5 | ||
|
51da43f77f | ||
|
e328ee96d2 | ||
|
7f11c1b46d | ||
|
ae18669fcd | ||
|
9ea4aabe9a | ||
|
a88040df85 | ||
|
fcf89208cf | ||
|
d365f17ebd | ||
|
6f345e43cb | ||
|
874fb7bf8a | ||
|
558b8ae7ed | ||
|
477f5d9e1d | ||
|
92e545fc26 | ||
|
c330500c4d | ||
|
9fcf956888 | ||
|
40ed6c6458 | ||
|
cd34cdedee | ||
|
e850915190 | ||
|
d14f98f672 | ||
|
130c10915e | ||
|
9ecf09dbe8 | ||
|
8954a68953 | ||
|
f986138467 | ||
|
611faafaf3 | ||
|
ed0b5020a9 | ||
|
b2d2216b87 | ||
|
766ecaed5a | ||
|
a7a53de34d | ||
|
6aa980eadb | ||
|
dbf0b9ebe6 | ||
|
874fb8c59c | ||
|
e195e2ad82 | ||
|
9aebbcc1a0 | ||
|
de31c4e797 | ||
|
7b734ef529 | ||
|
6753961756 | ||
|
d2295b82f1 | ||
|
74845a6b3a | ||
|
f13b17fd00 | ||
|
149d0bd227 | ||
|
eb12d385a0 | ||
|
d318768634 | ||
|
843cb97048 | ||
|
a85c36b15e | ||
|
76ab83893b | ||
|
9aec69413f | ||
|
42108b5e11 | ||
|
2267ef1ac2 | ||
|
3f73ae8545 | ||
|
6f45b46746 | ||
|
df43810f55 | ||
|
42252460a9 | ||
|
8dd6b5373d | ||
|
6c45c1ff6b | ||
|
18a672c16e | ||
|
d60998ba69 | ||
|
17a50027b1 | ||
|
663100a44f | ||
|
1c8128292c | ||
|
25bd56c254 | ||
|
d0c48f3fde | ||
|
abffd0f662 | ||
|
adf53d3264 | ||
|
a9576a4084 | ||
|
98929ca983 | ||
|
3b5777f900 | ||
|
6943fbba89 | ||
|
c07c6816fc | ||
|
b38e8a2c84 | ||
|
b2459edaf3 | ||
|
ff96c1a907 | ||
|
b4a343bdc9 | ||
|
6ee64c94a2 | ||
|
9c51a7866b | ||
|
51b3d9de63 | ||
|
bda99e1c35 | ||
|
763c6f625f | ||
|
06672d896b | ||
|
4afa184110 | ||
|
602841fd11 | ||
|
ae3c294a2f | ||
|
00b8cb1e52 | ||
|
eabe2632dc | ||
|
112392bcf3 | ||
|
9401ce1c5f | ||
|
ec7180db4f | ||
|
512a93727a | ||
|
c4642d2502 | ||
|
f3a596b78b | ||
|
887b1e25fb | ||
|
f31ea59a1a | ||
|
61a28c154b | ||
|
565053f508 | ||
|
5a922ffa5b | ||
|
b4ff57e2a4 | ||
|
e4d5cbbc76 | ||
|
dc415768a8 | ||
|
6a8140e82b | ||
|
213d092f6f | ||
|
3477562c58 | ||
|
d5d449b78e | ||
|
6c43f81e8d | ||
|
856ce16a87 | ||
|
bc5c095363 | ||
|
9ba6e9b60d | ||
|
bf26da660a | ||
|
a9b5dcd954 | ||
|
303f8f55cb | ||
|
c6fe842bc8 | ||
|
92e678a116 | ||
|
c098468699 | ||
|
613582e2c5 | ||
|
43e69df080 | ||
|
f6b4c5b70d | ||
|
fe84120bf2 | ||
|
0e1e792574 | ||
|
d4178511a2 | ||
|
0e3bc638e9 | ||
|
dd549a5e43 | ||
|
526c79d2e2 | ||
|
8afc638171 | ||
|
9e130333c0 | ||
|
2b7d8020b9 | ||
|
bb7e7b682d | ||
|
37039f95d2 | ||
|
993e28098d | ||
|
25c20cbcf3 | ||
|
88bbd0fca6 | ||
|
eed57fd089 | ||
|
58fc9e042a | ||
|
5ab3916311 | ||
|
79b8f56427 | ||
|
593c4b875c | ||
|
2e93f5f3e8 | ||
|
959f60a591 | ||
|
607a2c483a | ||
|
70ba9dac03 | ||
|
7e6c5df710 | ||
|
90973a52b4 | ||
|
4eef6a4de4 | ||
|
01b8d6a58e | ||
|
31b3d56ac1 | ||
|
ccf6e6c255 | ||
|
8fe3a97a1a | ||
|
2c5519da39 | ||
|
0c90bf0000 | ||
|
edc610e81d | ||
|
e071cd801a | ||
|
ac76b80cb1 | ||
|
d4e0840e6f | ||
|
137422116e | ||
|
5f8c9962a0 | ||
|
0a8391857f | ||
|
233d6a0a69 | ||
|
91b3627236 | ||
|
9dec6d3176 | ||
|
6fac65d193 | ||
|
42bf5778d5 | ||
|
4bf78d139b | ||
|
d76c571ad1 | ||
|
4046365977 | ||
|
c480dd8d2f | ||
|
266376af2e | ||
|
c4f42c1573 | ||
|
d8ac6f575e | ||
|
715c0ad608 | ||
|
745dd5f5a8 | ||
|
346523fad6 | ||
|
78aca08d39 | ||
|
90b1c2210e | ||
|
a04af20806 | ||
|
88dcb5d3d5 | ||
|
2d3781f285 | ||
|
b724e82bbd | ||
|
3163b1726c | ||
|
6b6c710706 | ||
|
a78eb6fb42 | ||
|
3b622bc005 | ||
|
b14f37d409 | ||
|
b0248d2d78 | ||
|
0f38ece743 | ||
|
e80cf43adc | ||
|
aba7f4a9e6 | ||
|
e1052bd168 | ||
|
d59a4d4aad | ||
|
8360752b2a | ||
|
d572070456 | ||
|
4513d1c0af | ||
|
74fe9f40b7 | ||
|
bdbbc63b9c | ||
|
10330e5867 | ||
|
2563561663 | ||
|
facd14b47e | ||
|
0596d1065e | ||
|
a414a44e36 | ||
|
6268693cff | ||
|
e5db724d2c | ||
|
dd790b41eb | ||
|
50859bc8a5 | ||
|
b0d976f462 | ||
|
9515abdb91 | ||
|
b53645177b | ||
|
0df0bd269a | ||
|
098f22609d | ||
|
1dedb05dce | ||
|
e3547aeb82 | ||
|
253ecdd3fe | ||
|
f9281f9267 | ||
|
56f0846378 | ||
|
0ede362120 | ||
|
e11c11ac9d | ||
|
e0e0173442 | ||
|
33c4abe909 | ||
|
cca85f648b | ||
|
add6d2b726 | ||
|
5f825002b6 | ||
|
aaf5700076 | ||
|
e9ac8f1f94 | ||
|
a39691b0d5 | ||
|
0c8e6172fb | ||
|
14b94a1e62 | ||
|
b550d1db0a | ||
|
a686a2f057 | ||
|
22d6b035d6 | ||
|
bdeedfea4e | ||
|
85e5c9dcca | ||
|
91f216d9ce | ||
|
b0c008690a | ||
|
55ea8d6030 | ||
|
8223a956df | ||
|
cfd15752ee | ||
|
5ee2efd4c2 | ||
|
0fdc76521b | ||
|
7ba5f8f22a | ||
|
f99d1a7a51 | ||
|
33dfaa478c | ||
|
4c72b76809 | ||
|
bf50c63d6e | ||
|
464466cade | ||
|
735b826063 | ||
|
b613c9f63d | ||
|
acaec9f95f | ||
|
2f3066235c | ||
|
e0a30fbce7 | ||
|
a8658fe4d1 | ||
|
c11f16fda0 | ||
|
bbe2b21310 | ||
|
8c33a2180d | ||
|
9e55d3cb44 | ||
|
a14e8f8ce5 | ||
|
4f9bd296a7 | ||
|
65fb35223c | ||
|
aefdd86020 | ||
|
aafb522538 | ||
|
1eb81e9b2a | ||
|
d8d67b5f17 | ||
|
7adee3c50d | ||
|
75dcbeaa9f | ||
|
f4af87f718 | ||
|
26d002a51a | ||
|
e0144ae7b2 | ||
|
c2c7c271e7 | ||
|
dfe6421da8 | ||
|
60d267893c | ||
|
e0361fe9fe | ||
|
130e7f7e8a | ||
|
f5c5d7d1e6 | ||
|
bddb4decfb | ||
|
3cde5974d2 | ||
|
5655febb8d | ||
|
437839ba72 | ||
|
4f49fb1f98 | ||
|
6e77ca50ae | ||
|
015c038d92 | ||
|
bd55fe7e8c | ||
|
6e66f1505c | ||
|
640a2221a5 | ||
|
c27214495c | ||
|
98f6a1a300 | ||
|
0260fcd6a7 | ||
|
f2d004a881 | ||
|
31654e728f | ||
|
c879d9380f | ||
|
9db5da5b3d | ||
|
d5aa6189b6 | ||
|
389cca5402 | ||
|
defb807dbc | ||
|
9fb7a9108a | ||
|
4bf78fd7fd | ||
|
261aa0e6aa | ||
|
41b8ec0470 | ||
|
984596ffd3 | ||
|
1416e25cfd | ||
|
3584d79e87 | ||
|
e5bbb899f7 | ||
|
2afc1c369a | ||
|
81f67f3a6e | ||
|
4a185ed02e | ||
|
cfd0fe6943 | ||
|
3f6abe056a | ||
|
9b961836be | ||
|
aa5e9bf25c | ||
|
50c3c3f0ee | ||
|
1f96a2c79a | ||
|
24a5972a0b | ||
|
fc8c6acae4 | ||
|
0f445c73a0 | ||
|
0f1c62bc7b | ||
|
b7258788cc | ||
|
632702e10f | ||
|
b5c316c9c3 | ||
|
458940217b | ||
|
1b82ea8a11 | ||
|
85cf70765d | ||
|
9794a84f3a | ||
|
33ba9f3392 | ||
|
09820dfdfa | ||
|
6590827316 | ||
|
738dd786ba | ||
|
17f2d6e03a | ||
|
20c3371460 | ||
|
aa523eadf1 | ||
|
d76f5132db | ||
|
179dcd9642 | ||
|
8ebb64a92a | ||
|
e091adcc9c | ||
|
61a7e0fdfc | ||
|
ad794c17ed | ||
|
b5f8251b3f | ||
|
b5f10f844f | ||
|
a1a6ff4555 | ||
|
eabe7e8e3c | ||
|
6d8468c91a | ||
|
aff7fab65f | ||
|
be053c3381 | ||
|
e805a47a98 | ||
|
9feae900d3 | ||
|
34f23477ff | ||
|
e5f069b15b | ||
|
fd550bc25a | ||
|
378c63b002 | ||
|
51766ffaee | ||
|
2c8e16cf4b | ||
|
279f506d69 | ||
|
8564e1eac1 | ||
|
6e45a2361d | ||
|
83b53690b5 | ||
|
191f38b9a0 | ||
|
96afebf969 | ||
|
3ece314338 | ||
|
c62d9e4c05 | ||
|
34b56205a3 | ||
|
a0477a10ce | ||
|
9e44ba096e | ||
|
7d29f133e5 | ||
|
e535f8e054 | ||
|
11e68e910b | ||
|
02efbc251e | ||
|
7434783b07 | ||
|
d446030a9b | ||
|
d6e3dfff6d | ||
|
369ee44b6f | ||
|
0543c810a7 | ||
|
bb0f6d040c | ||
|
02ef7c5da4 | ||
|
90899a17dd | ||
|
9c70c15e1c | ||
|
21374390ad | ||
|
d03a853f6e | ||
|
014008fd48 | ||
|
b3d593b626 | ||
|
744009882b | ||
|
1c407e8049 | ||
|
e75ea6642d | ||
|
ad9e5e6891 | ||
|
b828efa9e6 | ||
|
c66923bafc | ||
|
ebc5e1ead0 | ||
|
3db6cc98f5 | ||
|
a45f8f0796 | ||
|
c2968212d8 | ||
|
0793126dc4 | ||
|
9fb2dbb776 | ||
|
6f034c5215 | ||
|
0802772f09 | ||
|
696ff06263 | ||
|
b86d15a766 | ||
|
637844f264 | ||
|
c410829a42 | ||
|
8ef6a5c1bc | ||
|
cd36a68645 | ||
|
5225ac8a9a | ||
|
aaaef71b60 | ||
|
1fe8bbf47a | ||
|
827c135cc9 | ||
|
67c41633a2 | ||
|
92cebdd624 | ||
|
7017c73156 | ||
|
2e025be53a | ||
|
2126738598 | ||
|
99286b1fdd | ||
|
64717d0270 | ||
|
f197662653 | ||
|
e080a8533d | ||
|
f84e03f646 | ||
|
7c02b58114 | ||
|
12256eabb6 | ||
|
9b1bae858f | ||
|
db3c143b73 | ||
|
ea19638f4e | ||
|
89b07af756 | ||
|
7275f9e7f1 | ||
|
8fbbaf97ab | ||
|
b8a3d8f25d | ||
|
495986ff5d | ||
|
3ed3abb446 | ||
|
ca8c402796 | ||
|
fafe250b0d | ||
|
256ea96cd9 | ||
|
5cdd22e058 | ||
|
47e30a2e21 | ||
|
040c2e9b78 | ||
|
2c661205e4 | ||
|
b5d2ff4074 | ||
|
b3d93a09f2 | ||
|
2f72950d2d | ||
|
064a96ec07 | ||
|
a8feaeafe8 | ||
|
fc83f213d5 | ||
|
5e3dd4b55e | ||
|
53e5113893 | ||
|
f930f8821f | ||
|
b84b875cd2 | ||
|
bc4a787470 | ||
|
c6ef628589 | ||
|
d4415d4ad8 | ||
|
2b92ff372b | ||
|
c410c9bc47 | ||
|
52f625a88c | ||
|
feea7958f7 | ||
|
c61c130596 | ||
|
59a95a3c35 | ||
|
60af39b38c | ||
|
8376012f9a | ||
|
dd6e110210 | ||
|
898075f0f8 | ||
|
3308318524 | ||
|
54c27e3e67 | ||
|
54156dd9d8 | ||
|
8084d977fb | ||
|
997f1b92cf | ||
|
e1069bcbde | ||
|
9e22bc8691 | ||
|
751b0e2ede | ||
|
9fb98201f2 | ||
|
b9f7c3ff6e | ||
|
0d84769d66 | ||
|
cd9aea32b9 | ||
|
a12a6f52ae | ||
|
9739fabd68 | ||
|
32ce101541 | ||
|
89d2fcf5ed | ||
|
5e10b02103 | ||
|
1ce11e39e1 | ||
|
aed2d00373 | ||
|
691a891634 | ||
|
33af6d0f0a | ||
|
7a034a8c1e | ||
|
4d857c4be7 | ||
|
3ee1efe7e0 | ||
|
6fa019e23a | ||
|
9b2f42748c | ||
|
e53102fead | ||
|
87c1e631ef | ||
|
8c982c7aa0 | ||
|
8cfec5370a | ||
|
6cc0fe5f95 | ||
|
16b27be2d0 | ||
|
0dd053eeba | ||
|
4ed0201ffe | ||
|
19aadeefda | ||
|
8ca00c529e | ||
|
e138328be1 | ||
|
faec4417f4 | ||
|
34f27a1670 | ||
|
028340ee52 | ||
|
e86daaede6 | ||
|
91f2f2c6f1 | ||
|
5a3a91b464 | ||
|
1f972f0ee7 | ||
|
2e37b2dc2d | ||
|
8d6a9245c1 | ||
|
1a8950d01b | ||
|
b4fa01e943 | ||
|
cd057c126a | ||
|
377ebacf0d | ||
|
fb2d1c2a28 | ||
|
da2364b2c1 | ||
|
a5899494b9 | ||
|
86e009ad15 | ||
|
cc60a63f22 | ||
|
4044900c69 | ||
|
e84cf2e5ba | ||
|
e78664d68b | ||
|
a466be10c2 | ||
|
4e5b9b23de | ||
|
9bc98278fe | ||
|
33a789e030 | ||
|
c9db94f91c | ||
|
3cf83f1a62 | ||
|
d0344b9318 | ||
|
4072dd0246 | ||
|
6a6d83c674 | ||
|
94fe538100 | ||
|
4f9252568a | ||
|
5017dbd58d | ||
|
c4fcbc2cbd | ||
|
3be1e3029e | ||
|
7992b3f476 | ||
|
9dc25510a1 | ||
|
420f494628 | ||
|
8e4559f49f | ||
|
0fe95a032b | ||
|
9446db9cde | ||
|
adea3e734a | ||
|
919ff4575b | ||
|
ee56f0fe7d | ||
|
893dad0297 | ||
|
d08843853e | ||
|
97356d9879 | ||
|
9f09dec049 | ||
|
8a3164aaf7 | ||
|
6caf2f83ad | ||
|
4805e705ad | ||
|
9bf6e7f32e | ||
|
c93381ff04 | ||
|
88b79aba00 | ||
|
9c6df33e3b | ||
|
605726a4d7 | ||
|
3103e99dc7 | ||
|
a8c93ff661 | ||
|
1f4eac13b9 | ||
|
5e43f6195c | ||
|
6846eeaa48 | ||
|
b602b57b02 | ||
|
ba487a24dc | ||
|
015c9313a7 | ||
|
e7c81cd1a6 | ||
|
bf7936380a | ||
|
3f56bbb9d1 | ||
|
44d0a3a716 | ||
|
999122acdb | ||
|
c785c4b716 | ||
|
b305070e0a | ||
|
99634d4c05 | ||
|
fad1c652c0 | ||
|
1df74005a8 | ||
|
c7856ce162 | ||
|
cccf01447f | ||
|
ddc3eaa5bf | ||
|
65fa73855c | ||
|
391e4943d9 | ||
|
6801f7949f | ||
|
710aa10905 | ||
|
4a78202f96 | ||
|
d6a591cde3 | ||
|
4e447cc91a | ||
|
ec75f1741b | ||
|
af38f9d6c8 | ||
|
4614d3d92b | ||
|
866a4dc6d4 | ||
|
492352f652 | ||
|
1d05f722cb | ||
|
c1b88de806 | ||
|
89168c507b | ||
|
7a69c0f98c | ||
|
8cc6075d92 | ||
|
03b36d46c3 | ||
|
8104a446d4 | ||
|
aff3852568 | ||
|
39905eaf4b | ||
|
534cef94c9 | ||
|
a0ced790e2 | ||
|
0537365cac | ||
|
6e34e3c24e | ||
|
fecf3306f3 | ||
|
39db7005cd | ||
|
e956629735 | ||
|
89ca3f087e | ||
|
29d137cc5e | ||
|
88a11c1377 | ||
|
69b895caae | ||
|
d7f433fbf7 | ||
|
4d00c4c8af | ||
|
1e6c5cd381 | ||
|
0fbc5a3d83 | ||
|
3bfb2b3f69 | ||
|
337d876df7 | ||
|
8246023e0f | ||
|
b28b94b1f1 | ||
|
baf4bd7b5c | ||
|
81126dc97e | ||
|
391f80d480 | ||
|
febe44ed79 | ||
|
ede9a6815a | ||
|
2801415c1c | ||
|
dd029ed592 | ||
|
1d4fbd240e | ||
|
7275cdd152 | ||
|
b1e6fad38a | ||
|
9671a00214 | ||
|
d17b15a545 | ||
|
f841a0a1b8 | ||
|
7472d300b6 | ||
|
06ef03f8d6 | ||
|
40322bb1b6 | ||
|
6218c2e120 | ||
|
afbf7aadd2 | ||
|
a860a3310a | ||
|
ca24013470 | ||
|
99734fc648 | ||
|
3547f0bf0e | ||
|
01a22e7223 | ||
|
2145938d74 | ||
|
62a8741494 | ||
|
13155bf846 | ||
|
4d966d1762 | ||
|
056fb494b1 | ||
|
da7c9f6a7c | ||
|
73eb54bf54 | ||
|
6af8872ef3 | ||
|
a3070bedeb | ||
|
a12f903e93 | ||
|
d4cb357b26 | ||
|
b6e31e3664 | ||
|
7355ee623a | ||
|
a7385f0fbe | ||
|
c5814ddfaa | ||
|
96c439bf10 | ||
|
7a21a9032e | ||
|
1619014120 | ||
|
0a4d062e16 | ||
|
dda2dfecb3 | ||
|
b29c0ca153 | ||
|
c0296d10db | ||
|
4f3f91dfc3 | ||
|
52c931a8b6 | ||
|
9ca70432d9 | ||
|
1fbb807cc7 | ||
|
98f446df67 | ||
|
43b9254d1d | ||
|
97034e0776 | ||
|
02e5a7afc4 | ||
|
7efddcef54 | ||
|
ea36b83ee9 | ||
|
59cece1a0a | ||
|
e5fa23c3c0 | ||
|
9a7d88362f | ||
|
7f6c859b0d | ||
|
441a5a2175 | ||
|
ceca69d121 | ||
|
6a72d0305b | ||
|
7a8d9671c2 | ||
|
5b3d238804 | ||
|
1860a06eab | ||
|
1862992ca7 | ||
|
95fa6cceee | ||
|
19076de94c | ||
|
27289cbfad | ||
|
3d76942cdf | ||
|
51cc7202f8 | ||
|
303a933403 | ||
|
54b54c41c6 | ||
|
59e50d6d53 | ||
|
2a1656e7b3 | ||
|
12ce75b5f5 | ||
|
b82d90eb39 | ||
|
f302440297 | ||
|
848021c743 | ||
|
c4b4e1d7a9 | ||
|
ed33f06235 | ||
|
643845306a | ||
|
95511540ea | ||
|
b3b5fcc874 | ||
|
1b4ba00a73 | ||
|
8caf2e7c59 | ||
|
a87a60c108 | ||
|
5b5502390d | ||
|
1db2d9c3c1 | ||
|
5ef0105a5f | ||
|
e8421dbab1 | ||
|
e0197d711f | ||
|
11563ce971 | ||
|
bbcac37e30 | ||
|
8c25f3a9f7 | ||
|
e371f3eac7 | ||
|
dc7012864b | ||
|
cd53106ec3 | ||
|
86af3a2ba4 | ||
|
a6d4b460f1 | ||
|
975ad95bff | ||
|
61c59bdc91 | ||
|
79efbcaa4e | ||
|
8cc0e5438a | ||
|
2c8be65dcf | ||
|
c3598d0d58 | ||
|
92a2c08616 | ||
|
e5b43eabe1 | ||
|
a8be17dd4d | ||
|
170ddeaf63 | ||
|
8db200d75f | ||
|
3638b36849 | ||
|
8804cf885b | ||
|
ad23388043 | ||
|
79a8ed4677 | ||
|
5eeb213b12 | ||
|
75df7c202e | ||
|
2ef37a8e77 | ||
|
acbcb18226 | ||
|
5d0fd9f73a | ||
|
47c583516b | ||
|
91c6edf092 | ||
|
c2873cbc01 | ||
|
a1f1c0cc9d | ||
|
f46ebf5bec | ||
|
6dd7b7e8b5 | ||
|
721a39502a | ||
|
b01a956461 | ||
|
364c6d328a | ||
|
f7487e4e5c | ||
|
84b414a4f0 | ||
|
3f9e6c6013 | ||
|
e855f5cba4 | ||
|
90fccff6f1 | ||
|
a380c78e1e | ||
|
a6a18f2c59 | ||
|
6efebf7571 | ||
|
c7c3adf762 | ||
|
2e29bb48fa | ||
|
e1fc0a9059 | ||
|
c846dd5666 | ||
|
19a5900db5 | ||
|
5de8c3dc3c | ||
|
3ae0d347c9 | ||
|
2244635a41 | ||
|
68bd4e9faa | ||
|
8c12c46869 | ||
|
aecd1fa04e | ||
|
ac781e570f | ||
|
f28eed7f30 | ||
|
2869e04756 | ||
|
4446888eb2 | ||
|
7783912e93 | ||
|
ccac4c5fe8 | ||
|
a18681cfe4 | ||
|
096dad1767 | ||
|
068f8eed25 | ||
|
dd62829f96 | ||
|
be2959fbab | ||
|
7acdef7c01 | ||
|
bd0b6fbdab | ||
|
c83b4c21a4 | ||
|
9d22731d03 | ||
|
7b5ad8bb74 | ||
|
af98278590 | ||
|
bef2a4bc41 | ||
|
f24396ac0d | ||
|
b7f57eb556 | ||
|
c452c83855 | ||
|
c9b32463de | ||
|
1177f843c5 | ||
|
cdca28eb3f | ||
|
5169a947f4 | ||
|
6a95f34d0c | ||
|
11083e59ed | ||
|
6b45c7bd5f | ||
|
c5ec036b84 | ||
|
e2cfc01964 | ||
|
f007aef3d8 | ||
|
5ad1ae4e7b | ||
|
32586407d1 | ||
|
233b2fdade | ||
|
ea7e07c1a4 | ||
|
acf0885948 | ||
|
d8ef094a9a | ||
|
c925e8ef58 | ||
|
3f518c9263 | ||
|
8a746b457d | ||
|
0502b9cc22 | ||
|
6a0b1333da | ||
|
d05abc0807 | ||
|
b734fed853 | ||
|
67f80c7942 | ||
|
bb24d619d2 | ||
|
62f59fa59d | ||
|
adacf21edb | ||
|
314ab17edd | ||
|
49974a169b | ||
|
3bb58556ea | ||
|
98713a7cbe | ||
|
43e503e0ee | ||
|
37518342c6 | ||
|
81d582a2d2 | ||
|
bcea34ee7c | ||
|
3ff99a9eb1 | ||
|
20fbe0e254 | ||
|
e22f431660 | ||
|
9c8f2007d9 | ||
|
62a45d86ec | ||
|
3e0b20820a | ||
|
2dc8e61a72 | ||
|
47321954b7 | ||
|
ecc79ea2ec | ||
|
710740d6be | ||
|
de3c0f274c | ||
|
b215f13f04 | ||
|
950d8b8a13 | ||
|
31fc85153e | ||
|
782b0758ef | ||
|
21c5c5a336 | ||
|
f861f1fb9a | ||
|
7f79849146 | ||
|
db9f54bee5 | ||
|
134482f6c2 | ||
|
9051b28e14 | ||
|
1f76aa65f3 | ||
|
a641a992f6 | ||
|
8c334f0c10 | ||
|
ecd7b14171 | ||
|
65a1ed0f82 | ||
|
f6a8981028 | ||
|
bd1033be68 | ||
|
6eb357b421 | ||
|
1482efc927 | ||
|
908245686e | ||
|
70337e99fa | ||
|
1ecc2e042b | ||
|
bcc75099ab | ||
|
2c66f69c51 | ||
|
e1a6ed45bb | ||
|
3d5639a844 | ||
|
705cc6ee6b | ||
|
808be852c4 | ||
|
95496ebd38 | ||
|
574de287e7 | ||
|
e79afc6293 | ||
|
8e5be03fe9 | ||
|
b6f4f30015 | ||
|
222c7cd74b | ||
|
2d0e727f33 | ||
|
4ce8224c2c | ||
|
9d2fae3285 | ||
|
47f7a81b41 | ||
|
e49a6e06a8 | ||
|
4d5db19feb | ||
|
e8afa29013 | ||
|
1e6ed3f0f5 | ||
|
c99bfe116f | ||
|
03824189e4 | ||
|
645e662b11 | ||
|
1d22f001e6 | ||
|
718d2dc77e | ||
|
92425fcb46 | ||
|
7d48254cc9 | ||
|
c4efe5d0fa | ||
|
50a917ab4c | ||
|
736b619294 | ||
|
a8ffd339fe | ||
|
0897d3e381 | ||
|
5b84c51d81 | ||
|
e0b4f3ff37 | ||
|
4721007c02 | ||
|
f6b4031a96 | ||
|
39d89c8dbc | ||
|
8f2d84f4dc | ||
|
fe49e110bd | ||
|
6d46c08191 | ||
|
95bbebeb22 | ||
|
e3752b70e2 | ||
|
b45bd3ace7 | ||
|
8d5a624c8d | ||
|
29a3b6c792 | ||
|
78679ed001 | ||
|
2919b147d8 | ||
|
f514c5eafb | ||
|
2d1ce7dc24 | ||
|
026a143e42 | ||
|
9417c1803e | ||
|
6ebd64521b | ||
|
b3edc0884f | ||
|
48ce6a9a68 | ||
|
bf5f0bb8f7 | ||
|
b978fd9dc6 | ||
|
ae7f38331d | ||
|
3a21109f89 | ||
|
5d18ad678b | ||
|
2ea22ee387 | ||
|
37c7e0a6d0 | ||
|
22f7f491c5 | ||
|
60d6727974 | ||
|
86bbd05608 | ||
|
516d0f5b27 | ||
|
40d825d1c6 | ||
|
9ff92f2c36 | ||
|
740b2ffbf2 | ||
|
6728497434 | ||
|
9d2ab88c69 | ||
|
7a310cc7d9 | ||
|
20d4a86016 | ||
|
f3d3b493f7 | ||
|
448b6a7d49 | ||
|
8c9d26db1f | ||
|
e4fc9bb0b1 | ||
|
66cbf2607b | ||
|
2a90ce1935 | ||
|
b06746460e | ||
|
374a3a2005 | ||
|
84453ed957 | ||
|
8f21a055ad | ||
|
ed2f948bf5 | ||
|
5424cbd7f9 | ||
|
4ce2643bdb | ||
|
b5d1573acd | ||
|
784f0d5f3b | ||
|
c492b51b54 | ||
|
bd1c3c87b7 | ||
|
71e8f68102 | ||
|
76e1a46512 | ||
|
8467a95127 | ||
|
ae8aee0e60 | ||
|
b25fbc73d9 | ||
|
c499025623 | ||
|
91a5a73dca | ||
|
9f316bd255 | ||
|
0daf4b6b1c | ||
|
3ab6059b56 | ||
|
8e599e23a0 | ||
|
ecf6acd730 | ||
|
bb8768b604 | ||
|
1ee1dbb629 | ||
|
7d37b650a4 | ||
|
6c15f72371 | ||
|
552587dbb2 | ||
|
0602fa2316 | ||
|
9cc910cb34 | ||
|
61fa45e5de | ||
|
9cf8bd25cb | ||
|
fc89dfff9e | ||
|
84c43093b1 | ||
|
c2b0533fb8 | ||
|
513e62f61d | ||
|
2fd4dbb685 | ||
|
6f183a831c | ||
|
c543400955 | ||
|
2c4b862648 | ||
|
ddf5de8349 | ||
|
5b0d5d6b6e | ||
|
8ceff6d039 | ||
|
fb8ebe54f7 | ||
|
859ce03462 | ||
|
009efef3c9 | ||
|
ffbd1abd87 | ||
|
6e5cb747b0 | ||
|
b48d3328fe | ||
|
9da049748a | ||
|
63b7da3b60 | ||
|
72557dee52 | ||
|
2f2782ed1e | ||
|
7bc06c54c4 | ||
|
57e2a32d4c | ||
|
fa0c4ebab9 | ||
|
524156de78 | ||
|
3865bf48ff | ||
|
89b215f681 | ||
|
f315d887bb | ||
|
3d162e88c3 | ||
|
7d3ff8c7f2 | ||
|
e75a19c099 | ||
|
7925512bda | ||
|
b83538e4c5 | ||
|
d9dd8cfecf | ||
|
0d45825016 | ||
|
f6c6b13fcb | ||
|
0171263d8e | ||
|
c76fef342d | ||
|
2f245faee4 | ||
|
9c39ad3ff4 | ||
|
53d966cd64 | ||
|
bec46db5b9 | ||
|
3cddd9b58e | ||
|
a757904e8f | ||
|
937305bc41 | ||
|
7e1529c7df | ||
|
82da2e133b | ||
|
e7160c92f0 | ||
|
cbc51bc8e8 | ||
|
6738076f72 | ||
|
8afcaaddab | ||
|
a298411fa1 | ||
|
e0967e89a7 | ||
|
a0feca9711 | ||
|
c9a4f2a01a | ||
|
144dc69370 | ||
|
5e52ada169 | ||
|
2108029812 | ||
|
bcea90c896 | ||
|
6e56b79e8a | ||
|
be4afc49ff | ||
|
dba60740f6 | ||
|
0208dbf985 | ||
|
2d548a026f | ||
|
0bfb746991 | ||
|
fd8cb2a0e8 | ||
|
b3e7c01ab6 | ||
|
3d8f7ee33b | ||
|
8830354555 | ||
|
cb894cee42 | ||
|
8382b36823 | ||
|
91e0e84387 | ||
|
7ceb436021 | ||
|
2c2ee90d58 | ||
|
f95802c211 | ||
|
e9851c14f8 | ||
|
94f9a5342a | ||
|
63a0a6516c | ||
|
9db70086dd | ||
|
c37e8ae8b9 | ||
|
d6427e777c | ||
|
3f97a557a6 | ||
|
dfbde48dcf | ||
|
e769ac7941 | ||
|
8992277ce8 | ||
|
1b2819065a | ||
|
97ddf7e008 | ||
|
f67e2b9fe0 | ||
|
23caeec1cf | ||
|
202a453282 | ||
|
8013bb369a | ||
|
8536c437c4 | ||
|
9762cbf94f | ||
|
a1b994a8cd | ||
|
ef22a029b2 | ||
|
b3e3d9642e | ||
|
452f2cd086 | ||
|
e0c5c0047d | ||
|
2a1a22dffe | ||
|
67da9e0e85 | ||
|
c2c2c3f62b | ||
|
bff3c7c7af | ||
|
e2f21b3dd3 | ||
|
6c9ecf1cc8 | ||
|
4f282db6e2 | ||
|
d6e1989e1f | ||
|
4729be9e96 | ||
|
bb020c3e6b | ||
|
c22cacf9bd | ||
|
0907087ee3 | ||
|
1e985dc4f0 | ||
|
5b82ca23d3 | ||
|
2cdebe57af | ||
|
5cbe25d415 | ||
|
d764888393 | ||
|
1710a38ced | ||
|
ba75aa9d0c | ||
|
cbf98a2d7d | ||
|
7210cb8e99 | ||
|
ee3a3ef5fa | ||
|
888bc86608 | ||
|
b9b50a108b | ||
|
022b58f986 | ||
|
557160f158 | ||
|
ea5028cf2a | ||
|
4e8b104543 | ||
|
146d72468f | ||
|
f711133580 | ||
|
cd42c0e306 | ||
|
c0511d54fd | ||
|
ec3a2fa063 | ||
|
5a55891d06 | ||
|
f602f99b1a | ||
|
80708022e6 | ||
|
01cb8b3a9b | ||
|
c6fe6d49bc | ||
|
1d398ee2c3 | ||
|
812ba990ac | ||
|
5d270319e5 | ||
|
5d66d4c91f | ||
|
eefd3c0197 | ||
|
cdd9600c60 | ||
|
9ff962e86d | ||
|
5a5236760e | ||
|
62115f378a | ||
|
d88dff51fb | ||
|
3d1874adcc | ||
|
5197883379 | ||
|
cd235dfd42 | ||
|
67f1c63926 | ||
|
fb525f7cdc | ||
|
f1c178b544 | ||
|
eb754e3a84 | ||
|
0fe7972d0d | ||
|
6d55fec093 | ||
|
5a66012c6c | ||
|
3521d2e9fa | ||
|
597f001e42 | ||
|
8a8893fbd3 | ||
|
39c3a6c3e5 | ||
|
4b2c253427 | ||
|
f98653d2c9 | ||
|
c521f1d6a7 | ||
|
17104fde04 | ||
|
2f14cc832c | ||
|
585728bc23 | ||
|
22c3b7edd6 | ||
|
fa73b0b250 | ||
|
d82715372b | ||
|
084675c4f3 | ||
|
0a6421939b | ||
|
d5ca3dc132 | ||
|
adcbe0a2b1 | ||
|
556f7adab1 | ||
|
d3afd6ec68 | ||
|
fe9f5e3386 | ||
|
743d83ef71 | ||
|
76c18255b6 | ||
|
a6b1c27a5d | ||
|
783cea8d52 | ||
|
a7810bc279 | ||
|
dd7a184926 | ||
|
7cbcf4351b | ||
|
3957161124 | ||
|
840173a21e | ||
|
66e9832f5e | ||
|
67ad602041 | ||
|
7716961f07 | ||
|
6876559ceb | ||
|
fe38280a1a | ||
|
fff200b1d8 | ||
|
cc753db132 | ||
|
ec565de6cb | ||
|
fc631040fd | ||
|
615d5eaa77 | ||
|
72c4c18364 | ||
|
4c4debf004 | ||
|
7323e4467b | ||
|
c954249dfa | ||
|
f6a7fe168a | ||
|
659e1e4a26 | ||
|
632bcdd2da | ||
|
fb62d22013 | ||
|
58ea656fd8 | ||
|
16d8698e1b | ||
|
d8ae6cea75 | ||
|
dc40572312 | ||
|
3c014ccb2b | ||
|
bd22a92d68 | ||
|
40c2fa7e5e | ||
|
604b3f49b7 | ||
|
f6cbc7e80b | ||
|
0417599344 | ||
|
c694e86422 | ||
|
a951ca4489 | ||
|
794ad66896 | ||
|
857cec0509 | ||
|
d3472cd4a1 | ||
|
d6078821c5 | ||
|
21019fac66 | ||
|
03c6ed32fb | ||
|
1f98477c22 | ||
|
c8351d6d20 | ||
|
54eef1153f | ||
|
88d257f04b | ||
|
a55b96c9f6 | ||
|
14d96d0086 | ||
|
8ad14af39c | ||
|
52217bd4e4 | ||
|
dfdb92d3ab | ||
|
358a5d8b46 | ||
|
dcfddb8445 | ||
|
fa14375a65 | ||
|
b494e6b043 | ||
|
46d0cf7bb4 | ||
|
00849941c3 | ||
|
36554f3ce8 | ||
|
2cb7e510dc | ||
|
d80367c5fc | ||
|
6b92f23c81 | ||
|
4698d20fb4 | ||
|
f4287e1f56 | ||
|
0d68cebea8 | ||
|
5e351dad53 | ||
|
2db4dc8c96 | ||
|
856fcf7554 | ||
|
242476c290 | ||
|
3caa31bf58 | ||
|
9c5f338d3c | ||
|
43eeb008fa | ||
|
0be63a81c7 | ||
|
5b0406cfdc | ||
|
ca62538ce3 | ||
|
fb3f811cf3 | ||
|
192c1d81b8 | ||
|
d451f4180e | ||
|
5df37895d8 | ||
|
d83eefaf14 | ||
|
0d2e9455aa | ||
|
8bd35d47ad | ||
|
c728889e0e | ||
|
4de62a3712 | ||
|
c141962dc8 | ||
|
93796bb474 | ||
|
619820a059 | ||
|
3be5ab3a5c | ||
|
7f29daf0d4 | ||
|
9a23f187ce | ||
|
8b21096919 | ||
|
4dada87d32 | ||
|
322f8eabd6 | ||
|
2b17ecf196 | ||
|
1484f8ce91 | ||
|
52cb565eef | ||
|
a755103350 | ||
|
414e17a089 | ||
|
fedfc330ef | ||
|
8a8a05e31c | ||
|
8e2dd65c6e | ||
|
02f54ef219 | ||
|
aa76f6b9f2 | ||
|
eff277a872 | ||
|
e56088f921 | ||
|
269f9251a2 | ||
|
ca2a380d03 | ||
|
a2ab14d9d5 | ||
|
0d3dd61ad4 | ||
|
13aa1ff760 | ||
|
7870c48ced | ||
|
5d0f7229e3 | ||
|
bd407fd866 | ||
|
98515e7c7d | ||
|
34d415a6b3 | ||
|
c1ce0153ea | ||
|
9de41ce44c | ||
|
9efa7c1a8c | ||
|
762d9fcf7b | ||
|
62333f0ca2 | ||
|
1ac142347e | ||
|
1d54d60f04 | ||
|
fef1996b3d | ||
|
0bc9d87891 | ||
|
3bbe0f1d4e | ||
|
55d9154b01 | ||
|
6cd54639b5 | ||
|
7ef87e3fbd | ||
|
68122fca27 | ||
|
f340e8ca04 | ||
|
da4b446ac6 | ||
|
7d18ecd1bf | ||
|
b3199265a2 | ||
|
05a58e8942 | ||
|
1c724d0860 | ||
|
76f2305b84 | ||
|
0daf6ccbcb | ||
|
c903381154 | ||
|
0ae8710132 | ||
|
ebc4912ada | ||
|
663e611fae | ||
|
f4a1d4ef02 | ||
|
fe97d19c66 | ||
|
d7ccd22383 | ||
|
bda6b55047 | ||
|
15e1d87527 | ||
|
922f75b004 | ||
|
f729887320 | ||
|
fc75ca40c3 | ||
|
3e97ed915a | ||
|
ecfd198c3f | ||
|
7a1231a32f | ||
|
e10ea1fcf3 | ||
|
2a8239075e | ||
|
f28b1fd178 | ||
|
800bd98ae6 | ||
|
c45df4e820 | ||
|
fa636e35e0 | ||
|
02e6e6cf48 | ||
|
bcbe6339ec | ||
|
eb4186add4 | ||
|
fdc827e066 | ||
|
58ef28e914 | ||
|
40027e054c | ||
|
1a029a71e5 | ||
|
0766a10ad3 | ||
|
ad43169065 | ||
|
3be435561a | ||
|
93f3323074 | ||
|
a378e0eb0c | ||
|
8e5a635bfb | ||
|
50177914a8 | ||
|
f3093a3740 | ||
|
9a753a269f | ||
|
69bf5a8403 | ||
|
1dd6d583d0 | ||
|
2c04ce7a61 | ||
|
df49e0e993 | ||
|
f269ddacce | ||
|
4d9118447b | ||
|
114ed8bec1 | ||
|
96bc21aa6b | ||
|
034feb87cd | ||
|
193d54c4eb | ||
|
4aa3a80558 | ||
|
2060f00f95 | ||
|
05cf78b589 | ||
|
361e97d097 | ||
|
9da3adeda9 | ||
|
bd4887f660 | ||
|
befab4f3c1 | ||
|
b1c6b3bc94 | ||
|
0ba0a9cbd3 | ||
|
ab3d8ade72 | ||
|
acd824d432 | ||
|
d0197a94fb | ||
|
f59246ea25 | ||
|
55c4fd644c | ||
|
ecbb37e0ba | ||
|
70c289fef0 | ||
|
80a6a58a84 | ||
|
87dfa9a061 | ||
|
39d700b87a | ||
|
b2affdff5b | ||
|
3ce8510f88 | ||
|
bc869f8ec3 | ||
|
39b3db9e27 | ||
|
fabb5bc7e6 | ||
|
b0b78ee144 | ||
|
d0e2023a63 | ||
|
65065bf315 | ||
|
868c5bd114 | ||
|
3905227758 | ||
|
cfea05c2b4 | ||
|
0951e204c9 | ||
|
a91b1d2f26 | ||
|
e8f5e62c44 | ||
|
fb94245943 | ||
|
d3224c420a | ||
|
2afa989500 | ||
|
946da08304 | ||
|
33306a0699 | ||
|
5a33a141af | ||
|
e7186f41ed | ||
|
79b09577eb | ||
|
ce28527cde | ||
|
8a54793ede | ||
|
b69507be8a | ||
|
a7bfe9afed | ||
|
59900357a7 | ||
|
8c79e9a61e | ||
|
bb20f3966f | ||
|
201a5b6e06 | ||
|
8bb9a9803b | ||
|
b7b3282649 | ||
|
6e05cb38f6 | ||
|
a4c69a8f43 | ||
|
47fcf3403f | ||
|
6f96f8b01e | ||
|
6ab2821c34 | ||
|
29b775f22c | ||
|
78c3b8bb86 | ||
|
d1dfbe8ce5 | ||
|
8ab866e7f4 | ||
|
de834b65e8 | ||
|
2d1e8dc8a0 | ||
|
b5a1c54ab2 | ||
|
5e23959e12 | ||
|
5ae963cb34 | ||
|
b33e95f1e7 | ||
|
9ba0560696 | ||
|
e05876a5f6 | ||
|
afae9421f6 | ||
|
f72e847c17 | ||
|
cf40048f67 | ||
|
0df96f101b | ||
|
8591108451 | ||
|
cc67e8b26f | ||
|
97a4114265 | ||
|
e19dac0658 | ||
|
481ca6190e | ||
|
642b774530 | ||
|
4d5e8df8e6 | ||
|
568a74e22c | ||
|
7b062b76c7 | ||
|
3392f3aa09 | ||
|
af6eebaa1a | ||
|
f8acf53f72 | ||
|
73c133c91d | ||
|
0ac066aac7 | ||
|
65d825b62c | ||
|
e9bea9dec0 | ||
|
6cab65efb0 | ||
|
8ef8df4b18 | ||
|
6a24d72183 | ||
|
e65c0171e4 | ||
|
0ce55e897d | ||
|
fe7c833c8b | ||
|
1aca32454f | ||
|
86fcde5d07 | ||
|
8195035363 | ||
|
eb7019d54a | ||
|
ab5ab01496 | ||
|
9d2c1f7602 | ||
|
195f6460e0 | ||
|
e9a6f46bef | ||
|
5331a555f6 | ||
|
3bd612ad81 | ||
|
dcae4f330e | ||
|
642f990fbc | ||
|
7268c5ebfb | ||
|
68e6e8ca90 | ||
|
fa13f06e64 | ||
|
e2ced58517 | ||
|
838e488134 | ||
|
555624decf | ||
|
528b1b10b7 | ||
|
e9e9ab8919 | ||
|
f4f749f130 | ||
|
c66dd87f68 | ||
|
3b3dfebd82 | ||
|
5afda415d1 | ||
|
7481cf9ffe | ||
|
bb6d4d67d5 | ||
|
22331c8951 | ||
|
6db29a7ae1 | ||
|
c27b049ca0 | ||
|
bb32ec38da | ||
|
d40cb5f618 | ||
|
599adb3003 | ||
|
13914b91df | ||
|
01284ef6a0 | ||
|
7f9792b571 | ||
|
5882a9a3a2 | ||
|
a673858e13 | ||
|
c27a6472af | ||
|
4a4f62f29e | ||
|
aae5852ad3 | ||
|
e01c998758 | ||
|
2df69fc3ed | ||
|
3757caf449 | ||
|
ce97122c6d | ||
|
4eda5218d5 | ||
|
a37f82bb9d | ||
|
d0ca73caf8 | ||
|
ec66a42664 | ||
|
3bfeacaa88 | ||
|
ec49bd2d69 | ||
|
d69049d6be | ||
|
2dd571bc5d | ||
|
73741e547b | ||
|
362541c2b1 | ||
|
bd29de880d | ||
|
466abd7a3d | ||
|
7df35e8131 | ||
|
02253134c9 | ||
|
e420c9c895 | ||
|
697e4963db | ||
|
c5d83ef715 | ||
|
1c3585f575 | ||
|
09e308a06d | ||
|
fabe9ce56b | ||
|
1f8149706c | ||
|
7dd0c7296f | ||
|
868bc3a069 | ||
|
bb43e732c8 | ||
|
79ea63f164 | ||
|
1169e1915d | ||
|
1b439cb6a0 | ||
|
61e263ba8d | ||
|
f958ea921c | ||
|
38c26c8c44 | ||
|
6c0e17480c | ||
|
919597bfcf | ||
|
8a8403ff8a | ||
|
7330cdee2c | ||
|
b8b6625872 | ||
|
1b50650267 | ||
|
6be65cb512 | ||
|
7e60a3c075 | ||
|
cb0583df1d | ||
|
56ddf5827f | ||
|
9433ff449a | ||
|
c44b366350 | ||
|
0857237fbb | ||
|
27a95675d0 | ||
|
f74a4e6e9b | ||
|
504901ccb6 | ||
|
281330b1d0 | ||
|
48db45f85b | ||
|
a414584f4b | ||
|
c8e92608fd | ||
|
47b1973cb6 | ||
|
b8bab30684 | ||
|
d9e07b3b29 | ||
|
9a72f39ff3 | ||
|
d1aefbea62 | ||
|
87d0888fee | ||
|
af97a8312c | ||
|
a8d2b819c4 | ||
|
ed974c2c84 | ||
|
1a9c7fe9ca | ||
|
38c3552908 | ||
|
0bfe270078 | ||
|
8a4d7685f7 | ||
|
a88a68f8a6 | ||
|
9c590dae7b | ||
|
6fc6e7ced2 | ||
|
277f7d906d | ||
|
cdcb787991 | ||
|
ae4575369c | ||
|
8ae115f9bd | ||
|
d591b4d2da | ||
|
be74893e02 | ||
|
45a00f1a93 | ||
|
a2a199b48e | ||
|
6326b6b631 | ||
|
dbdbf23bea | ||
|
00f5732a0d | ||
|
3ecd2f150d | ||
|
b29a011186 | ||
|
20d64270a4 | ||
|
15c1975f6e | ||
|
008e313652 | ||
|
a65877cd7e | ||
|
e30d10288d | ||
|
a0c8df6679 | ||
|
a43cdbac54 | ||
|
0cf4212835 | ||
|
c11cb57c66 | ||
|
2fd174d7cf | ||
|
c55d59e70a | ||
|
009bc4a1a3 | ||
|
a12b70468f | ||
|
8c8655863e | ||
|
e174f1475f | ||
|
cdd3441ead | ||
|
20f68ef013 | ||
|
976516a559 | ||
|
39b0ac4fda | ||
|
7d1aa37f50 | ||
|
8ab730f47d | ||
|
6b5b413025 | ||
|
6f99cf0fd5 | ||
|
77745e466d | ||
|
f671d7559a | ||
|
eb141e88fb | ||
|
f3598d2f4d | ||
|
691496af3c | ||
|
3de74e58b7 | ||
|
628d39931f | ||
|
a5314f57af | ||
|
6f4d1cda13 | ||
|
0e69bcc282 | ||
|
bd23583431 | ||
|
e0a7676c3f | ||
|
09ce2ab70e | ||
|
52f50287e9 | ||
|
0f51a85d8f | ||
|
0ecc72e945 | ||
|
66990474b9 | ||
|
da77c9e744 | ||
|
c251ab51c0 | ||
|
502982154d | ||
|
bf36dd2036 | ||
|
ebc889baea | ||
|
14cd51056b | ||
|
1dc5c4f98f | ||
|
95080106e0 | ||
|
7e8ef278fe | ||
|
6bdebe22ed | ||
|
29450d8893 | ||
|
e979194a0e | ||
|
e10331f988 | ||
|
573a1b7d35 | ||
|
335535e73b | ||
|
0e4ce1f978 | ||
|
565a287d20 | ||
|
f4b9a7143c | ||
|
66436bd9f7 | ||
|
724b3682d1 | ||
|
7767648520 | ||
|
64ce9d2218 | ||
|
cd85541e19 | ||
|
c1583fa001 | ||
|
5842b8416e | ||
|
3e296a4a90 | ||
|
8a03e0d670 | ||
|
46cee69804 | ||
|
ec6335bdfd | ||
|
28c24c8c45 | ||
|
b90e2c6300 | ||
|
6b47cbb4c5 | ||
|
43ce44cb3b | ||
|
f9d4e11a27 | ||
|
8956654288 | ||
|
5bc0e89871 | ||
|
d16b240749 | ||
|
73c355b92a | ||
|
34629afda0 | ||
|
d2fb48ce49 | ||
|
b5943a430f | ||
|
43d75d712f | ||
|
51be1ad2c1 | ||
|
15a7a77bb6 | ||
|
f68bdb9e08 | ||
|
b4a900c993 | ||
|
dfc43e819e | ||
|
07bf18168f | ||
|
5ca9674ced | ||
|
154ebc24c2 | ||
|
3e128d06f4 | ||
|
453adbcd5c | ||
|
04e15e6555 | ||
|
db119a60e6 | ||
|
d927154217 | ||
|
275ef147f6 | ||
|
8566f81d4f | ||
|
74eefdb4f1 | ||
|
c90e562367 | ||
|
f4c45f3f21 | ||
|
99dbea1469 | ||
|
33666c7817 | ||
|
c7be5d25d0 | ||
|
c990818200 | ||
|
6cab639d8e | ||
|
21dbabe6f2 | ||
|
fe9254790c | ||
|
cbe63da1f7 | ||
|
c190451098 | ||
|
551a018613 | ||
|
45f0c77761 | ||
|
6e89799b05 | ||
|
8877688ee4 | ||
|
669c45125c | ||
|
876dc581a8 | ||
|
a267db851a | ||
|
26c150090a | ||
|
4926ff0992 | ||
|
39c6d11ed6 | ||
|
5b5a29849e | ||
|
b9123cad7c | ||
|
43e3b3e328 | ||
|
7149349e25 | ||
|
9080a0e778 | ||
|
d26e0423f7 | ||
|
b602e0c014 | ||
|
29d44973a7 | ||
|
903185a69c | ||
|
84cd7e496b | ||
|
b3f3886cd9 | ||
|
b1e1ee7d55 | ||
|
b60322f729 | ||
|
b89539a70e | ||
|
78ea308608 | ||
|
d7435d02d3 | ||
|
3539f9372d | ||
|
0e15eb4f00 | ||
|
119261dc5d | ||
|
2c0509a5c7 | ||
|
443b931b36 | ||
|
8c6ef3f0fd | ||
|
0fa0013a69 | ||
|
8f4c87ad49 | ||
|
5842c912a9 | ||
|
c6412a186c | ||
|
e72e6679a3 | ||
|
0788754a5f | ||
|
f5e7233162 | ||
|
a37f95e7db | ||
|
20490b0618 | ||
|
8b1f69c1a3 | ||
|
f830f0f6df | ||
|
4721a4ae19 | ||
|
c4a5099e56 | ||
|
be343298e8 | ||
|
54017bcf63 | ||
|
90a4ea4f9b | ||
|
6b5cbe3768 | ||
|
46b4a74549 | ||
|
feb94b446a | ||
|
879362c5b5 | ||
|
1e7fc0f7df | ||
|
8df557f621 | ||
|
8b8606349e | ||
|
2b8b04dd55 | ||
|
b23c4dacb9 | ||
|
f703f3f20e | ||
|
2d39d34ab5 | ||
|
671efc0726 | ||
|
d17b554666 | ||
|
7557af0594 | ||
|
9f4a240f91 | ||
|
07576eb338 | ||
|
c61946329c | ||
|
cc3afd87aa | ||
|
858d9271e3 | ||
|
5aa4aae0f5 | ||
|
82240cb661 | ||
|
f3664b07d2 | ||
|
a3e0117ff0 | ||
|
e5f88a1462 | ||
|
95d873574c | ||
|
d35b3b4792 | ||
|
c8e5c36c1d | ||
|
01b966c664 | ||
|
0c63f03db4 | ||
|
962d3f1df0 | ||
|
0198029ea6 | ||
|
b0e7221b3a | ||
|
f6b121758b | ||
|
4c0a1ec0a0 | ||
|
8dd76e6e2f | ||
|
edf27fdac5 | ||
|
1c2f65f268 | ||
|
b732b4d8c8 | ||
|
291b865f17 | ||
|
f57a7826a8 | ||
|
e5c80e46b0 | ||
|
a66e640499 | ||
|
24fab91694 | ||
|
5881a24faa | ||
|
3b82c8cb10 | ||
|
b9919f7c88 | ||
|
2e9b3fc31e | ||
|
0a089c8656 | ||
|
a82afd6ccf | ||
|
4fc58068c9 | ||
|
fccae1009b | ||
|
5dac5fdb3b | ||
|
ddc8e5c712 | ||
|
3c07c8c2a0 | ||
|
c97a9b0b19 | ||
|
57326be5bf | ||
|
7e589a529d | ||
|
6afa29eb5c | ||
|
d7c3d59799 | ||
|
1c8e7a3483 | ||
|
a88e640924 | ||
|
3c27aa2f2e | ||
|
0614a1a57f | ||
|
447a5391ed | ||
|
7345f1ce2e | ||
|
75abae80fd | ||
|
70513f8da4 | ||
|
d5acfc5c2f | ||
|
83c886781d | ||
|
1215c3ddbf | ||
|
ea1a4ffbb8 | ||
|
cada6f294d | ||
|
4ade2789f6 | ||
|
c06f224ace | ||
|
bb21336191 | ||
|
d32030a374 | ||
|
adf10ef492 | ||
|
6788d82316 | ||
|
a470f0a6db | ||
|
3feafaade6 | ||
|
8ed41ea525 | ||
|
558f672634 | ||
|
ca4ce6b2f5 | ||
|
9a8d8f5b0c | ||
|
6f61d70b72 | ||
|
ffe201be36 | ||
|
8943c34572 | ||
|
dc5add2b8d | ||
|
10a4d74190 | ||
|
94419d4573 | ||
|
f59419ed7e | ||
|
457f13ad0b | ||
|
aea5c3545c | ||
|
d1d7ed1381 | ||
|
44caadc723 | ||
|
7c21eb84ea | ||
|
07cbc847f0 | ||
|
f6fae7b536 | ||
|
ba04bc9d22 | ||
|
1946d81ab3 | ||
|
e263405a81 | ||
|
300f887c02 | ||
|
2ee9d4f101 | ||
|
255c79a8f7 | ||
|
6f0f366780 | ||
|
1e607a8041 | ||
|
49845c1155 | ||
|
f6e9e043d8 | ||
|
75c25556aa | ||
|
8a040f3fbc | ||
|
07b2046685 | ||
|
90c15aeebc | ||
|
884f48faf6 | ||
|
081d16d907 | ||
|
b795b8a040 | ||
|
dbb9cbe280 | ||
|
3b1f936dcf | ||
|
d334072722 | ||
|
62a390582c | ||
|
a4b104c1da | ||
|
b823a94124 | ||
|
2451c0a815 | ||
|
725e82f6df | ||
|
4334b446b5 | ||
|
34595c02ba | ||
|
1d49ddd86f | ||
|
cdb252faaa | ||
|
5f4522e55b | ||
|
b1f0276307 | ||
|
5ce1e1e7df | ||
|
2ed21c98d5 | ||
|
f3815b7bc8 | ||
|
49b4156cfd | ||
|
486413731a | ||
|
9715054102 | ||
|
7735f22562 | ||
|
d8e441b079 | ||
|
d75952394f | ||
|
af012e8b5a | ||
|
b6a320503e | ||
|
9a919d8fa3 | ||
|
b4ecdae8e4 | ||
|
0ca20b14f5 | ||
|
e1ee0dfec1 | ||
|
685c41689e | ||
|
8fcb5dcc4d | ||
|
c606055df2 | ||
|
a4855decb8 | ||
|
86cf600d9e | ||
|
852959cf2b | ||
|
a5f1ff43b5 | ||
|
d836677342 | ||
|
b1eaaea89a | ||
|
11f2c076f6 | ||
|
10c038d8f3 | ||
|
3d4af04927 | ||
|
1af967b00e | ||
|
b5993fc2a3 | ||
|
a29d2e1149 | ||
|
9cd1277d70 | ||
|
ee2a59ad59 | ||
|
e05efe8280 | ||
|
ee33976d1d | ||
|
d0d1fd189b | ||
|
76cca33525 | ||
|
8bdc3940b1 | ||
|
31cbb60a38 | ||
|
582919804a | ||
|
eaa597a430 | ||
|
a6c5def4f4 | ||
|
13f5997554 | ||
|
846df59882 | ||
|
2d2c0ab6cd | ||
|
5625078cfe | ||
|
9e7dc9433a | ||
|
87fe2847f0 | ||
|
5c1782a605 | ||
|
115d0e794e | ||
|
ee4620ef9e | ||
|
5fb5228591 | ||
|
54ab1f1e80 | ||
|
b07fb709ba | ||
|
96a7e04ea5 | ||
|
2fea7969d3 | ||
|
d668f3a3c3 | ||
|
9749aa936c | ||
|
e2cc1aec26 | ||
|
e6624c1fd5 | ||
|
3bb2edd53d | ||
|
7de24bad2e | ||
|
297ac8ef4c | ||
|
cd995ff45f | ||
|
e61761e9af | ||
|
c927c31391 | ||
|
2dbcad7840 | ||
|
d2a344af5d | ||
|
9d5f9606a4 | ||
|
4094d62613 | ||
|
ceaf6fcffe | ||
|
e72ae0a4b2 | ||
|
28620b7d93 | ||
|
65cfd74b98 | ||
|
11e2cd925b | ||
|
f7797b89ed | ||
|
7d80314235 | ||
|
3d9845ebed | ||
|
b3d07e26fc | ||
|
9b12a923f5 | ||
|
eff3b08d49 | ||
|
1f22248965 | ||
|
68677b8525 | ||
|
8e538eebc5 | ||
|
5bc7723feb | ||
|
18e75202d7 | ||
|
11cf09b41a | ||
|
908d04d0e8 | ||
|
e7c028eed6 | ||
|
8bdad7d73e | ||
|
12a624330f | ||
|
d7be6e037b | ||
|
1d90ddc0a9 | ||
|
830d16943b | ||
|
0b03fa963a | ||
|
a1617548cf | ||
|
2bfea20007 | ||
|
843e3ae849 | ||
|
6f36a478a5 | ||
|
880deabac1 | ||
|
eba65f57ab | ||
|
7f4badc947 | ||
|
ebd9d0fe25 | ||
|
bb5cf54e61 | ||
|
ff5fe30407 | ||
|
50ca72e53c | ||
|
21f0a2b1b8 | ||
|
d25b55b93a | ||
|
e599bb2a7b | ||
|
f26e20e1e9 | ||
|
5d5f34518d | ||
|
a2fa918da2 | ||
|
531f5dd9da | ||
|
1b7c42bf53 | ||
|
eecd0b91c5 | ||
|
9854db9120 | ||
|
aeac3df4a1 | ||
|
75c03dd81e | ||
|
f69d9e9559 | ||
|
11d7b71959 | ||
|
126b17898d | ||
|
8d00784dfe | ||
|
17d4dcc30b | ||
|
16dbbdb34c | ||
|
433a23feb4 | ||
|
c747d1d225 | ||
|
d4293866b3 | ||
|
9fa058a8bd | ||
|
4591cf9afa | ||
|
ed34079452 | ||
|
f6b47e2ee3 | ||
|
e900104e10 | ||
|
944a748cb6 | ||
|
eb8ace14c8 | ||
|
1b8193ab8b | ||
|
ed9cbc89c1 | ||
|
2fdd46b364 | ||
|
4f39da4343 | ||
|
a2a0038368 | ||
|
22417e3d9c | ||
|
4fb9c1cd98 | ||
|
cb833db5fb | ||
|
4f007321e1 | ||
|
3aa4b67173 | ||
|
25c80df156 | ||
|
e7a6ed20e8 | ||
|
502407a1dd | ||
|
03757a0663 | ||
|
f0f1cd37dd | ||
|
83ccccb565 | ||
|
b83de54bb4 | ||
|
261bf416ee | ||
|
a0ffbfce31 | ||
|
82abd358a5 | ||
|
d50d1101fb | ||
|
f0ebd6da0f | ||
|
9f033cbf6d | ||
|
b3f80239c1 | ||
|
0f3dbe1a30 | ||
|
4ed854c818 | ||
|
b0586b4f4d | ||
|
f866a8fd1b | ||
|
dce0441ecf | ||
|
29c9621137 | ||
|
46b70ded94 | ||
|
20fb9385f5 | ||
|
fcca5c5b58 | ||
|
36c370947c | ||
|
fa099867a8 | ||
|
88277e2d21 | ||
|
48eb74cfcd | ||
|
db5121511d | ||
|
c7dd7d42c6 | ||
|
0806d34eee | ||
|
b9193f35c1 | ||
|
43e5337a0a | ||
|
1ae812d172 | ||
|
dd93bb1aad | ||
|
bf58fafd76 | ||
|
693d008851 | ||
|
737155a43a | ||
|
53b3b1bb40 | ||
|
97e9357153 | ||
|
706a10d4cf | ||
|
ec694bf8bd | ||
|
372a3bfcde | ||
|
cfdc1ef62a | ||
|
7ae7502146 | ||
|
7a294b5fcd | ||
|
79287abd7b | ||
|
cf450bd01f | ||
|
7e5d0b9ec8 | ||
|
314dfb294a | ||
|
6705adf47b | ||
|
d8dac3f80e | ||
|
16dad60eef | ||
|
7ef52f723c | ||
|
374dc92e8f | ||
|
3c91126806 | ||
|
803ed6050f | ||
|
7336678454 | ||
|
6ee537b3f2 | ||
|
f3a9301483 | ||
|
5aba63d5aa | ||
|
a3276c3ffe | ||
|
4956dc3197 | ||
|
b1c5ad6a61 | ||
|
364461b58f | ||
|
74a747d455 | ||
|
036871cd95 | ||
|
580126cff3 | ||
|
71a1c9fee7 | ||
|
80de9f6a68 | ||
|
c71d4c364a | ||
|
dcab076221 | ||
|
94808e2cbc | ||
|
82e61f501a | ||
|
37fddf8eef | ||
|
3669849368 | ||
|
ebf7e9f45f | ||
|
d000717d34 | ||
|
d191eed760 | ||
|
a750372a03 | ||
|
5dfba1b064 | ||
|
72747ed686 | ||
|
c7898ac3e4 | ||
|
c70d024f5f | ||
|
7cf148ea13 | ||
|
41f287fbea | ||
|
3ae799f4de | ||
|
3e5090e792 | ||
|
48d038ead4 | ||
|
8bcff3ac74 | ||
|
202478d108 | ||
|
6320da67e4 | ||
|
c44c398626 | ||
|
186a3d40c6 | ||
|
230472de45 | ||
|
790e77de01 | ||
|
7286532656 | ||
|
b85c7be5ac | ||
|
5eae76b209 | ||
|
7d90f84306 | ||
|
3e4f18bed2 | ||
|
e31da34324 | ||
|
6c85564cc1 | ||
|
8cfe6a900c | ||
|
2ebbcbe233 | ||
|
4e2e36df60 | ||
|
4bee15d0fa | ||
|
b1596ffecb | ||
|
b9fccc9fce | ||
|
9345bc1610 | ||
|
78ae67ae28 | ||
|
e880d2c12a | ||
|
044d327818 | ||
|
cc9b29488f | ||
|
8fe5063a35 | ||
|
843887fcb9 | ||
|
91a60f871a | ||
|
225c313bb3 | ||
|
abc6e9a7bc | ||
|
16070b5543 | ||
|
0afd410ae7 | ||
|
faca59b3a6 | ||
|
9b6149d3ac | ||
|
4c05257783 | ||
|
e6a84dcb60 | ||
|
1f3e073894 | ||
|
dbc164e131 | ||
|
16a163662b | ||
|
67a8d8ca90 | ||
|
0e974eb49a | ||
|
d5f9e3a05e | ||
|
d181713832 | ||
|
ffb0adfc59 | ||
|
a83b8e7792 | ||
|
2f7a9c6a00 | ||
|
423e9c4ac0 | ||
|
c631db62d5 | ||
|
b8de0fc47e |
146
.appveyor.yml
146
.appveyor.yml
@@ -1,146 +0,0 @@
|
|||||||
build: false
|
|
||||||
clone_folder: c:\projects\phpbb
|
|
||||||
version: '{build}'
|
|
||||||
|
|
||||||
services:
|
|
||||||
- iis
|
|
||||||
|
|
||||||
environment:
|
|
||||||
matrix:
|
|
||||||
- db: mssql
|
|
||||||
db_version: sql2012sp1
|
|
||||||
php: 7.1
|
|
||||||
- db: mssql
|
|
||||||
db_version: sql2014
|
|
||||||
php: 7.1
|
|
||||||
- db: mssql
|
|
||||||
db_version: sql2016
|
|
||||||
php: 7.2
|
|
||||||
# - db: mssql
|
|
||||||
# db_version: sql2017
|
|
||||||
# php: 7.1
|
|
||||||
# - db: mariadb
|
|
||||||
# php: 7.1
|
|
||||||
# - db: mysqli
|
|
||||||
# php: 7.1
|
|
||||||
# - db: sqlite
|
|
||||||
# php: 7.1
|
|
||||||
# - db: postgresql
|
|
||||||
# php: 7.1
|
|
||||||
|
|
||||||
hosts:
|
|
||||||
phpbb.test: 127.0.0.1
|
|
||||||
|
|
||||||
init:
|
|
||||||
- SET PATH=%systemroot%\system32\inetsrv\;C:\Program Files\OpenSSL;C:\tools\php;c:\php;%PATH%
|
|
||||||
- SET ANSICON=121x90 (121x90)
|
|
||||||
- REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" /v DelayedExpansion /t REG_DWORD /d 1 /f
|
|
||||||
|
|
||||||
before_test:
|
|
||||||
- ps: |
|
|
||||||
Set-Service wuauserv -StartupType Manual
|
|
||||||
choco install chocolatey -y --version 0.10.13 --allow-downgrade
|
|
||||||
choco install php -y --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
|
|
||||||
Get-ChildItem -Path "c:\tools\php$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1$2')" -Recurse |
|
|
||||||
Move-Item -destination "c:\tools\php"
|
|
||||||
cd c:\tools\php
|
|
||||||
cat php.ini-development | %{$_ -replace "memory_limit = 128M","memory_limit = 1024M"} | Out-File -Encoding "Default" php.ini
|
|
||||||
Add-Content php.ini "`n date.timezone=UTC"
|
|
||||||
Add-Content php.ini "`n display_errors=On"
|
|
||||||
Add-Content php.ini "`n extension_dir=ext"
|
|
||||||
Add-Content php.ini "`n extension=php_openssl.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_mbstring.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_curl.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_gd2.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_tidy.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_fileinfo.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_pdo_sqlite.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_sqlite3.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_pdo_mysql.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_mysqli.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_pdo_pgsql.dll"
|
|
||||||
Add-Content php.ini "`n extension=php_pgsql.dll"
|
|
||||||
|
|
||||||
# Get MSSQL driver
|
|
||||||
if ($env:db -eq "mssql") {
|
|
||||||
cd c:\tools\php\ext
|
|
||||||
$DLLVersion = "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-$($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
|
|
||||||
Add-Content php.ini "`nextension=php_sqlsrv.dll"
|
|
||||||
Add-Content php.ini "`nextension=php_pdo_sqlsrv.dll"
|
|
||||||
Add-Content php.ini "`n"
|
|
||||||
|
|
||||||
$instanceName = $env:db_version.ToUpper()
|
|
||||||
Start-Service "MSSQL`$$instanceName"
|
|
||||||
Set-Variable -Name "sqlServerPath" -Value "(local)\$($env:db_version.ToUpper())"
|
|
||||||
|
|
||||||
# Create database write test config
|
|
||||||
sqlcmd -S $sqlServerPath -Q "Use [master]; CREATE DATABASE [phpbb_test] COLLATE Latin1_General_CI_AS"
|
|
||||||
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\mssqlnative';`n`$dbhost = '.\\$env:db_version';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'sa';`n`$dbpasswd = 'Password12!';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
|
||||||
}
|
|
||||||
elseif ($env:db -eq "mysqli") {
|
|
||||||
Start-Service MySQL57
|
|
||||||
$env:MYSQL_PWD="Password12!"
|
|
||||||
$cmd = '"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql" -e "create database phpbb_test;" --user=root'
|
|
||||||
iex "& $cmd"
|
|
||||||
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\mysqli';`n`$dbhost = 'localhost';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'root';`n`$dbpasswd = 'Password12!';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
|
||||||
}
|
|
||||||
elseif ($env:db -eq "postgresql") {
|
|
||||||
Start-Service postgresql-x64-9.5
|
|
||||||
$env:PGUSER="postgres"
|
|
||||||
$env:PGPASSWORD="Password12!"
|
|
||||||
$Env:Path="C:\Program Files\PostgreSQL\9.6\bin\;$($Env:Path)"
|
|
||||||
createdb phpbb_test
|
|
||||||
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\postgres';`n`$dbhost = 'localhost';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'postgres';`n`$dbpasswd = 'Password12!';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
|
||||||
}
|
|
||||||
elseif ($env:db -eq "mariadb") {
|
|
||||||
appveyor-retry choco install mariadb -y --force
|
|
||||||
$env:MYSQL_PWD=""
|
|
||||||
$cmd = '"C:\Program Files\MariaDB 10.2\bin\mysql" -e "create database phpbb_test;" --user=root'
|
|
||||||
iex "& $cmd"
|
|
||||||
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\mysqli';`n`$dbhost = 'localhost';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'root';`n`$dbpasswd = '';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
|
||||||
}
|
|
||||||
elseif ($env:db -eq "sqlite") {
|
|
||||||
# install sqlite
|
|
||||||
appveyor-retry choco install sqlite -y
|
|
||||||
sqlite3 c:\projects\test.db "create table aTable(field1 int); drop table aTable;"
|
|
||||||
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\sqlite3';`n`$dbhost = 'c:\\projects\\test.db';`n`$dbport = '';`n`$dbname = '';`n`$dbuser = '';`n`$dbpasswd = '';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Install PhantomJS
|
|
||||||
choco install phantomjs -y
|
|
||||||
Start-Process "phantomjs" "--webdriver=8910" | Out-Null
|
|
||||||
- ps: |
|
|
||||||
cd c:\projects\phpbb\phpBB
|
|
||||||
(Get-Content c:\projects\phpbb\phpBB\web.config).replace("<configuration>", "<configuration>`n`t<system.web>`n`t`t<customErrors mode=`"Off`"/>`n`t</system.web>") | Set-Content c:\projects\phpbb\phpBB\web.config
|
|
||||||
(Get-Content c:\projects\phpbb\phpBB\web.config).replace("`t</system.webServer>", "`t`t<httpErrors errorMode=`"Detailed`" />`n`t</system.webServer>") | Set-Content c:\projects\phpbb\phpBB\web.config
|
|
||||||
- cd c:\projects\phpbb\phpBB
|
|
||||||
- php ..\composer.phar install
|
|
||||||
- choco install urlrewrite -y
|
|
||||||
- ps: New-WebSite -Name 'phpBBTest' -PhysicalPath 'c:\projects\phpbb\phpBB' -Force
|
|
||||||
- ps: Import-Module WebAdministration; Set-ItemProperty 'IIS:\Sites\phpBBTest' -name Bindings -value @{protocol='http';bindingInformation='*:80:phpbb.test'}
|
|
||||||
- echo Change default anonymous user AUTH to ApplicationPool
|
|
||||||
- appcmd set config -section:anonymousAuthentication /username:"" --password
|
|
||||||
- echo Setup FAST-CGI configuration
|
|
||||||
- appcmd set config /section:system.webServer/fastCGI /+[fullPath='C:\tools\php\php-cgi.exe']
|
|
||||||
- echo Setup FACT-CGI handler
|
|
||||||
- appcmd set config /section:system.webServer/handlers /+[name='PHP-FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='C:\tools\php\php-cgi.exe',resourceType='Either']
|
|
||||||
- iisreset
|
|
||||||
- NET START W3SVC
|
|
||||||
- mkdir "C:\projects\phpbb\phpBB\cache\test"
|
|
||||||
- mkdir "C:\projects\phpbb\phpBB\cache\installer"
|
|
||||||
- icacls "C:\projects\phpbb\phpBB\cache" /grant Users:F /T
|
|
||||||
- icacls "C:\projects\phpbb\phpBB\files" /grant Users:F /T
|
|
||||||
- icacls "C:\projects\phpbb\phpBB\store" /grant Users:F /T
|
|
||||||
- icacls "C:\projects\phpbb\phpBB\images\avatars\upload" /grant Users:F /T
|
|
||||||
|
|
||||||
test_script:
|
|
||||||
- cd c:\projects\phpbb
|
|
||||||
- php -e phpBB\vendor\phpunit\phpunit\phpunit --verbose
|
|
||||||
|
|
20
.devcontainer/Dockerfile
Normal file
20
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Debian version
|
||||||
|
ARG VARIANT="buster"
|
||||||
|
FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT}
|
||||||
|
|
||||||
|
# Install PHP
|
||||||
|
RUN apt-get -y update
|
||||||
|
RUN apt-get -y install php php-xml php-mbstring php-curl php-zip php-xdebug
|
||||||
|
|
||||||
|
# Install Composer
|
||||||
|
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||||
|
|
||||||
|
# Install MySQL
|
||||||
|
RUN apt-get -y install mysql-server php-mysql
|
||||||
|
|
||||||
|
# Xdebug
|
||||||
|
ADD resources/xdebug.ini /etc/php/8.1/apache2/conf.d/xdebug.ini
|
||||||
|
|
||||||
|
# Configure Apache
|
||||||
|
RUN echo "Listen 8080" >> /etc/apache2/ports.conf && \
|
||||||
|
a2enmod rewrite
|
37
.devcontainer/devcontainer.json
Normal file
37
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
||||||
|
// https://github.com/microsoft/vscode-dev-containers/tree/v0.238.1/containers/ubuntu
|
||||||
|
{
|
||||||
|
"name": "Ubuntu",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "Dockerfile",
|
||||||
|
// Update 'VARIANT' to pick an Ubuntu version: jammy / ubuntu-22.04, focal / ubuntu-20.04, bionic /ubuntu-18.04
|
||||||
|
// Use ubuntu-22.04 or ubuntu-18.04 on local arm64/Apple Silicon.
|
||||||
|
"args": { "VARIANT": "ubuntu-22.04" }
|
||||||
|
},
|
||||||
|
|
||||||
|
// Configure tool-specific properties.
|
||||||
|
"customizations": {
|
||||||
|
// Configure properties specific to VS Code.
|
||||||
|
"vscode": {
|
||||||
|
"settings": {
|
||||||
|
// Allow Xdebug to listen to requests from remote (or container)
|
||||||
|
"remote.localPortHost": "allInterfaces"
|
||||||
|
},
|
||||||
|
//"devPort": {},
|
||||||
|
// Specify which VS Code extensions to install (List of IDs)
|
||||||
|
"extensions": ["xdebug.php-debug"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||||
|
"forwardPorts": [80, 9003],
|
||||||
|
|
||||||
|
// Use 'postCreateCommand' to run commands after the container is created.
|
||||||
|
"postStartCommand": "bash .devcontainer/resources/setup.sh",
|
||||||
|
|
||||||
|
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||||
|
"remoteUser": "vscode",
|
||||||
|
"features": {
|
||||||
|
"github-cli": "latest"
|
||||||
|
}
|
||||||
|
}
|
38
.devcontainer/resources/phpbb-config.yml
Normal file
38
.devcontainer/resources/phpbb-config.yml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
installer:
|
||||||
|
admin:
|
||||||
|
name: admin
|
||||||
|
password: adminadmin
|
||||||
|
email: admin@example.org
|
||||||
|
|
||||||
|
board:
|
||||||
|
lang: en
|
||||||
|
name: My Board
|
||||||
|
description: My amazing new phpBB board
|
||||||
|
|
||||||
|
database:
|
||||||
|
dbms: mysqli
|
||||||
|
dbhost: 127.0.0.1
|
||||||
|
dbport: 3306
|
||||||
|
dbuser: phpbb
|
||||||
|
dbpasswd: phpbb
|
||||||
|
dbname: phpbb
|
||||||
|
table_prefix: phpbb_
|
||||||
|
|
||||||
|
email:
|
||||||
|
enabled: false
|
||||||
|
smtp_delivery : ~
|
||||||
|
smtp_host: ~
|
||||||
|
smtp_port: ~
|
||||||
|
smtp_auth: ~
|
||||||
|
smtp_user: ~
|
||||||
|
smtp_pass: ~
|
||||||
|
|
||||||
|
server:
|
||||||
|
cookie_secure: false
|
||||||
|
server_protocol: http://
|
||||||
|
force_server_vars: true
|
||||||
|
server_name: localhost
|
||||||
|
server_port: 80
|
||||||
|
script_path: /
|
||||||
|
|
||||||
|
extensions: []
|
52
.devcontainer/resources/setup.sh
Normal file
52
.devcontainer/resources/setup.sh
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# setup.sh
|
||||||
|
# Commands to install and configure phpBB
|
||||||
|
|
||||||
|
# Start MySQL
|
||||||
|
echo "[Codespaces] Start MySQL"
|
||||||
|
sudo service mysql start
|
||||||
|
|
||||||
|
# Start Apache
|
||||||
|
echo "[Codespaces] Start Apache"
|
||||||
|
sudo service apache2 start
|
||||||
|
|
||||||
|
# Add SSH key
|
||||||
|
echo "[Codespaces] Add SSH key"
|
||||||
|
echo "$SSH_KEY" > /home/vscode/.ssh/id_rsa && chmod 600 /home/vscode/.ssh/id_rsa
|
||||||
|
|
||||||
|
# Create a MySQL user to use
|
||||||
|
echo "[Codespaces] Create MySQL user"
|
||||||
|
sudo mysql -u root<<EOFMYSQL
|
||||||
|
CREATE USER 'phpbb'@'localhost' IDENTIFIED BY 'phpbb';
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'phpbb'@'localhost' WITH GRANT OPTION;
|
||||||
|
CREATE DATABASE IF NOT EXISTS phpbb;
|
||||||
|
EOFMYSQL
|
||||||
|
|
||||||
|
# Download dependencies
|
||||||
|
echo "[Codespaces] Install Composer dependencies"
|
||||||
|
composer install --no-interaction
|
||||||
|
|
||||||
|
# Symlink the webroot so it can be viewed
|
||||||
|
echo "[Codespaces] Create Symlink of webroot"
|
||||||
|
sudo rm -rf /var/www/html
|
||||||
|
sudo ln -s /workspaces/phpbb/phpBB /var/www/html
|
||||||
|
|
||||||
|
# Copy phpBB config
|
||||||
|
echo "[Codespaces] Copy phpBB configuration"
|
||||||
|
cp /workspaces/phpbb/.devcontainer/resources/phpbb-config.yml /workspaces/phpbb/phpBB/install/install-config.yml
|
||||||
|
|
||||||
|
# Force the server URL to reflect the Codespace
|
||||||
|
# https://docs.github.com/en/codespaces/developing-in-a-codespace/default-environment-variables-for-your-codespace
|
||||||
|
if [ "$CODESPACES" = true ] ; then
|
||||||
|
echo "[Codespaces] Set the phpBB server name using default environment variables"
|
||||||
|
codespaces_url="${CODESPACE_NAME}-80.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}"
|
||||||
|
sed -i "s/localhost/$codespaces_url/g" /workspaces/phpbb/phpBB/install/install-config.yml
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install phpBB
|
||||||
|
echo "[Codespaces] Run phpBB CLI installation"
|
||||||
|
cd /workspaces/phpbb/phpBB && composer install --no-interaction
|
||||||
|
sudo php /workspaces/phpbb/phpBB/install/phpbbcli.php install /workspaces/phpbb/phpBB/install/install-config.yml
|
||||||
|
rm -rf /workspaces/phpbb/phpBB/install
|
||||||
|
|
||||||
|
# Finished
|
||||||
|
echo "[Codespaces] phpBB installation completed"
|
10
.devcontainer/resources/xdebug.ini
Normal file
10
.devcontainer/resources/xdebug.ini
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
zend_extension=xdebug.so
|
||||||
|
|
||||||
|
[xdebug]
|
||||||
|
xdebug.mode=develop,debug
|
||||||
|
xdebug.discover_client_host=1
|
||||||
|
xdebug.client_port=9003
|
||||||
|
xdebug.start_with_request=yes
|
||||||
|
xdebug.log='/var/log/xdebug/xdebug.log'
|
||||||
|
xdebug.connect_timeout_ms=2000
|
||||||
|
xdebug.idekey=VSCODE
|
8
.github/PULL_REQUEST_TEMPLATE.md
vendored
8
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,10 +1,10 @@
|
|||||||
Checklist:
|
Checklist:
|
||||||
|
|
||||||
- [ ] Correct branch: master for new features; 3.3.x & 3.2.x for fixes
|
- [ ] Correct branch: master for new features; 3.3.x for fixes
|
||||||
- [ ] Tests pass
|
- [ ] Tests pass
|
||||||
- [ ] 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)
|
- [ ] Code follows coding guidelines: [master](https://area51.phpbb.com/docs/master/coding-guidelines.html) and [3.3.x](https://area51.phpbb.com/docs/dev/3.3.x/development/coding_guidelines.html)
|
||||||
- [ ] Commit follows commit message [format](https://area51.phpbb.com/docs/dev/3.3.x/development/git.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**):
|
Tracker ticket:
|
||||||
|
|
||||||
https://tracker.phpbb.com/browse/PHPBB3-12345
|
https://tracker.phpbb.com/browse/PHPBB-12345
|
||||||
|
27
.github/check-doctum-parse-errors.sh
vendored
Executable file
27
.github/check-doctum-parse-errors.sh
vendored
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ ! -f doctum.phar ]; then
|
||||||
|
# Download the latest (5.x.x) release if the file does not exist
|
||||||
|
# Remove it to update your phar
|
||||||
|
curl -O https://doctum.long-term.support/releases/5/doctum.phar
|
||||||
|
rm -f doctum.phar.sha256
|
||||||
|
curl -O https://doctum.long-term.support/releases/5/doctum.phar.sha256
|
||||||
|
sha256sum --strict --check doctum.phar.sha256
|
||||||
|
rm -f doctum.phar.sha256
|
||||||
|
chmod +x ./doctum.phar
|
||||||
|
# You can fetch the latest (5.x.x) version code here:
|
||||||
|
# https://doctum.long-term.support/releases/5/VERSION
|
||||||
|
fi
|
||||||
|
# Show the version to inform users of the script
|
||||||
|
./doctum.phar version --text
|
||||||
|
./doctum.phar parse build/doctum-checkout.conf.php -v
|
63
.github/check-executable-files.sh
vendored
Executable file
63
.github/check-executable-files.sh
vendored
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
root="$1"
|
||||||
|
path="${root}phpBB/"
|
||||||
|
|
||||||
|
# Check the permissions of the files
|
||||||
|
|
||||||
|
# The following variables MUST NOT contain any wildcard
|
||||||
|
# Directories to skip
|
||||||
|
directories_skipped="-path ${path}develop -o -path ${path}vendor"
|
||||||
|
|
||||||
|
# Files to skip
|
||||||
|
files_skipped="-false"
|
||||||
|
|
||||||
|
# Files which have to be executable
|
||||||
|
executable_files="-path ${path}bin/* -o -path ${path}install/phpbbcli.php"
|
||||||
|
|
||||||
|
incorrect_files=$( \
|
||||||
|
find ${path} \
|
||||||
|
'(' \
|
||||||
|
'(' \
|
||||||
|
${directories_skipped} \
|
||||||
|
')' \
|
||||||
|
-a -type d -prune -a -type f \
|
||||||
|
')' -o \
|
||||||
|
'(' \
|
||||||
|
-type f -a \
|
||||||
|
-not '(' \
|
||||||
|
${files_skipped} \
|
||||||
|
')' -a \
|
||||||
|
'(' \
|
||||||
|
'(' \
|
||||||
|
'(' \
|
||||||
|
${executable_files} \
|
||||||
|
')' -a \
|
||||||
|
-not -perm /100 \
|
||||||
|
')' -o \
|
||||||
|
'(' \
|
||||||
|
-not '(' \
|
||||||
|
${executable_files} \
|
||||||
|
')' -a \
|
||||||
|
-perm /111 \
|
||||||
|
')' \
|
||||||
|
')' \
|
||||||
|
')' \
|
||||||
|
)
|
||||||
|
|
||||||
|
if [ "${incorrect_files}" != '' ]
|
||||||
|
then
|
||||||
|
echo "The following files do not have proper permissions:";
|
||||||
|
ls -la ${incorrect_files}
|
||||||
|
exit 1;
|
||||||
|
fi
|
14
.github/check-image-icc-profiles.sh
vendored
Executable file
14
.github/check-image-icc-profiles.sh
vendored
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
find . -type f -a -iregex '.*\.\(gif\|jpg\|jpeg\|png\)$' -a -not -wholename '*vendor/*' | \
|
||||||
|
parallel --gnu --keep-order 'phpBB/develop/strip_icc_profiles.sh {}'
|
64
.github/ext-check-executable-files.sh
vendored
Executable file
64
.github/ext-check-executable-files.sh
vendored
Executable file
@@ -0,0 +1,64 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
root="$1"
|
||||||
|
extname="$2"
|
||||||
|
path="${root}phpBB/ext/${extname}/"
|
||||||
|
|
||||||
|
# Check the permissions of the files
|
||||||
|
|
||||||
|
# The following variables MUST NOT contain any wildcard
|
||||||
|
# Directories to skip
|
||||||
|
directories_skipped="-path ${path}develop -o -path ${path}vendor -o -path ${path}.git"
|
||||||
|
|
||||||
|
# Files to skip
|
||||||
|
files_skipped="-false"
|
||||||
|
|
||||||
|
# Files which have to be executable
|
||||||
|
executable_files="-path ${path}bin/* -o -path ${path}install/phpbbcli.php"
|
||||||
|
|
||||||
|
incorrect_files=$( \
|
||||||
|
find ${path} \
|
||||||
|
'(' \
|
||||||
|
'(' \
|
||||||
|
${directories_skipped} \
|
||||||
|
')' \
|
||||||
|
-a -type d -prune -a -type f \
|
||||||
|
')' -o \
|
||||||
|
'(' \
|
||||||
|
-type f -a \
|
||||||
|
-not '(' \
|
||||||
|
${files_skipped} \
|
||||||
|
')' -a \
|
||||||
|
'(' \
|
||||||
|
'(' \
|
||||||
|
'(' \
|
||||||
|
${executable_files} \
|
||||||
|
')' -a \
|
||||||
|
-not -perm /100 \
|
||||||
|
')' -o \
|
||||||
|
'(' \
|
||||||
|
-not '(' \
|
||||||
|
${executable_files} \
|
||||||
|
')' -a \
|
||||||
|
-perm /111 \
|
||||||
|
')' \
|
||||||
|
')' \
|
||||||
|
')' \
|
||||||
|
)
|
||||||
|
|
||||||
|
if [ "${incorrect_files}" != '' ]
|
||||||
|
then
|
||||||
|
echo "The following files do not have proper permissions:";
|
||||||
|
ls -la ${incorrect_files}
|
||||||
|
exit 1;
|
||||||
|
fi
|
25
.github/ext-sniff.sh
vendored
Executable file
25
.github/ext-sniff.sh
vendored
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
EXTNAME=$1
|
||||||
|
NOTESTS=$2
|
||||||
|
|
||||||
|
if [ "$NOTESTS" == "1" ]
|
||||||
|
then
|
||||||
|
phpBB/vendor/bin/phpcs \
|
||||||
|
-s \
|
||||||
|
--extensions=php \
|
||||||
|
--standard=build/code_sniffer/ruleset-php-extensions.xml \
|
||||||
|
--ignore=*/"$EXTNAME"/tests/*,*/"$EXTNAME"/vendor/* \
|
||||||
|
phpBB/ext/"$EXTNAME"
|
||||||
|
fi
|
41
.github/ldap/base.ldif
vendored
Normal file
41
.github/ldap/base.ldif
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
dn: dc=example,dc=com
|
||||||
|
objectClass: top
|
||||||
|
objectClass: dcObject
|
||||||
|
objectClass: organization
|
||||||
|
o: example
|
||||||
|
dc: example
|
||||||
|
|
||||||
|
dn: ou=foo,dc=example,dc=com
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
ou: foo
|
||||||
|
|
||||||
|
dn: cn=admin,dc=example,dc=com
|
||||||
|
objectClass: simpleSecurityObject
|
||||||
|
objectClass: organizationalRole
|
||||||
|
cn: admin
|
||||||
|
description: LDAP administrator
|
||||||
|
userPassword:: e1NTSEF9NytMR2gveUxTMzdsc3RRd1V1dENZSVA0TWdYdm9SdDY=
|
||||||
|
|
||||||
|
dn: ou=group,dc=example,dc=com
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
ou: group
|
||||||
|
|
||||||
|
dn: cn=admin,ou=foo,dc=example,dc=com
|
||||||
|
objectClass: posixAccount
|
||||||
|
objectClass: inetOrgPerson
|
||||||
|
objectClass: organizationalPerson
|
||||||
|
objectClass: person
|
||||||
|
loginShell: /bin/bash
|
||||||
|
homeDirectory: /home/admin
|
||||||
|
uid: admin
|
||||||
|
cn: admin
|
||||||
|
uidNumber: 10000
|
||||||
|
gidNumber: 10000
|
||||||
|
sn: admin
|
||||||
|
mail: admin@example.com
|
||||||
|
userPassword:: e1NTSEF9WHpueGZURHZZc21JSkl6czdMVXBjdCtWYTA1dlMzVlQ=
|
||||||
|
|
||||||
|
dn: cn=admin,ou=group,dc=example,dc=com
|
||||||
|
objectClass: posixGroup
|
||||||
|
gidNumber: 10000
|
||||||
|
cn: admin
|
17
.github/ldap/slapd.conf
vendored
Normal file
17
.github/ldap/slapd.conf
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# See slapd.conf(5) for details on configuration options.
|
||||||
|
include /etc/ldap/schema/core.schema
|
||||||
|
include /etc/ldap/schema/cosine.schema
|
||||||
|
include /etc/ldap/schema/inetorgperson.schema
|
||||||
|
include /etc/ldap/schema/nis.schema
|
||||||
|
|
||||||
|
pidfile /var/tmp/slapd/slapd.pid
|
||||||
|
argsfile /var/tmp/slapd/slapd.args
|
||||||
|
|
||||||
|
modulepath /usr/lib/openldap
|
||||||
|
|
||||||
|
database ldif
|
||||||
|
directory /var/tmp/slapd
|
||||||
|
|
||||||
|
suffix "dc=example,dc=com"
|
||||||
|
rootdn "cn=admin,dc=example,dc=com"
|
||||||
|
rootpw adminadmin
|
16
.github/phing-sniff.sh
vendored
Executable file
16
.github/phing-sniff.sh
vendored
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
cd build
|
||||||
|
../phpBB/vendor/bin/phing sniff
|
||||||
|
cd ..
|
39
.github/phpunit-mariadb-github.xml
vendored
Normal file
39
.github/phpunit-mariadb-github.xml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<phpunit backupGlobals="true"
|
||||||
|
backupStaticAttributes="false"
|
||||||
|
colors="true"
|
||||||
|
convertErrorsToExceptions="true"
|
||||||
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
processIsolation="false"
|
||||||
|
stopOnFailure="false"
|
||||||
|
verbose="true"
|
||||||
|
bootstrap="../tests/bootstrap.php">
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="phpBB Test Suite">
|
||||||
|
<directory suffix="_test.php">../tests</directory>
|
||||||
|
<exclude>../tests/functional</exclude>
|
||||||
|
<exclude>../tests/lint_test.php</exclude>
|
||||||
|
</testsuite>
|
||||||
|
<testsuite name="phpBB Functional Tests">
|
||||||
|
<directory suffix="_test.php">../tests/functional</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
|
||||||
|
<groups>
|
||||||
|
<exclude>
|
||||||
|
<group>slow</group>
|
||||||
|
</exclude>
|
||||||
|
</groups>
|
||||||
|
|
||||||
|
<php>
|
||||||
|
<server name="PHPBB_TEST_DBMS" value="mysqli" />
|
||||||
|
<server name="PHPBB_TEST_DBHOST" value="0.0.0.0" />
|
||||||
|
<server name="PHPBB_TEST_DBPORT" value="3306" />
|
||||||
|
<server name="PHPBB_TEST_DBNAME" value="phpbb_tests" />
|
||||||
|
<server name="PHPBB_TEST_DBUSER" value="root" />
|
||||||
|
<server name="PHPBB_TEST_DBPASSWD" value="" />
|
||||||
|
<server name="PHPBB_TEST_TABLE_PREFIX" value="phpbb_"/>
|
||||||
|
<server name="PHPBB_FUNCTIONAL_URL" value="http://localhost/" />
|
||||||
|
</php>
|
||||||
|
</phpunit>
|
41
.github/phpunit-mssql-github.xml
vendored
Normal file
41
.github/phpunit-mssql-github.xml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<phpunit backupGlobals="true"
|
||||||
|
backupStaticAttributes="false"
|
||||||
|
colors="true"
|
||||||
|
convertErrorsToExceptions="true"
|
||||||
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
processIsolation="false"
|
||||||
|
stopOnFailure="false"
|
||||||
|
verbose="true"
|
||||||
|
bootstrap="../tests/bootstrap.php">
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="phpBB Test Suite">
|
||||||
|
<directory suffix="_test.php">../tests</directory>
|
||||||
|
<exclude>../tests/functional</exclude>
|
||||||
|
<exclude>../tests/lint_test.php</exclude>
|
||||||
|
</testsuite>
|
||||||
|
<testsuite name="phpBB Functional Tests">
|
||||||
|
<directory suffix="_test.php">../tests/functional</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
|
||||||
|
<groups>
|
||||||
|
<exclude>
|
||||||
|
<group>slow</group>
|
||||||
|
</exclude>
|
||||||
|
</groups>
|
||||||
|
|
||||||
|
<php>
|
||||||
|
<server name="PHPBB_TEST_DBMS" value="phpbb\db\driver\mssqlnative" />
|
||||||
|
<server name="PHPBB_TEST_DBHOST" value="127.0.0.1" />
|
||||||
|
<server name="PHPBB_TEST_DBPORT" value="" />
|
||||||
|
<server name="PHPBB_TEST_DBNAME" value="phpbb_tests" />
|
||||||
|
<server name="PHPBB_TEST_DBUSER" value="sa" />
|
||||||
|
<server name="PHPBB_TEST_DBPASSWD" value="Pssw0rd_12" />
|
||||||
|
<server name="PHPBB_TEST_REDIS_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_MEMCACHED_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_TABLE_PREFIX" value="phpbb_"/>
|
||||||
|
<server name="PHPBB_FUNCTIONAL_URL" value="http://localhost/" />
|
||||||
|
</php>
|
||||||
|
</phpunit>
|
41
.github/phpunit-mysql-github.xml
vendored
Normal file
41
.github/phpunit-mysql-github.xml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<phpunit backupGlobals="true"
|
||||||
|
backupStaticAttributes="false"
|
||||||
|
colors="true"
|
||||||
|
convertErrorsToExceptions="true"
|
||||||
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
processIsolation="false"
|
||||||
|
stopOnFailure="false"
|
||||||
|
verbose="true"
|
||||||
|
bootstrap="../tests/bootstrap.php">
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="phpBB Test Suite">
|
||||||
|
<directory suffix="_test.php">../tests</directory>
|
||||||
|
<exclude>../tests/functional</exclude>
|
||||||
|
<exclude>../tests/lint_test.php</exclude>
|
||||||
|
</testsuite>
|
||||||
|
<testsuite name="phpBB Functional Tests">
|
||||||
|
<directory suffix="_test.php">../tests/functional</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
|
||||||
|
<groups>
|
||||||
|
<exclude>
|
||||||
|
<group>slow</group>
|
||||||
|
</exclude>
|
||||||
|
</groups>
|
||||||
|
|
||||||
|
<php>
|
||||||
|
<server name="PHPBB_TEST_DBMS" value="phpbb\db\driver\mysqli" />
|
||||||
|
<server name="PHPBB_TEST_DBHOST" value="0.0.0.0" />
|
||||||
|
<server name="PHPBB_TEST_DBPORT" value="3306" />
|
||||||
|
<server name="PHPBB_TEST_DBNAME" value="phpbb_tests" />
|
||||||
|
<server name="PHPBB_TEST_DBUSER" value="root" />
|
||||||
|
<server name="PHPBB_TEST_DBPASSWD" value="" />
|
||||||
|
<server name="PHPBB_TEST_REDIS_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_MEMCACHED_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_TABLE_PREFIX" value="phpbb_"/>
|
||||||
|
<server name="PHPBB_FUNCTIONAL_URL" value="http://localhost/" />
|
||||||
|
</php>
|
||||||
|
</phpunit>
|
41
.github/phpunit-postgres-github.xml
vendored
Normal file
41
.github/phpunit-postgres-github.xml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<phpunit backupGlobals="true"
|
||||||
|
backupStaticAttributes="false"
|
||||||
|
colors="true"
|
||||||
|
convertErrorsToExceptions="true"
|
||||||
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
processIsolation="false"
|
||||||
|
stopOnFailure="false"
|
||||||
|
verbose="true"
|
||||||
|
bootstrap="../tests/bootstrap.php">
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="phpBB Test Suite">
|
||||||
|
<directory suffix="_test.php">../tests</directory>
|
||||||
|
<exclude>../tests/functional</exclude>
|
||||||
|
<exclude>../tests/lint_test.php</exclude>
|
||||||
|
</testsuite>
|
||||||
|
<testsuite name="phpBB Functional Tests">
|
||||||
|
<directory suffix="_test.php">../tests/functional</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
|
||||||
|
<groups>
|
||||||
|
<exclude>
|
||||||
|
<group>slow</group>
|
||||||
|
</exclude>
|
||||||
|
</groups>
|
||||||
|
|
||||||
|
<php>
|
||||||
|
<server name="PHPBB_TEST_DBMS" value="phpbb\db\driver\postgres"/>
|
||||||
|
<server name="PHPBB_TEST_DBHOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_DBPORT" value="5432" />
|
||||||
|
<server name="PHPBB_TEST_DBNAME" value="phpbb_tests" />
|
||||||
|
<server name="PHPBB_TEST_DBUSER" value="postgres" />
|
||||||
|
<server name="PHPBB_TEST_DBPASSWD" value="postgres" />
|
||||||
|
<server name="PHPBB_TEST_REDIS_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_MEMCACHED_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_TABLE_PREFIX" value="phpbb_"/>
|
||||||
|
<server name="PHPBB_FUNCTIONAL_URL" value="http://localhost/" />
|
||||||
|
</php>
|
||||||
|
</phpunit>
|
41
.github/phpunit-psql-windows-github.xml
vendored
Normal file
41
.github/phpunit-psql-windows-github.xml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<phpunit backupGlobals="true"
|
||||||
|
backupStaticAttributes="false"
|
||||||
|
colors="true"
|
||||||
|
convertErrorsToExceptions="true"
|
||||||
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
processIsolation="false"
|
||||||
|
stopOnFailure="false"
|
||||||
|
verbose="true"
|
||||||
|
bootstrap="../tests/bootstrap.php">
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="phpBB Test Suite">
|
||||||
|
<directory suffix="_test.php">../tests</directory>
|
||||||
|
<exclude>../tests/functional</exclude>
|
||||||
|
<exclude>../tests/lint_test.php</exclude>
|
||||||
|
</testsuite>
|
||||||
|
<testsuite name="phpBB Functional Tests">
|
||||||
|
<directory suffix="_test.php">../tests/functional</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
|
||||||
|
<groups>
|
||||||
|
<exclude>
|
||||||
|
<group>slow</group>
|
||||||
|
</exclude>
|
||||||
|
</groups>
|
||||||
|
|
||||||
|
<php>
|
||||||
|
<server name="PHPBB_TEST_DBMS" value="phpbb\db\driver\postgres"/>
|
||||||
|
<server name="PHPBB_TEST_DBHOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_DBPORT" value="5432" />
|
||||||
|
<server name="PHPBB_TEST_DBNAME" value="phpbb_tests" />
|
||||||
|
<server name="PHPBB_TEST_DBUSER" value="postgres" />
|
||||||
|
<server name="PHPBB_TEST_DBPASSWD" value="root" />
|
||||||
|
<server name="PHPBB_TEST_REDIS_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_MEMCACHED_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_TABLE_PREFIX" value="phpbb_"/>
|
||||||
|
<server name="PHPBB_FUNCTIONAL_URL" value="http://phpbb.test/" />
|
||||||
|
</php>
|
||||||
|
</phpunit>
|
35
.github/phpunit-sqlite3-github.xml
vendored
Normal file
35
.github/phpunit-sqlite3-github.xml
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<phpunit backupGlobals="true"
|
||||||
|
backupStaticAttributes="false"
|
||||||
|
colors="true"
|
||||||
|
convertErrorsToExceptions="true"
|
||||||
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
processIsolation="false"
|
||||||
|
stopOnFailure="false"
|
||||||
|
verbose="true"
|
||||||
|
bootstrap="../tests/bootstrap.php">
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="phpBB Test Suite">
|
||||||
|
<directory suffix="_test.php">../tests</directory>
|
||||||
|
<exclude>../tests/functional</exclude>
|
||||||
|
<exclude>../tests/lint_test.php</exclude>
|
||||||
|
</testsuite>
|
||||||
|
<testsuite name="phpBB Functional Tests">
|
||||||
|
<directory suffix="_test.php">../tests/functional</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
|
||||||
|
<groups>
|
||||||
|
<exclude>
|
||||||
|
<group>slow</group>
|
||||||
|
</exclude>
|
||||||
|
</groups>
|
||||||
|
|
||||||
|
<php>
|
||||||
|
<server name="PHPBB_TEST_REDIS_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_MEMCACHED_HOST" value="localhost" />
|
||||||
|
<server name="PHPBB_TEST_TABLE_PREFIX" value="phpbb_"/>
|
||||||
|
<server name="PHPBB_FUNCTIONAL_URL" value="http://localhost/" />
|
||||||
|
</php>
|
||||||
|
</phpunit>
|
22
.github/prepare-extension.sh
vendored
Executable file
22
.github/prepare-extension.sh
vendored
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
EXTNAME=$1
|
||||||
|
|
||||||
|
# Move the extension in place
|
||||||
|
mkdir --parents phpBB/ext/$EXTNAME
|
||||||
|
cp -R ../tmp/* phpBB/ext/$EXTNAME
|
||||||
|
|
||||||
|
# Move the test files for extensions in place
|
||||||
|
cp -R .github/*.xml phpBB/ext/$EXTNAME/.github
|
||||||
|
cp -R .github/*.sh phpBB/ext/$EXTNAME/.github
|
26
.github/setup-database.sh
vendored
Executable file
26
.github/setup-database.sh
vendored
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
DB=$1
|
||||||
|
MYISAM=$2
|
||||||
|
|
||||||
|
if [ "$DB" == "postgres" ]
|
||||||
|
then
|
||||||
|
psql -c 'DROP DATABASE IF EXISTS phpbb_tests;' -U postgres
|
||||||
|
psql -c 'create database phpbb_tests;' -U postgres
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$MYISAM" == '1' ]
|
||||||
|
then
|
||||||
|
mysql -h 127.0.0.1 -u root -e 'SET GLOBAL storage_engine=MyISAM;'
|
||||||
|
fi
|
14
.github/setup-exiftool.sh
vendored
Executable file
14
.github/setup-exiftool.sh
vendored
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y parallel libimage-exiftool-perl
|
19
.github/setup-ldap.sh
vendored
Executable file
19
.github/setup-ldap.sh
vendored
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
sudo apt-get -y install ldap-utils slapd
|
||||||
|
mkdir /var/tmp/slapd
|
||||||
|
cp .github/ldap/slapd.conf /var/tmp/slapd/slapd.conf
|
||||||
|
slapd -d 256 -d 128 -f /var/tmp/slapd/slapd.conf -h ldap://localhost:3389 &
|
||||||
|
sleep 3
|
||||||
|
ldapadd -H ldap://localhost:3389 -D "cn=admin,dc=example,dc=com" -w adminadmin -f .github/ldap/base.ldif
|
36
.github/setup-phpbb.sh
vendored
Executable file
36
.github/setup-phpbb.sh
vendored
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
DB=$1
|
||||||
|
PHP_VERSION=$2
|
||||||
|
NOTESTS=$3
|
||||||
|
|
||||||
|
if [ "$NOTESTS" == '1' ]
|
||||||
|
then
|
||||||
|
.github/setup-exiftool.sh
|
||||||
|
.github/setup-unbuffer.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$NOTESTS" != '1' ]
|
||||||
|
then
|
||||||
|
.github/setup-webserver.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd phpBB
|
||||||
|
php ../composer.phar install --dev --no-interaction
|
||||||
|
if [[ "$PHP_VERSION" =~ ^nightly$ || "$PHP_VERSION" =~ ^8 ]]
|
||||||
|
then
|
||||||
|
php ../composer.phar remove phpunit/dbunit --dev --update-with-dependencies \
|
||||||
|
&& php ../composer.phar require symfony/yaml:~4.4 misantron/dbunit:~5.0 phpunit/phpunit:^9.3 doctrine/instantiator:^1.4 --dev --update-with-all-dependencies --ignore-platform-reqs
|
||||||
|
fi
|
||||||
|
cd ..
|
14
.github/setup-unbuffer.sh
vendored
Executable file
14
.github/setup-unbuffer.sh
vendored
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y expect-dev
|
81
.github/setup-webserver.sh
vendored
Executable file
81
.github/setup-webserver.sh
vendored
Executable file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y nginx coreutils
|
||||||
|
|
||||||
|
sudo service nginx stop
|
||||||
|
|
||||||
|
DIR=$(dirname "$0")
|
||||||
|
USER=$(whoami)
|
||||||
|
PHPBB_ROOT_PATH=$(realpath "$DIR/../phpBB")
|
||||||
|
NGINX_SITE_CONF="/etc/nginx/sites-enabled/default"
|
||||||
|
NGINX_CONF="/etc/nginx/nginx.conf"
|
||||||
|
APP_SOCK=$(realpath "$DIR")/php-app.sock
|
||||||
|
NGINX_PHP_CONF="$DIR/nginx-php.conf"
|
||||||
|
|
||||||
|
# php-fpm
|
||||||
|
PHP_FPM_BIN="/usr/sbin/php-fpm$PHP_VERSION"
|
||||||
|
PHP_FPM_CONF="$DIR/php-fpm.conf"
|
||||||
|
|
||||||
|
if [ ! -f $PHP_FPM_BIN ] && [ -f "/usr/bin/php-fpm" ]
|
||||||
|
then
|
||||||
|
PHP_FPM_BIN="/usr/bin/php-fpm"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $PHP_FPM_BIN ]
|
||||||
|
then
|
||||||
|
sudo apt-get install php$PHP_VERSION-fpm php$PHP_VERSION-cli \
|
||||||
|
php$PHP_VERSION-curl php$PHP_VERSION-xml php$PHP_VERSION-mbstring \
|
||||||
|
php$PHP_VERSION-zip php$PHP_VERSION-mysql php$PHP_VERSION-sqlite3 \
|
||||||
|
php$PHP_VERSION-intl php$PHP_VERSION-gd php$PHP_VERSION-pgsql
|
||||||
|
sudo service php$PHP_VERSION-fpm start
|
||||||
|
sudo service php$PHP_VERSION-fpm status
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "
|
||||||
|
[global]
|
||||||
|
|
||||||
|
[ci]
|
||||||
|
user = $USER
|
||||||
|
group = $USER
|
||||||
|
listen = $APP_SOCK
|
||||||
|
listen.mode = 0666
|
||||||
|
pm = static
|
||||||
|
pm.max_children = 2
|
||||||
|
|
||||||
|
php_admin_value[memory_limit] = 128M
|
||||||
|
" > $PHP_FPM_CONF
|
||||||
|
|
||||||
|
sudo $PHP_FPM_BIN \
|
||||||
|
--fpm-config "$DIR/php-fpm.conf"
|
||||||
|
|
||||||
|
# nginx
|
||||||
|
sudo sed -i "s/user www-data;/user $USER;/g" $NGINX_CONF
|
||||||
|
sudo cp "$DIR/../phpBB/docs/nginx.sample.conf" "$NGINX_SITE_CONF"
|
||||||
|
sudo sed -i \
|
||||||
|
-e "s/example\.com/localhost/g" \
|
||||||
|
-e "s|root /path/to/phpbb;|root $PHPBB_ROOT_PATH;|g" \
|
||||||
|
$NGINX_SITE_CONF
|
||||||
|
|
||||||
|
# Generate FastCGI configuration for Nginx
|
||||||
|
echo "
|
||||||
|
upstream php {
|
||||||
|
server unix:$APP_SOCK;
|
||||||
|
}
|
||||||
|
" > $NGINX_PHP_CONF
|
||||||
|
|
||||||
|
sudo mv "$NGINX_PHP_CONF" /etc/nginx/conf.d/php.conf
|
||||||
|
|
||||||
|
sudo nginx -T
|
||||||
|
sudo service nginx start
|
598
.github/workflows/tests.yml
vendored
Normal file
598
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,598 @@
|
|||||||
|
name: Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 3.3.x
|
||||||
|
- master
|
||||||
|
- 'prep-release-*'
|
||||||
|
tags:
|
||||||
|
- 'release-*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- 3.3.x
|
||||||
|
- master
|
||||||
|
- 'prep-release-*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Basic checks, e.g. parse errors, commit messages, etc.
|
||||||
|
basic-checks:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- db: 'none'
|
||||||
|
php: '7.2'
|
||||||
|
NOTESTS: 1
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }} - ${{ matrix.db }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 100
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Get Composer Cache Directory
|
||||||
|
id: composer-cache
|
||||||
|
env:
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
run: |
|
||||||
|
cd phpBB
|
||||||
|
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||||
|
echo "version=${PHP_VERSION%.*}" >> $GITHUB_OUTPUT
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Cache Composer dependencies
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
|
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
DB: ${{ matrix.db }}
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
NOTESTS: '1'
|
||||||
|
run: |
|
||||||
|
.github/setup-phpbb.sh $DB $PHP_VERSION $NOTESTS
|
||||||
|
|
||||||
|
- name: Phing sniff
|
||||||
|
run: |
|
||||||
|
.github/phing-sniff.sh
|
||||||
|
|
||||||
|
- name: Check doctum parse errors
|
||||||
|
run: |
|
||||||
|
.github/check-doctum-parse-errors.sh
|
||||||
|
|
||||||
|
- name: Check image ICC profiles
|
||||||
|
run: |
|
||||||
|
.github/check-image-icc-profiles.sh
|
||||||
|
|
||||||
|
- name: Check executable files
|
||||||
|
run: |
|
||||||
|
.github/check-executable-files.sh ./
|
||||||
|
|
||||||
|
- name: Check commit message
|
||||||
|
if: github.event_name == 'pull_request'
|
||||||
|
run: |
|
||||||
|
git fetch origin $GITHUB_BASE_REF &> /dev/null
|
||||||
|
git-tools/commit-msg-hook-range.sh $(git rev-parse origin/$GITHUB_BASE_REF)..$GITHUB_SHA
|
||||||
|
|
||||||
|
# Tests for MySQL and MariaDB
|
||||||
|
mysql-tests:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mariadb:10.1"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mariadb:10.2"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mariadb:10.3"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mariadb:10.4"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mariadb:10.5"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mysql:5.6"
|
||||||
|
db_alias: "MySQL Slow Tests"
|
||||||
|
SLOWTESTS: 1
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mysql:5.6"
|
||||||
|
db_alias: "MyISAM Tests"
|
||||||
|
MYISAM: 1
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mysql:5.6"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '7.3'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '7.4'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '7.4'
|
||||||
|
db: "mysql:8.0"
|
||||||
|
- php: '8.0'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '8.1'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '8.2'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '8.3'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '8.4'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }} - ${{ matrix.db_alias != '' && matrix.db_alias || matrix.db }}
|
||||||
|
|
||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: ${{ matrix.db }}
|
||||||
|
env:
|
||||||
|
MYSQL_ALLOW_EMPTY_PASSWORD: yes
|
||||||
|
MYSQL_DATABASE: phpbb_tests
|
||||||
|
ports:
|
||||||
|
- 3306:3306
|
||||||
|
options: >-
|
||||||
|
--health-cmd="mysqladmin ping"
|
||||||
|
--health-interval=10s
|
||||||
|
--health-timeout=5s
|
||||||
|
--health-retries=3
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis
|
||||||
|
options: >-
|
||||||
|
--health-cmd "redis-cli ping"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- id: database-type
|
||||||
|
env:
|
||||||
|
MATRIX_DB: ${{ matrix.db }}
|
||||||
|
run: |
|
||||||
|
db=$(echo "${MATRIX_DB%%:*}")
|
||||||
|
echo "db=$db" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Get Composer Cache Directory
|
||||||
|
id: composer-cache
|
||||||
|
env:
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
run: |
|
||||||
|
cd phpBB
|
||||||
|
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||||
|
echo "version=${PHP_VERSION%.*}" >> $GITHUB_OUTPUT
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Cache Composer dependencies
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
|
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
NOTESTS: '0'
|
||||||
|
run: |
|
||||||
|
.github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0}
|
||||||
|
|
||||||
|
- name: Setup database
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
MYISAM: ${{ matrix.MYISAM != 1 && '0' || '1' }}
|
||||||
|
run: |
|
||||||
|
.github/setup-database.sh $DB $MYISAM
|
||||||
|
|
||||||
|
- name: Setup LDAP
|
||||||
|
if: ${{ matrix.SLOWTESTS == 1 }}
|
||||||
|
run: |
|
||||||
|
.github/setup-ldap.sh
|
||||||
|
|
||||||
|
- name: Lint tests
|
||||||
|
if: ${{ matrix.SLOWTESTS != 1 && steps.database-type.outputs.db == 'mysql' }}
|
||||||
|
run: phpBB/vendor/bin/phpunit tests/lint_test.php
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
if: ${{ matrix.SLOWTESTS != 1 && matrix.NOTESTS != 1 }}
|
||||||
|
run: |
|
||||||
|
phpBB/vendor/bin/phpunit --configuration .github/phpunit-$DB-github.xml --verbose --stop-on-error
|
||||||
|
|
||||||
|
- name: Slow tests
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
if: ${{ matrix.SLOWTESTS == 1 }}
|
||||||
|
run: |
|
||||||
|
phpBB/vendor/bin/phpunit --configuration .github/phpunit-$DB-github.xml --group slow
|
||||||
|
|
||||||
|
# Tests for PostgreSQL
|
||||||
|
postgres-tests:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- php: '7.2'
|
||||||
|
db: "postgres:9.3"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "postgres:9.5"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "postgres:9.6"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "postgres:10"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "postgres:11"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "postgres:12"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "postgres:13"
|
||||||
|
- php: '7.3'
|
||||||
|
db: "postgres:13"
|
||||||
|
- php: '7.4'
|
||||||
|
db: "postgres:13"
|
||||||
|
- php: '8.0'
|
||||||
|
db: "postgres:12"
|
||||||
|
- php: '8.0'
|
||||||
|
db: "postgres:13"
|
||||||
|
- php: '8.1'
|
||||||
|
db: "postgres:14"
|
||||||
|
- php: '8.2'
|
||||||
|
db: "postgres:14"
|
||||||
|
- php: '8.3'
|
||||||
|
db: "postgres:14"
|
||||||
|
- php: '8.4'
|
||||||
|
db: "postgres:14"
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }} - ${{ matrix.db }}
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: ${{ matrix.db != 'postgres:9.3' && matrix.db != 'postgres:9.5' && matrix.db != 'postgres:9.6' && matrix.db != 'postgres:10' && matrix.db != 'postgres:11' && matrix.db != 'postgres:12' && matrix.db != 'postgres:13' && 'postgres:10' || matrix.db }}
|
||||||
|
env:
|
||||||
|
POSTGRES_HOST: localhost
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
options: >-
|
||||||
|
-v /var/run/postgresql:/var/run/postgresql
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis
|
||||||
|
options: >-
|
||||||
|
--health-cmd "redis-cli ping"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- id: database-type
|
||||||
|
env:
|
||||||
|
MATRIX_DB: ${{ matrix.db }}
|
||||||
|
run: |
|
||||||
|
db=$(echo "${MATRIX_DB%%:*}")
|
||||||
|
echo "db=$db" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Get Composer Cache Directory
|
||||||
|
id: composer-cache
|
||||||
|
env:
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
run: |
|
||||||
|
cd phpBB
|
||||||
|
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||||
|
echo "version=${PHP_VERSION%.*}" >> $GITHUB_OUTPUT
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Cache Composer dependencies
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
|
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
NOTESTS: '0'
|
||||||
|
run: |
|
||||||
|
.github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0}
|
||||||
|
|
||||||
|
- name: Setup database
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
MYISAM: '0'
|
||||||
|
run: |
|
||||||
|
.github/setup-database.sh $DB $MYISAM
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
run: |
|
||||||
|
phpBB/vendor/bin/phpunit --configuration .github/phpunit-$DB-github.xml --verbose --stop-on-error
|
||||||
|
|
||||||
|
# Other database types, namely sqlite3 and mssql
|
||||||
|
other-tests:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- php: '7.2'
|
||||||
|
db: "sqlite3"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mcr.microsoft.com/mssql/server:2017-latest"
|
||||||
|
db_alias: 'MSSQL 2017'
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mcr.microsoft.com/mssql/server:2019-latest"
|
||||||
|
db_alias: 'MSSQL 2019'
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }} - ${{ matrix.db_alias != '' && matrix.db_alias || matrix.db }}
|
||||||
|
|
||||||
|
services:
|
||||||
|
mssql:
|
||||||
|
image: ${{ matrix.db != 'mcr.microsoft.com/mssql/server:2017-latest' && matrix.db != 'mcr.microsoft.com/mssql/server:2019-latest' && 'mcr.microsoft.com/mssql/server:2017-latest' || matrix.db }}
|
||||||
|
env:
|
||||||
|
SA_PASSWORD: "Pssw0rd_12"
|
||||||
|
ACCEPT_EULA: "y"
|
||||||
|
ports:
|
||||||
|
- 1433:1433
|
||||||
|
options: >-
|
||||||
|
--health-cmd="/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'Pssw0rd_12' -Q \"Use [master]; CREATE DATABASE [phpbb_tests] COLLATE Latin1_General_CI_AS\" || exit 1"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
--health-start-period 10s
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis
|
||||||
|
options: >-
|
||||||
|
--health-cmd "redis-cli ping"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- id: database-type
|
||||||
|
env:
|
||||||
|
MATRIX_DB: ${{ matrix.db }}
|
||||||
|
run: |
|
||||||
|
if [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2017-latest' ] || [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2019-latest' ]
|
||||||
|
then
|
||||||
|
db='mssql'
|
||||||
|
else
|
||||||
|
db=$(echo "${MATRIX_DB%%:*}")
|
||||||
|
fi
|
||||||
|
echo "db=$db" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Get Composer Cache Directory
|
||||||
|
id: composer-cache
|
||||||
|
env:
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
run: |
|
||||||
|
cd phpBB
|
||||||
|
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||||
|
echo "version=${PHP_VERSION%.*}" >> $GITHUB_OUTPUT
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Cache Composer dependencies
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
|
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
NOTESTS: '0'
|
||||||
|
run: |
|
||||||
|
.github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0}
|
||||||
|
|
||||||
|
- name: Setup database
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
MYISAM: '0'
|
||||||
|
run: |
|
||||||
|
.github/setup-database.sh $DB $MYISAM
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
run: |
|
||||||
|
phpBB/vendor/bin/phpunit --configuration .github/phpunit-$DB-github.xml --verbose --stop-on-error
|
||||||
|
|
||||||
|
# Test with IIS & PostgreSQL on Windows
|
||||||
|
windows-tests:
|
||||||
|
runs-on: windows-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- php: '7.4'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'unit'
|
||||||
|
- php: '8.0'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'unit'
|
||||||
|
- php: '8.1'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'unit'
|
||||||
|
- php: '8.2'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'unit'
|
||||||
|
- php: '8.3'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'unit'
|
||||||
|
- php: '8.4'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'unit'
|
||||||
|
- php: '7.4'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'functional'
|
||||||
|
- php: '8.0'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'functional'
|
||||||
|
- php: '8.1'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'functional'
|
||||||
|
- php: '8.2'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'functional'
|
||||||
|
- php: '8.3'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'functional'
|
||||||
|
- php: '8.4'
|
||||||
|
db: "postgres"
|
||||||
|
type: 'functional'
|
||||||
|
|
||||||
|
name: Windows - PHP ${{ matrix.php }} - ${{ matrix.db }} - ${{ matrix.type }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Prepare git for Windows
|
||||||
|
run: |
|
||||||
|
git config --system core.autocrlf false
|
||||||
|
git config --system core.eol lf
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, intl, gd, exif, iconv, pgsql, pdo_pgsql
|
||||||
|
ini-values: upload_tmp_dir=${{ runner.temp }}, sys_temp_dir=${{ runner.temp }}
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Get Composer Cache Directory
|
||||||
|
id: composer-cache
|
||||||
|
run: |
|
||||||
|
cd phpBB
|
||||||
|
echo "dir=$(composer config cache-files-dir)" >> $env:GITHUB_OUTPUT
|
||||||
|
$major_version="${{ matrix.php }}".substring(0,1)
|
||||||
|
echo "version=$major_version" >> $env:GITHUB_OUTPUT
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Cache Composer dependencies
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
|
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
GITHUB_WORKSPACE: ${{ github.workspace }}
|
||||||
|
TEMP_DIR: ${{ runner.temp }}
|
||||||
|
run: |
|
||||||
|
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole, IIS-WebServer, IIS-CommonHttpFeatures, IIS-ManagementConsole, IIS-HttpErrors, IIS-HttpRedirect, IIS-WindowsAuthentication, IIS-StaticContent, IIS-DefaultDocument, IIS-HttpCompressionStatic, IIS-DirectoryBrowsing, IIS-WebServerManagementTools, IIS-CGI -All
|
||||||
|
Set-Service wuauserv -StartupType Manual
|
||||||
|
(Get-Content ${env:GITHUB_WORKSPACE}\phpBB\web.config).replace("<configuration>", "<configuration>`n`t<system.web>`n`t`t<customErrors mode=`"Off`"/>`n`t</system.web>") | Set-Content ${env:GITHUB_WORKSPACE}\phpBB\web.config
|
||||||
|
(Get-Content ${env:GITHUB_WORKSPACE}\phpBB\web.config).replace("`t</system.webServer>", "`t`t<httpErrors errorMode=`"Detailed`" />`n`t</system.webServer>") | Set-Content ${env:GITHUB_WORKSPACE}\phpBB\web.config
|
||||||
|
choco install urlrewrite -y
|
||||||
|
Import-Module WebAdministration
|
||||||
|
New-WebSite -Name 'phpBBTest' -PhysicalPath "${env:GITHUB_WORKSPACE}\phpBB" -Force
|
||||||
|
$session = Get-PSSession -Name WinPSCompatSession
|
||||||
|
$sb = {Set-ItemProperty 'IIS:\Sites\phpBBTest' -name Bindings -value @{protocol='http';bindingInformation='*:80:phpbb.test'}}
|
||||||
|
Invoke-Command -Scriptblock $sb -Session $session
|
||||||
|
$sb = {Set-WebConfigurationProperty -filter /system.WebServer/security/authentication/AnonymousAuthentication -name enabled -value true -location "IIS:\Sites\phpBBTest"}
|
||||||
|
Invoke-Command -Scriptblock $sb -Session $session
|
||||||
|
Add-Content -Path $env:windir\System32\drivers\etc\hosts -Value "`r`n127.0.0.1`tphpbb.test" -Force
|
||||||
|
[System.Environment]::SetEnvironmentVariable('PATH',$Env:PATH+";%windir%\system32\inetsrv")
|
||||||
|
echo Setup FAST-CGI configuration
|
||||||
|
Add-WebConfiguration -Filter /system.webServer/fastCgi -PSPath IIS:\ -Value @{fullpath="C:\tools\php\php-cgi.exe"}
|
||||||
|
echo Setup FACT-CGI handler
|
||||||
|
New-WebHandler -Name "PHP-FastCGI" -Path "*.php" -Modules FastCgiModule -ScriptProcessor "C:\tools\php\php-cgi.exe" -Verb '*' -ResourceType Either
|
||||||
|
iisreset
|
||||||
|
NET START W3SVC
|
||||||
|
mkdir "${env:GITHUB_WORKSPACE}\phpBB\cache\test"
|
||||||
|
mkdir "${env:GITHUB_WORKSPACE}\phpBB\cache\installer"
|
||||||
|
icacls "${env:GITHUB_WORKSPACE}\phpBB\cache" /grant Users:F /T
|
||||||
|
icacls "${env:GITHUB_WORKSPACE}\phpBB\files" /grant Users:F /T
|
||||||
|
icacls "${env:GITHUB_WORKSPACE}\phpBB\store" /grant Users:F /T
|
||||||
|
icacls "${env:GITHUB_WORKSPACE}\phpBB\images\avatars\upload" /grant Users:F /T
|
||||||
|
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("IIS_IUSRS", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
|
||||||
|
$acl = Get-ACL "${env:TEMP_DIR}"
|
||||||
|
$acl.AddAccessRule($accessRule)
|
||||||
|
Set-ACL -Path "${env:TEMP_DIR}" -ACLObject $acl
|
||||||
|
cd ${env:GITHUB_WORKSPACE}\phpBB
|
||||||
|
php ..\composer.phar install
|
||||||
|
php ..\composer.phar remove phpunit/dbunit --dev --update-with-dependencies
|
||||||
|
php ..\composer.phar require symfony/yaml:~4.4 misantron/dbunit:~5.0 phpunit/phpunit:^9.3 doctrine/instantiator:^1.4 --dev --update-with-all-dependencies --ignore-platform-reqs
|
||||||
|
cd ..
|
||||||
|
- name: Setup database
|
||||||
|
run: |
|
||||||
|
$postgreSqlSvc = Get-Service "postgresql*"
|
||||||
|
Set-Service $postgreSqlSvc.Name -StartupType manual
|
||||||
|
$runningStatus = [System.ServiceProcess.ServiceControllerStatus]::Running
|
||||||
|
$maxStartTimeout = New-TimeSpan -Seconds 30
|
||||||
|
try {
|
||||||
|
$postgreSqlSvc.Start()
|
||||||
|
$postgreSqlSvc.WaitForStatus($runningStatus, $maxStartTimeout)
|
||||||
|
} catch {
|
||||||
|
$_ | select *
|
||||||
|
}
|
||||||
|
[System.Environment]::SetEnvironmentVariable('PATH',$Env:PATH+";${env:PGBIN}")
|
||||||
|
$env:PGPASSWORD = 'root'
|
||||||
|
psql -c 'ALTER SYSTEM SET hot_standby = on;' -U postgres
|
||||||
|
psql -c 'ALTER SYSTEM SET wal_level = minimal;' -U postgres
|
||||||
|
psql -c 'DROP DATABASE IF EXISTS phpbb_tests;' -U postgres
|
||||||
|
psql -c 'create database phpbb_tests;' -U postgres
|
||||||
|
Set-MpPreference -ExclusionPath "${env:PGDATA}" # Exclude PGDATA directory from Windows Defender
|
||||||
|
Set-MpPreference -DisableRealtimeMonitoring $true
|
||||||
|
- name: Run unit tests
|
||||||
|
if: ${{ matrix.type == 'unit' }}
|
||||||
|
run: |
|
||||||
|
phpBB/vendor/bin/phpunit --configuration .github/phpunit-psql-windows-github.xml --verbose --stop-on-error --exclude-group functional
|
||||||
|
- name: Run unit tests
|
||||||
|
if: ${{ matrix.type == 'functional' }}
|
||||||
|
run: |
|
||||||
|
phpBB/vendor/bin/phpunit --configuration .github/phpunit-psql-windows-github.xml --verbose --stop-on-error --group functional
|
34
.gitignore
vendored
34
.gitignore
vendored
@@ -1,30 +1,54 @@
|
|||||||
*~
|
# Excludes cache
|
||||||
/phpunit.xml
|
|
||||||
/phpBB/cache/*
|
/phpBB/cache/*
|
||||||
!/phpBB/cache/.htaccess
|
!/phpBB/cache/.htaccess
|
||||||
!/phpBB/cache/index.html
|
!/phpBB/cache/index.html
|
||||||
/phpBB/composer.phar
|
|
||||||
|
# Excludes user data
|
||||||
/phpBB/config*.php*
|
/phpBB/config*.php*
|
||||||
/phpBB/ext/*
|
/phpBB/ext/*
|
||||||
/phpBB/files/*
|
/phpBB/files/*
|
||||||
/phpBB/images/avatars/gallery/*
|
/phpBB/images/avatars/gallery/*
|
||||||
/phpBB/images/avatars/upload/*
|
/phpBB/images/avatars/upload/*
|
||||||
/phpBB/images/ranks/*
|
/phpBB/images/ranks/*
|
||||||
/phpBB/install/schemas/schema.json
|
/phpBB/store/*
|
||||||
|
|
||||||
|
# Excludes all custom langages
|
||||||
/phpBB/language/*
|
/phpBB/language/*
|
||||||
!/phpBB/language/en
|
!/phpBB/language/en
|
||||||
/phpBB/store/*
|
|
||||||
|
# Excludes all custom styles
|
||||||
/phpBB/styles/*
|
/phpBB/styles/*
|
||||||
!/phpBB/styles/prosilver
|
!/phpBB/styles/prosilver
|
||||||
/phpBB/styles/prosilver/theme/*/
|
/phpBB/styles/prosilver/theme/*/
|
||||||
!/phpBB/styles/prosilver/theme/en
|
!/phpBB/styles/prosilver/theme/en
|
||||||
!/phpBB/styles/prosilver/theme/images
|
!/phpBB/styles/prosilver/theme/images
|
||||||
!/phpBB/styles/all
|
!/phpBB/styles/all
|
||||||
|
|
||||||
|
# Excludes all custom env
|
||||||
|
/phpBB/config/*
|
||||||
|
!/phpBB/config/default
|
||||||
|
!/phpBB/config/development
|
||||||
|
!/phpBB/config/installer
|
||||||
|
!/phpBB/config/production
|
||||||
|
!/phpBB/config/test
|
||||||
|
!/phpBB/config/.htaccess
|
||||||
|
|
||||||
|
# Excludes vendors
|
||||||
/phpBB/vendor
|
/phpBB/vendor
|
||||||
|
|
||||||
|
# Excludes test / dev files
|
||||||
|
/phpunit.xml
|
||||||
|
/phpBB/composer.phar
|
||||||
/tests/phpbb_unit_tests.sqlite*
|
/tests/phpbb_unit_tests.sqlite*
|
||||||
/tests/test_config*.php
|
/tests/test_config*.php
|
||||||
/tests/tmp/*
|
/tests/tmp/*
|
||||||
/tests/vendor
|
/tests/vendor
|
||||||
/vagrant/phpbb-install-config.yml
|
/vagrant/phpbb-install-config.yml
|
||||||
.vagrant
|
.vagrant
|
||||||
|
node_modules
|
||||||
|
|
||||||
|
# Excludes IDE / editors files
|
||||||
|
*~
|
||||||
|
.idea
|
||||||
*.DS_Store*
|
*.DS_Store*
|
||||||
|
/.vscode
|
||||||
|
52
.travis.yml
52
.travis.yml
@@ -1,52 +0,0 @@
|
|||||||
language: php
|
|
||||||
dist: xenial
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- php: 7.1
|
|
||||||
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:
|
|
||||||
- php: nightly
|
|
||||||
fast_finish: true
|
|
||||||
|
|
||||||
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:
|
|
||||||
- travis/phing-sniff.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
|
|
||||||
- travis/check-sami-parse-errors.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
|
|
||||||
- travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
|
|
||||||
- travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION $NOTESTS ./
|
|
||||||
- sh -c "if [ '$SLOWTESTS' != '1' -a '$DB' = 'mysqli' ]; then phpBB/vendor/bin/phpunit tests/lint_test.php; fi"
|
|
||||||
- sh -c "if [ '$NOTESTS' != '1' -a '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --verbose --stop-on-error; fi"
|
|
||||||
- sh -c "if [ '$SLOWTESTS' = '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --group slow; fi"
|
|
||||||
- sh -c "set -x;if [ '$NOTESTS' = '1' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git remote set-branches --add origin $TRAVIS_BRANCH && git fetch && git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..$TRAVIS_PULL_REQUEST_SHA; fi"
|
|
18
.vscode/launch.json
vendored
Normal file
18
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Debug phpBB",
|
||||||
|
"type": "php",
|
||||||
|
"request": "launch",
|
||||||
|
"port": 9003,
|
||||||
|
"pathMappings": {
|
||||||
|
"/var/www/html": "${workspaceRoot}/phpBB/"
|
||||||
|
},
|
||||||
|
"log": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"php.debug.ideKey": "VSCODE"
|
||||||
|
}
|
60
README.md
60
README.md
@@ -1,42 +1,50 @@
|
|||||||
[](http://www.phpbb.com)
|
[<img src="phpBB/styles/all/imgs/svg/phpbb_logo_large_cosmic.svg" alt="phpBB" style="max-width:40%" width="400">](https://www.phpbb.com)
|
||||||
|
|
||||||
## ABOUT
|
|
||||||
|
|
||||||
phpBB is a free open-source bulletin board written in PHP.
|
phpBB is a free open-source bulletin board written in PHP.
|
||||||
|
|
||||||
## COMMUNITY
|
## 🧑🏻🤝🏻🧑🏽 Community
|
||||||
|
|
||||||
Get your copy of phpBB, find support and lots more on [phpBB.com](http://www.phpbb.com)! Discuss the development on [area51](http://area51.phpbb.com/phpBB/index.php).
|
Get your copy of phpBB, find support and lots more on [phpBB.com](https://www.phpbb.com). Discuss the development on [area51](https://area51.phpbb.com/phpBB/index.php).
|
||||||
|
|
||||||
## INSTALLING DEPENDENCIES
|
## 👨💻 Contribute
|
||||||
|
|
||||||
To be able to run an installation from the repo (and not from a pre-built package) you need to run the following commands to install phpBB's dependencies.
|
1. [Create an account on phpBB.com](https://www.phpbb.com/community/ucp.php?mode=register)
|
||||||
|
2. [Create a ticket (unless there already is one)](https://tracker.phpbb.com/secure/CreateIssue!default.jspa)
|
||||||
cd phpBB
|
|
||||||
php ../composer.phar install
|
|
||||||
|
|
||||||
|
|
||||||
## CONTRIBUTE
|
|
||||||
|
|
||||||
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://area51.phpbb.com/docs/dev/development/coding_guidelines.html) and [Git Contribution Guidelines](https://area51.phpbb.com/docs/dev/development/git.html)
|
3. Read our [Coding guidelines](https://area51.phpbb.com/docs/dev/development/coding_guidelines.html) and [Git Contribution Guidelines](https://area51.phpbb.com/docs/dev/development/git.html)
|
||||||
4. Send us a pull request
|
4. Send us a pull request
|
||||||
|
|
||||||
## VAGRANT
|
### 🏗️ Setting up a development build of phpBB
|
||||||
|
|
||||||
Read our [Vagrant documentation](phpBB/docs/vagrant.md) to find out how to use Vagrant to develop and contribute to phpBB.
|
To run an installation from the repo (and not from a pre-built package) on a local server, run the following commands:
|
||||||
|
|
||||||
## AUTOMATED TESTING
|
- Fork phpbb/phpbb to your GitHub account, then create a local clone of it:
|
||||||
|
```
|
||||||
|
git clone https://github.com/your_github_name/phpbb.git
|
||||||
|
```
|
||||||
|
- Install phpBB's dependencies (from the root of your phpbb repo):
|
||||||
|
```
|
||||||
|
cd phpBB
|
||||||
|
php ../composer.phar install
|
||||||
|
```
|
||||||
|
|
||||||
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](https://bamboo.phpbb.com) or check our travis builds below:
|
Alternatively, you can read:
|
||||||
|
|
||||||
Travis CI | AppVeyor | Branch | Description
|
* Our [Vagrant documentation](phpBB/docs/vagrant.md) to find out how to use Vagrant to develop and contribute to phpBB.
|
||||||
---------- | -------- | ------- | -----------
|
* Our [GitHub Codespaces documentation](phpBB/docs/codespaces.md) to learn about phpBB's cloud-based development environment.
|
||||||
[](http://travis-ci.org/phpbb/phpbb) | [](https://ci.appveyor.com/project/phpBB/phpbb/branch/master) | **master** | Latest development version
|
|
||||||
[](http://travis-ci.org/phpbb/phpbb) | [](https://ci.appveyor.com/project/phpBB/phpbb/branch/3.3.x) | **3.3.x** | Development of version 3.3.x
|
|
||||||
[](http://travis-ci.org/phpbb/phpbb) | [](https://ci.appveyor.com/project/phpBB/phpbb/branch/3.2.x) | **3.2.x** | Development of version 3.2.x
|
|
||||||
|
|
||||||
## LICENSE
|
## 📓 Documentation
|
||||||
|
|
||||||
|
phpBB's [Development Documentation](https://area51.phpbb.com/docs/dev/index.html) contains all the information you'll need to learn about developing for phpBB's core, extensions and automated testing.
|
||||||
|
|
||||||
|
## 🔬 Automated Testing
|
||||||
|
|
||||||
|
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](https://bamboo.phpbb.com) or check our GitHub Actions below:
|
||||||
|
|
||||||
|
Branch | Description | GitHub Actions |
|
||||||
|
------- | ----------- | -------------- |
|
||||||
|
**master** | Latest development version |  |
|
||||||
|
**3.3.x** | Development of version 3.3.x |  |
|
||||||
|
|
||||||
|
## 📜 License
|
||||||
|
|
||||||
[GNU General Public License v2](http://opensource.org/licenses/gpl-2.0.php)
|
[GNU General Public License v2](http://opensource.org/licenses/gpl-2.0.php)
|
||||||
|
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
||||||
<!-- a few settings for the build -->
|
<!-- a few settings for the build -->
|
||||||
<property name="newversion" value="3.3.0-RC1" />
|
<property name="newversion" value="3.3.13-RC1" />
|
||||||
<property name="prevversion" value="3.2.8" />
|
<property name="prevversion" value="3.3.12" />
|
||||||
<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.3.0-b1, 3.3.0-b2" />
|
<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, 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.2.9, 3.2.10, 3.2.11, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.3.8, 3.3.9, 3.3.10, 3.3.11" />
|
||||||
<!-- no configuration should be needed beyond this point -->
|
<!-- no configuration should be needed beyond this point -->
|
||||||
|
|
||||||
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
||||||
@@ -128,13 +128,13 @@
|
|||||||
<!-- Builds docs for current branch into build/api/output/master -->
|
<!-- Builds docs for current branch into build/api/output/master -->
|
||||||
<target name="docs">
|
<target name="docs">
|
||||||
<exec dir="."
|
<exec dir="."
|
||||||
command="phpBB/vendor/bin/sami.php update build/sami-checkout.conf.php"
|
command="./doctum.phar update build/doctum-checkout.conf.php"
|
||||||
passthru="true" />
|
passthru="true" />
|
||||||
</target>
|
</target>
|
||||||
<!-- Builds docs for multiple branches/tags into build/api/output/$branch -->
|
<!-- Builds docs for multiple branches/tags into build/api/output/$branch -->
|
||||||
<target name="docs-all">
|
<target name="docs-all">
|
||||||
<exec dir="."
|
<exec dir="."
|
||||||
command="phpBB/vendor/bin/sami.php update build/sami-all.conf.php"
|
command="./doctum.phar update build/doctum-all.conf.php"
|
||||||
passthru="true" />
|
passthru="true" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
@@ -181,6 +181,7 @@
|
|||||||
|
|
||||||
<!-- create an empty config.php file (not for diffs) -->
|
<!-- create an empty config.php file (not for diffs) -->
|
||||||
<touch file="build/new_version/phpBB3/config.php" />
|
<touch file="build/new_version/phpBB3/config.php" />
|
||||||
|
<copy file="build/new_version/phpBB3/phpbb/.htaccess" tofile="build/new_version/phpBB3/vendor/.htaccess" />
|
||||||
|
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
@@ -362,6 +363,8 @@
|
|||||||
<chmod mode="0777" file="${dir}/store" />
|
<chmod mode="0777" file="${dir}/store" />
|
||||||
<chmod mode="0777" file="${dir}/files" />
|
<chmod mode="0777" file="${dir}/files" />
|
||||||
<chmod mode="0777" file="${dir}/images/avatars/upload" />
|
<chmod mode="0777" file="${dir}/images/avatars/upload" />
|
||||||
|
<!-- set permissions of executable scripts to 755 -->
|
||||||
|
<chmod mode="0755" file="${dir}/bin/phpbbcli.php" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="clean-vendor-dir">
|
<target name="clean-vendor-dir">
|
||||||
|
@@ -1,16 +1,16 @@
|
|||||||
#!/usr/bin/env php
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* This file is part of the phpBB Forum Software package.
|
* This file is part of the phpBB Forum Software package.
|
||||||
*
|
*
|
||||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||||
*
|
*
|
||||||
* For full copyright and license information, please see
|
* For full copyright and license information, please see
|
||||||
* the docs/CREDITS.txt file.
|
* the docs/CREDITS.txt file.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($_SERVER['argc'] != 2)
|
if ($_SERVER['argc'] != 2)
|
||||||
{
|
{
|
||||||
@@ -18,40 +18,54 @@ if ($_SERVER['argc'] != 2)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$fixVersion = $_SERVER['argv'][1];
|
if ($_SERVER['argv'][1] == '--stdin')
|
||||||
|
{
|
||||||
|
$stdIn = file_get_contents('php://stdin');
|
||||||
|
// XML output from tracker can be directly piped to this script using:
|
||||||
|
// cat tracker_output.xml | php build/build_changelog.php --stdin
|
||||||
|
$xml = simplexml_load_string($stdIn);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$fixVersion = $_SERVER['argv'][1];
|
||||||
|
|
||||||
$query = 'project IN (PHPBB3, SECURITY)
|
$query = 'project IN (PHPBB3, SECURITY)
|
||||||
AND resolution = Fixed
|
AND resolution = Fixed
|
||||||
AND fixVersion = "' . $fixVersion . '"
|
AND fixVersion = "' . $fixVersion . '"
|
||||||
AND status IN ("Unverified Fix", Closed)';
|
AND status IN ("Unverified Fix", Closed)';
|
||||||
|
|
||||||
$url = 'http://tracker.phpbb.com/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=' . urlencode($query) . '&tempMax=1000';
|
$url = 'https://tracker.phpbb.com/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=' . urlencode($query) . '&tempMax=1000';
|
||||||
$xml = simplexml_load_string(file_get_contents($url));
|
$xml = simplexml_load_string(file_get_contents($url));
|
||||||
|
}
|
||||||
|
|
||||||
|
$types = [];
|
||||||
foreach ($xml->xpath('//item') as $item)
|
foreach ($xml->xpath('//item') as $item)
|
||||||
{
|
{
|
||||||
$key = (string) $item->key;
|
$key = (string) $item->key;
|
||||||
|
|
||||||
$keyUrl = 'http://tracker.phpbb.com/browse/' . $key;
|
$keyUrl = 'https://tracker.phpbb.com/browse/' . $key;
|
||||||
$keyLink = '<a href="' . $keyUrl . '">' . $key . '</a>';
|
$keyLink = '<a href="' . $keyUrl . '">' . $key . '</a>';
|
||||||
|
|
||||||
$value = str_replace($key, $keyLink, htmlspecialchars($item->title));
|
$value = str_replace($key, $keyLink, htmlspecialchars($item->title, ENT_COMPAT));
|
||||||
$value = str_replace(']', '] -', $value);
|
$value = str_replace(']', '] -', $value);
|
||||||
|
|
||||||
$types[(string) $item->type][$key] = $value;
|
$types[(string) $item->type][$key] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
ksort($types);
|
if (count($types))
|
||||||
foreach ($types as $type => $tickets)
|
|
||||||
{
|
{
|
||||||
echo "<h4>$type</h4>\n";
|
ksort($types);
|
||||||
echo "<ul>\n";
|
foreach ($types as $type => $tickets)
|
||||||
|
|
||||||
uksort($tickets, 'strnatcasecmp');
|
|
||||||
|
|
||||||
foreach ($tickets as $ticket)
|
|
||||||
{
|
{
|
||||||
echo "<li>$ticket</li>\n";
|
echo "<h4>$type</h4>\n";
|
||||||
|
echo "<ul>\n";
|
||||||
|
|
||||||
|
uksort($tickets, 'strnatcasecmp');
|
||||||
|
|
||||||
|
foreach ($tickets as $ticket)
|
||||||
|
{
|
||||||
|
echo "<li>$ticket</li>\n";
|
||||||
|
}
|
||||||
|
echo "</ul>\n";
|
||||||
}
|
}
|
||||||
echo "</ul>\n";
|
|
||||||
}
|
}
|
||||||
|
@@ -43,10 +43,10 @@ class build_package
|
|||||||
$_before = $this->versions[count($this->versions) - 2];
|
$_before = $this->versions[count($this->versions) - 2];
|
||||||
|
|
||||||
$this->locations = array(
|
$this->locations = array(
|
||||||
'new_version' => dirname(dirname(__FILE__)) . '/phpBB/',
|
'new_version' => dirname(__DIR__) . '/phpBB/',
|
||||||
'old_versions' => dirname(__FILE__) . '/old_versions/',
|
'old_versions' => __DIR__ . '/old_versions/',
|
||||||
'root' => dirname(__FILE__) . '/',
|
'root' => __DIR__ . '/',
|
||||||
'package_dir' => dirname(__FILE__) . '/new_version/'
|
'package_dir' => __DIR__ . '/new_version/'
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->package_infos = array(
|
$this->package_infos = array(
|
||||||
|
@@ -0,0 +1,57 @@
|
|||||||
|
<?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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
use PHP_CodeSniffer\Files\File;
|
||||||
|
use PHP_CodeSniffer\Sniffs\Sniff;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks that the visibility qualifiers are placed after the static keyword
|
||||||
|
* according to the coding guidelines
|
||||||
|
*/
|
||||||
|
class phpbb_Sniffs_ControlStructures_StaticKeywordSniff implements Sniff
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Registers the tokens that this sniff wants to listen for.
|
||||||
|
*/
|
||||||
|
public function register()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
T_STATIC,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes this test, when one of its tokens is encountered.
|
||||||
|
*
|
||||||
|
* @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(File $phpcsFile, $stackPtr)
|
||||||
|
{
|
||||||
|
$tokens = $phpcsFile->getTokens();
|
||||||
|
|
||||||
|
$disallowed_after_tokens = [
|
||||||
|
T_PUBLIC,
|
||||||
|
T_PROTECTED,
|
||||||
|
T_PRIVATE,
|
||||||
|
];
|
||||||
|
|
||||||
|
if (in_array($tokens[$stackPtr + 2]['code'], $disallowed_after_tokens))
|
||||||
|
{
|
||||||
|
$error = 'Access specifier (e.g. public) should not follow static scope attribute. Encountered "' . $tokens[$stackPtr + 2]['content'] . '" after static';
|
||||||
|
$phpcsFile->addWarning($error, $stackPtr, 'InvalidStaticFunctionDeclaration', [], 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -19,21 +19,34 @@ use PHP_CodeSniffer\Sniffs\Sniff;
|
|||||||
*/
|
*/
|
||||||
class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
||||||
{
|
{
|
||||||
|
const FIND = [
|
||||||
|
T_NS_SEPARATOR,
|
||||||
|
T_STRING,
|
||||||
|
T_WHITESPACE,
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function register()
|
public function register()
|
||||||
{
|
{
|
||||||
return array(T_USE);
|
return [T_USE];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function check(File $phpcsFile, $found_name, $full_name, $short_name, $line)
|
protected function check(File $phpcsFile, $found_name, $full_name, $short_name, $stack_pointer)
|
||||||
{
|
{
|
||||||
|
$found_name_normalized = ltrim($found_name, '\\');
|
||||||
|
$full_name = ltrim($full_name, '\\');
|
||||||
|
|
||||||
if ($found_name === $full_name)
|
$is_global = ($full_name === $short_name);
|
||||||
|
$unnecessarily_fully_qualified = ($is_global)
|
||||||
|
? ($found_name_normalized !== $found_name && $found_name_normalized === $short_name)
|
||||||
|
: ($found_name_normalized === $full_name);
|
||||||
|
|
||||||
|
if ($unnecessarily_fully_qualified)
|
||||||
{
|
{
|
||||||
$error = 'Either use statement or full name must be used.';
|
$error = 'Either use statement or full name must be used.';
|
||||||
$phpcsFile->addError($error, $line, 'FullName');
|
$phpcsFile->addError($error, $stack_pointer, 'FullName');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($found_name === $short_name)
|
if ($found_name === $short_name)
|
||||||
@@ -58,27 +71,50 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
|||||||
|
|
||||||
$class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), ($stackPtr + 1));
|
$class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), ($stackPtr + 1));
|
||||||
|
|
||||||
$find = array(
|
$class_name_end = $phpcsFile->findNext(self::FIND, ($stackPtr + 1), null, true);
|
||||||
T_NS_SEPARATOR,
|
|
||||||
T_STRING,
|
|
||||||
T_WHITESPACE,
|
|
||||||
);
|
|
||||||
|
|
||||||
$class_name_end = $phpcsFile->findNext($find, ($stackPtr + 1), null, true);
|
|
||||||
|
|
||||||
$aliasing_as_position = $phpcsFile->findNext(T_AS, $class_name_end, null, false, null, true);
|
$aliasing_as_position = $phpcsFile->findNext(T_AS, $class_name_end, null, false, null, true);
|
||||||
if ($aliasing_as_position !== false)
|
if ($aliasing_as_position !== false)
|
||||||
{
|
{
|
||||||
$alias_position = $phpcsFile->findNext(T_STRING, $aliasing_as_position, null, false, null, true);
|
$alias_position = $phpcsFile->findNext(T_STRING, $aliasing_as_position, null, false, null, true);
|
||||||
$class_name_short = $tokens[$alias_position]['content'];
|
$name_short = $tokens[$alias_position]['content'];
|
||||||
$class_name_full = $phpcsFile->getTokensAsString($class_name_start, ($class_name_end - $class_name_start - 1));
|
$name_full = $phpcsFile->getTokensAsString($class_name_start, ($class_name_end - $class_name_start - 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$class_name_full = $phpcsFile->getTokensAsString($class_name_start, ($class_name_end - $class_name_start));
|
$name_full = $phpcsFile->getTokensAsString($class_name_start, ($class_name_end - $class_name_start));
|
||||||
$class_name_short = $tokens[$class_name_end - 1]['content'];
|
$name_short = $tokens[$class_name_end - 1]['content'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($tokens[$class_name_start]['content'] === 'function'
|
||||||
|
&& $tokens[$class_name_start + 1]['code'] === T_WHITESPACE)
|
||||||
|
{
|
||||||
|
$class_name_start += 2;
|
||||||
|
$name_full = $phpcsFile->getTokensAsString(
|
||||||
|
$class_name_start,
|
||||||
|
($class_name_end - $class_name_start - (int) ($aliasing_as_position !== false))
|
||||||
|
);
|
||||||
|
$ok = $this->findFunctionUsage($phpcsFile, $stackPtr, $tokens, $name_full, $name_short);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ok = $this->findClassUsage($phpcsFile, $stackPtr, $tokens, $name_full, $name_short);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($name_full[0] === '\\')
|
||||||
|
{
|
||||||
|
$phpcsFile->addError("There must not be a leading '\\' in use statements.", $stackPtr, 'Malformed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$ok)
|
||||||
|
{
|
||||||
|
$error = 'There must not be unused USE statements.';
|
||||||
|
$phpcsFile->addError($error, $stackPtr, 'Unused');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function findClassUsage(File $phpcsFile, $stackPtr, $tokens, $class_name_full, $class_name_short)
|
||||||
|
{
|
||||||
$ok = false;
|
$ok = false;
|
||||||
|
|
||||||
// Checks in simple statements (new, instanceof and extends)
|
// Checks in simple statements (new, instanceof and extends)
|
||||||
@@ -95,11 +131,11 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$simple_class_name_end = $phpcsFile->findNext($find, ($simple_statement + 1), null, true);
|
$simple_class_name_end = $phpcsFile->findNext(self::FIND, ($simple_statement + 1), null, true);
|
||||||
|
|
||||||
$simple_class_name = trim($phpcsFile->getTokensAsString($simple_class_name_start, ($simple_class_name_end - $simple_class_name_start)));
|
$simple_class_name = trim($phpcsFile->getTokensAsString($simple_class_name_start, ($simple_class_name_end - $simple_class_name_start)));
|
||||||
|
|
||||||
$ok = $this->check($phpcsFile, $simple_class_name, $class_name_full, $class_name_short, $simple_statement) ? true : $ok;
|
$ok = $this->check($phpcsFile, $simple_class_name, $class_name_full, $class_name_short, $simple_statement) || $ok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,12 +145,12 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
|||||||
{
|
{
|
||||||
$old_paamayim_nekudotayim = $paamayim_nekudotayim;
|
$old_paamayim_nekudotayim = $paamayim_nekudotayim;
|
||||||
|
|
||||||
$paamayim_nekudotayim_class_name_start = $phpcsFile->findPrevious($find, $paamayim_nekudotayim - 1, null, true);
|
$paamayim_nekudotayim_class_name_start = $phpcsFile->findPrevious(self::FIND, $paamayim_nekudotayim - 1, null, true);
|
||||||
$paamayim_nekudotayim_class_name_end = $paamayim_nekudotayim - 1;
|
$paamayim_nekudotayim_class_name_end = $paamayim_nekudotayim - 1;
|
||||||
|
|
||||||
$paamayim_nekudotayim_class_name = trim($phpcsFile->getTokensAsString($paamayim_nekudotayim_class_name_start + 1, ($paamayim_nekudotayim_class_name_end - $paamayim_nekudotayim_class_name_start)));
|
$paamayim_nekudotayim_class_name = trim($phpcsFile->getTokensAsString($paamayim_nekudotayim_class_name_start + 1, ($paamayim_nekudotayim_class_name_end - $paamayim_nekudotayim_class_name_start)));
|
||||||
|
|
||||||
$ok = $this->check($phpcsFile, $paamayim_nekudotayim_class_name, $class_name_full, $class_name_short, $paamayim_nekudotayim) ? true : $ok;
|
$ok = $this->check($phpcsFile, $paamayim_nekudotayim_class_name, $class_name_full, $class_name_short, $paamayim_nekudotayim) || $ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checks in implements
|
// Checks in implements
|
||||||
@@ -129,11 +165,11 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
|||||||
$old_implemented_class = $implemented_class;
|
$old_implemented_class = $implemented_class;
|
||||||
|
|
||||||
$implements_class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), ($implemented_class - 1));
|
$implements_class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), ($implemented_class - 1));
|
||||||
$implements_class_name_end = $phpcsFile->findNext($find, ($implemented_class - 1), null, true);
|
$implements_class_name_end = $phpcsFile->findNext(self::FIND, ($implemented_class - 1), null, true);
|
||||||
|
|
||||||
$implements_class_name = trim($phpcsFile->getTokensAsString($implements_class_name_start, ($implements_class_name_end - $implements_class_name_start)));
|
$implements_class_name = trim($phpcsFile->getTokensAsString($implements_class_name_start, ($implements_class_name_end - $implements_class_name_start)));
|
||||||
|
|
||||||
$ok = $this->check($phpcsFile, $implements_class_name, $class_name_full, $class_name_short, $implements) ? true : $ok;
|
$ok = $this->check($phpcsFile, $implements_class_name, $class_name_full, $class_name_short, $implements) || $ok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +177,7 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
|||||||
while (($docblock = $phpcsFile->findNext(T_DOC_COMMENT_CLOSE_TAG, ($old_docblock + 1))) !== false)
|
while (($docblock = $phpcsFile->findNext(T_DOC_COMMENT_CLOSE_TAG, ($old_docblock + 1))) !== false)
|
||||||
{
|
{
|
||||||
$old_docblock = $docblock;
|
$old_docblock = $docblock;
|
||||||
$ok = $this->checkDocblock($phpcsFile, $docblock, $tokens, $class_name_full, $class_name_short) ? true : $ok;
|
$ok = $this->checkDocblock($phpcsFile, $docblock, $tokens, $class_name_full, $class_name_short) || $ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checks in type hinting
|
// Checks in type hinting
|
||||||
@@ -154,7 +190,7 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
|||||||
$params = $phpcsFile->getMethodParameters($function_declaration);
|
$params = $phpcsFile->getMethodParameters($function_declaration);
|
||||||
foreach ($params as $param)
|
foreach ($params as $param)
|
||||||
{
|
{
|
||||||
$ok = $this->check($phpcsFile, $param['type_hint'], $class_name_full, $class_name_short, $function_declaration) ? true : $ok;
|
$ok = $this->check($phpcsFile, $param['type_hint'], $class_name_full, $class_name_short, $function_declaration) || $ok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,18 +201,106 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
|||||||
$old_catch = $catch;
|
$old_catch = $catch;
|
||||||
|
|
||||||
$caught_class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), $catch + 1);
|
$caught_class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), $catch + 1);
|
||||||
$caught_class_name_end = $phpcsFile->findNext($find, $caught_class_name_start + 1, null, true);
|
$caught_class_name_end = $phpcsFile->findNext(self::FIND, $caught_class_name_start + 1, null, true);
|
||||||
|
|
||||||
$caught_class_name = trim($phpcsFile->getTokensAsString($caught_class_name_start, ($caught_class_name_end - $caught_class_name_start)));
|
$caught_class_name = trim($phpcsFile->getTokensAsString($caught_class_name_start, ($caught_class_name_end - $caught_class_name_start)));
|
||||||
|
|
||||||
$ok = $this->check($phpcsFile, $caught_class_name, $class_name_full, $class_name_short, $catch) ? true : $ok;
|
$ok = $this->check($phpcsFile, $caught_class_name, $class_name_full, $class_name_short, $catch) || $ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$ok)
|
$old_use = $stackPtr;
|
||||||
|
while (($use = $phpcsFile->findNext(T_USE, ($old_use + 1))) !== false)
|
||||||
{
|
{
|
||||||
$error = 'There must not be unused USE statements.';
|
$old_use = $use;
|
||||||
$phpcsFile->addError($error, $stackPtr, 'Unused');
|
|
||||||
|
// Needs to be inside a class and must not be inside a function scope.
|
||||||
|
if (!$phpcsFile->hasCondition($use, [T_CLASS, T_TRAIT]) || $phpcsFile->hasCondition($use, T_FUNCTION))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$next = $phpcsFile->findNext(T_WHITESPACE, ($use + 1), null, true, null, true);
|
||||||
|
if ($tokens[$next]['code'] === T_OPEN_PARENTHESIS)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), $use + 1, null, false, null, true);
|
||||||
|
$class_name_end = $phpcsFile->findNext(self::FIND, $class_name_start + 1, null, true, null, true);
|
||||||
|
$found_name = trim($phpcsFile->getTokensAsString($class_name_start, ($class_name_end - $class_name_start)));
|
||||||
|
|
||||||
|
$ok = $this->check($phpcsFile, $found_name, $class_name_full, $class_name_short, $use) || $ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function findFunctionUsage(File $phpcsFile, $stackPtr, $tokens, $name_full, $name_short)
|
||||||
|
{
|
||||||
|
$ok = false;
|
||||||
|
$position = $phpcsFile->findNext(T_OPEN_PARENTHESIS, $stackPtr + 1);
|
||||||
|
while ($position !== false)
|
||||||
|
{
|
||||||
|
$function_name_end = $position;
|
||||||
|
$found_start = 1 + $phpcsFile->findPrevious(
|
||||||
|
[T_NS_SEPARATOR, T_STRING, T_WHITESPACE],
|
||||||
|
$function_name_end - 1,
|
||||||
|
null,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$position = $phpcsFile->findNext(T_OPEN_PARENTHESIS, $position + 1);
|
||||||
|
if ($found_start === null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$function_name_start = $found_start;
|
||||||
|
|
||||||
|
// Trim the output.
|
||||||
|
while ($tokens[$function_name_start]['code'] === T_WHITESPACE && $function_name_start < $function_name_end)
|
||||||
|
{
|
||||||
|
++$function_name_start;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ($tokens[$function_name_end]['code'] === T_WHITESPACE && $function_name_end > $function_name_start)
|
||||||
|
{
|
||||||
|
--$function_name_end;
|
||||||
|
}
|
||||||
|
|
||||||
|
$function_name_length = $function_name_end - $function_name_start;
|
||||||
|
|
||||||
|
// Filter out control structures, built in type constructors, etc.
|
||||||
|
if ($function_name_length <= 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This doesn't seem to be valid PHP, where is the opening tag?
|
||||||
|
if ($found_start === 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$previous_token = $found_start - 1;
|
||||||
|
$filter = [
|
||||||
|
T_FUNCTION, // Function declaration
|
||||||
|
T_OBJECT_OPERATOR, // Method call
|
||||||
|
T_DOUBLE_COLON, // Static method call
|
||||||
|
T_NEW, // Constructors
|
||||||
|
];
|
||||||
|
|
||||||
|
// Filter out calls to methods and function declarations.
|
||||||
|
if (in_array($tokens[$previous_token]['code'], $filter))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$function_name = $phpcsFile->getTokensAsString($function_name_start, $function_name_length);
|
||||||
|
$ok = $this->check($phpcsFile, $function_name, $name_full, $name_short, $function_name_start) || $ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -247,7 +371,7 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements Sniff
|
|||||||
$classes = explode('|', str_replace('[]', '', $classes));
|
$classes = explode('|', str_replace('[]', '', $classes));
|
||||||
foreach ($classes as $class)
|
foreach ($classes as $class)
|
||||||
{
|
{
|
||||||
$ok = $this->check($phpcsFile, $class, $class_name_full, $class_name_short, $tokens[$tag + 2]['line']) ? true : $ok;
|
$ok = $this->check($phpcsFile, $class, $class_name_full, $class_name_short, $tag + 2) || $ok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -89,4 +89,7 @@
|
|||||||
<!-- There MUST be one space between control structure and opening parenthesis -->
|
<!-- There MUST be one space between control structure and opening parenthesis -->
|
||||||
<rule ref="./phpbb/Sniffs/ControlStructures/OpeningParenthesisSniff.php" />
|
<rule ref="./phpbb/Sniffs/ControlStructures/OpeningParenthesisSniff.php" />
|
||||||
|
|
||||||
|
<!-- Static qualifier MUST be placed before the visibility qualifiers. -->
|
||||||
|
<rule ref="./phpbb/Sniffs/ControlStructures/StaticKeywordSniff.php" />
|
||||||
|
|
||||||
</ruleset>
|
</ruleset>
|
||||||
|
21
build/doctum-all.conf.php
Normal file
21
build/doctum-all.conf.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
require __DIR__ . '/doctum-checkout.conf.php';
|
||||||
|
|
||||||
|
$config['versions'] = Doctum\Version\GitVersionCollection::create(__DIR__ . '/../')
|
||||||
|
->add('3.3.x')
|
||||||
|
->add('master')
|
||||||
|
;
|
||||||
|
|
||||||
|
return new Doctum\Doctum($iterator, $config);
|
31
build/doctum-checkout.conf.php
Normal file
31
build/doctum-checkout.conf.php
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
$iterator = Symfony\Component\Finder\Finder::create()
|
||||||
|
->files()
|
||||||
|
->name('*.php')
|
||||||
|
->in(__DIR__ . '/../phpBB/')
|
||||||
|
->notPath('#^cache/#')
|
||||||
|
->notPath('#^develop/#')
|
||||||
|
->notPath('#^ext/#')
|
||||||
|
->notPath('#^vendor/#')
|
||||||
|
->notPath('data');
|
||||||
|
|
||||||
|
// This variable will be used and changed in doctum-all.conf.php
|
||||||
|
$config = [
|
||||||
|
'title' => 'phpBB API Documentation',
|
||||||
|
'build_dir' => __DIR__ . '/api/output/%version%',
|
||||||
|
'cache_dir' => __DIR__ . '/api/cache/%version%',
|
||||||
|
];
|
||||||
|
|
||||||
|
return new Doctum\Doctum($iterator, $config);
|
@@ -84,7 +84,7 @@ foreach ($older_verions as $version)
|
|||||||
'phpBB ' . $version . ' to ' . $current_version . ' Update Package',
|
'phpBB ' . $version . ' to ' . $current_version . ' Update Package',
|
||||||
'phpBB-' . $version . '_to_' . $current_version,
|
'phpBB-' . $version . '_to_' . $current_version,
|
||||||
'update',
|
'update',
|
||||||
'update',
|
'advanced_update',
|
||||||
$version
|
$version
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -1,32 +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.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
require __DIR__ . '/sami-checkout.conf.php';
|
|
||||||
|
|
||||||
$config['versions'] = Sami\Version\GitVersionCollection::create(__DIR__ . '/../')
|
|
||||||
/*
|
|
||||||
This would be nice, but currently causes various problems that need
|
|
||||||
debugging.
|
|
||||||
->addFromTags('release-3.0.*')
|
|
||||||
->add('3.0.x', '3.0-next (olympus)')
|
|
||||||
->addFromTags('release-3.1.*')
|
|
||||||
->add('3.1.x', '3.1-next (ascraeus)')
|
|
||||||
->add('master')
|
|
||||||
*/
|
|
||||||
->add('3.0.x')
|
|
||||||
->add('3.1.x')
|
|
||||||
->add('3.2.x')
|
|
||||||
->add('master')
|
|
||||||
;
|
|
||||||
|
|
||||||
return new Sami\Sami($iterator, $config);
|
|
@@ -1,44 +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.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Prevent 'Class "acm" does not exist.' exception on removeClass().
|
|
||||||
class PhpbbArrayStore extends Sami\Store\ArrayStore
|
|
||||||
{
|
|
||||||
public function removeClass(Sami\Project $project, $name)
|
|
||||||
{
|
|
||||||
unset($this->classes[$name]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$iterator = Symfony\Component\Finder\Finder::create()
|
|
||||||
->files()
|
|
||||||
->name('*.php')
|
|
||||||
->in(__DIR__ . '/../phpBB/')
|
|
||||||
->notPath('#^cache/#')
|
|
||||||
->notPath('#^develop/#')
|
|
||||||
->notPath('#^ext/#')
|
|
||||||
->notPath('#^vendor/#')
|
|
||||||
->notPath('data')
|
|
||||||
;
|
|
||||||
|
|
||||||
$config = array(
|
|
||||||
'theme' => 'enhanced',
|
|
||||||
'title' => 'phpBB API Documentation',
|
|
||||||
'build_dir' => __DIR__.'/api/output/%version%',
|
|
||||||
'cache_dir' => __DIR__.'/api/cache/%version%',
|
|
||||||
'default_opened_level' => 2,
|
|
||||||
// Do not use JsonStore. See https://github.com/fabpot/Sami/issues/79
|
|
||||||
'store' => new PhpbbArrayStore,
|
|
||||||
);
|
|
||||||
|
|
||||||
return new Sami\Sami($iterator, $config);
|
|
54
build/update_stylesheet_querystrings.php
Normal file
54
build/update_stylesheet_querystrings.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (php_sapi_name() !== 'cli')
|
||||||
|
{
|
||||||
|
die("This program must be run from the command line.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (version_compare(PHP_VERSION, '7.1.3', '<'))
|
||||||
|
{
|
||||||
|
die('update_stylesheet_querystrings.php requires at least PHP 7.1.3');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Usage: "$ php build/update_stylesheet_querystrings.php"
|
||||||
|
$targets = [dirname(dirname(__FILE__)) . '/phpBB/styles/prosilver/theme/stylesheet.css'];
|
||||||
|
|
||||||
|
array_map('patch_glob', $targets);
|
||||||
|
|
||||||
|
function patch_glob($glob): void
|
||||||
|
{
|
||||||
|
array_map('patch_file', glob($glob));
|
||||||
|
}
|
||||||
|
|
||||||
|
function patch_file(string $filepath): void
|
||||||
|
{
|
||||||
|
$file = file_get_contents($filepath);
|
||||||
|
$old = $file;
|
||||||
|
$new = preg_replace_callback(
|
||||||
|
'(^@import\\s+url\\([\'"](?<basename>\\w++\\.css)\\?\\K(?:hash|v)=[^\'"]++)m',
|
||||||
|
function ($match) use ($filepath)
|
||||||
|
{
|
||||||
|
$path = dirname($filepath) . DIRECTORY_SEPARATOR . $match['basename'];
|
||||||
|
$hash = sprintf('%08x', crc32(file_get_contents($path)));
|
||||||
|
|
||||||
|
return 'hash=' . $hash;
|
||||||
|
},
|
||||||
|
$old
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($new !== $old)
|
||||||
|
{
|
||||||
|
file_put_contents($filepath, $new);
|
||||||
|
}
|
||||||
|
}
|
BIN
composer.phar
BIN
composer.phar
Binary file not shown.
BIN
doctum.phar
Executable file
BIN
doctum.phar
Executable file
Binary file not shown.
@@ -24,7 +24,17 @@ COMMIT_MSG_HOOK_FATAL=$(git config --bool phpbb.hooks.commit-msg.fatal 2> /dev/n
|
|||||||
git config phpbb.hooks.commit-msg.fatal true
|
git config phpbb.hooks.commit-msg.fatal true
|
||||||
|
|
||||||
EXIT_STATUS=0
|
EXIT_STATUS=0
|
||||||
for COMMIT_HASH in $(git rev-list --no-merges "$COMMIT_RANGE")
|
|
||||||
|
COMMIT_HASHES=$(git rev-list --no-merges "$COMMIT_RANGE")
|
||||||
|
|
||||||
|
# If any message have been returned instead of commit hashes list
|
||||||
|
# send a non-zero exit status upstream.
|
||||||
|
if ! [[ "$COMMIT_HASHES" =~ ^[0-9a-f]{5,40} ]]
|
||||||
|
then
|
||||||
|
EXIT_STATUS=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for COMMIT_HASH in $COMMIT_HASHES
|
||||||
do
|
do
|
||||||
echo "Inspecting commit message of commit $COMMIT_HASH"
|
echo "Inspecting commit message of commit $COMMIT_HASH"
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# A hook to check syntax of a phpBB3 commit message, per:
|
# A hook to check syntax of a phpBB3 commit message, per:
|
||||||
# * <http://wiki.phpbb.com/display/DEV/Git>
|
# * <https://area51.phpbb.com/docs/dev/master/development/git.html>
|
||||||
# * <http://area51.phpbb.com/phpBB/viewtopic.php?p=209919#p209919>
|
# * <http://area51.phpbb.com/phpBB/viewtopic.php?p=209919#p209919>
|
||||||
#
|
#
|
||||||
# This is a commit-msg hook.
|
# This is a commit-msg hook.
|
||||||
@@ -224,7 +224,7 @@ do
|
|||||||
"footer")
|
"footer")
|
||||||
err=$ERR_FOOTER;
|
err=$ERR_FOOTER;
|
||||||
# Each ticket is on its own line
|
# Each ticket is on its own line
|
||||||
echo "$line" | grep -Eq "^PHPBB3-[0-9]+$";
|
echo "$line" | grep -Eq "^PHPBB3?-[0-9]+$";
|
||||||
;;
|
;;
|
||||||
"eof")
|
"eof")
|
||||||
err=$ERR_EOF;
|
err=$ERR_EOF;
|
||||||
@@ -356,7 +356,7 @@ echo "$expecting" | grep -q "eof" || (
|
|||||||
# Check the branch ticket is mentioned, doesn't make sense otherwise
|
# Check the branch ticket is mentioned, doesn't make sense otherwise
|
||||||
if [ $ticket -gt 0 ]
|
if [ $ticket -gt 0 ]
|
||||||
then
|
then
|
||||||
echo "$tickets" | grep -Eq "\bPHPBB3-$ticket\b" || (
|
echo "$tickets" | grep -Eq "\bPHPBB3?-$ticket\b" || (
|
||||||
complain "Ticket ID [$ticket] of branch missing from list of tickets:" >&2;
|
complain "Ticket ID [$ticket] of branch missing from list of tickets:" >&2;
|
||||||
complain "$tickets" | sed 's/ /\n/g;s/^/* /g' >&2;
|
complain "$tickets" | sed 's/ /\n/g;s/^/* /g' >&2;
|
||||||
quit $ERR_FOOTER;
|
quit $ERR_FOOTER;
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# A hook to add [$branch] to the beginning of a commit message
|
# A hook to add [$branch] to the beginning of a commit message
|
||||||
# if certain conditions are met.
|
# if certain conditions are met.
|
||||||
@@ -31,12 +31,25 @@ branch="$(echo "$branch" | sed "s/refs\/heads\///g")"
|
|||||||
if [ "$2" = "" ]
|
if [ "$2" = "" ]
|
||||||
then
|
then
|
||||||
tail="";
|
tail="";
|
||||||
|
ticket_id=$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\3/gm;t;d' <<< "$branch");
|
||||||
|
branch_title=$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\1\2\3/gm;t;d' <<< "$branch");
|
||||||
|
|
||||||
# Branch is prefixed with 'ticket/', append ticket ID to message
|
# Fall back to branch name if no ticket ID
|
||||||
if [ "$branch" != "${branch##ticket/}" ];
|
if [ -z "$branch_title" ];
|
||||||
then
|
then
|
||||||
tail="$(printf "\n\nPHPBB3-${branch##ticket/}")";
|
branch_title="$branch";
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[$branch] $tail$(cat "$1")" > "$1"
|
if [ "security/" = "$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\2/gm;t;d' <<< "$branch")" ];
|
||||||
|
then
|
||||||
|
tail="$(printf '\n\nSECURITY-%s' "$ticket_id")";
|
||||||
|
else
|
||||||
|
# Branch is prefixed with 'ticket/', append ticket ID to message
|
||||||
|
if [ "$branch" != "${branch##ticket/}" ];
|
||||||
|
then
|
||||||
|
tail="$(printf '\n\nPHPBB-%s' "$ticket_id")";
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[$branch_title] $tail$(cat "$1")" > "$1"
|
||||||
fi
|
fi
|
||||||
|
@@ -61,8 +61,8 @@ $template->set_custom_style(array(
|
|||||||
),
|
),
|
||||||
), $phpbb_admin_path . 'style');
|
), $phpbb_admin_path . 'style');
|
||||||
|
|
||||||
$template->assign_var('T_ASSETS_PATH', $phpbb_root_path . 'assets');
|
$template->assign_var('T_ASSETS_PATH', $phpbb_path_helper->update_web_root_path($phpbb_root_path . 'assets'));
|
||||||
$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
|
$template->assign_var('T_TEMPLATE_PATH', $phpbb_path_helper->update_web_root_path($phpbb_root_path . 'style'));
|
||||||
|
|
||||||
// Instantiate new module
|
// Instantiate new module
|
||||||
$module = new p_master();
|
$module = new p_master();
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
<!-- BEGIN upload -->
|
<!-- BEGIN upload -->
|
||||||
:: {upload.FILE_INFO}<br />
|
:: {upload.FILE_INFO}<br />
|
||||||
<!-- IF upload.S_DENIED --><span class="error">{upload.DENIED}</span><!-- ELSEIF upload.ERROR_MSG --><span class="error">{upload.ERROR_MSG}</span><!-- ELSE --><span class="success">{L_SUCCESSFULLY_UPLOADED}</span><!-- ENDIF -->
|
<!-- IF upload.S_DENIED --><span class="error">{upload.L_DENIED}</span><!-- ELSEIF upload.ERROR_MSG --><span class="error">{upload.ERROR_MSG}</span><!-- ELSE --><span class="success">{L_SUCCESSFULLY_UPLOADED}</span><!-- ENDIF -->
|
||||||
<br /><br />
|
<br /><br />
|
||||||
<!-- END upload -->
|
<!-- END upload -->
|
||||||
|
|
||||||
@@ -50,16 +50,21 @@
|
|||||||
<dl>
|
<dl>
|
||||||
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
|
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
|
||||||
<dd>{options.CONTENT}</dd>
|
<dd>{options.CONTENT}</dd>
|
||||||
|
{% if (options.KEY == 'allow_attachments' and S_EMPTY_POST_GROUPS) or (options.KEY == 'allow_pm_attach' and S_EMPTY_PM_GROUPS) %}
|
||||||
|
<dd><span class="error">{{ lang(options.KEY == 'allow_attachments' ? 'NO_EXT_GROUP_ALLOWED_POST' : 'NO_EXT_GROUP_ALLOWED_PM', U_EXTENSION_GROUPS) }}</span></dd>
|
||||||
|
{% endif %}
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<!-- END options -->
|
<!-- END options -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="submit-buttons">
|
<fieldset>
|
||||||
<legend>{L_SUBMIT}</legend>
|
<legend>{{ lang('ACP_SUBMIT_CHANGES') }}</legend>
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<p class="submit-buttons">
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<!-- IF not S_SECURE_DOWNLOADS -->
|
<!-- IF not S_SECURE_DOWNLOADS -->
|
||||||
@@ -204,10 +209,13 @@
|
|||||||
<dd><select name="allowed_forums[]" multiple="multiple" size="8">{S_FORUM_ID_OPTIONS}</select></dd>
|
<dd><select name="allowed_forums[]" multiple="multiple" size="8">{S_FORUM_ID_OPTIONS}</select></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<p class="submit-buttons">
|
</fieldset>
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<fieldset>
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
</p>
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@@ -308,10 +316,14 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p class="submit-buttons">
|
</fieldset>
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<fieldset>
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
</p>
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
|
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
@@ -382,10 +394,13 @@
|
|||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- IF .orphan -->
|
<!-- IF .orphan -->
|
||||||
<p class="submit-buttons">
|
</fieldset>
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<fieldset>
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
</p>
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
|
@@ -73,12 +73,14 @@
|
|||||||
<dt><label for="bangivereason">{L_BAN_GIVE_REASON}{L_COLON}</label></dt>
|
<dt><label for="bangivereason">{L_BAN_GIVE_REASON}{L_COLON}</label></dt>
|
||||||
<dd><input name="bangivereason" type="text" class="text medium" maxlength="255" id="bangivereason" /></dd>
|
<dd><input name="bangivereason" type="text" class="text medium" maxlength="255" id="bangivereason" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
</fieldset>
|
||||||
<p class="submit-buttons">
|
<fieldset>
|
||||||
<input class="button1" type="submit" id="bansubmit" name="bansubmit" value="{L_SUBMIT}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<input class="button2" type="reset" id="banreset" name="banreset" value="{L_RESET}" />
|
<p class="submit-buttons">
|
||||||
</p>
|
<input class="button1" type="submit" id="bansubmit" name="bansubmit" value="{L_SUBMIT}" />
|
||||||
{S_FORM_TOKEN}
|
<input class="button2" type="reset" id="banreset" name="banreset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@@ -31,11 +31,11 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_BBCODE_HELPLINE}</legend>
|
<legend>{{ lang('BBCODE_HELPLINE') }}</legend>
|
||||||
<p>{L_BBCODE_HELPLINE_EXPLAIN}</p>
|
<p>{{ lang('BBCODE_HELPLINE_EXPLAIN') }}</p>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="bbcode_helpline">{L_BBCODE_HELPLINE_TEXT}</label></dt>
|
<dt><label for="bbcode_helpline">{{ lang('BBCODE_HELPLINE_TEXT') }}</label></dt>
|
||||||
<dd><input type="text" id="bbcode_helpline" name="bbcode_helpline" size="60" maxlength="255" value="{BBCODE_HELPLINE}" /></dd>
|
<dd><textarea id="bbcode_helpline" name="bbcode_helpline" cols="60" rows="4">{{ BBCODE_HELPLINE }}</textarea></dd>
|
||||||
</dl>
|
</dl>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
@@ -66,9 +66,12 @@
|
|||||||
</dl>
|
</dl>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="submit-buttons">
|
<fieldset>
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<input class="button2" type="submit" name="preview" value="{L_PREVIEW}" />
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
@@ -58,7 +58,6 @@
|
|||||||
<dl>
|
<dl>
|
||||||
<dt><label for="type">{L_BACKUP_TYPE}{L_COLON}</label></dt>
|
<dt><label for="type">{L_BACKUP_TYPE}{L_COLON}</label></dt>
|
||||||
<dd><label><input type="radio" class="radio" name="type" value="full" id="type" checked="checked" /> {L_FULL_BACKUP}</label>
|
<dd><label><input type="radio" class="radio" name="type" value="full" id="type" checked="checked" /> {L_FULL_BACKUP}</label>
|
||||||
<label><input type="radio" name="type" class="radio" value="structure" /> {L_STRUCTURE_ONLY}</label>
|
|
||||||
<label><input type="radio" class="radio" name="type" value="data" /> {L_DATA_ONLY}</label></dd>
|
<label><input type="radio" class="radio" name="type" value="data" /> {L_DATA_ONLY}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
@@ -76,12 +75,15 @@
|
|||||||
</select></dd>
|
</select></dd>
|
||||||
<dd><a href="#" onclick="selector(true); return false;">{L_SELECT_ALL}</a> :: <a href="#" onclick="selector(false); return false;">{L_DESELECT_ALL}</a></dd>
|
<dd><a href="#" onclick="selector(true); return false;">{L_SELECT_ALL}</a> :: <a href="#" onclick="selector(false); return false;">{L_DESELECT_ALL}</a></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<p class="submit-buttons">
|
<fieldset>
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<p class="submit-buttons">
|
||||||
</p>
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
{S_FORM_TOKEN}
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@@ -1,6 +0,0 @@
|
|||||||
{% 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 %}
|
|
40
phpBB/adm/style/acp_ext_delete_data.html
Normal file
40
phpBB/adm/style/acp_ext_delete_data.html
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a id="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('EXTENSIONS_ADMIN') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('EXTENSIONS_EXPLAIN') }}</p>
|
||||||
|
<p>{{ lang('EXTENSION_DELETE_DATA_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if MIGRATOR_ERROR %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<p><strong>{{ lang('MIGRATION_EXCEPTION_ERROR') }}</strong></p>
|
||||||
|
<p>{{ MIGRATOR_ERROR }}</p>
|
||||||
|
<p><a href="{{ U_RETURN }}">{{ lang('RETURN_TO_EXTENSION_LIST') }}</a></p>
|
||||||
|
</div>
|
||||||
|
{% elseif S_PRE_STEP %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<p>{{ CONFIRM_MESSAGE }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form id="acp_extensions" method="post" action="{{ U_PURGE }}">
|
||||||
|
<fieldset class="submit-buttons">
|
||||||
|
<legend>{{ lang('EXTENSION_DELETE_DATA') }}</legend>
|
||||||
|
<input class="button1" type="submit" name="delete_data" value="{{ lang('EXTENSION_DELETE_DATA') }}">
|
||||||
|
<input class="button2" type="submit" name="cancel" value="{{ lang('CANCEL') }}">
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
{% elseif S_NEXT_STEP %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<p>{{ lang('EXTENSION_DELETE_DATA_IN_PROGRESS') }}</p>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="successbox">
|
||||||
|
<p>{{ lang('EXTENSION_DELETE_DATA_SUCCESS') }}</p>
|
||||||
|
<br>
|
||||||
|
<p><a href="{{ U_RETURN }}">{{ lang('RETURN_TO_EXTENSION_LIST') }}</a></p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
34
phpBB/adm/style/acp_ext_disable.html
Normal file
34
phpBB/adm/style/acp_ext_disable.html
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a id="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('EXTENSIONS_ADMIN') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('EXTENSIONS_EXPLAIN') }}</p>
|
||||||
|
<p>{{ lang('EXTENSION_DISABLE_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if S_PRE_STEP %}
|
||||||
|
<fieldset>
|
||||||
|
<h2>{{ lang('CONFIRM') }}</h2>
|
||||||
|
<p>{{ 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="{{ lang('EXTENSION_DISABLE') }}">
|
||||||
|
<input class="button2" type="submit" name="cancel" value="{{ lang('CANCEL') }}">
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
{% elseif S_NEXT_STEP %}
|
||||||
|
<div class="successbox notice">
|
||||||
|
<p>{{ lang('EXTENSION_DISABLE_IN_PROGRESS') }}</p>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="successbox">
|
||||||
|
<p>{{ lang('EXTENSION_DISABLE_SUCCESS') }}</p>
|
||||||
|
<br>
|
||||||
|
<p><a href="{{ U_RETURN }}">{{ lang('RETURN_TO_EXTENSION_LIST') }}</a></p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
40
phpBB/adm/style/acp_ext_enable.html
Normal file
40
phpBB/adm/style/acp_ext_enable.html
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a id="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('EXTENSIONS_ADMIN') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('EXTENSIONS_EXPLAIN') }}</p>
|
||||||
|
<p>{{ lang('EXTENSION_ENABLE_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if MIGRATOR_ERROR %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<p><strong>{{ lang('MIGRATION_EXCEPTION_ERROR') }}</strong></p>
|
||||||
|
<p>{{ MIGRATOR_ERROR }}</p>
|
||||||
|
<p><a href="{{ U_RETURN }}">{{ lang('RETURN_TO_EXTENSION_LIST') }}</a></p>
|
||||||
|
</div>
|
||||||
|
{% elseif S_PRE_STEP %}
|
||||||
|
<fieldset>
|
||||||
|
<h2>{{ lang('CONFIRM') }}</h2>
|
||||||
|
<p>{{ 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="{{ lang('EXTENSION_ENABLE') }}">
|
||||||
|
<input class="button2" type="submit" name="cancel" value="{{ lang('CANCEL') }}">
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
{% elseif S_NEXT_STEP %}
|
||||||
|
<div class="successbox notice">
|
||||||
|
<p>{{ lang('EXTENSION_ENABLE_IN_PROGRESS') }}</p>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="successbox">
|
||||||
|
<p>{{ lang('EXTENSION_ENABLE_SUCCESS') }}</p>
|
||||||
|
<br>
|
||||||
|
<p><a href="{{ U_RETURN }}">{{ lang('RETURN_TO_EXTENSION_LIST') }}</a></p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
@@ -42,8 +42,8 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<!-- IF .enabled -->
|
||||||
<tr id="ext_enabled_header"<!-- IF not .enabled --> class="hidden"<!-- ENDIF -->>
|
<tr>
|
||||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong><!-- EVENT acp_ext_list_enabled_title_after --></td>
|
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong><!-- EVENT acp_ext_list_enabled_title_after --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- BEGIN enabled -->
|
<!-- BEGIN enabled -->
|
||||||
@@ -59,12 +59,17 @@
|
|||||||
</td>
|
</td>
|
||||||
<td style="text-align: center;"><a href="{enabled.U_DETAILS}">{L_DETAILS}</a></td>
|
<td style="text-align: center;"><a href="{enabled.U_DETAILS}">{L_DETAILS}</a></td>
|
||||||
<td style="text-align: center;">
|
<td style="text-align: center;">
|
||||||
<!-- INCLUDE acp_ext_actions.html -->
|
<!-- 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 -->
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END enabled -->
|
<!-- END enabled -->
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<tr id="ext_disabled_header"<!-- IF not .disabled --> class="hidden"<!-- ENDIF -->>
|
<!-- IF .disabled -->
|
||||||
|
<tr>
|
||||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong><!-- EVENT acp_ext_list_disabled_title_after --></td>
|
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong><!-- EVENT acp_ext_list_disabled_title_after --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- BEGIN disabled -->
|
<!-- BEGIN disabled -->
|
||||||
@@ -82,10 +87,14 @@
|
|||||||
<!-- IF disabled.U_DETAILS --><a href="{disabled.U_DETAILS}">{L_DETAILS}</a><!-- ENDIF -->
|
<!-- IF disabled.U_DETAILS --><a href="{disabled.U_DETAILS}">{L_DETAILS}</a><!-- ENDIF -->
|
||||||
</td>
|
</td>
|
||||||
<td style="text-align: center;">
|
<td style="text-align: center;">
|
||||||
<!-- INCLUDE acp_ext_actions.html -->
|
<!-- 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 -->
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END disabled -->
|
<!-- END disabled -->
|
||||||
|
<!-- ENDIF -->
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@@ -225,6 +225,7 @@
|
|||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_ADD_USERS}</legend>
|
<legend>{L_ADD_USERS}</legend>
|
||||||
|
{% EVENT acp_groups_add_user_options_before %}
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="leader">{L_USER_GROUP_LEADER}{L_COLON}</label></dt>
|
<dt><label for="leader">{L_USER_GROUP_LEADER}{L_COLON}</label></dt>
|
||||||
<dd><label><input name="leader" type="radio" class="radio" value="1" /> {L_YES}</label>
|
<dd><label><input name="leader" type="radio" class="radio" value="1" /> {L_YES}</label>
|
||||||
@@ -235,11 +236,13 @@
|
|||||||
<dd><label><input name="default" type="radio" class="radio" value="1" /> {L_YES}</label>
|
<dd><label><input name="default" type="radio" class="radio" value="1" /> {L_YES}</label>
|
||||||
<label><input name="default" type="radio" class="radio" id="default" value="0" checked="checked" /> {L_NO}</label></dd>
|
<label><input name="default" type="radio" class="radio" id="default" value="0" checked="checked" /> {L_NO}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
{% EVENT acp_groups_add_user_usernames_before %}
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="usernames">{L_USERNAME}{L_COLON}</label><br /><span>{L_USERNAMES_EXPLAIN}</span></dt>
|
<dt><label for="usernames">{L_USERNAME}{L_COLON}</label><br /><span>{L_USERNAMES_EXPLAIN}</span></dt>
|
||||||
<dd><textarea id="usernames" name="usernames" cols="40" rows="5"></textarea></dd>
|
<dd><textarea id="usernames" name="usernames" cols="40" rows="5"></textarea></dd>
|
||||||
<dd><!-- EVENT acp_groups_find_username_prepend -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]<!-- EVENT acp_groups_find_username_append --></dd>
|
<dd><!-- EVENT acp_groups_find_username_prepend -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]<!-- EVENT acp_groups_find_username_append --></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
{% EVENT acp_groups_add_user_options_after %}
|
||||||
|
|
||||||
<p class="quick">
|
<p class="quick">
|
||||||
<input class="button2" type="submit" name="addusers" value="{L_SUBMIT}" />
|
<input class="button2" type="submit" name="addusers" value="{L_SUBMIT}" />
|
||||||
|
@@ -15,13 +15,15 @@
|
|||||||
<label><input type="radio" name="legend_sort_groupname" class="radio" value="0"<!-- IF not LEGEND_SORT_GROUPNAME --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
<label><input type="radio" name="legend_sort_groupname" class="radio" value="0"<!-- IF not LEGEND_SORT_GROUPNAME --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
</fieldset>
|
||||||
<p class="submit-buttons">
|
<fieldset>
|
||||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<input class="button2" type="reset" name="reset" value="{L_RESET}" />
|
<p class="submit-buttons">
|
||||||
<input type="hidden" name="action" value="set_config_legend" />
|
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||||
{S_FORM_TOKEN}
|
<input class="button2" type="reset" name="reset" value="{L_RESET}" />
|
||||||
</p>
|
<input type="hidden" name="action" value="set_config_legend" />
|
||||||
|
{S_FORM_TOKEN}
|
||||||
|
</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@@ -38,10 +38,13 @@
|
|||||||
<dd>{L_SEND_STATISTICS_LONG}</dd>
|
<dd>{L_SEND_STATISTICS_LONG}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
<script>
|
||||||
|
var statsData = {{ S_STATS_DATA }};
|
||||||
|
</script>
|
||||||
<!-- EVENT acp_help_phpbb_stats_after -->
|
<!-- EVENT acp_help_phpbb_stats_after -->
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<p class="submit-buttons">
|
<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 type="hidden" name="help_send_statistics_time" value="{COLLECT_STATS_TIME}" />
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
</p>
|
</p>
|
||||||
@@ -51,8 +54,13 @@
|
|||||||
</form>
|
</form>
|
||||||
<form action="{U_COLLECT_STATS}" method="post" target="questionaire_result" id="questionnaire-form">
|
<form action="{U_COLLECT_STATS}" method="post" target="questionaire_result" id="questionnaire-form">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<p class="submit-buttons">
|
<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}" />
|
<input class="button1" type="submit" id="submit_stats" name="submit" value="{L_SEND_STATISTICS}" />
|
||||||
</p>
|
</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
@@ -105,7 +105,7 @@
|
|||||||
<!-- BEGIN items -->
|
<!-- BEGIN items -->
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td style="text-align: center;"><img src="{items.IMG_SRC}" alt="{items.TEXT_ALT}" title="{items.TEXT_ALT}" /><input type="hidden" name="image[{items.IMG}]" value="1" /></td>
|
<td style="text-align: center;"><img src="{items.IMG_SRC}" alt="{items.TEXT_ALT}" title="{items.TEXT_ALT}" style="max-width: 160px;"><input type="hidden" name="image[{items.IMG}]" value="1" /></td>
|
||||||
<td style="vertical-align: top;">[{items.IMG}]</td>
|
<td style="vertical-align: top;">[{items.IMG}]</td>
|
||||||
<!-- IF S_SMILIES -->
|
<!-- IF S_SMILIES -->
|
||||||
<td><input class="text post" type="text" name="code[{items.IMG}]" value="{items.CODE}" size="10" maxlength="50" /></td>
|
<td><input class="text post" type="text" name="code[{items.IMG}]" value="{items.CODE}" size="10" maxlength="50" /></td>
|
||||||
|
@@ -45,7 +45,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<!-- BEGINELSE -->
|
<!-- BEGINELSE -->
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="6" style="text-align: center;">{L_NO_INACTIVE_USERS}</td>
|
<td colspan="7" style="text-align: center;">{L_NO_INACTIVE_USERS}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END inactive -->
|
<!-- END inactive -->
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@@ -70,9 +70,12 @@
|
|||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="submit-buttons">
|
<fieldset>
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
@@ -14,27 +14,31 @@
|
|||||||
|
|
||||||
<p>{L_ADMIN_INTRO}</p>
|
<p>{L_ADMIN_INTRO}</p>
|
||||||
|
|
||||||
<!-- IF S_UPDATE_INCOMPLETE -->
|
{% if S_UPDATE_INCOMPLETE %}
|
||||||
<div class="errorbox">
|
<div class="errorbox">
|
||||||
<p>{L_UPDATE_INCOMPLETE} <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
<p>{{ lang('UPDATE_INCOMPLETE') }} <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
|
||||||
</div>
|
</div>
|
||||||
<!-- ELSEIF S_VERSIONCHECK_FAIL -->
|
{% elseif S_VERSIONCHECK_FAIL %}
|
||||||
<div class="errorbox notice">
|
<div class="errorbox notice">
|
||||||
<p>{L_VERSIONCHECK_FAIL}</p>
|
<p>{{ lang('VERSIONCHECK_FAIL') }}</p>
|
||||||
<p>{VERSIONCHECK_FAIL_REASON}</p>
|
<p>{{ VERSIONCHECK_FAIL_REASON }}</p>
|
||||||
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
<p><a href="{{ U_VERSIONCHECK_FORCE }}">{{ lang('VERSIONCHECK_FORCE_UPDATE') }}</a> · <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
|
||||||
</div>
|
</div>
|
||||||
<!-- ELSEIF not S_VERSION_UP_TO_DATE -->
|
{% elseif not S_VERSION_UP_TO_DATE %}
|
||||||
<div class="errorbox">
|
<div class="errorbox">
|
||||||
<p>{L_VERSION_NOT_UP_TO_DATE_TITLE}</p>
|
<p>{{ lang('VERSION_NOT_UP_TO_DATE_TITLE') }}</p>
|
||||||
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
<p><a href="{{ U_VERSIONCHECK_FORCE }}">{{ lang('VERSIONCHECK_FORCE_UPDATE') }}</a> · <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
{% elseif S_VERSION_UP_TO_DATE && S_VERSIONCHECK_FORCE %}
|
||||||
<!-- IF S_VERSION_UPGRADEABLE -->
|
<div class="successbox">
|
||||||
|
<p>{{ lang('VERSION_UP_TO_DATE_ACP') }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% if S_VERSION_UPGRADEABLE %}
|
||||||
<div class="errorbox notice">
|
<div class="errorbox notice">
|
||||||
<p>{UPGRADE_INSTRUCTIONS}</p>
|
<p>{{ UPGRADE_INSTRUCTIONS }}</p>
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
{% endif %}
|
||||||
|
|
||||||
<!-- IF S_SEARCH_INDEX_MISSING -->
|
<!-- IF S_SEARCH_INDEX_MISSING -->
|
||||||
<div class="errorbox">
|
<div class="errorbox">
|
||||||
@@ -78,6 +82,13 @@
|
|||||||
<p>{L_ERROR_MBSTRING_HTTP_OUTPUT_EXPLAIN}</p>
|
<p>{L_ERROR_MBSTRING_HTTP_OUTPUT_EXPLAIN}</p>
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
|
{% if S_DEFAULT_CHARSET_FAIL %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<h3>{{ lang('ERROR_DEFAULT_CHARSET') }}</h3>
|
||||||
|
<p>{{ lang('ERROR_DEFAULT_CHARSET_EXPLAIN') }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- IF S_WRITABLE_CONFIG -->
|
<!-- IF S_WRITABLE_CONFIG -->
|
||||||
@@ -95,112 +106,115 @@
|
|||||||
<!-- EVENT acp_main_notice_after -->
|
<!-- EVENT acp_main_notice_after -->
|
||||||
|
|
||||||
<div class="lside">
|
<div class="lside">
|
||||||
<table class="table1 zebra-table no-header" data-no-responsive-header="true">
|
<table class="table2 zebra-table no-header" data-no-responsive-header="true">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{L_STATISTIC}</th>
|
<th>{{ lang('STATISTIC') }}</th>
|
||||||
<th>{L_VALUE}</th>
|
<th>{{ lang('VALUE') }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_NUMBER_POSTS}{L_COLON}</td>
|
<td class="tabled">{{ lang('BOARD_STARTED') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{TOTAL_POSTS}</strong></td>
|
<td class="tabled"><strong>{{ START_DATE }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_POSTS_PER_DAY}{L_COLON}</td>
|
<td class="tabled">{{ lang('AVATAR_DIR_SIZE') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{POSTS_PER_DAY}</strong></td>
|
<td class="tabled"><strong>{{ AVATAR_DIR_SIZE }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_NUMBER_TOPICS}{L_COLON}</td>
|
<td class="tabled">{{ lang('DATABASE_SIZE') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{TOTAL_TOPICS}</strong></td>
|
<td class="tabled"><strong>{{ DBSIZE }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_TOPICS_PER_DAY}{L_COLON}</td>
|
<td class="tabled">{{ lang('UPLOAD_DIR_SIZE') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{TOPICS_PER_DAY}</strong></td>
|
<td class="tabled"><strong>{{ UPLOAD_DIR_SIZE }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_NUMBER_USERS}{L_COLON}</td>
|
<td class="tabled">{{ lang('DATABASE_SERVER_INFO') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{TOTAL_USERS}</strong></td>
|
<td class="tabled"><strong>{{ DATABASE_INFO }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_USERS_PER_DAY}{L_COLON}</td>
|
<td class="tabled">{{ lang('GZIP_COMPRESSION') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{USERS_PER_DAY}</strong></td>
|
<td class="tabled"><strong>{{ GZIP_COMPRESSION }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_NUMBER_FILES}{L_COLON}</td>
|
<td class="tabled">{{ lang('PHP_VERSION') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{TOTAL_FILES}</strong></td>
|
<td class="tabled"><strong>{{ PHP_VERSION_INFO }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_FILES_PER_DAY}{L_COLON}</td>
|
<td class="tabled">{{ lang('NUMBER_ORPHAN') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{FILES_PER_DAY}</strong></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>
|
||||||
</tr>
|
</tr>
|
||||||
|
{% if S_VERSIONCHECK %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled"> </td>
|
<td class="tabled">{{ lang('BOARD_VERSION') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"> </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>
|
</tr>
|
||||||
|
{% endif %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<table class="table1 zebra-table no-header" data-no-responsive-header="true">
|
|
||||||
|
<table class="table2 zebra-table no-header" data-no-responsive-header="true">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{L_STATISTIC}</th>
|
<th>{{ lang('STATISTIC') }}</th>
|
||||||
<th>{L_VALUE}</th>
|
<th>{{ lang('VALUE') }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_BOARD_STARTED}{L_COLON}</td>
|
<td class="tabled">{{ lang('NUMBER_POSTS') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{START_DATE}</strong></td>
|
<td class="tabled"><strong>{{ TOTAL_POSTS }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_AVATAR_DIR_SIZE}{L_COLON}</td>
|
<td class="tabled">{{ lang('POSTS_PER_DAY') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{AVATAR_DIR_SIZE}</strong></td>
|
<td class="tabled"><strong>{{ POSTS_PER_DAY }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_DATABASE_SIZE}{L_COLON}</td>
|
<td class="tabled">{{ lang('NUMBER_TOPICS') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{DBSIZE}</strong></td>
|
<td class="tabled"><strong>{{ TOTAL_TOPICS }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_UPLOAD_DIR_SIZE}{L_COLON}</td>
|
<td class="tabled">{{ lang('TOPICS_PER_DAY') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{UPLOAD_DIR_SIZE}</strong></td>
|
<td class="tabled"><strong>{{ TOPICS_PER_DAY }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_DATABASE_SERVER_INFO}{L_COLON}</td>
|
<td class="tabled">{{ lang('NUMBER_USERS') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{DATABASE_INFO}</strong></td>
|
<td class="tabled"><strong>{{ TOTAL_USERS }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_GZIP_COMPRESSION}{L_COLON}</td>
|
<td class="tabled">{{ lang('USERS_PER_DAY') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{GZIP_COMPRESSION}</strong></td>
|
<td class="tabled"><strong>{{ USERS_PER_DAY }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_PHP_VERSION}{L_COLON}</td>
|
<td class="tabled">{{ lang('NUMBER_FILES') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled"><strong>{PHP_VERSION_INFO}</strong></td>
|
<td class="tabled"><strong>{{ TOTAL_FILES }}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<!-- IF S_TOTAL_ORPHAN -->
|
<td class="tabled">{{ lang('FILES_PER_DAY') ~ lang('COLON') }}</td>
|
||||||
<td class="tabled">{L_NUMBER_ORPHAN}{L_COLON}</td>
|
<td class="tabled"><strong>{{ FILES_PER_DAY }}</strong></td>
|
||||||
<td class="tabled">
|
|
||||||
<!-- 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 -->
|
|
||||||
<!-- ENDIF -->
|
|
||||||
</tr>
|
</tr>
|
||||||
<!-- IF S_VERSIONCHECK -->
|
{% if S_VERSIONCHECK %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tabled">{L_BOARD_VERSION}{L_COLON}</td>
|
<td class="tabled"> </td>
|
||||||
<td class="tabled">
|
<td class="tabled"> </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>
|
|
||||||
</tr>
|
</tr>
|
||||||
<!-- ENDIF -->
|
{% endif %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- IF S_ACTION_OPTIONS -->
|
<!-- IF S_ACTION_OPTIONS -->
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_STATISTIC_RESYNC_OPTIONS}</legend>
|
<legend>{L_STATISTIC_RESYNC_OPTIONS}</legend>
|
||||||
|
@@ -340,9 +340,12 @@
|
|||||||
<br class="responsive-hide" /><br class="responsive-hide" />
|
<br class="responsive-hide" /><br class="responsive-hide" />
|
||||||
|
|
||||||
<fieldset class="quick" style="float: {S_CONTENT_FLOW_END};">
|
<fieldset class="quick" style="float: {S_CONTENT_FLOW_END};">
|
||||||
<input class="button1" type="submit" name="action[apply_all_permissions]" value="{L_APPLY_ALL_PERMISSIONS}" />
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<input class="button2" type="button" name="cancel" value="{L_RESET}" onclick="document.forms['set-permissions'].reset(); init_colours(active_pmask + active_fmask);" />
|
<p class="submit-buttons">
|
||||||
{S_FORM_TOKEN}
|
<input class="button1" type="submit" id="submit" name="action[apply_all_permissions]" value="{L_APPLY_ALL_PERMISSIONS}" />
|
||||||
|
<input class="button2" type="button" id="reset" name="cancel" value="{L_RESET}" onclick="document.forms['set-permissions'].reset(); init_colours(active_pmask + active_fmask);" />
|
||||||
|
{S_FORM_TOKEN}
|
||||||
|
</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<br class="responsive-hide" /><br class="responsive-hide" />
|
<br class="responsive-hide" /><br class="responsive-hide" />
|
||||||
|
@@ -44,7 +44,7 @@
|
|||||||
</select>
|
</select>
|
||||||
<!-- EVENT acp_posting_buttons_custom_tags_before -->
|
<!-- EVENT acp_posting_buttons_custom_tags_before -->
|
||||||
<!-- BEGIN custom_tags -->
|
<!-- BEGIN custom_tags -->
|
||||||
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{{ custom_tags.BBCODE_HELPLINE|e('html_attr') }}" />
|
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{{ custom_tags.BBCODE_HELPLINE }}" />
|
||||||
<!-- END custom_tags -->
|
<!-- END custom_tags -->
|
||||||
</div>
|
</div>
|
||||||
<!-- EVENT acp_posting_buttons_after -->
|
<!-- EVENT acp_posting_buttons_after -->
|
||||||
|
@@ -21,8 +21,11 @@
|
|||||||
|
|
||||||
<!-- IF S_STEP_ONE -->
|
<!-- IF S_STEP_ONE -->
|
||||||
|
|
||||||
|
{% EVENT acp_profile_options_before %}
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_TITLE}</legend>
|
<legend>{L_TITLE}</legend>
|
||||||
|
{% EVENT acp_profile_basic_options_before %}
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label>{L_FIELD_TYPE}{L_COLON}</label><br /><span>{L_FIELD_TYPE_EXPLAIN}</span></dt>
|
<dt><label>{L_FIELD_TYPE}{L_COLON}</label><br /><span>{L_FIELD_TYPE_EXPLAIN}</span></dt>
|
||||||
<dd><strong>{FIELD_TYPE}</strong></dd>
|
<dd><strong>{FIELD_TYPE}</strong></dd>
|
||||||
@@ -43,8 +46,11 @@
|
|||||||
<dd><label><input type="radio" class="radio" id="field_no_view" name="field_no_view" value="0"<!-- IF not S_FIELD_NO_VIEW --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
<dd><label><input type="radio" class="radio" id="field_no_view" name="field_no_view" value="0"<!-- IF not S_FIELD_NO_VIEW --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
<label><input type="radio" class="radio" name="field_no_view" value="1"<!-- IF S_FIELD_NO_VIEW --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
<label><input type="radio" class="radio" name="field_no_view" value="1"<!-- IF S_FIELD_NO_VIEW --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
{% EVENT acp_profile_basic_options_after %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
{% EVENT acp_profile_visibility_options_before %}
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_VISIBILITY_OPTION}</legend>
|
<legend>{L_VISIBILITY_OPTION}</legend>
|
||||||
<dl>
|
<dl>
|
||||||
@@ -87,8 +93,11 @@
|
|||||||
<dd><input class="text medium" type="text" name="field_contact_url" id="field_contact_url" value="{FIELD_CONTACT_URL}" /> <label for="field_contact_url">{L_FIELD_CONTACT_URL}</label></dd>
|
<dd><input class="text medium" type="text" name="field_contact_url" id="field_contact_url" value="{FIELD_CONTACT_URL}" /> <label for="field_contact_url">{L_FIELD_CONTACT_URL}</label></dd>
|
||||||
<!-- EVENT acp_profile_contact_last -->
|
<!-- EVENT acp_profile_contact_last -->
|
||||||
</dl>
|
</dl>
|
||||||
|
{% EVENT acp_profile_contact_after %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
{% EVENT acp_profile_visibility_options_after %}
|
||||||
|
|
||||||
<!-- IF S_EDIT_MODE -->
|
<!-- IF S_EDIT_MODE -->
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<input class="button1" type="submit" name="save" value="{L_SAVE}" />
|
<input class="button1" type="submit" name="save" value="{L_SAVE}" />
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<p>{L_ACP_PRUNE_USERS_EXPLAIN}</p>
|
<p>{L_ACP_PRUNE_USERS_EXPLAIN}</p>
|
||||||
|
|
||||||
<form id="acp_prune" method="post" action="{U_ACTION}">
|
<form id="acp_prune" method="post" action="{U_ACTION}">
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_CRITERIA}</legend>
|
<legend>{L_CRITERIA}</legend>
|
||||||
<dl>
|
<dl>
|
||||||
@@ -66,15 +66,19 @@
|
|||||||
<dd><label><input type="radio" class="radio" name="action" value="delete" /> {L_DELETE_USERS}</label>
|
<dd><label><input type="radio" class="radio" name="action" value="delete" /> {L_DELETE_USERS}</label>
|
||||||
<label><input type="radio" class="radio" id="deactivate" name="action" value="deactivate" checked="checked" /> {L_DEACTIVATE}</label></dd>
|
<label><input type="radio" class="radio" id="deactivate" name="action" value="deactivate" checked="checked" /> {L_DEACTIVATE}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<p class="submit-buttons">
|
|
||||||
<input type="hidden" name="prune" value="1" />
|
|
||||||
|
|
||||||
<input class="button1" type="submit" id="update" name="update" value="{L_SUBMIT}" />
|
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
|
||||||
{S_FORM_TOKEN}
|
|
||||||
</p>
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input type="hidden" name="prune" value="1" />
|
||||||
|
|
||||||
|
<input class="button1" type="submit" id="update" name="update" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
{S_FORM_TOKEN}
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- INCLUDE overall_footer.html -->
|
<!-- INCLUDE overall_footer.html -->
|
||||||
|
@@ -85,7 +85,7 @@
|
|||||||
<!-- BEGIN ranks -->
|
<!-- BEGIN ranks -->
|
||||||
<tr>
|
<tr>
|
||||||
<!-- EVENT acp_ranks_list_column_before -->
|
<!-- EVENT acp_ranks_list_column_before -->
|
||||||
<td style="text-align: center;"><!-- IF ranks.S_RANK_IMAGE --><img src="{ranks.RANK_IMAGE}" alt="{ranks.RANK_TITLE}" title="{ranks.RANK_TITLE}" /><!-- ELSE --> - <!-- ENDIF --></td>
|
<td style="text-align: center;"><!-- IF ranks.S_RANK_IMAGE --><img src="{ranks.RANK_IMAGE}" alt="{ranks.RANK_TITLE}" title="{ranks.RANK_TITLE}" style="max-width: 160px;"><!-- ELSE --> - <!-- ENDIF --></td>
|
||||||
<td style="text-align: center;">{ranks.RANK_TITLE}</td>
|
<td style="text-align: center;">{ranks.RANK_TITLE}</td>
|
||||||
<td style="text-align: center;"><!-- IF ranks.S_SPECIAL_RANK --> - <!-- ELSE -->{ranks.MIN_POSTS}<!-- ENDIF --></td>
|
<td style="text-align: center;"><!-- IF ranks.S_SPECIAL_RANK --> - <!-- ELSE -->{ranks.MIN_POSTS}<!-- ENDIF --></td>
|
||||||
<!-- EVENT acp_ranks_list_column_after -->
|
<!-- EVENT acp_ranks_list_column_after -->
|
||||||
|
@@ -36,6 +36,13 @@
|
|||||||
<dt><label for="max_num_search_keywords">{L_MAX_NUM_SEARCH_KEYWORDS}{L_COLON}</label><br /><span>{L_MAX_NUM_SEARCH_KEYWORDS_EXPLAIN}</span></dt>
|
<dt><label for="max_num_search_keywords">{L_MAX_NUM_SEARCH_KEYWORDS}{L_COLON}</label><br /><span>{L_MAX_NUM_SEARCH_KEYWORDS_EXPLAIN}</span></dt>
|
||||||
<dd><input id="max_num_search_keywords" type="number" min="0" max="9999" name="config[max_num_search_keywords]" value="{MAX_NUM_SEARCH_KEYWORDS}" /></dd>
|
<dd><input id="max_num_search_keywords" type="number" min="0" max="9999" name="config[max_num_search_keywords]" value="{MAX_NUM_SEARCH_KEYWORDS}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="default_search_return_chars">{{ lang('DEFAULT_SEARCH_RETURN_CHARS') ~ lang('COLON') }}</label>
|
||||||
|
<br><span>{{ lang('DEFAULT_SEARCH_RETURN_CHARS_EXPLAIN') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd><input id="default_search_return_chars" name="config[default_search_return_chars]" type="number" value="{{ DEFAULT_SEARCH_RETURN_CHARS }}" min="0" max="9999"></dd>
|
||||||
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="search_store_results">{L_SEARCH_STORE_RESULTS}{L_COLON}</label><br /><span>{L_SEARCH_STORE_RESULTS_EXPLAIN}</span></dt>
|
<dt><label for="search_store_results">{L_SEARCH_STORE_RESULTS}{L_COLON}</label><br /><span>{L_SEARCH_STORE_RESULTS_EXPLAIN}</span></dt>
|
||||||
<dd><input id="search_store_results" type="number" min="0" max="999999" name="config[search_store_results]" value="{SEARCH_STORE_RESULTS}" /> {L_SECONDS}</dd>
|
<dd><input id="search_store_results" type="number" min="0" max="999999" name="config[search_store_results]" value="{SEARCH_STORE_RESULTS}" /> {L_SECONDS}</dd>
|
||||||
@@ -59,40 +66,47 @@
|
|||||||
|
|
||||||
<!-- END backend -->
|
<!-- END backend -->
|
||||||
|
|
||||||
<fieldset class="submit-buttons">
|
<fieldset>
|
||||||
<legend>{L_SUBMIT}</legend>
|
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
<p class="submit-buttons">
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||||
|
</p>
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- ELSEIF S_INDEX -->
|
<!-- ELSEIF S_INDEX -->
|
||||||
|
|
||||||
<script>
|
|
||||||
// <![CDATA[
|
|
||||||
/**
|
|
||||||
* Popup search progress bar
|
|
||||||
*/
|
|
||||||
function popup_progress_bar(progress_type)
|
|
||||||
{
|
|
||||||
close_waitscreen = 0;
|
|
||||||
// no scrollbars
|
|
||||||
popup('{UA_PROGRESS_BAR}&type=' + progress_type, 400, 240, '_index');
|
|
||||||
}
|
|
||||||
// ]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<h1>{L_ACP_SEARCH_INDEX}</h1>
|
<h1>{L_ACP_SEARCH_INDEX}</h1>
|
||||||
|
|
||||||
<!-- IF S_CONTINUE_INDEXING -->
|
<!-- IF S_CONTINUE_INDEXING -->
|
||||||
<p>{L_CONTINUE_EXPLAIN}</p>
|
<p>
|
||||||
|
{% if S_CONTINUE_INDEXING == 'create' %}
|
||||||
|
{{ lang('CONTINUE_INDEXING_EXPLAIN') }}
|
||||||
|
{% else %}
|
||||||
|
{{ lang('CONTINUE_DELETING_INDEX_EXPLAIN') }}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<form id="acp_search_continue" method="post" action="{U_CONTINUE_INDEXING}">
|
<form id="acp_search_continue" method="post" action="{U_CONTINUE_INDEXING}">
|
||||||
<fieldset class="submit-buttons">
|
<fieldset>
|
||||||
<legend>{L_SUBMIT}</legend>
|
<legend>{{ lang('CONTINUE_INDEXING') }}</legend>
|
||||||
<input class="button1" type="submit" id="continue" name="continue" value="{L_CONTINUE}" onclick="popup_progress_bar('{S_CONTINUE_INDEXING}');" />
|
{% if CONTINUE_PROGRESS %}
|
||||||
<input class="button2" type="submit" id="cancel" name="cancel" value="{L_CANCEL}" />
|
<div class="centered-text">
|
||||||
|
<br>
|
||||||
|
<progress
|
||||||
|
value="{{ CONTINUE_PROGRESS.VALUE }}"
|
||||||
|
max="{{ CONTINUE_PROGRESS.TOTAL }}"
|
||||||
|
style="height: 2em; width: 20em;"></progress><br>
|
||||||
|
{{ CONTINUE_PROGRESS.PERCENTAGE|number_format(2) ~ ' %' }}<br>
|
||||||
|
{{ lang('SEARCH_INDEX_PROGRESS', CONTINUE_PROGRESS.VALUE, CONTINUE_PROGRESS.REMAINING, CONTINUE_PROGRESS.TOTAL) }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||||
|
<input class="button2" type="submit" id="cancel" name="cancel" value="{L_CANCEL}" />
|
||||||
|
</p>
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
@@ -140,10 +154,10 @@
|
|||||||
<p class="quick">
|
<p class="quick">
|
||||||
<!-- IF backend.S_INDEXED -->
|
<!-- IF backend.S_INDEXED -->
|
||||||
<input type="hidden" name="action" value="delete" />
|
<input type="hidden" name="action" value="delete" />
|
||||||
<input class="button2" type="submit" value="{L_DELETE_INDEX}" onclick="popup_progress_bar('delete');" />
|
<input class="button2" type="submit" name="submit" value="{{ lang('DELETE_INDEX') }}" />
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
<input type="hidden" name="action" value="create" />
|
<input type="hidden" name="action" value="create" />
|
||||||
<input class="button2" type="submit" value="{L_CREATE_INDEX}" onclick="popup_progress_bar('create');" />
|
<input class="button2" type="submit" name="submit" value="{{ lang('CREATE_INDEX') }}" />
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
</p>
|
</p>
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
@@ -154,6 +168,24 @@
|
|||||||
|
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
|
<!-- ELSEIF S_INDEX_PROGRESS -->
|
||||||
|
<div class="successbox">
|
||||||
|
<h3>{{ INDEXING_TITLE }}</h3>
|
||||||
|
<p>
|
||||||
|
{{ INDEXING_EXPLAIN }}
|
||||||
|
{% if INDEXING_PROGRESS %}<br>{{ INDEXING_PROGRESS }}{% endif %}
|
||||||
|
{% if INDEXING_RATE %}<br>{{ INDEXING_RATE }}{% endif %}
|
||||||
|
{% if INDEXING_PROGRESS_BAR %}
|
||||||
|
<br>
|
||||||
|
<progress
|
||||||
|
value="{{ INDEXING_PROGRESS_BAR.VALUE }}"
|
||||||
|
max="{{ INDEXING_PROGRESS_BAR.TOTAL }}"
|
||||||
|
style="height: 2em; width: 20em;"></progress><br>
|
||||||
|
{{ INDEXING_PROGRESS_BAR.PERCENTAGE|number_format(2) ~ ' %' }}<br>
|
||||||
|
{{ lang('SEARCH_INDEX_PROGRESS', INDEXING_PROGRESS_BAR.VALUE, INDEXING_PROGRESS_BAR.REMAINING, INDEXING_PROGRESS_BAR.TOTAL) }}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- INCLUDE overall_footer.html -->
|
<!-- INCLUDE overall_footer.html -->
|
||||||
|
@@ -96,9 +96,10 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{L_STYLE_NAME}</th>
|
<th>{L_STYLE_NAME}</th>
|
||||||
<th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_PHPBB_VERSION}</th>
|
<th style="width: 10%; white-space: nowrap; text-align: center;">{{ lang('STYLE_VERSION') }}</th>
|
||||||
<!-- IF not STYLES_LIST_HIDE_COUNT --><th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_USED_BY}</th><!-- ENDIF -->
|
<th style="width: 10%; white-space: nowrap; text-align: center;">{L_STYLE_PHPBB_VERSION}</th>
|
||||||
<th width="25%" style="white-space: nowrap; text-align: center;">{L_ACTIONS}</th>
|
<!-- IF not STYLES_LIST_HIDE_COUNT --><th style="width: 10%; white-space: nowrap; text-align: center;">{L_STYLE_USED_BY}</th><!-- ENDIF -->
|
||||||
|
<th style="width: 25%; white-space: nowrap; text-align: center;">{L_ACTIONS}</th>
|
||||||
{STYLES_LIST_EXTRA}
|
{STYLES_LIST_EXTRA}
|
||||||
<th> </th>
|
<th> </th>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -130,6 +131,7 @@
|
|||||||
<span class="style-path"><br />{L_STYLE_PATH}{L_COLON} {styles_list.STYLE_PATH_FULL}</span>
|
<span class="style-path"><br />{L_STYLE_PATH}{L_COLON} {styles_list.STYLE_PATH_FULL}</span>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
</td>
|
</td>
|
||||||
|
<td class="{$ROW_CLASS} users">{{ styles_list.STYLE_VERSION }}</td>
|
||||||
<td class="{$ROW_CLASS} users">{styles_list.STYLE_PHPBB_VERSION}</td>
|
<td class="{$ROW_CLASS} users">{styles_list.STYLE_PHPBB_VERSION}</td>
|
||||||
<!-- IF not STYLES_LIST_HIDE_COUNT -->
|
<!-- IF not STYLES_LIST_HIDE_COUNT -->
|
||||||
<td class="{$ROW_CLASS} users">{styles_list.USERS}</td>
|
<td class="{$ROW_CLASS} users">{styles_list.USERS}</td>
|
||||||
@@ -144,7 +146,7 @@
|
|||||||
<!-- END actions -->
|
<!-- END actions -->
|
||||||
</td>
|
</td>
|
||||||
{styles_list.EXTRA}
|
{styles_list.EXTRA}
|
||||||
<td class="{$ROW_CLASS} mark" width="20">
|
<td class="{$ROW_CLASS} mark" style="width: 20px;">
|
||||||
<!-- IF styles_list.STYLE_ID -->
|
<!-- IF styles_list.STYLE_ID -->
|
||||||
{% if styles_list.STYLE_NAME !== 'prosilver' %}
|
{% if styles_list.STYLE_NAME !== 'prosilver' %}
|
||||||
<input class="checkbox" type="checkbox" name="ids[]" value="{styles_list.STYLE_ID}" />
|
<input class="checkbox" type="checkbox" name="ids[]" value="{styles_list.STYLE_ID}" />
|
||||||
|
@@ -137,9 +137,13 @@
|
|||||||
<td><a href="{group.U_EDIT_GROUP}">{group.GROUP_NAME}</a></td>
|
<td><a href="{group.U_EDIT_GROUP}">{group.GROUP_NAME}</a></td>
|
||||||
<td><!-- IF group.S_IS_MEMBER --><!-- IF group.S_NO_DEFAULT --><a href="{group.U_DEFAULT}">{L_GROUP_DEFAULT}</a><!-- ELSE --><strong>{L_GROUP_DEFAULT}</strong><!-- ENDIF --><!-- ELSEIF not group.S_IS_MEMBER and group.U_APPROVE --><a href="{group.U_APPROVE}">{L_GROUP_APPROVE}</a><!-- ELSE --> <!-- ENDIF --></td>
|
<td><!-- IF group.S_IS_MEMBER --><!-- IF group.S_NO_DEFAULT --><a href="{group.U_DEFAULT}">{L_GROUP_DEFAULT}</a><!-- ELSE --><strong>{L_GROUP_DEFAULT}</strong><!-- ENDIF --><!-- ELSEIF not group.S_IS_MEMBER and group.U_APPROVE --><a href="{group.U_APPROVE}">{L_GROUP_APPROVE}</a><!-- ELSE --> <!-- ENDIF --></td>
|
||||||
<td><!-- IF group.S_IS_MEMBER and not group.S_SPECIAL_GROUP --><a href="{group.U_DEMOTE_PROMOTE}">{group.L_DEMOTE_PROMOTE}</a><!-- ELSE --> <!-- ENDIF --></td>
|
<td><!-- IF group.S_IS_MEMBER and not group.S_SPECIAL_GROUP --><a href="{group.U_DEMOTE_PROMOTE}">{group.L_DEMOTE_PROMOTE}</a><!-- ELSE --> <!-- ENDIF --></td>
|
||||||
<td><a href="{group.U_DELETE}">{L_GROUP_DELETE}</a></td>
|
<td>{% if group.U_DELETE %}<a href="{{ group.U_DELETE }}">{{ lang('GROUP_DELETE') }}</a>{% endif %}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
<!-- BEGINELSE -->
|
||||||
|
<tr>
|
||||||
|
<td class="row3 centered-text" colspan="4">{{ lang('NO_GROUP') }}</td>
|
||||||
|
</tr>
|
||||||
<!-- END group -->
|
<!-- END group -->
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
<!-- BEGIN warn -->
|
<!-- BEGIN warn -->
|
||||||
<tr>
|
<tr>
|
||||||
<td>{warn.USERNAME}</td>
|
<td>{warn.USERNAME}</td>
|
||||||
<td style="text-align: center; nowrap: nowrap;">{warn.DATE}</td>
|
<td style="text-align: center; white-space: nowrap;">{warn.DATE}</td>
|
||||||
<td>{warn.ACTION}</td>
|
<td>{warn.ACTION}</td>
|
||||||
<td style="text-align: center;"><input type="checkbox" class="radio" name="mark[]" value="{warn.ID}" /></td>
|
<td style="text-align: center;"><input type="checkbox" class="radio" name="mark[]" value="{warn.ID}" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -728,8 +728,20 @@ td {
|
|||||||
border-collapse: separate;
|
border-collapse: separate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table2 {
|
||||||
|
display: inline-block;
|
||||||
|
border-spacing: 1px;
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lside {
|
||||||
|
display: flex;
|
||||||
|
align-items: stretch;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.tabled {
|
.tabled {
|
||||||
width: 25%;
|
width: 1%;
|
||||||
}
|
}
|
||||||
|
|
||||||
dt#color_palette_placeholder table {
|
dt#color_palette_placeholder table {
|
||||||
@@ -2053,6 +2065,8 @@ fieldset.permissions .padding {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.permissions-category ul {
|
.permissions-category ul {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
@@ -2106,7 +2120,6 @@ fieldset.permissions .padding {
|
|||||||
|
|
||||||
.permissions-category .activetab a span.tabbg {
|
.permissions-category .activetab a span.tabbg {
|
||||||
background-position: 100% 0;
|
background-position: 100% 0;
|
||||||
padding-bottom: 7px;
|
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2301,6 +2314,10 @@ fieldset.permissions .padding {
|
|||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.permissions-category ul {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.permissions-category a, .permissions-category a span.tabbg {
|
.permissions-category a, .permissions-category a span.tabbg {
|
||||||
display: block;
|
display: block;
|
||||||
float: none !important;
|
float: none !important;
|
||||||
@@ -2627,7 +2644,7 @@ fieldset.permissions .padding {
|
|||||||
.send-stats-tile h2 {
|
.send-stats-tile h2 {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-bottom: 1em;
|
padding-bottom: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.send-stats-tile i {
|
.send-stats-tile i {
|
||||||
@@ -2721,4 +2738,29 @@ fieldset.permissions .padding {
|
|||||||
height: 1em;
|
height: 1em;
|
||||||
width: 1em;
|
width: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.acp-icon {
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
/* stylelint-enable declaration-property-unit-whitelist */
|
/* stylelint-enable declaration-property-unit-whitelist */
|
||||||
|
|
||||||
|
.acp-icon-move-up,
|
||||||
|
.acp-icon-move-down {
|
||||||
|
color: #4ba5de;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acp-icon-settings {
|
||||||
|
color: #62c046;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acp-icon-delete {
|
||||||
|
color: #d74558;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acp-icon-resync {
|
||||||
|
color: #f69934;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acp-icon-disabled {
|
||||||
|
color: #d0d0d0;
|
||||||
|
}
|
||||||
|
@@ -169,7 +169,7 @@ function parse_document(container)
|
|||||||
ul = $this.children(),
|
ul = $this.children(),
|
||||||
tabs = ul.children().not('[data-skip-responsive]'),
|
tabs = ul.children().not('[data-skip-responsive]'),
|
||||||
links = tabs.children('a'),
|
links = tabs.children('a'),
|
||||||
item = ul.append('<li class="tab responsive-tab" style="display:none;"><a href="javascript:void(0);" class="responsive-tab-link"> </a><div class="dropdown tab-dropdown" style="display: none;"><div class="pointer"><div class="pointer-inner" /></div><ul class="dropdown-contents" /></div></li>').find('li.responsive-tab'),
|
item = ul.append('<li class="tab responsive-tab" style="display:none;"><a href="javascript:void(0);" class="responsive-tab-link"> </a><div class="dropdown tab-dropdown" style="display: none;"><div class="pointer"><div class="pointer-inner"></div></div><ul class="dropdown-contents" /></div></li>').find('li.responsive-tab'),
|
||||||
menu = item.find('.dropdown-contents'),
|
menu = item.find('.dropdown-contents'),
|
||||||
maxHeight = 0,
|
maxHeight = 0,
|
||||||
lastWidth = false,
|
lastWidth = false,
|
||||||
@@ -228,64 +228,6 @@ 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
|
* Run onload functions
|
||||||
*/
|
*/
|
||||||
@@ -312,5 +254,10 @@ function hide_enabled_header_if_empty() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('#configlist').closest('.send-stats-data-row').addClass('send-stats-data-hidden');
|
$('#configlist').closest('.send-stats-data-row').addClass('send-stats-data-hidden');
|
||||||
|
|
||||||
|
// Do not underline actions icons on hover (could not be done via CSS)
|
||||||
|
$('.actions a:has(i.acp-icon)').mouseover(function () {
|
||||||
|
$(this).css("text-decoration", "none");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* global phpbb */
|
/* global phpbb, statsData */
|
||||||
|
|
||||||
(function($) { // Avoid conflicts with other libraries
|
(function($) { // Avoid conflicts with other libraries
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ phpbb.prepareSendStats = function () {
|
|||||||
var $sendStatisticsSuccess = $('<input />', {
|
var $sendStatisticsSuccess = $('<input />', {
|
||||||
type: 'hidden',
|
type: 'hidden',
|
||||||
name: 'send_statistics_response',
|
name: 'send_statistics_response',
|
||||||
value: res
|
value: JSON.stringify(res)
|
||||||
});
|
});
|
||||||
$sendStatisticsSuccess.appendTo('p.submit-buttons');
|
$sendStatisticsSuccess.appendTo('p.submit-buttons');
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ phpbb.prepareSendStats = function () {
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
url: $this.attr('data-ajax-action').replace('&', '&'),
|
url: $this.attr('data-ajax-action').replace('&', '&'),
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: 'systemdata=' + encodeURIComponent($this.find('input[name=systemdata]').val()),
|
data: statsData,
|
||||||
success: returnHandler,
|
success: returnHandler,
|
||||||
error: errorHandler,
|
error: errorHandler,
|
||||||
cache: false
|
cache: false
|
||||||
@@ -157,34 +157,6 @@ 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
|
* Handler for submitting permissions form in chunks
|
||||||
* This call will submit permissions forms in chunks of 5 fieldsets.
|
* This call will submit permissions forms in chunks of 5 fieldsets.
|
||||||
@@ -201,7 +173,9 @@ function submitPermissions() {
|
|||||||
var permissionSubmitSize = 0,
|
var permissionSubmitSize = 0,
|
||||||
permissionRequestCount = 0,
|
permissionRequestCount = 0,
|
||||||
forumIds = [],
|
forumIds = [],
|
||||||
permissionSubmitFailed = false;
|
permissionSubmitFailed = false,
|
||||||
|
clearIndicator = true,
|
||||||
|
$loadingIndicator;
|
||||||
|
|
||||||
if ($submitAllButton !== $submitButton) {
|
if ($submitAllButton !== $submitButton) {
|
||||||
fieldsetList = $form.find('fieldset#' + $submitButton.closest('fieldset.permissions').id);
|
fieldsetList = $form.find('fieldset#' + $submitButton.closest('fieldset.permissions').id);
|
||||||
@@ -235,6 +209,8 @@ function submitPermissions() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$loadingIndicator = phpbb.loadingIndicator();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler for submitted permissions form chunk
|
* Handler for submitted permissions form chunk
|
||||||
*
|
*
|
||||||
@@ -250,6 +226,8 @@ function submitPermissions() {
|
|||||||
} else if (!permissionSubmitFailed && res.S_USER_NOTICE) {
|
} else if (!permissionSubmitFailed && res.S_USER_NOTICE) {
|
||||||
// Display success message at the end of submitting the form
|
// Display success message at the end of submitting the form
|
||||||
if (permissionRequestCount >= permissionSubmitSize) {
|
if (permissionRequestCount >= permissionSubmitSize) {
|
||||||
|
clearIndicator = true;
|
||||||
|
|
||||||
var $alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
var $alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
||||||
var $alertBoxLink = $alert.find('p.alert_text > a');
|
var $alertBoxLink = $alert.find('p.alert_text > a');
|
||||||
|
|
||||||
@@ -299,6 +277,17 @@ function submitPermissions() {
|
|||||||
$form.submit();
|
$form.submit();
|
||||||
}, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds
|
}, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Still more forms to submit, so do not clear indicator
|
||||||
|
clearIndicator = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clearIndicator) {
|
||||||
|
phpbb.clearLoadingTimeout();
|
||||||
|
|
||||||
|
if ($loadingIndicator) {
|
||||||
|
$loadingIndicator.fadeOut(phpbb.alertTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
<a id="maincontent"></a>
|
<a id="maincontent"></a>
|
||||||
|
|
||||||
|
|
||||||
<a href="<!-- IF U_LIST -->{U_LIST}<!-- ELSE -->{U_ACTION}<!-- ENDIF -->" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
<a href="<!-- IF U_LIST -->{U_LIST}<!-- ELSE -->{U_ACTION}<!-- ENDIF -->" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||||
|
|
||||||
<h1>{L_QUESTIONS}</h1>
|
<h1>{L_QUESTIONS}</h1>
|
||||||
@@ -25,15 +24,18 @@
|
|||||||
<td style="vertical-align: top; width: 50px; text-align: center; white-space: nowrap;">{L_ACTION}</td>
|
<td style="vertical-align: top; width: 50px; text-align: center; white-space: nowrap;">{L_ACTION}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
<!-- BEGIN questions -->
|
{% for question in questions %}
|
||||||
<tr>
|
<tr>
|
||||||
<td style="text-align: left;">{questions.QUESTION_TEXT}</td>
|
{# RTL is already managed by CSS #}
|
||||||
<td style="text-align: center;">{questions.QUESTION_LANG}</td>
|
<td>{{ question.QUESTION_TEXT }}</td>
|
||||||
<td style="text-align: center;"><a href="{questions.U_EDIT}">{ICON_EDIT}</a> <a href="{questions.U_DELETE}">{ICON_DELETE}</a></td>
|
<td style="text-align: center;">{{ question.QUESTION_LANG }}</td>
|
||||||
</tr>
|
<td style="text-align: center;"><a href="{{ question.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ question.U_DELETE }}">{{ ICON_DELETE }}</a></td>
|
||||||
<!-- END questions -->
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<input class="button1" type="submit" name="add" value="{L_ADD}" />
|
<input class="button1" type="submit" name="add" value="{L_ADD}" />
|
||||||
|
@@ -21,6 +21,20 @@
|
|||||||
<dd><input id="recaptcha_privkey" name="recaptcha_privkey" value="{RECAPTCHA_PRIVKEY}" size="50" type="text" /></dd>
|
<dd><input id="recaptcha_privkey" name="recaptcha_privkey" value="{RECAPTCHA_PRIVKEY}" size="50" type="text" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label>{{ lang('RECAPTCHA_V3_DOMAIN') ~ lang('COLON') }}</label>
|
||||||
|
<br><span>{{ lang('RECAPTCHA_V3_DOMAIN_EXPLAIN') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
{% for domain in RECAPTCHA_V2_DOMAINS %}
|
||||||
|
<label>
|
||||||
|
<input class="radio" name="recaptcha_v2_domain" type="radio" value="{{ domain }}"{{ domain == RECAPTCHA_V2_DOMAIN ? ' checked' }}>
|
||||||
|
<span>{{ domain }}</span>
|
||||||
|
</label>
|
||||||
|
{% endfor %}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
15
phpBB/adm/style/captcha_recaptcha_v3.html
Normal file
15
phpBB/adm/style/captcha_recaptcha_v3.html
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{% if S_RECAPTCHA_AVAILABLE %}
|
||||||
|
<dl>
|
||||||
|
<dt> </dt>
|
||||||
|
<dd>
|
||||||
|
<noscript>
|
||||||
|
<div class="warningbox">{{ lang('RECAPTCHA_NOSCRIPT') }}</div>
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
{{ lang('RECAPTCHA_INVISIBLE') }}
|
||||||
|
<script src="{{ U_RECAPTCHA_SCRIPT }}" async defer></script>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% else %}
|
||||||
|
{{ lang('RECAPTCHA_NOT_AVAILABLE') }}
|
||||||
|
{% endif %}
|
108
phpBB/adm/style/captcha_recaptcha_v3_acp.html
Normal file
108
phpBB/adm/style/captcha_recaptcha_v3_acp.html
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
{% include 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a id="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('ACP_VC_SETTINGS') }}</h1>
|
||||||
|
<p>{{ lang('ACP_VC_SETTINGS_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
<form id="acp_captcha" method="post" action="{{ U_ACTION }}">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('GENERAL_OPTIONS') }}</legend>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="recaptcha_v3_key">{{ lang('RECAPTCHA_PUBLIC') ~ lang('COLON') }}</label>
|
||||||
|
<br><span>{{ lang('RECAPTCHA_V3_PUBLIC_EXPLAIN') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<input id="recaptcha_v3_key" name="recaptcha_v3_key" type="text" value="{{ RECAPTCHA_V3_KEY }}" size="50">
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="recaptcha_v3_secret">{{ lang('RECAPTCHA_PRIVATE') ~ lang('COLON') }}</label>
|
||||||
|
<br><span>{{ lang('RECAPTCHA_V3_PRIVATE_EXPLAIN') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<input id="recaptcha_v3_secret" name="recaptcha_v3_secret" type="text" value="{{ RECAPTCHA_V3_SECRET }}" size="50">
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label>{{ lang('RECAPTCHA_V3_DOMAIN') ~ lang('COLON') }}</label>
|
||||||
|
<br><span>{{ lang('RECAPTCHA_V3_DOMAIN_EXPLAIN') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
{% for domain in RECAPTCHA_V3_DOMAINS %}
|
||||||
|
<label>
|
||||||
|
<input class="radio" name="recaptcha_v3_domain" type="radio" value="{{ domain }}"{{ domain == RECAPTCHA_V3_DOMAIN ? ' checked' }}>
|
||||||
|
<span>{{ domain }}</span>
|
||||||
|
</label>
|
||||||
|
{% endfor %}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label>{{ lang('RECAPTCHA_V3_METHOD') ~ lang('COLON') }}</label>
|
||||||
|
<br><span>{{ lang('RECAPTCHA_V3_METHOD_EXPLAIN') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
{% for method, available in RECAPTCHA_V3_METHODS %}
|
||||||
|
<label>
|
||||||
|
{% set checked = method == RECAPTCHA_V3_METHOD ? ' checked' %}
|
||||||
|
{% set disabled = not available ? ' disabled' %}
|
||||||
|
|
||||||
|
<input class="radio" name="recaptcha_v3_method" type="radio" value="{{ method }}"{{ checked ~ disabled }}>
|
||||||
|
<span>{{ lang('RECAPTCHA_V3_METHOD_' ~ method|upper) }}</span>
|
||||||
|
</label>
|
||||||
|
{% endfor %}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('RECAPTCHA_V3_THRESHOLDS') }}</legend>
|
||||||
|
<p>{{ lang('RECAPTCHA_V3_THRESHOLDS_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% for threshold in thresholds %}
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="{{ threshold.key }}">{{ lang(threshold.key|upper) ~ lang('COLON') }}</label>
|
||||||
|
{% if lang_defined(threshold.key|upper ~ '_EXPLAIN') %}
|
||||||
|
<br><span>{{ lang(threshold.key|upper ~ '_EXPLAIN') }}</span>
|
||||||
|
{% endif %}
|
||||||
|
</dt>
|
||||||
|
<dd><input id="{{ threshold.key }}" name="{{ threshold.key }}" type="number" value="{{ threshold.value }}" min="0" max="1" step="0.1"></dd>
|
||||||
|
</dl>
|
||||||
|
{% endfor %}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('PREVIEW') }}</legend>
|
||||||
|
|
||||||
|
{% if PREVIEW %}
|
||||||
|
<div class="successbox">
|
||||||
|
<h3>{{ lang('WARNING') }}</h3>
|
||||||
|
<p>{{ lang('CAPTCHA_PREVIEW_MSG') }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% include CAPTCHA_PREVIEW %}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('ACP_SUBMIT_CHANGES') }}</legend>
|
||||||
|
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" id="submit" name="submit" type="submit" value="{{ lang('SUBMIT') }}">
|
||||||
|
<input class="button2" id="reset" name="reset" type="reset" value="{{ lang('RESET') }}">
|
||||||
|
|
||||||
|
<input name="select_captcha" type="hidden" value="{{ CAPTCHA_NAME }}">
|
||||||
|
<input name="configure" type="hidden" value="1">
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% include 'overall_footer.html' %}
|
@@ -23,7 +23,7 @@ installLang = {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script src="{T_JQUERY_LINK}"></script>
|
<script src="{T_JQUERY_LINK}"></script>
|
||||||
<!-- 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 -->
|
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.1.min.js">\x3C/script>');</script><!-- ENDIF -->
|
||||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||||
<!-- INCLUDEJS admin.js -->
|
<!-- INCLUDEJS admin.js -->
|
||||||
{$SCRIPTS}
|
{$SCRIPTS}
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
<div id="phpbb_alert" class="phpbb_alert" data-l-err="{L_ERROR}" data-l-timeout-processing-req="{L_TIMEOUT_PROCESSING_REQ}">
|
<div id="phpbb_alert" class="phpbb_alert" data-l-err="{L_ERROR}" data-l-timeout-processing-req="{L_TIMEOUT_PROCESSING_REQ}">
|
||||||
<a href="#" class="alert_close"></a>
|
<a href="#" class="alert_close"></a>
|
||||||
<h3 class="alert_title"></h3><p class="alert_text"></p>
|
<h3 class="alert_title"> </h3><p class="alert_text"></p>
|
||||||
</div>
|
</div>
|
||||||
<div id="phpbb_confirm" class="phpbb_alert">
|
<div id="phpbb_confirm" class="phpbb_alert">
|
||||||
<a href="#" class="alert_close"></a>
|
<a href="#" class="alert_close"></a>
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="{T_JQUERY_LINK}"></script>
|
<script src="{T_JQUERY_LINK}"></script>
|
||||||
<!-- 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 -->
|
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.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>
|
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||||
<!-- INCLUDEJS ajax.js -->
|
<!-- INCLUDEJS ajax.js -->
|
||||||
<!-- INCLUDEJS admin.js -->
|
<!-- INCLUDEJS admin.js -->
|
||||||
@@ -42,5 +42,7 @@
|
|||||||
<!-- EVENT acp_overall_footer_after -->
|
<!-- EVENT acp_overall_footer_after -->
|
||||||
{$SCRIPTS}
|
{$SCRIPTS}
|
||||||
|
|
||||||
|
{% EVENT acp_overall_footer_body_after %}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -12,10 +12,10 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
// <![CDATA[
|
// <![CDATA[
|
||||||
var jump_page = '{LA_JUMP_PAGE}{L_COLON}';
|
var jump_page = "{{ lang_js('JUMP_PAGE') ~ lang_js('COLON') }}";
|
||||||
var on_page = '{CURRENT_PAGE}';
|
var on_page = '{{ CURRENT_PAGE }}';
|
||||||
var per_page = '{PER_PAGE}';
|
var per_page = '{{ PER_PAGE }}';
|
||||||
var base_url = '{BASE_URL|e('js')}';
|
var base_url = "{{ BASE_URL|e('js') }}";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Jump to page
|
* Jump to page
|
||||||
|
@@ -269,8 +269,14 @@ function mark_one_option(id, field_name, s) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset role dropdown field to Select role... if an option gets changed
|
* (Re)set the permission role dropdown.
|
||||||
*/
|
*
|
||||||
|
* Try and match the set permissions to an existing role.
|
||||||
|
* Otherwise reset the dropdown to "Select a role.."
|
||||||
|
*
|
||||||
|
* @param {string} id The fieldset identifier
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
function reset_role(id) {
|
function reset_role(id) {
|
||||||
var t = document.getElementById(id);
|
var t = document.getElementById(id);
|
||||||
|
|
||||||
@@ -278,18 +284,37 @@ function reset_role(id) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
t.options[0].selected = true;
|
// Before resetting the role dropdown, try and match any permission role
|
||||||
|
var parent = t.parentNode,
|
||||||
|
roleId = match_role_settings(id.replace('role', 'perm')),
|
||||||
|
text = no_role_assigned,
|
||||||
|
index = 0;
|
||||||
|
|
||||||
var parent = t.parentNode;
|
// If a role permissions was matched, grab that option's value and index
|
||||||
parent.querySelector('span.dropdown-trigger').innerText = no_role_assigned;
|
if (roleId) {
|
||||||
parent.querySelector('input[data-name^=role]').value = '0';
|
for (var i = 0; i < t.options.length; i++) {
|
||||||
|
if (parseInt(t.options[i].value, 10) === roleId) {
|
||||||
|
text = t.options[i].text;
|
||||||
|
index = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the select's value and selected index
|
||||||
|
t.value = roleId;
|
||||||
|
t.options[index].selected = true;
|
||||||
|
|
||||||
|
// Update the dropdown trigger to show the new value
|
||||||
|
parent.querySelector('span.dropdown-trigger').innerText = text;
|
||||||
|
parent.querySelector('input[data-name^=role]').value = roleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load role and set options accordingly
|
* Load role and set options accordingly
|
||||||
*/
|
*/
|
||||||
function set_role_settings(role_id, target_id) {
|
function set_role_settings(role_id, target_id) {
|
||||||
settings = role_options[role_id];
|
var settings = role_options[role_id];
|
||||||
|
|
||||||
if (!settings) {
|
if (!settings) {
|
||||||
return;
|
return;
|
||||||
@@ -302,3 +327,51 @@ function set_role_settings(role_id, target_id) {
|
|||||||
mark_one_option(target_id, r, (settings[r] === 1) ? 'y' : 'n');
|
mark_one_option(target_id, r, (settings[r] === 1) ? 'y' : 'n');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Match the set permissions against the available roles.
|
||||||
|
*
|
||||||
|
* @param {string} id The parent fieldset identifier
|
||||||
|
* @return {number} The permission role identifier
|
||||||
|
*/
|
||||||
|
function match_role_settings(id) {
|
||||||
|
var fieldset = document.getElementById(id),
|
||||||
|
radios = fieldset.getElementsByTagName('input'),
|
||||||
|
set = {};
|
||||||
|
|
||||||
|
// Iterate over all the radio buttons
|
||||||
|
for (var i = 0; i < radios.length; i++) {
|
||||||
|
var matches = radios[i].id.match(/setting\[\d+]\[\d+]\[([a-z_]+)]/);
|
||||||
|
|
||||||
|
// Make sure the name attribute matches, the radio is checked and it is not the "No" (-1) value.
|
||||||
|
if (matches !== null && radios[i].checked && radios[i].value !== '-1') {
|
||||||
|
set[matches[1]] = parseInt(radios[i].value, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort and stringify the 'set permissions' object
|
||||||
|
set = sort_and_stringify(set);
|
||||||
|
|
||||||
|
// Iterate over the available role options and return the first match
|
||||||
|
for (var r in role_options)
|
||||||
|
{
|
||||||
|
if (sort_and_stringify(role_options[r]) === set) {
|
||||||
|
return parseInt(r, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort and stringify an Object so it can be easily compared against another object.
|
||||||
|
*
|
||||||
|
* @param {object} obj The object to sort (by key) and stringify
|
||||||
|
* @return {string} The sorted object as a string
|
||||||
|
*/
|
||||||
|
function sort_and_stringify(obj) {
|
||||||
|
return JSON.stringify(Object.keys(obj).sort().reduce(function (result, key) {
|
||||||
|
result[key] = obj[key];
|
||||||
|
return result;
|
||||||
|
}, {}));
|
||||||
|
}
|
||||||
|
@@ -17,11 +17,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="{T_JQUERY_LINK}"></script>
|
<script src="{T_JQUERY_LINK}"></script>
|
||||||
<!-- 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 -->
|
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.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>
|
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||||
|
|
||||||
<!-- EVENT acp_simple_footer_after -->
|
<!-- EVENT acp_simple_footer_after -->
|
||||||
{$SCRIPTS}
|
{$SCRIPTS}
|
||||||
|
|
||||||
|
{% EVENT acp_simple_footer_body_after %}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -218,23 +218,6 @@ $(function() {
|
|||||||
|
|
||||||
// Prepare dropdown
|
// Prepare dropdown
|
||||||
phpbb.prepareRolesDropdown();
|
phpbb.prepareRolesDropdown();
|
||||||
|
|
||||||
// Reset role drop-down on modifying permissions in advanced tab
|
|
||||||
$('div.permissions-switch > a').on('click', function () {
|
|
||||||
$.each($('input[type=radio][name^="setting["]'), function () {
|
|
||||||
var $this = $(this);
|
|
||||||
$this.on('click', function () {
|
|
||||||
var $rolesOptions = $this.closest('fieldset.permissions').find('.roles-options'),
|
|
||||||
rolesSelect = $rolesOptions.find('select > option')[0];
|
|
||||||
|
|
||||||
// Set selected setting
|
|
||||||
$rolesOptions.children('span')
|
|
||||||
.text(rolesSelect.text);
|
|
||||||
$rolesOptions.children('input[type=hidden]')
|
|
||||||
.val(rolesSelect.value);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery); // Avoid conflicts with other libraries
|
})(jQuery); // Avoid conflicts with other libraries
|
||||||
|
@@ -948,7 +948,10 @@ phpbb.timezonePreselectSelect = function(forceSelector) {
|
|||||||
var minutes = offset % 60;
|
var minutes = offset % 60;
|
||||||
var hours = (offset - minutes) / 60;
|
var hours = (offset - minutes) / 60;
|
||||||
|
|
||||||
if (hours < 10) {
|
if (hours === 0) {
|
||||||
|
hours = '00';
|
||||||
|
sign = '+';
|
||||||
|
} else if (hours < 10) {
|
||||||
hours = '0' + hours.toString();
|
hours = '0' + hours.toString();
|
||||||
} else {
|
} else {
|
||||||
hours = hours.toString();
|
hours = hours.toString();
|
||||||
@@ -1745,49 +1748,81 @@ phpbb.lazyLoadAvatars = function loadAvatars() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var recaptchaForm = $('.g-recaptcha').parents('form');
|
phpbb.recaptcha = {
|
||||||
var submitButton = null;
|
button: null,
|
||||||
var programaticallySubmitted = false;
|
ready: false,
|
||||||
|
|
||||||
phpbb.recaptchaOnLoad = function () {
|
token: $('input[name="recaptcha_token"]'),
|
||||||
// Listen to submit buttons in order to know which one was pressed
|
form: $('.g-recaptcha').parents('form'),
|
||||||
$('input[type="submit"]').each(function () {
|
v3: $('[data-recaptcha-v3]'),
|
||||||
$(this).on('click', function () {
|
|
||||||
submitButton = this;
|
load: function() {
|
||||||
|
phpbb.recaptcha.bindButton();
|
||||||
|
phpbb.recaptcha.bindForm();
|
||||||
|
},
|
||||||
|
bindButton: function() {
|
||||||
|
phpbb.recaptcha.form.find('input[type="submit"]').on('click', function() {
|
||||||
|
// Listen to all the submit buttons for the form that has reCAPTCHA protection,
|
||||||
|
// and store it so we can click the exact same button later on when we are ready.
|
||||||
|
phpbb.recaptcha.button = this;
|
||||||
});
|
});
|
||||||
});
|
},
|
||||||
|
bindForm: function() {
|
||||||
|
phpbb.recaptcha.form.on('submit', function(e) {
|
||||||
|
// If ready is false, it means the user pressed a submit button.
|
||||||
|
// And the form was not submitted by us, after the token was loaded.
|
||||||
|
if (!phpbb.recaptcha.ready) {
|
||||||
|
// If version 3 is used, we need to make a different execution,
|
||||||
|
// including the action and the site key.
|
||||||
|
if (phpbb.recaptcha.v3.length) {
|
||||||
|
grecaptcha.execute(
|
||||||
|
phpbb.recaptcha.v3.data('recaptcha-v3'),
|
||||||
|
{action: phpbb.recaptcha.v3.val()}
|
||||||
|
).then(function(token) {
|
||||||
|
// Place the token inside the form
|
||||||
|
phpbb.recaptcha.token.val(token);
|
||||||
|
|
||||||
recaptchaForm.on('submit', function (e) {
|
// And now we submit the form.
|
||||||
if (!programaticallySubmitted) {
|
phpbb.recaptcha.submitForm();
|
||||||
grecaptcha.execute();
|
});
|
||||||
e.preventDefault();
|
} else {
|
||||||
}
|
// Regular version 2 execution
|
||||||
});
|
grecaptcha.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
phpbb.recaptchaOnSubmit = function () {
|
// Do not submit the form
|
||||||
programaticallySubmitted = true;
|
e.preventDefault();
|
||||||
// If concrete button was clicked (e.g. preview instead of submit),
|
}
|
||||||
// let's trigger the same action
|
});
|
||||||
if (submitButton) {
|
},
|
||||||
submitButton.click();
|
submitForm: function() {
|
||||||
} else {
|
// Now we are ready, so set it to true.
|
||||||
// Rename input[name="submit"] so that we can submit the form
|
// so the 'submit' event doesn't run multiple times.
|
||||||
if (typeof recaptchaForm.submit !== 'function') {
|
phpbb.recaptcha.ready = true;
|
||||||
recaptchaForm.submit.name = 'submit_btn';
|
|
||||||
|
if (phpbb.recaptcha.button) {
|
||||||
|
// If there was a specific button pressed initially, trigger the same button
|
||||||
|
phpbb.recaptcha.button.click();
|
||||||
|
} else {
|
||||||
|
if (typeof phpbb.recaptcha.form.submit !== 'function') {
|
||||||
|
// Rename input[name="submit"] so that we can submit the form
|
||||||
|
phpbb.recaptcha.form.submit.name = 'submit_btn';
|
||||||
|
}
|
||||||
|
|
||||||
|
phpbb.recaptcha.form.submit();
|
||||||
}
|
}
|
||||||
recaptchaForm.submit();
|
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
// reCAPTCHA doesn't accept callback functions nested inside objects
|
// reCAPTCHA v2 doesn't accept callback functions nested inside objects
|
||||||
// so we need to make this helper functions here
|
// so we need to make this helper functions here
|
||||||
window.phpbbRecaptchaOnLoad = function() {
|
window.phpbbRecaptchaOnLoad = function() {
|
||||||
phpbb.recaptchaOnLoad();
|
phpbb.recaptcha.load();
|
||||||
}
|
};
|
||||||
|
|
||||||
window.phpbbRecaptchaOnSubmit = function() {
|
window.phpbbRecaptchaOnSubmit = function() {
|
||||||
phpbb.recaptchaOnSubmit();
|
phpbb.recaptcha.submitForm();
|
||||||
}
|
};
|
||||||
|
|
||||||
$(window).on('load', phpbb.lazyLoadAvatars);
|
$(window).on('load', phpbb.lazyLoadAvatars);
|
||||||
|
|
||||||
@@ -1795,6 +1830,11 @@ $(window).on('load', phpbb.lazyLoadAvatars);
|
|||||||
* Apply code editor to all textarea elements with data-bbcode attribute
|
* Apply code editor to all textarea elements with data-bbcode attribute
|
||||||
*/
|
*/
|
||||||
$(function() {
|
$(function() {
|
||||||
|
// reCAPTCHA v3 needs to be initialized
|
||||||
|
if (phpbb.recaptcha.v3.length) {
|
||||||
|
phpbb.recaptcha.load();
|
||||||
|
}
|
||||||
|
|
||||||
$('textarea[data-bbcode]').each(function() {
|
$('textarea[data-bbcode]').each(function() {
|
||||||
phpbb.applyCodeEditor(this);
|
phpbb.applyCodeEditor(this);
|
||||||
});
|
});
|
||||||
|
2
phpBB/assets/javascript/jquery-3.4.1.min.js
vendored
2
phpBB/assets/javascript/jquery-3.4.1.min.js
vendored
File diff suppressed because one or more lines are too long
2
phpBB/assets/javascript/jquery-3.7.1.min.js
vendored
Normal file
2
phpBB/assets/javascript/jquery-3.7.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
phpBB/assets/plupload/plupload.full.min.js
vendored
4
phpBB/assets/plupload/plupload.full.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -84,7 +84,7 @@ $user = $phpbb_container->get('user');
|
|||||||
$user->data['user_id'] = ANONYMOUS;
|
$user->data['user_id'] = ANONYMOUS;
|
||||||
$user->ip = '127.0.0.1';
|
$user->ip = '127.0.0.1';
|
||||||
|
|
||||||
$application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $language);
|
$application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $language, $config);
|
||||||
$application->setDispatcher($phpbb_container->get('dispatcher'));
|
$application->setDispatcher($phpbb_container->get('dispatcher'));
|
||||||
$application->register_container_commands($phpbb_container->get('console.command_collection'));
|
$application->register_container_commands($phpbb_container->get('console.command_collection'));
|
||||||
$application->run($input);
|
$application->run($input);
|
||||||
|
29
phpBB/cache/.htaccess
vendored
29
phpBB/cache/.htaccess
vendored
@@ -1,4 +1,25 @@
|
|||||||
<Files *>
|
# With Apache 2.4 the "Order, Deny" syntax has been deprecated and moved from
|
||||||
Order Allow,Deny
|
# module mod_authz_host to a new module called mod_access_compat (which may be
|
||||||
Deny from All
|
# disabled) and a new "Require" syntax has been introduced to mod_authz_core.
|
||||||
</Files>
|
# We could just conditionally provide both versions, but unfortunately Apache
|
||||||
|
# does not explicitly tell us its version if the module mod_version is not
|
||||||
|
# available. In this case, we check for the availability of module
|
||||||
|
# mod_authz_core (which should be on 2.4 or higher only) as a best guess.
|
||||||
|
<IfModule mod_version.c>
|
||||||
|
<IfVersion < 2.4>
|
||||||
|
Order Allow,Deny
|
||||||
|
Deny from All
|
||||||
|
</IfVersion>
|
||||||
|
<IfVersion >= 2.4>
|
||||||
|
Require all denied
|
||||||
|
</IfVersion>
|
||||||
|
</IfModule>
|
||||||
|
<IfModule !mod_version.c>
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Order Allow,Deny
|
||||||
|
Deny from All
|
||||||
|
</IfModule>
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
</IfModule>
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Minimum Requirement: PHP 7.1.0
|
* Minimum Requirement: PHP 7.2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('IN_PHPBB'))
|
if (!defined('IN_PHPBB'))
|
||||||
@@ -51,20 +51,10 @@ if (!defined('PHPBB_INSTALLED'))
|
|||||||
$server_port = 443;
|
$server_port = 443;
|
||||||
}
|
}
|
||||||
|
|
||||||
$script_name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF');
|
$script_path = phpbb_get_install_redirect($phpbb_root_path, $phpEx);
|
||||||
if (!$script_name)
|
|
||||||
{
|
|
||||||
$script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI');
|
|
||||||
}
|
|
||||||
|
|
||||||
// $phpbb_root_path accounts for redirects from e.g. /adm
|
|
||||||
$script_path = trim(dirname($script_name)) . '/' . $phpbb_root_path . 'install/app.' . $phpEx;
|
|
||||||
// Replace any number of consecutive backslashes and/or slashes with a single slash
|
|
||||||
// (could happen on some proxy setups and/or Windows servers)
|
|
||||||
$script_path = preg_replace('#[\\\\/]{2,}#', '/', $script_path);
|
|
||||||
|
|
||||||
// Eliminate . and .. from the path
|
// Eliminate . and .. from the path
|
||||||
require($phpbb_root_path . 'phpbb/filesystem.' . $phpEx);
|
require($phpbb_root_path . 'phpbb/filesystem/filesystem.' . $phpEx);
|
||||||
$phpbb_filesystem = new phpbb\filesystem\filesystem();
|
$phpbb_filesystem = new phpbb\filesystem\filesystem();
|
||||||
$script_path = $phpbb_filesystem->clean_path($script_path);
|
$script_path = $phpbb_filesystem->clean_path($script_path);
|
||||||
|
|
||||||
@@ -96,6 +86,8 @@ include($phpbb_root_path . 'includes/functions_compatibility.' . $phpEx);
|
|||||||
require($phpbb_root_path . 'includes/constants.' . $phpEx);
|
require($phpbb_root_path . 'includes/constants.' . $phpEx);
|
||||||
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
||||||
|
|
||||||
|
// Registered before building the container so the development environment stay capable of intercepting
|
||||||
|
// the container builder exceptions.
|
||||||
if (PHPBB_ENVIRONMENT === 'development')
|
if (PHPBB_ENVIRONMENT === 'development')
|
||||||
{
|
{
|
||||||
\phpbb\debug\debug::enable();
|
\phpbb\debug\debug::enable();
|
||||||
@@ -112,6 +104,14 @@ $phpbb_class_loader_ext->register();
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_root_path, $phpEx);
|
$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_root_path, $phpEx);
|
||||||
|
|
||||||
|
// Check that cache directory is writable before trying to build container
|
||||||
|
$cache_dir = $phpbb_container_builder->get_cache_dir();
|
||||||
|
if (file_exists($cache_dir) && !is_writable($phpbb_container_builder->get_cache_dir()))
|
||||||
|
{
|
||||||
|
die('Unable to write to the cache directory path "' . $cache_dir . '". Ensure that the web server user can write to the cache folder.');
|
||||||
|
}
|
||||||
|
|
||||||
$phpbb_container = $phpbb_container_builder->with_config($phpbb_config_php_file)->get_container();
|
$phpbb_container = $phpbb_container_builder->with_config($phpbb_config_php_file)->get_container();
|
||||||
}
|
}
|
||||||
catch (InvalidArgumentException $e)
|
catch (InvalidArgumentException $e)
|
||||||
@@ -129,6 +129,11 @@ catch (InvalidArgumentException $e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($phpbb_container->getParameter('debug.error_handler'))
|
||||||
|
{
|
||||||
|
\phpbb\debug\debug::enable();
|
||||||
|
}
|
||||||
|
|
||||||
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
|
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
|
||||||
$phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver'));
|
$phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver'));
|
||||||
|
|
||||||
|
@@ -15,8 +15,9 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://tracker.phpbb.com",
|
"issues": "https://tracker.phpbb.com",
|
||||||
"forum": "https://www.phpbb.com/community/",
|
"forum": "https://www.phpbb.com/community/",
|
||||||
"wiki": "https://wiki.phpbb.com",
|
"docs": "https://www.phpbb.com/support/docs/",
|
||||||
"irc": "irc://irc.freenode.org/phpbb"
|
"irc": "irc://irc.libera.chat/phpbb",
|
||||||
|
"chat": "https://www.phpbb.com/support/chat/"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"post-update-cmd": "echo 'You MUST manually modify the clean-vendor-dir target in build/build.xml when adding or upgrading dependencies.'"
|
"post-update-cmd": "echo 'You MUST manually modify the clean-vendor-dir target in build/build.xml when adding or upgrading dependencies.'"
|
||||||
@@ -25,14 +26,15 @@
|
|||||||
"phpbb/phpbb-core": "self.version"
|
"phpbb/phpbb-core": "self.version"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.1",
|
"php": "^7.2 || ^8.0.0",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
|
"ext-mbstring": "*",
|
||||||
"bantu/ini-get-wrapper": "~1.0",
|
"bantu/ini-get-wrapper": "~1.0",
|
||||||
|
"carlos-mg89/oauth": "^0.8.15",
|
||||||
|
"composer/package-versions-deprecated": "^1.11",
|
||||||
"google/recaptcha": "~1.1",
|
"google/recaptcha": "~1.1",
|
||||||
"guzzlehttp/guzzle": "~6.3",
|
"guzzlehttp/guzzle": "~6.3",
|
||||||
"lusitanian/oauth": "^0.8.1",
|
|
||||||
"marc1706/fast-image-size": "^1.1",
|
"marc1706/fast-image-size": "^1.1",
|
||||||
"patchwork/utf8": "^1.1",
|
|
||||||
"s9e/text-formatter": "^2.0",
|
"s9e/text-formatter": "^2.0",
|
||||||
"symfony/config": "~3.4",
|
"symfony/config": "~3.4",
|
||||||
"symfony/console": "~3.4",
|
"symfony/console": "~3.4",
|
||||||
@@ -43,6 +45,10 @@
|
|||||||
"symfony/finder": "~3.4",
|
"symfony/finder": "~3.4",
|
||||||
"symfony/http-foundation": "~3.4",
|
"symfony/http-foundation": "~3.4",
|
||||||
"symfony/http-kernel": "~3.4",
|
"symfony/http-kernel": "~3.4",
|
||||||
|
"symfony/polyfill-intl-normalizer": "^1.23",
|
||||||
|
"symfony/polyfill-mbstring": "^1.23",
|
||||||
|
"symfony/polyfill-php72": "^1.23",
|
||||||
|
"symfony/process": "^3.4",
|
||||||
"symfony/proxy-manager-bridge": "~3.4",
|
"symfony/proxy-manager-bridge": "~3.4",
|
||||||
"symfony/routing": "~3.4",
|
"symfony/routing": "~3.4",
|
||||||
"symfony/twig-bridge": "~3.4",
|
"symfony/twig-bridge": "~3.4",
|
||||||
@@ -51,7 +57,7 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fabpot/goutte": "~3.2",
|
"fabpot/goutte": "~3.2",
|
||||||
"facebook/webdriver": "~1.6",
|
"php-webdriver/webdriver": "~1.8",
|
||||||
"laravel/homestead": "~7.0",
|
"laravel/homestead": "~7.0",
|
||||||
"phing/phing": "~2.4",
|
"phing/phing": "~2.4",
|
||||||
"phpunit/dbunit": "~4.0",
|
"phpunit/dbunit": "~4.0",
|
||||||
@@ -68,7 +74,10 @@
|
|||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": "7.1"
|
"php": "7.2"
|
||||||
|
},
|
||||||
|
"allow-plugins": {
|
||||||
|
"composer/installers": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2666
phpBB/composer.lock
generated
2666
phpBB/composer.lock
generated
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user