mirror of
https://github.com/phpbb/phpbb.git
synced 2025-09-11 16:50:47 +02:00
Compare commits
986 Commits
release-3.
...
release-3.
Author | SHA1 | Date | |
---|---|---|---|
|
5847a50334 | ||
|
1ade9b39e4 | ||
|
4c94e44710 | ||
|
d640a37984 | ||
|
e4c8e4905c | ||
|
4d30633cd4 | ||
|
6a0727acdc | ||
|
df72846b89 | ||
|
b5594371ab | ||
|
d7553893c4 | ||
|
48dc4c02ae | ||
|
f796f92058 | ||
|
fad280f94b | ||
|
cf9d1fbd1a | ||
|
0bc04a4df0 | ||
|
2b47ef1266 | ||
|
e43d1781bf | ||
|
d51c1707e3 | ||
|
faec26b873 | ||
|
0de7adfa37 | ||
|
defeb1a56f | ||
|
4b99ab7066 | ||
|
9cf81ac7f5 | ||
|
1358acfd7c | ||
|
99eeb52b76 | ||
|
b9b15b7007 | ||
|
293d64e122 | ||
|
b71cf56bda | ||
|
afada9ed40 | ||
|
75b6545bc2 | ||
|
973dfbf868 | ||
|
99f63f39eb | ||
|
d4faeb064b | ||
|
941cf6979e | ||
|
566c8a1bbc | ||
|
53f166274a | ||
|
57a575b5f0 | ||
|
51044167d1 | ||
|
009d59335f | ||
|
ec5729a99f | ||
|
86c472f4f7 | ||
|
c939f1b2c7 | ||
|
b3421e397d | ||
|
c6272fca07 | ||
|
e7ad87e15f | ||
|
737894027a | ||
|
66342f5b89 | ||
|
dec6c7ea8c | ||
|
f847a1a567 | ||
|
6763de2f25 | ||
|
09b6add6ee | ||
|
810d249ca2 | ||
|
29ea1c85b4 | ||
|
f19a6b9714 | ||
|
d06c2cf0f7 | ||
|
7e08109229 | ||
|
defd36ad7f | ||
|
39e51e5599 | ||
|
6768490f69 | ||
|
55b97ffc27 | ||
|
e7e016637b | ||
|
e1af6584d9 | ||
|
23a513baec | ||
|
b343bf783a | ||
|
8be701db0a | ||
|
90771c1762 | ||
|
759950c1a6 | ||
|
205be67622 | ||
|
1a128f9a76 | ||
|
223ae1dfc2 | ||
|
965894a875 | ||
|
5c54e96aab | ||
|
df75b70f3e | ||
|
4bdae294cb | ||
|
253c6e1fc1 | ||
|
9c4ba813d4 | ||
|
41d660dd98 | ||
|
36d1f87c5a | ||
|
9bc9e42c94 | ||
|
eb7152436c | ||
|
2bc79701e6 | ||
|
29b54d12cc | ||
|
1a04d15d4d | ||
|
f6fc8c08a4 | ||
|
699c642128 | ||
|
a9ed32663a | ||
|
97db218829 | ||
|
5b186c936d | ||
|
eed4d0d30f | ||
|
366451c11c | ||
|
9d13b91f46 | ||
|
7f692e7b28 | ||
|
7137dc387a | ||
|
757c67b7d8 | ||
|
63bdd193e0 | ||
|
66ecbd8545 | ||
|
d64a515476 | ||
|
34a9ed3587 | ||
|
ba1776d6a9 | ||
|
4fe95d6870 | ||
|
943f2e1a7b | ||
|
c77d6f39f2 | ||
|
7bd5c793bb | ||
|
61601a052c | ||
|
0c0024497d | ||
|
46a9e5657f | ||
|
4b90357d79 | ||
|
38ac0bcc8e | ||
|
b300e06226 | ||
|
f3eaf6fe04 | ||
|
a12a7d0b90 | ||
|
7479c61d05 | ||
|
3c91fbeaa6 | ||
|
2f2a306994 | ||
|
6c284060d7 | ||
|
1e8735eac1 | ||
|
7bcf6a621f | ||
|
825af557ae | ||
|
5e86c89989 | ||
|
ce4cb9c917 | ||
|
bda6879305 | ||
|
608d3f4d8d | ||
|
51ece03612 | ||
|
682527f509 | ||
|
5354c46e01 | ||
|
8e638dbf6d | ||
|
a0673f8e10 | ||
|
4193bf5641 | ||
|
ebaec047f2 | ||
|
3d9b257597 | ||
|
9d9685eec9 | ||
|
cf2ac56950 | ||
|
240ff27707 | ||
|
90241ae4e6 | ||
|
6400902a01 | ||
|
ee758e22a6 | ||
|
2ee13bbc24 | ||
|
e5a5933db6 | ||
|
8c628a6dc2 | ||
|
1fb4ebb34a | ||
|
64eec22884 | ||
|
abb1244b44 | ||
|
e816006b8e | ||
|
c123c93ca0 | ||
|
0e27b10b8f | ||
|
a876cc8c26 | ||
|
ce4035fdd3 | ||
|
95c0d81ba1 | ||
|
40cd7570e6 | ||
|
b003019958 | ||
|
d264369441 | ||
|
75fcfb1c1d | ||
|
170b75d0c9 | ||
|
994a0dcd4c | ||
|
5314c2bddf | ||
|
b6acc1b9db | ||
|
1b393b1d0b | ||
|
effb5d95d0 | ||
|
8ab7f6b595 | ||
|
1ee4894271 | ||
|
65539df39a | ||
|
8fef959418 | ||
|
f30c5f730e | ||
|
a8e74fff9b | ||
|
cb49a0c4cc | ||
|
3a413cbf30 | ||
|
cb8b245639 | ||
|
8fb9f19aae | ||
|
a0db23bd0e | ||
|
6f66423de9 | ||
|
7efc624b0a | ||
|
9c3126add0 | ||
|
f1ab6f31a1 | ||
|
f64a937a57 | ||
|
526329e697 | ||
|
89fdd1baf2 | ||
|
e132cdd325 | ||
|
bc24c78e06 | ||
|
6f093ade8a | ||
|
a159899d02 | ||
|
eb2aa1f83a | ||
|
cee8ac9dbe | ||
|
71ac6ab2b8 | ||
|
be769d4ca6 | ||
|
e802c5f082 | ||
|
f64373a29f | ||
|
a1683dfb67 | ||
|
e803efc6fc | ||
|
459c62b339 | ||
|
1b3109d650 | ||
|
ce0c33f62a | ||
|
077db77259 | ||
|
30e1d29f58 | ||
|
04e9789e7f | ||
|
b51b4c92e2 | ||
|
74a96bf7c2 | ||
|
cd7b21a703 | ||
|
834aea70a7 | ||
|
85bc9b69ae | ||
|
f3fef8934e | ||
|
43279ee010 | ||
|
6d0697eb89 | ||
|
d5128b3e87 | ||
|
9feb7096ee | ||
|
34aad4046f | ||
|
80f15a41c4 | ||
|
2f773fca18 | ||
|
ba464ec93a | ||
|
80d5a1ec1f | ||
|
f2a98339e2 | ||
|
2478eef550 | ||
|
7307380091 | ||
|
fb610f99df | ||
|
aa1ffc9319 | ||
|
ef9e0e743a | ||
|
820db008ff | ||
|
05ae327553 | ||
|
9b8d8b020f | ||
|
92b096b05b | ||
|
8bd1853b56 | ||
|
96024e88e9 | ||
|
d6008e896a | ||
|
10b6399d30 | ||
|
eeeb62b433 | ||
|
9ff6358dc9 | ||
|
bea5f94de6 | ||
|
e28b93e0cc | ||
|
9a8a0af7ba | ||
|
d03be5ea5f | ||
|
7fca351e05 | ||
|
d7c12ccd60 | ||
|
74854ac65d | ||
|
d48e4b680e | ||
|
39d46e2599 | ||
|
d6de9ce5d9 | ||
|
9f981a7741 | ||
|
6a33472214 | ||
|
84e68b3a73 | ||
|
b02e579c1c | ||
|
6851ff8fab | ||
|
7313cc777e | ||
|
ace3b806a9 | ||
|
ef58752db8 | ||
|
8b8e065441 | ||
|
e3eff2a976 | ||
|
e005455881 | ||
|
26c6ffa458 | ||
|
457e13634e | ||
|
2c5e184ea1 | ||
|
841abf712e | ||
|
221f4a4a8c | ||
|
301694e922 | ||
|
fc252f1ba5 | ||
|
3418683cfc | ||
|
d720428564 | ||
|
543d68a7d3 | ||
|
6fd54436ee | ||
|
4186ced479 | ||
|
eaef881e7d | ||
|
de7ed7c286 | ||
|
c767712c64 | ||
|
689eaab3e2 | ||
|
fb08d1b27e | ||
|
6e4348b0ea | ||
|
4a76763a8a | ||
|
55664c1c10 | ||
|
d4938e34b0 | ||
|
c20b658f70 | ||
|
98f02ece97 | ||
|
6bc23ee282 | ||
|
a6d9b42e5f | ||
|
e9285d43af | ||
|
d74f45aee0 | ||
|
a70addbf14 | ||
|
ae14b0f272 | ||
|
d892dfe084 | ||
|
1914a08088 | ||
|
88f645eeda | ||
|
2ca001edcf | ||
|
6eb2b876f1 | ||
|
0dc181a529 | ||
|
d27e9c7c76 | ||
|
93d50db2d6 | ||
|
b5800d1124 | ||
|
3f71d7dba1 | ||
|
514bf6e39a | ||
|
470e6d5edf | ||
|
3066cd700a | ||
|
bad07b355c | ||
|
b82a3cddd8 | ||
|
31e43ce124 | ||
|
1da5c41ab3 | ||
|
5ce61e8c3a | ||
|
c220fa89a1 | ||
|
53e028ff14 | ||
|
53f62f1129 | ||
|
a2b5ec7e1b | ||
|
dc65058c20 | ||
|
0d1f0c07fe | ||
|
6c043c4a86 | ||
|
180f9bf4fa | ||
|
7729ae4ad0 | ||
|
e59222496a | ||
|
910cd5edbe | ||
|
676f453cbd | ||
|
86ea314598 | ||
|
7201238104 | ||
|
f4761b5e08 | ||
|
3885ac90f1 | ||
|
3d637fea98 | ||
|
9c310f789f | ||
|
ad596f4390 | ||
|
6323180344 | ||
|
9a3aeb8a99 | ||
|
3dbac0f88b | ||
|
9ebee7de32 | ||
|
ea5e46f6dd | ||
|
7cbd9e9524 | ||
|
33b2063680 | ||
|
20903c0a9b | ||
|
4a06511d85 | ||
|
2e1aebbc12 | ||
|
4df031187f | ||
|
a48b740b94 | ||
|
8b16d31413 | ||
|
bb5d6a2551 | ||
|
dab6b99bcd | ||
|
b3576d77da | ||
|
f4260e261f | ||
|
68ad7685bc | ||
|
0b4f714bc4 | ||
|
720561de6e | ||
|
06f42f433b | ||
|
4ae447b205 | ||
|
2b4807b116 | ||
|
f807b82162 | ||
|
0061a305d8 | ||
|
6488d236ec | ||
|
38830f9cbb | ||
|
726573f100 | ||
|
da716058fa | ||
|
5a780dfab1 | ||
|
aaddf41e5b | ||
|
0b4944f125 | ||
|
60c9955f51 | ||
|
ae63843647 | ||
|
265c621c9e | ||
|
5034b3ad7d | ||
|
6d80770ba4 | ||
|
b9e7ed004c | ||
|
9ef01e7f82 | ||
|
1487e6f857 | ||
|
ffe24d5b8f | ||
|
8c11927b55 | ||
|
bf7041eeb9 | ||
|
b71571b793 | ||
|
a45df1d840 | ||
|
e4401b2534 | ||
|
ca7168ee4a | ||
|
7f86b6e71e | ||
|
bf6bc330af | ||
|
46a9fe93d7 | ||
|
2cf5b848db | ||
|
e731dcfe6e | ||
|
c988b98ac6 | ||
|
3dc73485ee | ||
|
48dbef391b | ||
|
f26b6b6251 | ||
|
f892646a84 | ||
|
7b4c5bdd34 | ||
|
7618e0387c | ||
|
7d6ceb81c1 | ||
|
5804e43589 | ||
|
d42401056c | ||
|
c842583bbf | ||
|
04e0d305d0 | ||
|
72ee4b3a7c | ||
|
ff872a7970 | ||
|
fcd2a2f186 | ||
|
51f5c2d094 | ||
|
a093c28d1a | ||
|
b2a28962bc | ||
|
cb7e1540c6 | ||
|
d87547da66 | ||
|
6c0a3bb247 | ||
|
0fc5a27889 | ||
|
0861404121 | ||
|
bfb672f326 | ||
|
d9f36ae7e1 | ||
|
65026ed1fa | ||
|
ef61deb132 | ||
|
ad8d53af27 | ||
|
047728e3d4 | ||
|
c56c0fce0d | ||
|
c6fc455432 | ||
|
4b4a673d98 | ||
|
e00697f3a1 | ||
|
3458aa2482 | ||
|
aefd96e604 | ||
|
bcd4cebd48 | ||
|
cc96bcff99 | ||
|
33e5e426d4 | ||
|
85468ce2ec | ||
|
dfbc2adc08 | ||
|
de7b100b8a | ||
|
d470d628f5 | ||
|
40ef561349 | ||
|
12398d65fd | ||
|
c1d0528d80 | ||
|
b3a8e92810 | ||
|
a0ee6ccdf3 | ||
|
d5801333f7 | ||
|
b218f3ad43 | ||
|
a6f1b22eb3 | ||
|
088e34dc47 | ||
|
297ab5c526 | ||
|
647a75249c | ||
|
1094de49c2 | ||
|
6387bf8d13 | ||
|
21029e9fd2 | ||
|
6eaeae60f6 | ||
|
b854882470 | ||
|
b9cb3b9e3e | ||
|
d31ff51785 | ||
|
4f44e73b21 | ||
|
cb3eb84665 | ||
|
7b796532df | ||
|
1d4cae9ecb | ||
|
28587d0afc | ||
|
17e4e5f8c4 | ||
|
10c99b3c2b | ||
|
7de15bc54c | ||
|
a3c63f6c03 | ||
|
65577ed422 | ||
|
6777d462ff | ||
|
d86817ef07 | ||
|
1d4c040d4f | ||
|
97c798a375 | ||
|
76053b3cd4 | ||
|
01f821bbc3 | ||
|
7fc550aedc | ||
|
6d9c0a76df | ||
|
cbbef46c6c | ||
|
ab9cdcadfb | ||
|
bcc1b7aec9 | ||
|
9d44c5d940 | ||
|
7cd6dbe898 | ||
|
9fc5073540 | ||
|
0386b1788a | ||
|
273fc5b5b6 | ||
|
ae3b015f65 | ||
|
154710aa50 | ||
|
e2c56609ab | ||
|
6e274740df | ||
|
1a41632af8 | ||
|
e5e45f860b | ||
|
1e09fd0cee | ||
|
91804b53fb | ||
|
5a4de4aa1f | ||
|
059f21a3ac | ||
|
ab6c9775d3 | ||
|
f9803b7360 | ||
|
3fbab9504b | ||
|
9affb8c171 | ||
|
ede73b207b | ||
|
1662ee64e0 | ||
|
03b9eb5dcb | ||
|
5eea1ca44e | ||
|
a79da361ee | ||
|
30b6080529 | ||
|
f22ee4f73a | ||
|
0aa7d3ef75 | ||
|
d2ed2c4e1e | ||
|
39bfbc3a26 | ||
|
7483d01942 | ||
|
ca55f22c73 | ||
|
be0ebbe644 | ||
|
923a818e37 | ||
|
afb9d0a3d7 | ||
|
a7a05ca75c | ||
|
31aac66f5a | ||
|
421005b282 | ||
|
60b38847d2 | ||
|
43d7d47e9b | ||
|
9486c693b6 | ||
|
c013e727d4 | ||
|
fe1ab6d2ef | ||
|
0f3defbb26 | ||
|
8a5dd101a3 | ||
|
5e7d9d2fcf | ||
|
da3ddaf676 | ||
|
0ef7a9d455 | ||
|
496cc64bc6 | ||
|
685bdc87e6 | ||
|
8671e40217 | ||
|
71f78fb8c6 | ||
|
a82a88b555 | ||
|
9d7deba67a | ||
|
b18fe1203a | ||
|
621f8c922f | ||
|
4ff5aa18ae | ||
|
fe80967535 | ||
|
354d08dfff | ||
|
e9f5b9d657 | ||
|
45405a48a8 | ||
|
73426d2d30 | ||
|
ad625c1e6d | ||
|
27bb2b7289 | ||
|
d08a7f70e6 | ||
|
9c87972385 | ||
|
9e3db526d5 | ||
|
9578fdf7d7 | ||
|
26b8c6cc13 | ||
|
d79fec1c3f | ||
|
340f48fdeb | ||
|
5cf9ab8a97 | ||
|
9db2ff7186 | ||
|
030d1a683b | ||
|
55260127bd | ||
|
e31aafb393 | ||
|
1dc2d0e759 | ||
|
e47b7540c3 | ||
|
3be239b864 | ||
|
de819bea74 | ||
|
29886e703a | ||
|
7367ab6e15 | ||
|
b40225c142 | ||
|
f76d671dc7 | ||
|
edbae9ceaa | ||
|
96005ceb9e | ||
|
07576dc169 | ||
|
bad90dafbf | ||
|
91df95a90d | ||
|
756aa68b34 | ||
|
c10c6bd342 | ||
|
48ce9f5e9d | ||
|
71c9e6c67c | ||
|
4683864b4b | ||
|
fa2ac1f271 | ||
|
76633544ee | ||
|
fc4b1090cc | ||
|
351a6dcad2 | ||
|
2cbcf4bcbf | ||
|
036a61a904 | ||
|
e889b8f931 | ||
|
02f3b74e8a | ||
|
850b7dbf07 | ||
|
bd09356c30 | ||
|
b91abf1a0b | ||
|
d73d606f11 | ||
|
577f9ac7e4 | ||
|
99b7d18ab2 | ||
|
28cf0ef832 | ||
|
6e4991093a | ||
|
a1d5ad8a37 | ||
|
dd88022a70 | ||
|
160ff7b912 | ||
|
ada35dca00 | ||
|
96e8b67a4e | ||
|
43a309ce2b | ||
|
b20af9a6d2 | ||
|
67de119566 | ||
|
1e1efa294e | ||
|
e0d377bca7 | ||
|
bc9b813ce7 | ||
|
2a5eca0391 | ||
|
752c73193e | ||
|
7df97601a3 | ||
|
f471eeda33 | ||
|
838d4dc2c6 | ||
|
54b0ebc410 | ||
|
472fe9fe60 | ||
|
51f534c82e | ||
|
03040de75a | ||
|
547c8a6d8b | ||
|
f0852dcf1a | ||
|
252ddd71d0 | ||
|
0244a9b6a4 | ||
|
8d99b4afe1 | ||
|
a57a96cbdd | ||
|
7cc9f216e7 | ||
|
b3ca955fb5 | ||
|
707568c496 | ||
|
7ae2ceb5cf | ||
|
1f6b9628e7 | ||
|
df9f35cce6 | ||
|
71d39ab7d5 | ||
|
2c7e81bd33 | ||
|
7e4c3fde01 | ||
|
5c93735557 | ||
|
74c3579693 | ||
|
b000d10ef8 | ||
|
990e64105f | ||
|
6a8413f064 | ||
|
469790146c | ||
|
8989f6f878 | ||
|
d066240e27 | ||
|
602b932a23 | ||
|
9f5d383d50 | ||
|
8880871951 | ||
|
db0815f680 | ||
|
39defd0b6b | ||
|
59398020b6 | ||
|
23ca9cd81d | ||
|
076d4ddd7f | ||
|
496b804a0f | ||
|
57d94b7bb4 | ||
|
86f94f922c | ||
|
07f8edcc26 | ||
|
9f87341046 | ||
|
dd8adb5d6e | ||
|
917cd4dec7 | ||
|
12caf2f03d | ||
|
02801dee7c | ||
|
3f73d32c30 | ||
|
873d1c6d57 | ||
|
4f131c2248 | ||
|
56ca276dcf | ||
|
0a6fdbe636 | ||
|
051466106a | ||
|
f87831aee5 | ||
|
635cde218c | ||
|
0806c74084 | ||
|
ef9360d285 | ||
|
37a1874782 | ||
|
c8e7db60ba | ||
|
4c06467777 | ||
|
f03a003bea | ||
|
20b8ea947c | ||
|
7d44995f16 | ||
|
0de1d65804 | ||
|
078c68da63 | ||
|
6a13f983a4 | ||
|
468f92261a | ||
|
1351a1fe80 | ||
|
336d7cd41a | ||
|
7a016572bd | ||
|
12eb993d23 | ||
|
4e4ea681be | ||
|
cdcfd1fe1e | ||
|
96fc29eecc | ||
|
deaa0a8c75 | ||
|
e6f43f5974 | ||
|
01943adbf7 | ||
|
13ccb352ce | ||
|
6fafa40d93 | ||
|
558aff46cd | ||
|
3825aee130 | ||
|
af67bd3ea5 | ||
|
a6b275de5c | ||
|
fc1e420a7c | ||
|
cccd54dde8 | ||
|
80788980aa | ||
|
6b60153ab4 | ||
|
f6da266109 | ||
|
0465e9d1b9 | ||
|
42c26cd781 | ||
|
50fcd70428 | ||
|
fcb57edd06 | ||
|
c5f0c1aa8e | ||
|
44a0f43062 | ||
|
96e9d728b9 | ||
|
e07e9f6cee | ||
|
e7251252ce | ||
|
53247573c2 | ||
|
bef9d64179 | ||
|
621f940805 | ||
|
27f769e461 | ||
|
ad97ad07f8 | ||
|
f1b1bd0de9 | ||
|
20f8fd4af2 | ||
|
c5d72c94f1 | ||
|
70978e96d3 | ||
|
0679f76287 | ||
|
15afaafcb6 | ||
|
6d399c7d6a | ||
|
833ba11113 | ||
|
e4e7a8f849 | ||
|
9ed71d523a | ||
|
98c98e52eb | ||
|
b39305b9f6 | ||
|
1f5f2327e8 | ||
|
50cc81afa3 | ||
|
339bf90ec2 | ||
|
4c2b4b4145 | ||
|
8d8d54aac7 | ||
|
e6dec0348a | ||
|
dda853b896 | ||
|
e28abe0db2 | ||
|
5fedcf0fa8 | ||
|
ba2c40cde9 | ||
|
f6f6657842 | ||
|
a8dee3fb65 | ||
|
e0c2013bb9 | ||
|
4f23bb711c | ||
|
340bea63b6 | ||
|
17e360225d | ||
|
802232c907 | ||
|
3522808528 | ||
|
09e45fee89 | ||
|
64dfb3fba9 | ||
|
5488541640 | ||
|
9b36b5283c | ||
|
ab8a197e92 | ||
|
742133f6dc | ||
|
cf4fb73440 | ||
|
42afa369a0 | ||
|
778483d070 | ||
|
a2b6f4e166 | ||
|
3b7ab23e29 | ||
|
0194c261c3 | ||
|
035f84d2da | ||
|
6bb71e2ca9 | ||
|
98155a945f | ||
|
f1d3d87d47 | ||
|
07a92d29df | ||
|
be04b6c136 | ||
|
b9fb4e3050 | ||
|
9f3e678117 | ||
|
9e282b8d4d | ||
|
e0b7a3e9ff | ||
|
ef26a6fd64 | ||
|
c863136a69 | ||
|
200c6f2d32 | ||
|
3b3da3938d | ||
|
1304ccc02b | ||
|
aa88d48b37 | ||
|
f8d2dd720f | ||
|
f01b602e9f | ||
|
2b3e15cf64 | ||
|
e523711ec2 | ||
|
cc1a713fd8 | ||
|
d8d09e0df2 | ||
|
27b4ab9241 | ||
|
714ac0b039 | ||
|
f1419ab27e | ||
|
079f1e2f41 | ||
|
7cde9a8ec0 | ||
|
b700e871cf | ||
|
f474e33a43 | ||
|
2f44a865a0 | ||
|
83544992ec | ||
|
cea0cfa6f8 | ||
|
8006746780 | ||
|
b203b4afa1 | ||
|
9133b913ec | ||
|
a8cb525f77 | ||
|
9d285bdcf5 | ||
|
decc896bf5 | ||
|
964bf0b9f5 | ||
|
ca11018760 | ||
|
0328bc38a4 | ||
|
243ca3ae82 | ||
|
591d04157e | ||
|
e6d6977750 | ||
|
a9c3c4056c | ||
|
f3f54922be | ||
|
7755f5354f | ||
|
1d923260a6 | ||
|
eb872c36d8 | ||
|
79cccebc6e | ||
|
d5db09e888 | ||
|
89fc664227 | ||
|
7beef6e142 | ||
|
b20c6936bc | ||
|
752363b435 | ||
|
cf93b7e367 | ||
|
2cc20fb977 | ||
|
6d7689f581 | ||
|
95ec9590df | ||
|
6ac8d17af6 | ||
|
c355b60c62 | ||
|
dfcbace621 | ||
|
8f2395857e | ||
|
f34bc924a6 | ||
|
ffcf45abf3 | ||
|
8ac8c9ec61 | ||
|
19b9df7e63 | ||
|
c991b1d587 | ||
|
66f859d109 | ||
|
626234aece | ||
|
ce2c31d18a | ||
|
5b2e962934 | ||
|
a7794b765c | ||
|
50d10c4efd | ||
|
6ced579ab3 | ||
|
122898d221 | ||
|
47bfe2999d | ||
|
25826fa587 | ||
|
89557f5cac | ||
|
cd0dad8951 | ||
|
67d19920c4 | ||
|
4328141fd2 | ||
|
92106d52d0 | ||
|
5739a3da8f | ||
|
d284675241 | ||
|
6081175857 | ||
|
ffcc1e9d94 | ||
|
ae9c1cddc8 | ||
|
949264507d | ||
|
30e13a429c | ||
|
f394f55fe2 | ||
|
636eac2cd2 | ||
|
18207ae1ec | ||
|
a6f43d09d7 | ||
|
f4fc1bde03 | ||
|
702d567c69 | ||
|
913b363126 | ||
|
8bdfda723c | ||
|
6d39a5b015 | ||
|
9a3af2a052 | ||
|
d6c772f15c | ||
|
98eeaacc36 | ||
|
ced76b5f4d | ||
|
e992eab4c3 | ||
|
d8867bb40d | ||
|
63c938c703 | ||
|
ae350bda42 | ||
|
f86bfeb3a1 | ||
|
52e8a7231e | ||
|
6576e0eb88 | ||
|
4ce6811d2b | ||
|
3df41920f7 | ||
|
8a6d3f2b1d | ||
|
e94f24c821 | ||
|
ab8400a616 | ||
|
e226c99474 | ||
|
64f2d778cd | ||
|
5dcf56c98d | ||
|
8a046743bc | ||
|
a8e81b6e9f | ||
|
a775bb082c | ||
|
155f709e36 | ||
|
e4a829071e | ||
|
8b8e09f4d5 | ||
|
9d6ff36c6c | ||
|
831e9116ab | ||
|
75aef80104 | ||
|
d9a62a7333 | ||
|
056584680b | ||
|
8064d2931f | ||
|
ed9fb450de | ||
|
3cd7078900 | ||
|
6531856108 | ||
|
91b0e75cc7 | ||
|
1bd5edacb6 | ||
|
5507c503b4 | ||
|
a0feced63e | ||
|
b5c847c2ef | ||
|
9e1802396f | ||
|
3bf04d7152 | ||
|
c81438e1f8 | ||
|
4092b63be3 | ||
|
4a6a54472c | ||
|
9485f59c61 | ||
|
58d91d1d54 | ||
|
d16ce21926 | ||
|
38100cc7c0 | ||
|
e11875527d | ||
|
1c8357a1cb | ||
|
83e5a25c0a | ||
|
2fbf12456d | ||
|
7d7bf86728 | ||
|
db3bddf15c | ||
|
919aeb3879 | ||
|
b94ce7b932 | ||
|
449ffbe799 | ||
|
51feab9ed6 | ||
|
49a1d845fe | ||
|
acaa1fe59c | ||
|
247c5a1808 | ||
|
f6ad9d5fd2 | ||
|
7b91b66b87 | ||
|
d5f87e6053 | ||
|
20c50e55b1 | ||
|
65544066c2 | ||
|
1a66ad8483 | ||
|
8a5ec8d9d1 | ||
|
bef207e9b7 | ||
|
1e0775a3da | ||
|
da6b378e64 | ||
|
07ce29c081 | ||
|
e78a6046ca | ||
|
f784510494 | ||
|
53f597b6d0 | ||
|
42477861a4 | ||
|
0d2a478076 | ||
|
7f4d425006 | ||
|
b1df0cffb1 | ||
|
2913b44080 | ||
|
c7be452861 | ||
|
0332b68dbb | ||
|
8d8e0aae68 | ||
|
9fede3baf4 | ||
|
99b60a2f5e | ||
|
9a369a9e14 | ||
|
42308091ef | ||
|
876c1f4f00 | ||
|
ab4a77aa0f | ||
|
0ed971d129 | ||
|
cd5fbd52c2 | ||
|
a22549f247 | ||
|
09e5896cae | ||
|
1548b81cac | ||
|
78315d824a | ||
|
496b34cd96 | ||
|
389d8e844e | ||
|
1ee7df57ae | ||
|
021adcc14f | ||
|
81905158a1 | ||
|
a4972bb338 | ||
|
d95d6720bc | ||
|
7cffedf5e3 | ||
|
3eafeeb88d | ||
|
15136e4f8e | ||
|
a54f1275d0 | ||
|
7e6215fb7f | ||
|
0f41a8fc31 | ||
|
2ec50c0ff1 | ||
|
fcf426ad5c | ||
|
f6039562ea | ||
|
581391c21e | ||
|
519e64205a | ||
|
fe02caa8e0 | ||
|
aadcbb765a | ||
|
1043d1a27c | ||
|
c4cd1c58c1 | ||
|
6082b5e3d3 | ||
|
3e004d22cb | ||
|
1125fb3cab | ||
|
b95ab44028 | ||
|
57f7fdf989 | ||
|
0d320186cf | ||
|
14979e6399 | ||
|
20a55bc8dd | ||
|
95032c31af | ||
|
0d6fe20372 | ||
|
b5492a07da | ||
|
08264ec3af | ||
|
c9803b7ba3 | ||
|
0bece6dada | ||
|
9468d173bc | ||
|
bfdaefa7f6 | ||
|
1f61f3a416 | ||
|
dbb331284e | ||
|
902937ce70 | ||
|
223c634bee | ||
|
57bbb4548b | ||
|
27f15c0d5b | ||
|
690de21134 | ||
|
16a13fed1a | ||
|
44e76495a9 | ||
|
3f290bad82 | ||
|
e4941ee875 | ||
|
4629ebfc4f | ||
|
4127acb19b | ||
|
e7f124b8ce | ||
|
0ce27eacb1 | ||
|
4917ebe93a | ||
|
b2044884ff | ||
|
95ab4b3e93 | ||
|
ffb992f9a9 | ||
|
ff56f0dcfe | ||
|
3823fe355f | ||
|
4eb7485b39 | ||
|
a402d619b4 | ||
|
ea5bc9c833 | ||
|
de404002c7 | ||
|
c22983cbdb | ||
|
94a81fa01d | ||
|
9bc6e641bf | ||
|
37fd00b298 | ||
|
eeb2c128f5 | ||
|
1a79de4214 | ||
|
517273fa0b | ||
|
5762af6180 | ||
|
9c8e843def | ||
|
a0a5c852d5 | ||
|
d53336af06 | ||
|
292908ca4a | ||
|
7c99e30920 | ||
|
b7f54e42b2 | ||
|
9dd71fa32e | ||
|
0c4b53e2f1 | ||
|
0c109c9d37 | ||
|
4f6441b411 |
18
.editorconfig
Normal file
18
.editorconfig
Normal file
@@ -0,0 +1,18 @@
|
||||
# This file is for standardising the coding style between different editors
|
||||
# http://editorconfig.org/
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.yml]
|
||||
indent_size = 4
|
||||
indent_style = space
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -11,6 +11,7 @@
|
||||
/phpBB/images/avatars/gallery/*
|
||||
/phpBB/images/avatars/upload/*
|
||||
/phpBB/images/ranks/*
|
||||
/phpBB/install/schemas/schema.json
|
||||
/phpBB/language/*
|
||||
!/phpBB/language/en
|
||||
/phpBB/store/*
|
||||
|
@@ -37,7 +37,9 @@ before_script:
|
||||
|
||||
script:
|
||||
- travis/phing-sniff.sh $DB $TRAVIS_PHP_VERSION
|
||||
- travis/check-sami-parse-errors.sh $DB $TRAVIS_PHP_VERSION
|
||||
- travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION
|
||||
- travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION ./
|
||||
- phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml
|
||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' -a '$DB' = 'mysqli' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi"
|
||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.3.3' -a '$DB' = 'mysqli' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi"
|
||||
|
||||
|
@@ -2,9 +2,9 @@
|
||||
|
||||
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
||||
<!-- a few settings for the build -->
|
||||
<property name="newversion" value="3.1.0-RC2" />
|
||||
<property name="prevversion" value="3.1.0-RC1" />
|
||||
<property name="olderversions" value="3.0.12, 3.1.0-a1, 3.1.0-a2, 3.1.0-a3, 3.1.0-b1, 3.1.0-b2, 3.1.0-b3, 3.1.0-b4" />
|
||||
<property name="newversion" value="3.1.0-RC6" />
|
||||
<property name="prevversion" value="3.1.0-RC5" />
|
||||
<property name="olderversions" value="3.0.12, 3.1.0-a1, 3.1.0-a2, 3.1.0-a3, 3.1.0-b1, 3.1.0-b2, 3.1.0-b3, 3.1.0-b4, 3.1.0-RC1, 3.1.0-RC2, 3.1.0-RC3, 3.1.0-RC4" />
|
||||
<!-- no configuration should be needed beyond this point -->
|
||||
|
||||
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
||||
@@ -259,7 +259,7 @@
|
||||
command="git archive ${revision} composer.phar | tar -xf - -C ${dir}"
|
||||
checkreturn="true" />
|
||||
<exec dir="${dir}"
|
||||
command="php composer.phar install --no-dev"
|
||||
command="php composer.phar install --no-dev --optimize-autoloader"
|
||||
checkreturn="true"
|
||||
passthru="true" />
|
||||
<delete file="${dir}/composer.phar" />
|
||||
@@ -273,6 +273,9 @@
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<!-- Create schema.json -->
|
||||
<exec dir="${dir}" command="php develop/create_schema_files.php" />
|
||||
|
||||
<delete file="${dir}/config.php" />
|
||||
<delete dir="${dir}/develop" />
|
||||
<delete dir="${dir}/install/data" />
|
||||
|
@@ -153,19 +153,24 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
|
||||
$start_argument = $phpcsFile->findPrevious(array(T_OPEN_PARENTHESIS, T_COMMA), $argument);
|
||||
$argument_class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), ($start_argument + 1), $argument);
|
||||
$argument_class_name_end = $phpcsFile->findNext($find, ($argument_class_name_start + 1), null, true);
|
||||
|
||||
$argument_class_name = $phpcsFile->getTokensAsString($argument_class_name_start, ($argument_class_name_end - $argument_class_name_start - 1));
|
||||
|
||||
if ($argument_class_name === $class_name_full)
|
||||
// Skip the parameter if no type is defined.
|
||||
if ($argument_class_name_start !== false)
|
||||
{
|
||||
$error = 'Either use statement or full name must be used.';
|
||||
$phpcsFile->addError($error, $function_declaration, 'FullName');
|
||||
}
|
||||
$argument_class_name_end = $phpcsFile->findNext($find, ($argument_class_name_start + 1), null, true);
|
||||
|
||||
if ($argument_class_name === $class_name_short)
|
||||
{
|
||||
$ok = true;
|
||||
$argument_class_name = $phpcsFile->getTokensAsString($argument_class_name_start, ($argument_class_name_end - $argument_class_name_start - 1));
|
||||
|
||||
if ($argument_class_name === $class_name_full)
|
||||
{
|
||||
$error = 'Either use statement or full name must be used.';
|
||||
$phpcsFile->addError($error, $function_declaration, 'FullName');
|
||||
}
|
||||
|
||||
if ($argument_class_name === $class_name_short)
|
||||
{
|
||||
$ok = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -45,7 +45,7 @@ $versions = Sami\Version\GitVersionCollection::create(__DIR__ . '/../')
|
||||
->add('develop-ascraeus')
|
||||
;
|
||||
|
||||
return new Sami\Sami($iterator, array(
|
||||
$config = array(
|
||||
'theme' => 'enhanced',
|
||||
'versions' => $versions,
|
||||
'title' => 'phpBB API Documentation',
|
||||
@@ -54,4 +54,6 @@ return new Sami\Sami($iterator, array(
|
||||
'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);
|
||||
|
@@ -284,8 +284,6 @@
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<br />
|
||||
|
||||
<form id="change_ext" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="tabulated">
|
||||
|
@@ -13,27 +13,34 @@
|
||||
|
||||
var ban_length = new Array();
|
||||
ban_length[-1] = '';
|
||||
<!-- BEGIN ban_length -->
|
||||
ban_length['{ban_length.BAN_ID}'] = '{ban_length.A_LENGTH}';
|
||||
<!-- END ban_length -->
|
||||
|
||||
var ban_reason = new Array();
|
||||
ban_reason[-1] = '';
|
||||
<!-- BEGIN ban_reason -->
|
||||
ban_reason['{ban_reason.BAN_ID}'] = '{ban_reason.A_REASON}';
|
||||
<!-- END ban_reason -->
|
||||
|
||||
var ban_give_reason = new Array();
|
||||
ban_give_reason[-1] = '';
|
||||
<!-- BEGIN ban_give_reason -->
|
||||
ban_give_reason['{ban_give_reason.BAN_ID}'] = '{ban_give_reason.A_REASON}';
|
||||
<!-- END ban_give_reason -->
|
||||
|
||||
<!-- BEGIN bans -->
|
||||
ban_length['{bans.BAN_ID}'] = '{bans.A_LENGTH}';
|
||||
<!-- IF bans.A_REASON -->
|
||||
ban_reason['{bans.BAN_ID}'] = '{bans.A_REASON}';
|
||||
<!-- ENDIF -->
|
||||
<!-- IF bans.A_GIVE_REASON -->
|
||||
ban_give_reason['{bans.BAN_ID}'] = '{bans.A_GIVE_REASON}';
|
||||
<!-- ENDIF -->
|
||||
<!-- END bans -->
|
||||
|
||||
function display_details(option)
|
||||
{
|
||||
document.getElementById('acp_unban').unbangivereason.innerHTML = ban_give_reason[option];
|
||||
document.getElementById('acp_unban').unbanreason.innerHTML = ban_reason[option];
|
||||
document.getElementById('acp_unban').unbanlength.value = ban_length[option];
|
||||
document.getElementById('unbanlength').value = ban_length[option];
|
||||
if (option in ban_reason) {
|
||||
document.getElementById('unbanreason').innerHTML = ban_reason[option];
|
||||
} else {
|
||||
document.getElementById('unbanreason').innerHTML = '';
|
||||
}
|
||||
if (option in ban_give_reason) {
|
||||
document.getElementById('unbangivereason').innerHTML = ban_give_reason[option];
|
||||
} else {
|
||||
document.getElementById('unbangivereason').innerHTML = '';
|
||||
}
|
||||
}
|
||||
|
||||
// ]]>
|
||||
|
@@ -6,6 +6,7 @@
|
||||
|
||||
<p>{L_ACP_VC_SETTINGS_EXPLAIN}</p>
|
||||
|
||||
<p>{L_ACP_VC_EXT_GET_MORE}</p>
|
||||
|
||||
<form id="acp_captcha" method="post" action="{U_ACTION}">
|
||||
|
||||
|
@@ -117,7 +117,6 @@
|
||||
<dl>
|
||||
<dt><label>{L_AVATAR_TYPE}{L_COLON}</label></dt>
|
||||
<dd><select name="avatar_driver" id="avatar_driver" data-togglable-settings="true">
|
||||
<option value="">{L_NO_AVATAR}</option>
|
||||
<!-- BEGIN avatar_drivers -->
|
||||
<option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF --> data-toggle-setting="#avatar_option_{avatar_drivers.DRIVER}">{avatar_drivers.L_TITLE}</option>
|
||||
<!-- END avatar_drivers -->
|
||||
|
@@ -2,14 +2,12 @@
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<h2>{L_INACTIVE_USERS}</h2>
|
||||
<h1>{L_INACTIVE_USERS}</h1>
|
||||
|
||||
<p>{L_INACTIVE_USERS_EXPLAIN}</p>
|
||||
|
||||
<form id="inactive" method="post" action="{U_ACTION}">
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<!-- IF .pagination -->
|
||||
<div class="pagination">
|
||||
<!-- INCLUDE pagination.html -->
|
||||
|
@@ -8,7 +8,7 @@
|
||||
|
||||
<form id="list" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="display-options" style="float: left">
|
||||
<fieldset class="display-options search-box">
|
||||
{L_SEARCH_KEYWORDS}{L_COLON} <input type="text" name="keywords" value="{S_KEYWORDS}" /> <input type="submit" class="button2" name="filter" value="{L_SEARCH}" />
|
||||
</fieldset>
|
||||
|
||||
@@ -18,9 +18,6 @@
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<div class="clearfix"> </div>
|
||||
<div><br style="clear: both;" /></div>
|
||||
|
||||
<!-- IF .log -->
|
||||
<table class="table1 zebra-table fixed-width-table">
|
||||
<thead>
|
||||
|
@@ -243,9 +243,6 @@
|
||||
<!-- END log -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_INACTIVE_USERS -->
|
||||
@@ -287,7 +284,6 @@
|
||||
<!-- END inactive -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
@@ -24,6 +24,9 @@
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ACP_RANKS}</legend>
|
||||
|
||||
<!-- EVENT acp_ranks_edit_before -->
|
||||
|
||||
<dl>
|
||||
<dt><label for="title">{L_RANK_TITLE}{L_COLON}</label></dt>
|
||||
<dd><input name="title" type="text" id="title" value="{RANK_TITLE}" maxlength="255" /></dd>
|
||||
@@ -38,13 +41,15 @@
|
||||
<dd><label><input onclick="phpbb.toggleDisplay('posts', -1)" type="radio" class="radio" name="special_rank" value="1" id="special_rank"<!-- IF S_SPECIAL_RANK --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input onclick="phpbb.toggleDisplay('posts', 1)" type="radio" class="radio" name="special_rank" value="0"<!-- IF not S_SPECIAL_RANK --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<!-- IF S_SPECIAL_RANK --><div id="posts" style="display: none;"><!-- ELSE --><div id="posts"><!-- ENDIF -->
|
||||
<div id="posts"<!-- IF S_SPECIAL_RANK --> style="display: none;"<!-- ENDIF -->>
|
||||
<dl>
|
||||
<dt><label for="min_posts">{L_RANK_MINIMUM}{L_COLON}</label></dt>
|
||||
<dd><input name="min_posts" type="number" id="min_posts" maxlength="10" value="{MIN_POSTS}" /></dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<!-- EVENT acp_ranks_edit_after -->
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="action" value="save" />
|
||||
|
||||
@@ -68,18 +73,22 @@
|
||||
<table class="table1 zebra-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- EVENT acp_ranks_list_header_before -->
|
||||
<th>{L_RANK_IMAGE}</th>
|
||||
<th>{L_RANK_TITLE}</th>
|
||||
<th>{L_RANK_MINIMUM}</th>
|
||||
<!-- EVENT acp_ranks_list_header_after -->
|
||||
<th>{L_ACTION}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN ranks -->
|
||||
<tr>
|
||||
<!-- 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;">{ranks.RANK_TITLE}</td>
|
||||
<td style="text-align: center;"><!-- IF ranks.S_SPECIAL_RANK --> - <!-- ELSE -->{ranks.MIN_POSTS}<!-- ENDIF --></td>
|
||||
<!-- EVENT acp_ranks_list_column_after -->
|
||||
<td style="text-align: center;"><a href="{ranks.U_EDIT}">{ICON_EDIT}</a> <a href="{ranks.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a></td>
|
||||
</tr>
|
||||
<!-- END ranks -->
|
||||
|
@@ -14,7 +14,6 @@
|
||||
<dl>
|
||||
<dt><label>{L_AVATAR_TYPE}</label></dt>
|
||||
<dd><select name="avatar_driver" id="avatar_driver" data-togglable-settings="true">
|
||||
<option value="">{L_NO_AVATAR}</option>
|
||||
<!-- BEGIN avatar_drivers -->
|
||||
<option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF --> data-toggle-setting="#avatar_option_{avatar_drivers.DRIVER}">{avatar_drivers.L_TITLE}</option>
|
||||
<!-- END avatar_drivers -->
|
||||
|
@@ -109,6 +109,14 @@ hr {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.search-box {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.rtl .search-box {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.small {
|
||||
font-size: 0.85em;
|
||||
}
|
||||
@@ -154,6 +162,10 @@ a:active {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a#maincontent, a#acl, a#assigned_to {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* List items */
|
||||
ul, ol {
|
||||
list-style-position: inside;
|
||||
@@ -174,7 +186,6 @@ li {
|
||||
}
|
||||
|
||||
#page-header {
|
||||
clear: both;
|
||||
text-align: right;
|
||||
background: url("../images/phpbb_logo.png") top left no-repeat;
|
||||
height: 54px;
|
||||
@@ -203,14 +214,9 @@ li {
|
||||
}
|
||||
|
||||
#page-body {
|
||||
clear: both;
|
||||
min-width: 650px;
|
||||
}
|
||||
|
||||
#page-footer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
font-size: 0.75em;
|
||||
text-align: center;
|
||||
@@ -335,12 +341,6 @@ li {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#tabs > ul:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#tabs .tab {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
@@ -475,7 +475,6 @@ li {
|
||||
/* Main Panel
|
||||
---------------------------------------- */
|
||||
#acp {
|
||||
clear: both;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
margin: 0 0 2px;
|
||||
@@ -723,6 +722,7 @@ td {
|
||||
.table1 {
|
||||
border-collapse: separate;
|
||||
border-spacing: 1px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
dt#color_palette_placeholder table {
|
||||
@@ -862,10 +862,10 @@ table.zebra-table tbody tr:nth-child(even) {
|
||||
}
|
||||
|
||||
/* Deactivated row */
|
||||
.row-inactive {
|
||||
color: #999;
|
||||
.row-inactive {
|
||||
color: #999;
|
||||
}
|
||||
.row-inactive a, .row-inactive strong {
|
||||
.row-inactive a, .row-inactive strong {
|
||||
color: #888;
|
||||
}
|
||||
.row-inactive a:hover {
|
||||
@@ -1132,6 +1132,11 @@ input.langvalue, textarea.langvalue {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
input[type="number"] {
|
||||
width: 60px;
|
||||
-moz-padding-end: 0;
|
||||
}
|
||||
|
||||
optgroup, select {
|
||||
background-color: #FAFAFA;
|
||||
border: 1px solid #666666;
|
||||
@@ -1226,8 +1231,8 @@ fieldset.quick legend {
|
||||
fieldset.tabulated {
|
||||
background: none;
|
||||
margin: 0;
|
||||
margin-top: 5px;
|
||||
padding: 0;
|
||||
padding-top: 5px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
@@ -1464,7 +1469,7 @@ input:focus, textarea:focus {
|
||||
{
|
||||
select, dd select, dd input {
|
||||
max-width: 240px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Submit button fieldset or paragraph
|
||||
@@ -1676,12 +1681,12 @@ input.button1:focus, input.button2:focus {
|
||||
height: 1%; /* IE tweak (holly hack) */
|
||||
width: auto;
|
||||
text-align: right;
|
||||
margin-top: 5px;
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.top-pagination {
|
||||
float: right;
|
||||
margin: 15px 0 2px 0;
|
||||
margin: 15px 0 5px 0;
|
||||
}
|
||||
|
||||
.rtl .pagination {
|
||||
@@ -1776,6 +1781,7 @@ li.pagination ul {
|
||||
margin: 10px 0;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.success {
|
||||
@@ -1877,17 +1883,7 @@ li.pagination ul {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* Nice method for clearing floated blocks without having to insert any extra markup
|
||||
From http://www.positioniseverything.net/easyclearing.html
|
||||
.clearfix:after, #tabs:after, .row:after, #content:after, fieldset dl:after, #page-body:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}*/
|
||||
|
||||
.clearfix, .row, #content, fieldset dl, #page-body {
|
||||
.row, fieldset dl {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@@ -2470,3 +2466,20 @@ fieldset.permissions .padding {
|
||||
.responsive-show-inline { display: inline !important; }
|
||||
.responsive-show-inline-block { display: inline-block !important; }
|
||||
}
|
||||
|
||||
.clearfix {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pagination:after,
|
||||
#page-header:after,
|
||||
#page-body:after,
|
||||
#tabs:after,
|
||||
#tabs > ul:after,
|
||||
#tabs li:after,
|
||||
#acp:after,
|
||||
#content:after {
|
||||
content: '';
|
||||
clear: both;
|
||||
display: block;
|
||||
}
|
||||
|
@@ -1,6 +1,8 @@
|
||||
/* global phpbb */
|
||||
|
||||
(function($) { // Avoid conflicts with other libraries
|
||||
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* The following callbacks are for reording items. row_down
|
||||
@@ -13,11 +15,10 @@ phpbb.addAjaxCallback('row_down', function(res) {
|
||||
return;
|
||||
}
|
||||
|
||||
var el = $(this),
|
||||
tr = el.parents('tr'),
|
||||
trSwap = tr.next();
|
||||
var $firstTr = $(this).parents('tr'),
|
||||
$secondTr = $firstTr.next();
|
||||
|
||||
tr.insertAfter(trSwap);
|
||||
$firstTr.insertAfter($secondTr);
|
||||
});
|
||||
|
||||
phpbb.addAjaxCallback('row_up', function(res) {
|
||||
@@ -25,11 +26,10 @@ phpbb.addAjaxCallback('row_up', function(res) {
|
||||
return;
|
||||
}
|
||||
|
||||
var el = $(this),
|
||||
tr = el.parents('tr'),
|
||||
trSwap = tr.prev();
|
||||
var $secondTr = $(this).parents('tr'),
|
||||
$firstTr = $secondTr.prev();
|
||||
|
||||
tr.insertBefore(trSwap);
|
||||
$secondTr.insertBefore($firstTr);
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -38,10 +38,10 @@ phpbb.addAjaxCallback('row_up', function(res) {
|
||||
* in the href with "deactivate", and vice versa.
|
||||
*/
|
||||
phpbb.addAjaxCallback('activate_deactivate', function(res) {
|
||||
var el = $(this),
|
||||
newHref = el.attr('href');
|
||||
var $this = $(this),
|
||||
newHref = $this.attr('href');
|
||||
|
||||
el.text(res.text);
|
||||
$this.text(res.text);
|
||||
|
||||
if (newHref.indexOf('deactivate') !== -1) {
|
||||
newHref = newHref.replace('deactivate', 'activate');
|
||||
@@ -49,7 +49,7 @@ phpbb.addAjaxCallback('activate_deactivate', function(res) {
|
||||
newHref = newHref.replace('activate', 'deactivate');
|
||||
}
|
||||
|
||||
el.attr('href', newHref);
|
||||
$this.attr('href', newHref);
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -66,11 +66,10 @@ phpbb.addAjaxCallback('row_delete', function(res) {
|
||||
|
||||
$('[data-ajax]').each(function() {
|
||||
var $this = $(this),
|
||||
ajax = $this.attr('data-ajax'),
|
||||
fn;
|
||||
ajax = $this.attr('data-ajax');
|
||||
|
||||
if (ajax !== 'false') {
|
||||
fn = (ajax !== 'true') ? ajax : null;
|
||||
var fn = (ajax !== 'true') ? ajax : null;
|
||||
phpbb.ajaxify({
|
||||
selector: this,
|
||||
refresh: $this.attr('data-refresh') !== undefined,
|
||||
@@ -82,7 +81,7 @@ $('[data-ajax]').each(function() {
|
||||
/**
|
||||
* Automatically resize textarea
|
||||
*/
|
||||
$(document).ready(function() {
|
||||
$(function() {
|
||||
phpbb.resizeTextArea($('textarea:not(.no-auto-resize)'), {minHeight: 75});
|
||||
});
|
||||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="ldap_email">{L_LDAP_EMAIL}{L_COLON}</label><br /><span>{L_LDAP_EMAIL_EXPLAIN}</span></dt>
|
||||
<dd><input type="email" id="ldap_email" size="40" name="config[ldap_email]" value="{AUTH_LDAP_EMAIL}" /></dd>
|
||||
<dd><input type="text" id="ldap_email" size="40" name="config[ldap_email]" value="{AUTH_LDAP_EMAIL}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="ldap_user">{L_LDAP_USER}{L_COLON}</label><br /><span>{L_LDAP_USER_EXPLAIN}</span></dt>
|
||||
|
@@ -89,6 +89,8 @@ function popup(url, width, height, name)
|
||||
|
||||
{$STYLESHEETS}
|
||||
|
||||
<!-- EVENT acp_overall_header_stylesheets_after -->
|
||||
|
||||
</head>
|
||||
|
||||
<body class="{S_CONTENT_DIRECTION} {BODY_CLASS} nojs">
|
||||
|
@@ -84,6 +84,7 @@ function find_username(url)
|
||||
</script>
|
||||
<!-- EVENT acp_simple_header_head_append -->
|
||||
{$STYLESHEETS}
|
||||
<!-- EVENT acp_simple_header_stylesheets_after -->
|
||||
</head>
|
||||
|
||||
<body class="{S_CONTENT_DIRECTION} {BODY_CLASS}">
|
||||
|
@@ -1,17 +1,25 @@
|
||||
<dl>
|
||||
<dt><label for="timezone">{L_BOARD_TIMEZONE}{L_COLON}</label></dt>
|
||||
<!-- IF S_TZ_DATE_OPTIONS -->
|
||||
<!-- IF .timezone_date -->
|
||||
<dd id="tz_select_date" style="display: none;">
|
||||
<select name="tz_date" id="tz_date" class="autowidth tz_select">
|
||||
<option value="">{L_SELECT_CURRENT_TIME}</option>
|
||||
{S_TZ_DATE_OPTIONS}
|
||||
<!-- BEGIN timezone_date -->
|
||||
<option value="{timezone_date.VALUE}"<!-- IF timezone_date.SELECTED --> selected="selected"<!-- ENDIF -->>{timezone_date.TITLE}</option>
|
||||
<!-- END timezone_date -->
|
||||
</select>
|
||||
</dd>
|
||||
<!-- ENDIF -->
|
||||
<dd>
|
||||
<select name="tz" id="timezone" class="autowidth tz_select">
|
||||
<option value="">{L_SELECT_TIMEZONE}</option>
|
||||
{S_TZ_OPTIONS}
|
||||
<!-- BEGIN timezone_select -->
|
||||
<optgroup label="{timezone_select.LABEL}" data-tz-value="{timezone_select.VALUE}">
|
||||
<!-- BEGIN timezone_options -->
|
||||
<option title="{timezone_select.timezone_options.TITLE}" value="{timezone_select.timezone_options.VALUE}"<!-- IF timezone_select.timezone_options.SELECTED --> selected="selected"<!-- ENDIF -->>{timezone_select.timezone_options.LABEL}</option>
|
||||
<!-- END timezone_options -->
|
||||
</optgroup>
|
||||
<!-- END timezone_select -->
|
||||
</select>
|
||||
|
||||
<!-- INCLUDEJS timezone.js -->
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -266,10 +266,6 @@ function mozWrap(txtarea, open, close) {
|
||||
var selEnd = txtarea.selectionEnd;
|
||||
var scrollTop = txtarea.scrollTop;
|
||||
|
||||
if (selEnd === 1 || selEnd === 2) {
|
||||
selEnd = selLength;
|
||||
}
|
||||
|
||||
var s1 = (txtarea.value).substring(0,selStart);
|
||||
var s2 = (txtarea.value).substring(selStart, selEnd);
|
||||
var s3 = (txtarea.value).substring(selEnd, selLength);
|
||||
|
@@ -12,6 +12,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use Symfony\Component\Console\Input\ArgvInput;
|
||||
|
||||
if (php_sapi_name() != 'cli')
|
||||
{
|
||||
echo 'This program must be run from the command line.' . PHP_EOL;
|
||||
@@ -35,20 +37,31 @@ require($phpbb_root_path . 'includes/functions.' . $phpEx);
|
||||
require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
|
||||
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
||||
|
||||
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
|
||||
$phpbb_class_loader_ext->register();
|
||||
|
||||
$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_config_php_file, $phpbb_root_path, $phpEx);
|
||||
$phpbb_container_builder->set_use_extensions(false);
|
||||
$phpbb_container_builder->set_dump_container(false);
|
||||
|
||||
$input = new ArgvInput();
|
||||
|
||||
if ($input->hasParameterOption(array('--safe-mode')))
|
||||
{
|
||||
$phpbb_container_builder->set_use_extensions(false);
|
||||
$phpbb_container_builder->set_dump_container(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
|
||||
$phpbb_class_loader_ext->register();
|
||||
phpbb_load_extensions_autoloaders($phpbb_root_path);
|
||||
}
|
||||
|
||||
$phpbb_container = $phpbb_container_builder->get_container();
|
||||
$phpbb_container->get('request')->enable_super_globals();
|
||||
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
|
||||
|
||||
$user = $phpbb_container->get('user');
|
||||
$user->add_lang('acp/common');
|
||||
$user->add_lang('cli');
|
||||
|
||||
$application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $user);
|
||||
$application->register_container_commands($phpbb_container);
|
||||
$application->run();
|
||||
$application->register_container_commands($phpbb_container->get('console.command_collection'));
|
||||
$application->run($input);
|
||||
|
@@ -104,7 +104,7 @@ require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
|
||||
|
||||
// Add own hook handler
|
||||
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
|
||||
$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('\phpbb\template\template', 'display')));
|
||||
$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));
|
||||
$phpbb_hook_finder = $phpbb_container->get('hook_finder');
|
||||
|
||||
foreach ($phpbb_hook_finder->find() as $hook)
|
||||
|
@@ -1,9 +1,31 @@
|
||||
{
|
||||
"_readme": [
|
||||
"You MUST update the clean-vendor-dir target in build/build.xml",
|
||||
"accordingly when adding or upgrading dependencies."
|
||||
"name": "phpbb/phpbb",
|
||||
"description": "phpBB Forum Software application",
|
||||
"type": "project",
|
||||
"keywords": ["phpbb", "forum"],
|
||||
"homepage": "https://www.phpbb.com",
|
||||
"license": "GPL-2.0",
|
||||
"authors": [
|
||||
{
|
||||
"name": "phpBB Limited",
|
||||
"email": "operations@phpbb.com",
|
||||
"homepage": "https://www.phpbb.com/go/authors"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://tracker.phpbb.com",
|
||||
"forum": "https://www.phpbb.com/community/",
|
||||
"wiki": "https://wiki.phpbb.com",
|
||||
"irc": "irc://irc.freenode.org/phpbb"
|
||||
},
|
||||
"scripts": {
|
||||
"post-update-cmd": "echo 'You MUST manually modify the clean-vendor-dir target in build/build.xml when adding or upgrading dependencies.'"
|
||||
},
|
||||
"replace": {
|
||||
"phpbb/phpbb-core": "self.version"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"lusitanian/oauth": "0.2.*",
|
||||
"symfony/config": "2.3.*",
|
||||
"symfony/console": "2.3.*",
|
||||
@@ -15,8 +37,6 @@
|
||||
"twig/twig": "1.13.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"behat/mink": "1.4.*",
|
||||
"behat/mink-goutte-driver": "1.0.*",
|
||||
"fabpot/goutte": "1.0.*",
|
||||
"phpunit/dbunit": "1.3.*",
|
||||
"phpunit/phpunit": "4.1.*",
|
||||
@@ -24,6 +44,7 @@
|
||||
"sami/sami": "1.*",
|
||||
"squizlabs/php_codesniffer": "1.*",
|
||||
"symfony/browser-kit": "2.3.*",
|
||||
"symfony/css-selector": "2.3.*",
|
||||
"symfony/debug": "2.3.*",
|
||||
"symfony/dom-crawler": "2.3.*",
|
||||
"symfony/filesystem": "2.3.*",
|
||||
|
469
phpBB/composer.lock
generated
469
phpBB/composer.lock
generated
@@ -3,7 +3,7 @@
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
|
||||
],
|
||||
"hash": "dcd46c1373cfc4dacd2e1f8a79da0b91",
|
||||
"hash": "d93446768ea0665b7c55c01890153a67",
|
||||
"packages": [
|
||||
{
|
||||
"name": "lusitanian/oauth",
|
||||
@@ -108,17 +108,17 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/config",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/Config",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Config.git",
|
||||
"reference": "259722b5f2e87d3f487630abfd40f922cf2f6900"
|
||||
"reference": "b34d2b32a92938476f0689486e7a11ea1aeb079e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Config/zipball/259722b5f2e87d3f487630abfd40f922cf2f6900",
|
||||
"reference": "259722b5f2e87d3f487630abfd40f922cf2f6900",
|
||||
"url": "https://api.github.com/repos/symfony/Config/zipball/b34d2b32a92938476f0689486e7a11ea1aeb079e",
|
||||
"reference": "b34d2b32a92938476f0689486e7a11ea1aeb079e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -141,34 +141,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Config Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-04-22 08:09:28"
|
||||
"time": "2014-08-02 07:53:48"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/Console",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Console.git",
|
||||
"reference": "c6c5a354a9945a5e9a9a6a495ca19558eb8639e9"
|
||||
"reference": "a2723f99716c2fa6411e2eb5842edbe680e4b462"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Console/zipball/c6c5a354a9945a5e9a9a6a495ca19558eb8639e9",
|
||||
"reference": "c6c5a354a9945a5e9a9a6a495ca19558eb8639e9",
|
||||
"url": "https://api.github.com/repos/symfony/Console/zipball/a2723f99716c2fa6411e2eb5842edbe680e4b462",
|
||||
"reference": "a2723f99716c2fa6411e2eb5842edbe680e4b462",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -196,34 +194,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Console Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-14 13:35:53"
|
||||
"time": "2014-08-07 15:55:24"
|
||||
},
|
||||
{
|
||||
"name": "symfony/debug",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/Debug",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Debug.git",
|
||||
"reference": "ca764f8af9cc4ba5d81b598c1b18b30db5508e18"
|
||||
"reference": "91e3a1480c67601d2406cd938735abe0243e1c95"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Debug/zipball/ca764f8af9cc4ba5d81b598c1b18b30db5508e18",
|
||||
"reference": "ca764f8af9cc4ba5d81b598c1b18b30db5508e18",
|
||||
"url": "https://api.github.com/repos/symfony/Debug/zipball/91e3a1480c67601d2406cd938735abe0243e1c95",
|
||||
"reference": "91e3a1480c67601d2406cd938735abe0243e1c95",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -254,34 +250,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Debug Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-04-29 19:42:43"
|
||||
"time": "2014-07-07 10:13:42"
|
||||
},
|
||||
{
|
||||
"name": "symfony/dependency-injection",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/DependencyInjection",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/DependencyInjection.git",
|
||||
"reference": "5ebd813eac59b4051705a2e29e32f211a966b6ca"
|
||||
"reference": "5ee5795515be251c56057d79154e561ee1efecd2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/5ebd813eac59b4051705a2e29e32f211a966b6ca",
|
||||
"reference": "5ebd813eac59b4051705a2e29e32f211a966b6ca",
|
||||
"url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/5ee5795515be251c56057d79154e561ee1efecd2",
|
||||
"reference": "5ee5795515be251c56057d79154e561ee1efecd2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -312,34 +306,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony DependencyInjection Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-02 22:42:57"
|
||||
"time": "2014-08-27 08:32:18"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/EventDispatcher",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/EventDispatcher.git",
|
||||
"reference": "cb7cd38c081507d10997553c4c522956a4d2afab"
|
||||
"reference": "2c64e46d7e22bcafcab4413ff62bc389abf87ea5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/cb7cd38c081507d10997553c4c522956a4d2afab",
|
||||
"reference": "cb7cd38c081507d10997553c4c522956a4d2afab",
|
||||
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/2c64e46d7e22bcafcab4413ff62bc389abf87ea5",
|
||||
"reference": "2c64e46d7e22bcafcab4413ff62bc389abf87ea5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -368,34 +360,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony EventDispatcher Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-04-16 10:30:19"
|
||||
"time": "2014-07-25 15:00:14"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/Filesystem",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Filesystem.git",
|
||||
"reference": "69e476c4db31c43ab7ab797adc5fc73d20aa5571"
|
||||
"reference": "007359d2822d5eba4f04f6507bc9b46877c622b4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Filesystem/zipball/69e476c4db31c43ab7ab797adc5fc73d20aa5571",
|
||||
"reference": "69e476c4db31c43ab7ab797adc5fc73d20aa5571",
|
||||
"url": "https://api.github.com/repos/symfony/Filesystem/zipball/007359d2822d5eba4f04f6507bc9b46877c622b4",
|
||||
"reference": "007359d2822d5eba4f04f6507bc9b46877c622b4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -417,34 +407,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Filesystem Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-04-16 10:30:19"
|
||||
"time": "2014-08-31 03:30:23"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/HttpFoundation",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/HttpFoundation.git",
|
||||
"reference": "ad7891d4dfe221c5a9edca64b71bdb500f5b026a"
|
||||
"reference": "d0125fed988da9e189864c2e6de967b3ee7f1d98"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/ad7891d4dfe221c5a9edca64b71bdb500f5b026a",
|
||||
"reference": "ad7891d4dfe221c5a9edca64b71bdb500f5b026a",
|
||||
"url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/d0125fed988da9e189864c2e6de967b3ee7f1d98",
|
||||
"reference": "d0125fed988da9e189864c2e6de967b3ee7f1d98",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -469,34 +457,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony HttpFoundation Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-22 16:20:26"
|
||||
"time": "2014-09-03 07:39:11"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/HttpKernel",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/HttpKernel.git",
|
||||
"reference": "d8c00747f592183692afaacf622c444c36092613"
|
||||
"reference": "a24817f69012b23ce7c554af6b4c7b53235c7c55"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/HttpKernel/zipball/d8c00747f592183692afaacf622c444c36092613",
|
||||
"reference": "d8c00747f592183692afaacf622c444c36092613",
|
||||
"url": "https://api.github.com/repos/symfony/HttpKernel/zipball/a24817f69012b23ce7c554af6b4c7b53235c7c55",
|
||||
"reference": "a24817f69012b23ce7c554af6b4c7b53235c7c55",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -542,34 +528,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony HttpKernel Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-31 02:04:21"
|
||||
"time": "2014-09-03 09:45:27"
|
||||
},
|
||||
{
|
||||
"name": "symfony/routing",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/Routing",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Routing.git",
|
||||
"reference": "6e4c9024a04340b83e456a1a24597dba066dcdc9"
|
||||
"reference": "aa2beef5d5f1d84250b5ca73a4056c0504e5969e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Routing/zipball/6e4c9024a04340b83e456a1a24597dba066dcdc9",
|
||||
"reference": "6e4c9024a04340b83e456a1a24597dba066dcdc9",
|
||||
"url": "https://api.github.com/repos/symfony/Routing/zipball/aa2beef5d5f1d84250b5ca73a4056c0504e5969e",
|
||||
"reference": "aa2beef5d5f1d84250b5ca73a4056c0504e5969e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -602,34 +586,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Routing Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-04-23 13:35:47"
|
||||
"time": "2014-08-15 09:05:55"
|
||||
},
|
||||
{
|
||||
"name": "symfony/yaml",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/Yaml",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Yaml.git",
|
||||
"reference": "2e257c292cfce88bf6c894a03d0fe8d782055aee"
|
||||
"reference": "71ceeca3d8164f0c5313127b24ad056071ccf2c6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Yaml/zipball/2e257c292cfce88bf6c894a03d0fe8d782055aee",
|
||||
"reference": "2e257c292cfce88bf6c894a03d0fe8d782055aee",
|
||||
"url": "https://api.github.com/repos/symfony/Yaml/zipball/71ceeca3d8164f0c5313127b24ad056071ccf2c6",
|
||||
"reference": "71ceeca3d8164f0c5313127b24ad056071ccf2c6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -651,20 +633,18 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Yaml Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-12 09:13:35"
|
||||
"time": "2014-08-28 01:42:35"
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
@@ -720,167 +700,6 @@
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "behat/mink",
|
||||
"version": "v1.4.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Behat/Mink.git",
|
||||
"reference": "0817070a6e2ec9f475fad9bfb81a962c462eb934"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Behat/Mink/zipball/0817070a6e2ec9f475fad9bfb81a962c462eb934",
|
||||
"reference": "0817070a6e2ec9f475fad9bfb81a962c462eb934",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.1",
|
||||
"symfony/css-selector": ">=2.0,<2.4-dev"
|
||||
},
|
||||
"suggest": {
|
||||
"behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)",
|
||||
"behat/mink-goutte-driver": "fast headless driver for any app without JS emulation",
|
||||
"behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)",
|
||||
"behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-develop": "1.4.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Behat\\Mink": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Konstantin Kudryashov",
|
||||
"email": "ever.zet@gmail.com",
|
||||
"homepage": "http://everzet.com"
|
||||
}
|
||||
],
|
||||
"description": "Web acceptance testing framework for PHP 5.3",
|
||||
"homepage": "http://mink.behat.org/",
|
||||
"keywords": [
|
||||
"browser",
|
||||
"testing",
|
||||
"web"
|
||||
],
|
||||
"time": "2013-03-02 15:53:18"
|
||||
},
|
||||
{
|
||||
"name": "behat/mink-browserkit-driver",
|
||||
"version": "v1.0.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Behat/MinkBrowserKitDriver.git",
|
||||
"reference": "f2771b5fc4dbc233859addf37a7d150852f78418"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Behat/MinkBrowserKitDriver/zipball/f2771b5fc4dbc233859addf37a7d150852f78418",
|
||||
"reference": "f2771b5fc4dbc233859addf37a7d150852f78418",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"behat/mink": "~1.4.3",
|
||||
"php": ">=5.3.1",
|
||||
"symfony/browser-kit": "~2.0",
|
||||
"symfony/dom-crawler": "~2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"silex/silex": "@dev"
|
||||
},
|
||||
"type": "mink-driver",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Behat\\Mink\\Driver": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Konstantin Kudryashov",
|
||||
"email": "ever.zet@gmail.com",
|
||||
"homepage": "http://everzet.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony2 BrowserKit driver for Mink framework",
|
||||
"homepage": "http://mink.behat.org/",
|
||||
"keywords": [
|
||||
"Mink",
|
||||
"Symfony2",
|
||||
"browser",
|
||||
"testing"
|
||||
],
|
||||
"time": "2013-04-13 12:17:15"
|
||||
},
|
||||
{
|
||||
"name": "behat/mink-goutte-driver",
|
||||
"version": "v1.0.9",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Behat/MinkGoutteDriver.git",
|
||||
"reference": "fa1b073b48761464feb0b05e6825da44b20118d8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Behat/MinkGoutteDriver/zipball/fa1b073b48761464feb0b05e6825da44b20118d8",
|
||||
"reference": "fa1b073b48761464feb0b05e6825da44b20118d8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"behat/mink-browserkit-driver": ">=1.0.5,<1.2.0",
|
||||
"fabpot/goutte": "~1.0.1",
|
||||
"php": ">=5.3.1"
|
||||
},
|
||||
"type": "mink-driver",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Behat\\Mink\\Driver": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Konstantin Kudryashov",
|
||||
"email": "ever.zet@gmail.com",
|
||||
"homepage": "http://everzet.com"
|
||||
}
|
||||
],
|
||||
"description": "Goutte driver for Mink framework",
|
||||
"homepage": "http://mink.behat.org/",
|
||||
"keywords": [
|
||||
"browser",
|
||||
"goutte",
|
||||
"headless",
|
||||
"testing"
|
||||
],
|
||||
"time": "2013-07-03 18:43:54"
|
||||
},
|
||||
{
|
||||
"name": "fabpot/goutte",
|
||||
"version": "v1.0.3",
|
||||
@@ -2168,17 +1987,17 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/browser-kit",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/BrowserKit",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/BrowserKit.git",
|
||||
"reference": "bc6cb0fe5196ecfe183483791928ed525ac41728"
|
||||
"reference": "262d698efaa788ce24ff9c987378789bf3f81ce9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/BrowserKit/zipball/bc6cb0fe5196ecfe183483791928ed525ac41728",
|
||||
"reference": "bc6cb0fe5196ecfe183483791928ed525ac41728",
|
||||
"url": "https://api.github.com/repos/symfony/BrowserKit/zipball/262d698efaa788ce24ff9c987378789bf3f81ce9",
|
||||
"reference": "262d698efaa788ce24ff9c987378789bf3f81ce9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2208,34 +2027,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony BrowserKit Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-04-22 14:58:51"
|
||||
"time": "2014-08-05 07:20:55"
|
||||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/CssSelector",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/CssSelector.git",
|
||||
"reference": "2ff53e8a7870b453836e879b083b971d455e174d"
|
||||
"reference": "8953d325d3341c246abadb79be172de95ef80664"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/CssSelector/zipball/2ff53e8a7870b453836e879b083b971d455e174d",
|
||||
"reference": "2ff53e8a7870b453836e879b083b971d455e174d",
|
||||
"url": "https://api.github.com/repos/symfony/CssSelector/zipball/8953d325d3341c246abadb79be172de95ef80664",
|
||||
"reference": "8953d325d3341c246abadb79be172de95ef80664",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2257,12 +2074,6 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
@@ -2270,25 +2081,29 @@
|
||||
{
|
||||
"name": "Jean-François Simon",
|
||||
"email": "jeanfrancois.simon@sensiolabs.com"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony CssSelector Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-12 09:13:35"
|
||||
"time": "2014-08-27 08:24:06"
|
||||
},
|
||||
{
|
||||
"name": "symfony/dom-crawler",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/DomCrawler",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/DomCrawler.git",
|
||||
"reference": "5dd259d7842480fa7c5d4a45c4f911bd6fb60bc8"
|
||||
"reference": "bad8d98561f071639fa67b20680bffcc256ce252"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/DomCrawler/zipball/5dd259d7842480fa7c5d4a45c4f911bd6fb60bc8",
|
||||
"reference": "5dd259d7842480fa7c5d4a45c4f911bd6fb60bc8",
|
||||
"url": "https://api.github.com/repos/symfony/DomCrawler/zipball/bad8d98561f071639fa67b20680bffcc256ce252",
|
||||
"reference": "bad8d98561f071639fa67b20680bffcc256ce252",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2316,34 +2131,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony DomCrawler Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-26 22:15:18"
|
||||
"time": "2014-08-21 00:21:59"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/Finder",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Finder.git",
|
||||
"reference": "32949721cc76afd75e4ac60d14ac3cf55b10a768"
|
||||
"reference": "f7a5a5a3b1fc0ec9a1a5b4429223a8726e0f4b55"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Finder/zipball/32949721cc76afd75e4ac60d14ac3cf55b10a768",
|
||||
"reference": "32949721cc76afd75e4ac60d14ac3cf55b10a768",
|
||||
"url": "https://api.github.com/repos/symfony/Finder/zipball/f7a5a5a3b1fc0ec9a1a5b4429223a8726e0f4b55",
|
||||
"reference": "f7a5a5a3b1fc0ec9a1a5b4429223a8726e0f4b55",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2365,34 +2178,32 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Finder Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-22 13:42:36"
|
||||
"time": "2014-08-31 04:03:32"
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v2.3.16",
|
||||
"version": "v2.3.19",
|
||||
"target-dir": "Symfony/Component/Process",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Process.git",
|
||||
"reference": "2cd7d075df6cb0d564c069a66408b3877c07d4e3"
|
||||
"reference": "b8fc0e4b6750e4c458a38d038e6b4d538d4fe2bb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Process/zipball/2cd7d075df6cb0d564c069a66408b3877c07d4e3",
|
||||
"reference": "2cd7d075df6cb0d564c069a66408b3877c07d4e3",
|
||||
"url": "https://api.github.com/repos/symfony/Process/zipball/b8fc0e4b6750e4c458a38d038e6b4d538d4fe2bb",
|
||||
"reference": "b8fc0e4b6750e4c458a38d038e6b4d538d4fe2bb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2414,20 +2225,18 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Process Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2014-05-17 21:49:26"
|
||||
"time": "2014-08-28 09:02:24"
|
||||
}
|
||||
],
|
||||
"aliases": [
|
||||
@@ -2437,9 +2246,9 @@
|
||||
"stability-flags": [
|
||||
|
||||
],
|
||||
"platform": [
|
||||
|
||||
],
|
||||
"platform": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"platform-dev": [
|
||||
|
||||
]
|
||||
|
@@ -1,4 +1,9 @@
|
||||
services:
|
||||
# ----- Auth management -----
|
||||
auth:
|
||||
class: phpbb\auth\auth
|
||||
|
||||
# ----- Auth providers -----
|
||||
auth.provider_collection:
|
||||
class: phpbb\auth\provider_collection
|
||||
arguments:
|
||||
@@ -6,6 +11,7 @@ services:
|
||||
- @config
|
||||
tags:
|
||||
- { name: service_collection, tag: auth.provider }
|
||||
|
||||
auth.provider.db:
|
||||
class: phpbb\auth\provider\db
|
||||
arguments:
|
||||
@@ -14,10 +20,12 @@ services:
|
||||
- @passwords.manager
|
||||
- @request
|
||||
- @user
|
||||
- @service_container
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
tags:
|
||||
- { name: auth.provider }
|
||||
|
||||
auth.provider.apache:
|
||||
class: phpbb\auth\provider\apache
|
||||
arguments:
|
||||
@@ -30,6 +38,7 @@ services:
|
||||
- %core.php_ext%
|
||||
tags:
|
||||
- { name: auth.provider }
|
||||
|
||||
auth.provider.ldap:
|
||||
class: phpbb\auth\provider\ldap
|
||||
arguments:
|
||||
@@ -39,6 +48,7 @@ services:
|
||||
- @user
|
||||
tags:
|
||||
- { name: auth.provider }
|
||||
|
||||
auth.provider.oauth:
|
||||
class: phpbb\auth\provider\oauth\oauth
|
||||
arguments:
|
||||
@@ -51,16 +61,20 @@ services:
|
||||
- %tables.auth_provider_oauth_account_assoc%
|
||||
- @auth.provider.oauth.service_collection
|
||||
- %tables.users%
|
||||
- @service_container
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
tags:
|
||||
- { name: auth.provider }
|
||||
|
||||
# ----- OAuth services providers -----
|
||||
auth.provider.oauth.service_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: auth.provider.oauth.service }
|
||||
|
||||
auth.provider.oauth.service.bitly:
|
||||
class: phpbb\auth\provider\oauth\service\bitly
|
||||
arguments:
|
||||
@@ -68,6 +82,7 @@ services:
|
||||
- @request
|
||||
tags:
|
||||
- { name: auth.provider.oauth.service }
|
||||
|
||||
auth.provider.oauth.service.facebook:
|
||||
class: phpbb\auth\provider\oauth\service\facebook
|
||||
arguments:
|
||||
@@ -75,6 +90,7 @@ services:
|
||||
- @request
|
||||
tags:
|
||||
- { name: auth.provider.oauth.service }
|
||||
|
||||
auth.provider.oauth.service.google:
|
||||
class: phpbb\auth\provider\oauth\service\google
|
||||
arguments:
|
@@ -1,4 +1,18 @@
|
||||
services:
|
||||
avatar.manager:
|
||||
class: phpbb\avatar\manager
|
||||
arguments:
|
||||
- @config
|
||||
- @avatar.driver_collection
|
||||
|
||||
# ----- Avatar drivers -----
|
||||
avatar.driver_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: avatar.driver }
|
||||
|
||||
avatar.driver.gravatar:
|
||||
class: phpbb\avatar\driver\gravatar
|
||||
arguments:
|
||||
@@ -45,15 +59,9 @@ services:
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- @path_helper
|
||||
- @mimetype.guesser
|
||||
- @cache.driver
|
||||
calls:
|
||||
- [set_name, [avatar.driver.upload]]
|
||||
tags:
|
||||
- { name: avatar.driver }
|
||||
|
||||
avatar.driver_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: avatar.driver }
|
59
phpBB/config/captcha.yml
Normal file
59
phpBB/config/captcha.yml
Normal file
@@ -0,0 +1,59 @@
|
||||
services:
|
||||
captcha.factory:
|
||||
class: phpbb\captcha\factory
|
||||
arguments:
|
||||
- @service_container
|
||||
- @captcha.plugins.service_collection
|
||||
|
||||
# ----- Captcha plugins -----
|
||||
# Scope MUST be prototype for all the plugins to work.
|
||||
captcha.plugins.service_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: captcha.plugins }
|
||||
|
||||
core.captcha.plugins.gd:
|
||||
class: phpbb\captcha\plugins\gd
|
||||
scope: prototype
|
||||
calls:
|
||||
- [set_name, [core.captcha.plugins.gd]]
|
||||
tags:
|
||||
- { name: captcha.plugins }
|
||||
|
||||
core.captcha.plugins.gd_wave:
|
||||
class: phpbb\captcha\plugins\gd_wave
|
||||
scope: prototype
|
||||
calls:
|
||||
- [set_name, [core.captcha.plugins.gd_wave]]
|
||||
tags:
|
||||
- { name: captcha.plugins }
|
||||
|
||||
core.captcha.plugins.nogd:
|
||||
class: phpbb\captcha\plugins\nogd
|
||||
scope: prototype
|
||||
calls:
|
||||
- [set_name, [core.captcha.plugins.nogd]]
|
||||
tags:
|
||||
- { name: captcha.plugins }
|
||||
|
||||
core.captcha.plugins.qa:
|
||||
class: phpbb\captcha\plugins\qa
|
||||
scope: prototype
|
||||
arguments:
|
||||
- %tables.captcha_qa_questions%
|
||||
- %tables.captcha_qa_answers%
|
||||
- %tables.captcha_qa_confirm%
|
||||
calls:
|
||||
- [set_name, [core.captcha.plugins.qa]]
|
||||
tags:
|
||||
- { name: captcha.plugins }
|
||||
|
||||
core.captcha.plugins.recaptcha:
|
||||
class: phpbb\captcha\plugins\recaptcha
|
||||
scope: prototype
|
||||
calls:
|
||||
- [set_name, [core.captcha.plugins.recaptcha]]
|
||||
tags:
|
||||
- { name: captcha.plugins }
|
@@ -1,12 +1,19 @@
|
||||
services:
|
||||
console.command_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: console.command }
|
||||
|
||||
console.command.cache.purge:
|
||||
class: phpbb\console\command\cache\purge
|
||||
arguments:
|
||||
- @user
|
||||
- @cache.driver
|
||||
- @dbal.conn
|
||||
- @auth
|
||||
- @log
|
||||
- @user
|
||||
- @config
|
||||
tags:
|
||||
- { name: console.command }
|
||||
@@ -14,6 +21,7 @@ services:
|
||||
console.command.config.delete:
|
||||
class: phpbb\console\command\config\delete
|
||||
arguments:
|
||||
- @user
|
||||
- @config
|
||||
tags:
|
||||
- { name: console.command }
|
||||
@@ -21,6 +29,7 @@ services:
|
||||
console.command.config.increment:
|
||||
class: phpbb\console\command\config\increment
|
||||
arguments:
|
||||
- @user
|
||||
- @config
|
||||
tags:
|
||||
- { name: console.command }
|
||||
@@ -28,6 +37,7 @@ services:
|
||||
console.command.config.get:
|
||||
class: phpbb\console\command\config\get
|
||||
arguments:
|
||||
- @user
|
||||
- @config
|
||||
tags:
|
||||
- { name: console.command }
|
||||
@@ -35,6 +45,7 @@ services:
|
||||
console.command.config.set:
|
||||
class: phpbb\console\command\config\set
|
||||
arguments:
|
||||
- @user
|
||||
- @config
|
||||
tags:
|
||||
- { name: console.command }
|
||||
@@ -42,6 +53,7 @@ services:
|
||||
console.command.config.set_atomic:
|
||||
class: phpbb\console\command\config\set_atomic
|
||||
arguments:
|
||||
- @user
|
||||
- @config
|
||||
tags:
|
||||
- { name: console.command }
|
||||
@@ -49,35 +61,36 @@ services:
|
||||
console.command.cron.list:
|
||||
class: phpbb\console\command\cron\cron_list
|
||||
arguments:
|
||||
- @cron.manager
|
||||
- @user
|
||||
- @cron.manager
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
||||
console.command.cron.run:
|
||||
class: phpbb\console\command\cron\run
|
||||
arguments:
|
||||
- @user
|
||||
- @cron.manager
|
||||
- @cron.lock_db
|
||||
- @user
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
||||
console.command.db.migrate:
|
||||
class: phpbb\console\command\db\migrate
|
||||
arguments:
|
||||
- @user
|
||||
- @migrator
|
||||
- @ext.manager
|
||||
- @config
|
||||
- @cache
|
||||
- @log
|
||||
- @user
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
||||
console.command.dev.migration_tips:
|
||||
class: phpbb\console\command\dev\migration_tips
|
||||
arguments:
|
||||
- @user
|
||||
- @ext.manager
|
||||
tags:
|
||||
- { name: console.command }
|
||||
@@ -85,6 +98,7 @@ services:
|
||||
console.command.extension.disable:
|
||||
class: phpbb\console\command\extension\disable
|
||||
arguments:
|
||||
- @user
|
||||
- @ext.manager
|
||||
- @log
|
||||
tags:
|
||||
@@ -93,6 +107,7 @@ services:
|
||||
console.command.extension.enable:
|
||||
class: phpbb\console\command\extension\enable
|
||||
arguments:
|
||||
- @user
|
||||
- @ext.manager
|
||||
- @log
|
||||
tags:
|
||||
@@ -101,6 +116,7 @@ services:
|
||||
console.command.extension.purge:
|
||||
class: phpbb\console\command\extension\purge
|
||||
arguments:
|
||||
- @user
|
||||
- @ext.manager
|
||||
- @log
|
||||
tags:
|
||||
@@ -109,6 +125,7 @@ services:
|
||||
console.command.extension.show:
|
||||
class: phpbb\console\command\extension\show
|
||||
arguments:
|
||||
- @user
|
||||
- @ext.manager
|
||||
- @log
|
||||
tags:
|
||||
@@ -117,6 +134,7 @@ services:
|
||||
console.command.fixup.recalculate_email_hash:
|
||||
class: phpbb\console\command\fixup\recalculate_email_hash
|
||||
arguments:
|
||||
- @user
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
71
phpBB/config/content.yml
Normal file
71
phpBB/config/content.yml
Normal file
@@ -0,0 +1,71 @@
|
||||
services:
|
||||
content.visibility:
|
||||
class: phpbb\content_visibility
|
||||
arguments:
|
||||
- @auth
|
||||
- @config
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- %tables.forums%
|
||||
- %tables.posts%
|
||||
- %tables.topics%
|
||||
- %tables.users%
|
||||
|
||||
groupposition.legend:
|
||||
class: phpbb\groupposition\legend
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
- @user
|
||||
|
||||
groupposition.teampage:
|
||||
class: phpbb\groupposition\teampage
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- @cache.driver
|
||||
|
||||
message.form.admin:
|
||||
class: phpbb\message\admin_form
|
||||
arguments:
|
||||
- @auth
|
||||
- @config
|
||||
- @config_text
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
message.form.topic:
|
||||
class: phpbb\message\topic_form
|
||||
arguments:
|
||||
- @auth
|
||||
- @config
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
message.form.user:
|
||||
class: phpbb\message\user_form
|
||||
arguments:
|
||||
- @auth
|
||||
- @config
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
pagination:
|
||||
class: phpbb\pagination
|
||||
arguments:
|
||||
- @template
|
||||
- @user
|
||||
- @controller.helper
|
||||
- @dispatcher
|
||||
|
||||
viewonline_helper:
|
||||
class: phpbb\viewonline_helper
|
||||
arguments:
|
||||
- @filesystem
|
@@ -1,4 +1,26 @@
|
||||
services:
|
||||
cron.manager:
|
||||
class: phpbb\cron\manager
|
||||
arguments:
|
||||
- @cron.task_collection
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
cron.lock_db:
|
||||
class: phpbb\lock\db
|
||||
arguments:
|
||||
- cron_lock
|
||||
- @config
|
||||
- @dbal.conn
|
||||
|
||||
# ----- Cron tasks -----
|
||||
cron.task_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: cron.task }
|
||||
|
||||
cron.task.core.prune_all_forums:
|
||||
class: phpbb\cron\task\core\prune_all_forums
|
||||
arguments:
|
@@ -1,4 +1,20 @@
|
||||
services:
|
||||
dbal.conn:
|
||||
class: phpbb\db\driver\factory
|
||||
arguments:
|
||||
- @service_container
|
||||
|
||||
dbal.conn.driver:
|
||||
class: %dbal.driver.class%
|
||||
calls:
|
||||
- [sql_connect, [%dbal.dbhost%, %dbal.dbuser%, %dbal.dbpasswd%, %dbal.dbname%, %dbal.dbport%, false, %dbal.new_link%]]
|
||||
|
||||
dbal.tools:
|
||||
class: phpbb\db\tools
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
|
||||
# ----- Migrator -----
|
||||
migrator:
|
||||
class: phpbb\db\migrator
|
||||
arguments:
|
||||
@@ -15,6 +31,7 @@ services:
|
||||
migrator.helper:
|
||||
class: phpbb\db\migration\helper
|
||||
|
||||
# ----- Migrator's tools -----
|
||||
migrator.tool_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
34
phpBB/config/event.yml
Normal file
34
phpBB/config/event.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
services:
|
||||
dispatcher:
|
||||
class: phpbb\event\dispatcher
|
||||
arguments:
|
||||
- @service_container
|
||||
|
||||
hook_finder:
|
||||
class: phpbb\hook\finder
|
||||
arguments:
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- @cache.driver
|
||||
|
||||
kernel_request_subscriber:
|
||||
class: phpbb\event\kernel_request_subscriber
|
||||
arguments:
|
||||
- @ext.manager
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
||||
|
||||
kernel_exception_subscriber:
|
||||
class: phpbb\event\kernel_exception_subscriber
|
||||
arguments:
|
||||
- @template
|
||||
- @user
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
||||
|
||||
kernel_terminate_subscriber:
|
||||
class: phpbb\event\kernel_terminate_subscriber
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
@@ -1,11 +1,11 @@
|
||||
parameters:
|
||||
mimetype.guesser.priority.lowest: -2
|
||||
mimetype.guesser.priority.low: -1
|
||||
mimetype.guesser.priority.default: 0
|
||||
mimetype.guesser.priority.high: 1
|
||||
mimetype.guesser.priority.highest: 2
|
||||
|
||||
services:
|
||||
mimetype.guesser_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: mimetype.guessers }
|
||||
|
||||
mimetype.fileinfo_mimetype_guesser:
|
||||
class: Symfony\Component\HttpFoundation\File\MimeType\FileinfoMimeTypeGuesser
|
||||
tags:
|
||||
@@ -30,13 +30,6 @@ services:
|
||||
tags:
|
||||
- { name: mimetype.guessers }
|
||||
|
||||
mimetype.guesser_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: mimetype.guessers }
|
||||
|
||||
mimetype.guesser:
|
||||
class: phpbb\mimetype\guesser
|
||||
arguments:
|
@@ -1,4 +1,23 @@
|
||||
services:
|
||||
notification_manager:
|
||||
class: phpbb\notification\manager
|
||||
arguments:
|
||||
- @notification.type_collection
|
||||
- @notification.method_collection
|
||||
- @service_container
|
||||
- @user_loader
|
||||
- @config
|
||||
- @dbal.conn
|
||||
- @cache
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- %tables.notification_types%
|
||||
- %tables.notifications%
|
||||
- %tables.user_notifications%
|
||||
|
||||
# ----- Notification's types -----
|
||||
# Scope MUST be prototype for all the plugins to work.
|
||||
notification.type_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
@@ -6,16 +25,9 @@ services:
|
||||
tags:
|
||||
- { name: service_collection, tag: notification.type }
|
||||
|
||||
notification.method_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: notification.method }
|
||||
|
||||
notification.type.approve_post:
|
||||
class: phpbb\notification\type\approve_post
|
||||
scope: prototype # scope MUST be prototype for this to work! # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -33,7 +45,7 @@ services:
|
||||
|
||||
notification.type.approve_topic:
|
||||
class: phpbb\notification\type\approve_topic
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -51,7 +63,7 @@ services:
|
||||
|
||||
notification.type.bookmark:
|
||||
class: phpbb\notification\type\bookmark
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -69,7 +81,7 @@ services:
|
||||
|
||||
notification.type.disapprove_post:
|
||||
class: phpbb\notification\type\disapprove_post
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -87,7 +99,7 @@ services:
|
||||
|
||||
notification.type.disapprove_topic:
|
||||
class: phpbb\notification\type\disapprove_topic
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -105,7 +117,7 @@ services:
|
||||
|
||||
notification.type.group_request:
|
||||
class: phpbb\notification\type\group_request
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -123,7 +135,7 @@ services:
|
||||
|
||||
notification.type.group_request_approved:
|
||||
class: phpbb\notification\type\group_request_approved
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -141,7 +153,7 @@ services:
|
||||
|
||||
notification.type.pm:
|
||||
class: phpbb\notification\type\pm
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -159,7 +171,7 @@ services:
|
||||
|
||||
notification.type.post:
|
||||
class: phpbb\notification\type\post
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -177,7 +189,7 @@ services:
|
||||
|
||||
notification.type.post_in_queue:
|
||||
class: phpbb\notification\type\post_in_queue
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -195,7 +207,7 @@ services:
|
||||
|
||||
notification.type.quote:
|
||||
class: phpbb\notification\type\quote
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -213,7 +225,7 @@ services:
|
||||
|
||||
notification.type.report_pm:
|
||||
class: phpbb\notification\type\report_pm
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -231,7 +243,7 @@ services:
|
||||
|
||||
notification.type.report_pm_closed:
|
||||
class: phpbb\notification\type\report_pm_closed
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -249,7 +261,7 @@ services:
|
||||
|
||||
notification.type.report_post:
|
||||
class: phpbb\notification\type\report_post
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -267,7 +279,7 @@ services:
|
||||
|
||||
notification.type.report_post_closed:
|
||||
class: phpbb\notification\type\report_post_closed
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -285,7 +297,7 @@ services:
|
||||
|
||||
notification.type.topic:
|
||||
class: phpbb\notification\type\topic
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -303,7 +315,7 @@ services:
|
||||
|
||||
notification.type.topic_in_queue:
|
||||
class: phpbb\notification\type\topic_in_queue
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -321,7 +333,7 @@ services:
|
||||
|
||||
notification.type.admin_activate_user:
|
||||
class: phpbb\notification\type\admin_activate_user
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -336,10 +348,19 @@ services:
|
||||
- %tables.user_notifications%
|
||||
tags:
|
||||
- { name: notification.type }
|
||||
|
||||
# ----- Notification's methods -----
|
||||
# Scope MUST be prototype for all the plugins to work.
|
||||
notification.method_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: notification.method }
|
||||
|
||||
notification.method.email:
|
||||
class: phpbb\notification\method\email
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
||||
@@ -354,7 +375,7 @@ services:
|
||||
|
||||
notification.method.jabber:
|
||||
class: phpbb\notification\method\jabber
|
||||
scope: prototype # scope MUST be prototype for this to work!
|
||||
scope: prototype
|
||||
arguments:
|
||||
- @user_loader
|
||||
- @dbal.conn
|
20
phpBB/config/parameters.yml
Normal file
20
phpBB/config/parameters.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
parameters:
|
||||
# Disable the usage of the super globals (_GET, _POST, _SERVER...)
|
||||
core.disable_super_globals: true
|
||||
|
||||
# Datetime class to use
|
||||
datetime.class: \phpbb\datetime
|
||||
|
||||
# Mimetype guesser priorities
|
||||
mimetype.guesser.priority.lowest: -2
|
||||
mimetype.guesser.priority.low: -1
|
||||
mimetype.guesser.priority.default: 0
|
||||
mimetype.guesser.priority.high: 1
|
||||
mimetype.guesser.priority.highest: 2
|
||||
|
||||
# List of default password driver types
|
||||
passwords.algorithms:
|
||||
- passwords.driver.bcrypt_2y
|
||||
- passwords.driver.bcrypt
|
||||
- passwords.driver.salted_md5
|
||||
- passwords.driver.phpass
|
@@ -1,11 +1,29 @@
|
||||
parameters:
|
||||
passwords.algorithms:
|
||||
- passwords.driver.bcrypt_2y
|
||||
- passwords.driver.bcrypt
|
||||
- passwords.driver.salted_md5
|
||||
- passwords.driver.phpass
|
||||
|
||||
services:
|
||||
# ----- Password management -----
|
||||
passwords.manager:
|
||||
class: phpbb\passwords\manager
|
||||
arguments:
|
||||
- @config
|
||||
- @passwords.driver_collection
|
||||
- @passwords.helper
|
||||
- %passwords.algorithms%
|
||||
|
||||
passwords.helper:
|
||||
class: phpbb\passwords\helper
|
||||
|
||||
passwords.driver_helper:
|
||||
class: phpbb\passwords\driver\helper
|
||||
arguments:
|
||||
- @config
|
||||
|
||||
# ----- Password's drivers -----
|
||||
passwords.driver_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: passwords.driver }
|
||||
|
||||
passwords.driver.bcrypt:
|
||||
class: phpbb\passwords\driver\bcrypt
|
||||
arguments:
|
||||
@@ -83,6 +101,7 @@ services:
|
||||
arguments:
|
||||
- @request
|
||||
- @passwords.driver.salted_md5
|
||||
- @passwords.driver_helper
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
tags:
|
||||
@@ -103,26 +122,3 @@ services:
|
||||
- @passwords.driver_helper
|
||||
tags:
|
||||
- { name: passwords.driver }
|
||||
|
||||
passwords.driver_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: passwords.driver }
|
||||
|
||||
passwords.driver_helper:
|
||||
class: phpbb\passwords\driver\helper
|
||||
arguments:
|
||||
- @config
|
||||
|
||||
passwords.manager:
|
||||
class: phpbb\passwords\manager
|
||||
arguments:
|
||||
- @config
|
||||
- @passwords.driver_collection
|
||||
- @passwords.helper
|
||||
- %passwords.algorithms%
|
||||
|
||||
passwords.helper:
|
||||
class: phpbb\passwords\helper
|
@@ -19,6 +19,7 @@ services:
|
||||
- @dbal.conn
|
||||
- %tables.profile_fields_options_language%
|
||||
|
||||
# ----- Profile fields types -----
|
||||
profilefields.type_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
@@ -1,32 +1,23 @@
|
||||
imports:
|
||||
- { resource: tables.yml }
|
||||
- { resource: cron_tasks.yml }
|
||||
- { resource: notifications.yml }
|
||||
- { resource: migrator.yml }
|
||||
- { resource: avatars.yml }
|
||||
- { resource: feed.yml }
|
||||
- { resource: auth_providers.yml }
|
||||
- { resource: auth.yml }
|
||||
- { resource: avatar.yml }
|
||||
- { resource: captcha.yml }
|
||||
- { resource: console.yml }
|
||||
- { resource: mimetype_guessers.yml }
|
||||
- { resource: passwords.yml }
|
||||
- { resource: profilefields.yml }
|
||||
- { resource: content.yml }
|
||||
- { resource: cron.yml }
|
||||
- { resource: db.yml }
|
||||
- { resource: event.yml }
|
||||
- { resource: feed.yml }
|
||||
- { resource: mimetype_guesser.yml }
|
||||
- { resource: notification.yml }
|
||||
- { resource: password.yml }
|
||||
- { resource: profilefield.yml }
|
||||
- { resource: user.yml }
|
||||
|
||||
- { resource: tables.yml }
|
||||
- { resource: parameters.yml }
|
||||
|
||||
services:
|
||||
acl.permissions:
|
||||
class: phpbb\permissions
|
||||
arguments:
|
||||
- @dispatcher
|
||||
- @user
|
||||
|
||||
auth:
|
||||
class: phpbb\auth\auth
|
||||
|
||||
avatar.manager:
|
||||
class: phpbb\avatar\manager
|
||||
arguments:
|
||||
- @config
|
||||
- @avatar.driver_collection
|
||||
|
||||
cache:
|
||||
class: phpbb\cache\service
|
||||
arguments:
|
||||
@@ -75,19 +66,6 @@ services:
|
||||
- @dbal.conn
|
||||
- %tables.config_text%
|
||||
|
||||
content.visibility:
|
||||
class: phpbb\content_visibility
|
||||
arguments:
|
||||
- @auth
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- %tables.forums%
|
||||
- %tables.posts%
|
||||
- %tables.topics%
|
||||
- %tables.users%
|
||||
|
||||
controller.helper:
|
||||
class: phpbb\controller\helper
|
||||
arguments:
|
||||
@@ -97,6 +75,7 @@ services:
|
||||
- @controller.provider
|
||||
- @ext.manager
|
||||
- @symfony_request
|
||||
- @filesystem
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
@@ -113,62 +92,6 @@ services:
|
||||
calls:
|
||||
- [find, [%core.root_path%]]
|
||||
|
||||
cron.task_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: cron.task }
|
||||
|
||||
cron.manager:
|
||||
class: phpbb\cron\manager
|
||||
arguments:
|
||||
- @cron.task_collection
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
cron.lock_db:
|
||||
class: phpbb\lock\db
|
||||
arguments:
|
||||
- cron_lock
|
||||
- @config
|
||||
- @dbal.conn
|
||||
|
||||
dispatcher:
|
||||
class: phpbb\event\dispatcher
|
||||
arguments:
|
||||
- @service_container
|
||||
|
||||
dbal.conn:
|
||||
class: phpbb\db\driver\factory
|
||||
arguments:
|
||||
- @service_container
|
||||
|
||||
dbal.conn.driver:
|
||||
class: %dbal.driver.class%
|
||||
calls:
|
||||
- [sql_connect, [%dbal.dbhost%, %dbal.dbuser%, %dbal.dbpasswd%, %dbal.dbname%, %dbal.dbport%, false, %dbal.new_link%]]
|
||||
|
||||
dbal.tools:
|
||||
class: phpbb\db\tools
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
|
||||
event.subscriber_loader:
|
||||
class: phpbb\event\extension_subscriber_loader
|
||||
arguments:
|
||||
- @dispatcher
|
||||
- @event.listener_collection
|
||||
calls:
|
||||
- [load, []]
|
||||
|
||||
event.listener_collection:
|
||||
class: phpbb\di\service_collection
|
||||
arguments:
|
||||
- @service_container
|
||||
tags:
|
||||
- { name: service_collection, tag: event.listener }
|
||||
|
||||
ext.manager:
|
||||
class: phpbb\extension\manager
|
||||
arguments:
|
||||
@@ -185,54 +108,12 @@ services:
|
||||
filesystem:
|
||||
class: phpbb\filesystem
|
||||
|
||||
groupposition.legend:
|
||||
class: phpbb\groupposition\legend
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
- @user
|
||||
|
||||
groupposition.teampage:
|
||||
class: phpbb\groupposition\teampage
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- @cache.driver
|
||||
|
||||
http_kernel:
|
||||
class: Symfony\Component\HttpKernel\HttpKernel
|
||||
arguments:
|
||||
- @dispatcher
|
||||
- @controller.resolver
|
||||
|
||||
hook_finder:
|
||||
class: phpbb\hook\finder
|
||||
arguments:
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- @cache.driver
|
||||
|
||||
kernel_request_subscriber:
|
||||
class: phpbb\event\kernel_request_subscriber
|
||||
arguments:
|
||||
- @ext.manager
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
||||
|
||||
kernel_exception_subscriber:
|
||||
class: phpbb\event\kernel_exception_subscriber
|
||||
arguments:
|
||||
- @template
|
||||
- @user
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
||||
|
||||
kernel_terminate_subscriber:
|
||||
class: phpbb\event\kernel_terminate_subscriber
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
||||
|
||||
log:
|
||||
class: phpbb\log\log
|
||||
arguments:
|
||||
@@ -245,61 +126,6 @@ services:
|
||||
- %core.php_ext%
|
||||
- %tables.log%
|
||||
|
||||
message.form.admin:
|
||||
class: phpbb\message\admin_form
|
||||
arguments:
|
||||
- @auth
|
||||
- @config
|
||||
- @config_text
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
message.form.topic:
|
||||
class: phpbb\message\topic_form
|
||||
arguments:
|
||||
- @auth
|
||||
- @config
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
message.form.user:
|
||||
class: phpbb\message\user_form
|
||||
arguments:
|
||||
- @auth
|
||||
- @config
|
||||
- @dbal.conn
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
notification_manager:
|
||||
class: phpbb\notification\manager
|
||||
arguments:
|
||||
- @notification.type_collection
|
||||
- @notification.method_collection
|
||||
- @service_container
|
||||
- @user_loader
|
||||
- @config
|
||||
- @dbal.conn
|
||||
- @cache
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- %tables.notification_types%
|
||||
- %tables.notifications%
|
||||
- %tables.user_notifications%
|
||||
|
||||
pagination:
|
||||
class: phpbb\pagination
|
||||
arguments:
|
||||
- @template
|
||||
- @user
|
||||
- @controller.helper
|
||||
|
||||
path_helper:
|
||||
class: phpbb\path_helper
|
||||
arguments:
|
||||
@@ -325,6 +151,9 @@ services:
|
||||
|
||||
request:
|
||||
class: phpbb\request\request
|
||||
arguments:
|
||||
- null
|
||||
- %core.disable_super_globals%
|
||||
|
||||
symfony_request:
|
||||
class: phpbb\symfony_request
|
||||
@@ -343,17 +172,6 @@ services:
|
||||
template_context:
|
||||
class: phpbb\template\context
|
||||
|
||||
user:
|
||||
class: phpbb\user
|
||||
|
||||
user_loader:
|
||||
class: phpbb\user_loader
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- %tables.users%
|
||||
|
||||
version_helper:
|
||||
class: phpbb\version_helper
|
||||
scope: prototype
|
||||
@@ -361,8 +179,3 @@ services:
|
||||
- @cache
|
||||
- @config
|
||||
- @user
|
||||
|
||||
viewonline_helper:
|
||||
class: phpbb\viewonline_helper
|
||||
arguments:
|
||||
- @filesystem
|
||||
|
@@ -1,6 +1,9 @@
|
||||
parameters:
|
||||
tables.auth_provider_oauth_token_storage: %core.table_prefix%oauth_tokens
|
||||
tables.auth_provider_oauth_account_assoc: %core.table_prefix%oauth_accounts
|
||||
tables.captcha_qa_questions: %core.table_prefix%captcha_questions
|
||||
tables.captcha_qa_answers: %core.table_prefix%captcha_answers
|
||||
tables.captcha_qa_confirm: %core.table_prefix%qa_confirm
|
||||
tables.config: %core.table_prefix%config
|
||||
tables.config_text: %core.table_prefix%config_text
|
||||
tables.ext: %core.table_prefix%ext
|
||||
|
19
phpBB/config/user.yml
Normal file
19
phpBB/config/user.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
services:
|
||||
acl.permissions:
|
||||
class: phpbb\permissions
|
||||
arguments:
|
||||
- @dispatcher
|
||||
- @user
|
||||
|
||||
user:
|
||||
class: phpbb\user
|
||||
arguments:
|
||||
- %datetime.class%
|
||||
|
||||
user_loader:
|
||||
class: phpbb\user_loader
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- %tables.users%
|
@@ -62,8 +62,9 @@ if ($cron_lock->acquire())
|
||||
if ($task->is_ready())
|
||||
{
|
||||
$task->run();
|
||||
garbage_collection();
|
||||
}
|
||||
}
|
||||
$cron_lock->release();
|
||||
}
|
||||
|
||||
garbage_collection();
|
||||
|
@@ -57,4 +57,4 @@ $fp = fopen($schema_path . 'schema.json', 'wb');
|
||||
fwrite($fp, json_encode($schema_data, JSON_PRETTY_PRINT));
|
||||
fclose($fp);
|
||||
|
||||
echo 'done';
|
||||
echo 'Successfully created schema file';
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="phpBB 3.1.x Changelog" />
|
||||
<title>phpBB3 • Changelog</title>
|
||||
<title>phpBB • Changelog</title>
|
||||
|
||||
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
|
||||
@@ -46,8 +46,12 @@
|
||||
<ol>
|
||||
<li><a href="#changelog">Changelog</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#v310b3">Changes since 3.1.0-RC1</a></li>
|
||||
<li><a href="#v310b3">Changes since 3.1.0-b4</a></li>
|
||||
<li><a href="#v310RC5">Changes since 3.1.0-RC5</a></li>
|
||||
<li><a href="#v310RC4">Changes since 3.1.0-RC4</a></li>
|
||||
<li><a href="#v310RC3">Changes since 3.1.0-RC3</a></li>
|
||||
<li><a href="#v310RC2">Changes since 3.1.0-RC2</a></li>
|
||||
<li><a href="#v310RC1">Changes since 3.1.0-RC1</a></li>
|
||||
<li><a href="#v310b4">Changes since 3.1.0-b4</a></li>
|
||||
<li><a href="#v310b3">Changes since 3.1.0-b3</a></li>
|
||||
<li><a href="#v310b2">Changes since 3.1.0-b2</a></li>
|
||||
<li><a href="#v310b1">Changes since 3.1.0-b1</a></li>
|
||||
@@ -95,7 +99,325 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<a name="v310RC1"></a><h3>1.i. Changes since 3.1.0-RC1</h3>
|
||||
<a name="v310RC5"></a><h3>1.i. Changes since 3.1.0-RC5</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12530">PHPBB3-12530</a>] - Visual confirmation is breaking layout in prosilver's mobile mode</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12568">PHPBB3-12568</a>] - docs/README.html references MODs instead of extensions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13124">PHPBB3-13124</a>] - PHP event extractor too strict on doc blocks</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13138">PHPBB3-13138</a>] - Banned users cause infinite recursion</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13140">PHPBB3-13140</a>] - Header links don't re-appear on window size increase</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13161">PHPBB3-13161</a>] - PHP Warnings issued from phpbb database test case</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13163">PHPBB3-13163</a>] - Header Navbar Responsiveness Broken</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13164">PHPBB3-13164</a>] - Data sent to core.submit_post_end event does not include fresh post_visibility</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13168">PHPBB3-13168</a>] - Warning displayed in PHP 5.6 for mbstring.http_input</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13169">PHPBB3-13169</a>] - Responsive forms not displaying correctly in RTL</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13171">PHPBB3-13171</a>] - Can not delete posts and soft delete topics in MCP topic view</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13174">PHPBB3-13174</a>] - Minor HTML error in ucp_pm_viewmessage.html (needs closing </div>)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13177">PHPBB3-13177</a>] - Post count-based ranks do not display in viewtopic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13181">PHPBB3-13181</a>] - Sphinx config template should use place holders for database credentials</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13186">PHPBB3-13186</a>] - Do not link post count to author search if search disabled</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13187">PHPBB3-13187</a>] - INSTALL.html is not valid HTML</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13188">PHPBB3-13188</a>] - Sphinx index() function triggers slow queries that time out replies</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13190">PHPBB3-13190</a>] - phpbb_session_login_keys_test::test_reset_keys fails on develop-ascraeus</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13194">PHPBB3-13194</a>] - BBCode isn't parsed when issuing a warning for a post</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13203">PHPBB3-13203</a>] - Use constant time comparison method for comparing password hashes</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12796">PHPBB3-12796</a>] - View own Profile should have an edit button</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12799">PHPBB3-12799</a>] - Place the events for f_brunoais_read_other</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13041">PHPBB3-13041</a>] - help_faq.php language file needs to be revised</li>
|
||||
</ul>
|
||||
<h4>New Feature</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13205">PHPBB3-13205</a>] - Add mark all PMs read button</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v310RC4"></a><h3>1.ii. Changes since 3.1.0-RC4</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10729">PHPBB3-10729</a>] - Post editor information is not updated when user being deleted with posts</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11224">PHPBB3-11224</a>] - SQL cache destroy does not destroy queries to tables joined</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12368">PHPBB3-12368</a>] - Updating database fails in upgrade from 3.0 when trying twice without purging the cache</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12489">PHPBB3-12489</a>] - Description for Contact link in custom profile fields</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12657">PHPBB3-12657</a>] - Add a test file for cli command cache:purge</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12858">PHPBB3-12858</a>] - 'GMT' is hard coded and not pulled from language files</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12889">PHPBB3-12889</a>] - multi-select element in unban email-adresses not limited in width</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13011">PHPBB3-13011</a>] - Javascript bug when selecting first one or two characters of a post</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13027">PHPBB3-13027</a>] - PM folder full percentage could be a bit more accurate</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13033">PHPBB3-13033</a>] - Duplicate entry SQL error thrown when running notifications_use_full_name migration</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13045">PHPBB3-13045</a>] - Pragma header not specified as response header by RFC2616</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13048">PHPBB3-13048</a>] - AJAX requests are being stored to session_page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13055">PHPBB3-13055</a>] - String profile fields validation limits content to latin chars only</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13070">PHPBB3-13070</a>] - Wrong hook name is registered for array(template, display)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13071">PHPBB3-13071</a>] - total_match_count is used before core.search_get_posts_data event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13080">PHPBB3-13080</a>] - Responsive design - language variable to long</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13082">PHPBB3-13082</a>] - Search box does not displayed proper in admin cp when no logs listed</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13085">PHPBB3-13085</a>] - Fix typo in oauth.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13086">PHPBB3-13086</a>] - Update ACP_MASS_EMAIL_EXPLAIN language key</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13087">PHPBB3-13087</a>] - WLM link is empty in viewtopic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13097">PHPBB3-13097</a>] - Fix missing unit type in forms.css</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13104">PHPBB3-13104</a>] - Responsive tabs display bug in IE11</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13105">PHPBB3-13105</a>] - Future dates are displayed as "Tomorrow" with relative date format</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13111">PHPBB3-13111</a>] - Debug output when editing DropDown Custom Fields with multiple languages</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13113">PHPBB3-13113</a>] - The routes are not always generated for the good app.php file</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13116">PHPBB3-13116</a>] - Topic and post approval notifications got interchanged</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13117">PHPBB3-13117</a>] - Installation fails on MySQL 5.7 because auto_increment columns can be NULL</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13118">PHPBB3-13118</a>] - datetime.class parameter not used in user class</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13120">PHPBB3-13120</a>] - phpbb_load_extensions_autoloaders() doesn't work very well with the extensions behind a symlink</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13121">PHPBB3-13121</a>] - Customise Purge Cache always returns user to Styles page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13125">PHPBB3-13125</a>] - Uploaded avatars are not displayed in IE <= 7</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12408">PHPBB3-12408</a>] - Add quick setting for "default guest style" to ACP board settings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12985">PHPBB3-12985</a>] - Add event to modify the redirect after a successful login</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12993">PHPBB3-12993</a>] - Add event to get_user_rank() function</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13025">PHPBB3-13025</a>] - Add template events for buttons on viewforum and viewtopic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13059">PHPBB3-13059</a>] - Add core event to generate_page_link() to allow modifying pagination URLs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13072">PHPBB3-13072</a>] - Add total_match_count to core.search_get_topic_data event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13077">PHPBB3-13077</a>] - Change module order in Customise tab for better usability</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13094">PHPBB3-13094</a>] - Remove the search box if there are no new posts to search for</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13107">PHPBB3-13107</a>] - Add template events to forum row in forumlist_body.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13108">PHPBB3-13108</a>] - Add core event to the parse_attachments() function to allow modifying files info</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13110">PHPBB3-13110</a>] - Add core event to the page_footer() function to allow handling overall output</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13122">PHPBB3-13122</a>] - phpbb_wrapper_gmgetdate_test intermittently fails</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13134">PHPBB3-13134</a>] - Add core event to the root of the function display_forums()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13137">PHPBB3-13137</a>] - Remove schema.json from repository</li>
|
||||
</ul>
|
||||
<h4>Sub-task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12929">PHPBB3-12929</a>] - Add an event when getting the information for PM composal</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12930">PHPBB3-12930</a>] - Add an event to the query getting the post for quoting in a PM</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10794">PHPBB3-10794</a>] - Make schema available at runtime</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12987">PHPBB3-12987</a>] - Cleanup the services.yml file</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13106">PHPBB3-13106</a>] - Remove the \phpbb\di\pass\kernel_pass class</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13119">PHPBB3-13119</a>] - Add events to mcp and acp ban modules</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13123">PHPBB3-13123</a>] - Add events to allow post blocking and post pre/past processing</li>
|
||||
</ul>
|
||||
|
||||
<a name="v310RC3"></a><h3>1.iii. Changes since 3.1.0-RC3</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10472">PHPBB3-10472</a>] - ACP "add multiple smilies" page is unusable on 1024x768 resolution</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11909">PHPBB3-11909</a>] - phpbb/db/migrator::load_migrations is never called</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12258">PHPBB3-12258</a>] - Add attachment: error alert popup on "empty.png" does not show up</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12506">PHPBB3-12506</a>] - Long post titles bump the username down an extra row beneath the edit/quote/delete buttons</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12658">PHPBB3-12658</a>] - Add tests for config:* cli commands</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12661">PHPBB3-12661</a>] - Extensions templates not loaded from "all" by helper/render()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12734">PHPBB3-12734</a>] - Custom profile manager should not suppress errors when inserting user rows</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12765">PHPBB3-12765</a>] - acp_profile.php should use db/tools</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12852">PHPBB3-12852</a>] - \phpbb\path_helper get_url_parts does not handle get variable with no value</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12856">PHPBB3-12856</a>] - plupload images are not integrated into style-path</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12862">PHPBB3-12862</a>] - Smiley and Whos Onlike pop-up boxes are making styling difficult</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12949">PHPBB3-12949</a>] - Undefined function mime_content_type()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12966">PHPBB3-12966</a>] - Undefined sorting of posts with same post_time on postgres</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12975">PHPBB3-12975</a>] - Catchable fatal error after update to RC3</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12976">PHPBB3-12976</a>] - Pagination of UCP manage attachments page in prosilver does not support plural forms</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12983">PHPBB3-12983</a>] - UCP preferences, Display posts ordering by: input is not properly validated</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12984">PHPBB3-12984</a>] - Index page: blank line when no forum description shown</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12986">PHPBB3-12986</a>] - Wrong functions call order breaks detection of common words in search</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12990">PHPBB3-12990</a>] - The prefix for the notification's services is harcoded</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12996">PHPBB3-12996</a>] - tests/lock/flock_test.php should use microtime() instead of time()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12998">PHPBB3-12998</a>] - Undefined $lang in mcp_warn.php::add_warning()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13004">PHPBB3-13004</a>] - Topic tools button is displayed even if dropdown is empty</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13008">PHPBB3-13008</a>] - Importing a resource in routing.yml breaks download/file.php and ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13009">PHPBB3-13009</a>] - Cleanup Tweaks CSS, Remove outdated browser support</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13018">PHPBB3-13018</a>] - Key binding on AJAX popups are not unbound upon close/cancel</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13019">PHPBB3-13019</a>] - Don't display "Soft delete reason" dialog when moderator cannot soft-delete</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13022">PHPBB3-13022</a>] - "Return to advanced search" wrong assumption </li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13031">PHPBB3-13031</a>] - Impossible to properly upload image if no proper mimetype guessers enabled</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13035">PHPBB3-13035</a>] - Empty meta tags in header</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13040">PHPBB3-13040</a>] - W3C validator warning in overral_footer.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13042">PHPBB3-13042</a>] - Unused var in login_box()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13044">PHPBB3-13044</a>] - Expires header violates RFC 2616</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13046">PHPBB3-13046</a>] - In download/avatar we don't load the vendors added by the extensions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13050">PHPBB3-13050</a>] - Allow topic/forum subscription when email and jabber are off</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13051">PHPBB3-13051</a>] - Fix broken viewonline core event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13052">PHPBB3-13052</a>] - Remove additional parameters from check_form_key()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13057">PHPBB3-13057</a>] - Fatal error on previous page link after closing a report</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13065">PHPBB3-13065</a>] - Unknown column 'user_pass_convert' in 'field list' [code] - => 1054 </li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13068">PHPBB3-13068</a>] - Language correction in FIELD_IS_CONTACT_EXPLAIN</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13069">PHPBB3-13069</a>] - Timezone selector does not filter locations on change</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12416">PHPBB3-12416</a>] - WhoIs Pop Up Page Details</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12598">PHPBB3-12598</a>] - Improve action-bar search box styling</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12653">PHPBB3-12653</a>] - Caches the informations about the listeners to be able to not load them everytime</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12900">PHPBB3-12900</a>] - 3.1.0 avatar scaling</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12943">PHPBB3-12943</a>] - Add core.phpbb_generate_debug_output core event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12961">PHPBB3-12961</a>] - Add link in anti-spam ACP page which links directly to captchas in titania</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12969">PHPBB3-12969</a>] - Add template event around the find username link on composing pm</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12982">PHPBB3-12982</a>] - JS in 3.1 is nasty</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12989">PHPBB3-12989</a>] - Remove unused "created_by.jpg" from prosilver</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12991">PHPBB3-12991</a>] - Have events after/before "add warning" field - user and post</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12994">PHPBB3-12994</a>] - Add core event to viewtopic.php before sending vars to template</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13003">PHPBB3-13003</a>] - Missing language keys in command "extension:show"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13005">PHPBB3-13005</a>] - Add core event to display_forums() to modify category template data</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13006">PHPBB3-13006</a>] - Add variables to the 'core.modify_quickmod_actions' event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13010">PHPBB3-13010</a>] - phpbb_get_avatar() incorrectly refers to \phpbb\avatar\driver\driver::clean_row()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13020">PHPBB3-13020</a>] - Add var to core.viewforum_get_topic_data event to allow modifying forum template data</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13024">PHPBB3-13024</a>] - Template event viewtopic_body_postrow_post_content_footer</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13026">PHPBB3-13026</a>] - Add template vars array to core.viewonline_overwrite_location to allow modifying/adding template vars</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13034">PHPBB3-13034</a>] - Add ability to access extensions outside the phpBB root</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13036">PHPBB3-13036</a>] - Controller helper route method should be able to generate absolute URL's</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13038">PHPBB3-13038</a>] - Link user post tally to their posts</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13047">PHPBB3-13047</a>] - Add $post_list array to core.viewtopic_modify_page_title core event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13056">PHPBB3-13056</a>] - Move the arguments of the request class to the DI</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13058">PHPBB3-13058</a>] - The "jump to page" input does not have a min attribute.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13061">PHPBB3-13061</a>] - Use a compiler pass to replace the service event.subscriber_loader</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13062">PHPBB3-13062</a>] - Add viewforum.php core event to allow modifying sql query to select topic ids</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13066">PHPBB3-13066</a>] - Add common search results core event to modify search title</li>
|
||||
</ul>
|
||||
<h4>New Feature</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12951">PHPBB3-12951</a>] - Add .editorconfig</li>
|
||||
</ul>
|
||||
<h4>Sub-task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12928">PHPBB3-12928</a>] - [Event] - core.mcp_reports_gather_query_before</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12999">PHPBB3-12999</a>] - Remove @author tag from the doc block</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13032">PHPBB3-13032</a>] - Update Symfony Components to 2.3.19</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v310RC2"></a><h3>1.iv. Changes since 3.1.0-RC2</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11148">PHPBB3-11148</a>] - Fix uploading attachments from Android 4 powered devices</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11480">PHPBB3-11480</a>] - Prevent Private Message system from returning "Unknown folder" when inbox folder is full</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11520">PHPBB3-11520</a>] - Post count not incremented when you fork a topic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11854">PHPBB3-11854</a>] - Captcha code is still in includes/</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12232">PHPBB3-12232</a>] - MCP Banning: Max execution time exceeded</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12448">PHPBB3-12448</a>] - Migration tools don't allow adding columns with default == NULL</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12492">PHPBB3-12492</a>] - DB_TEST: Special chars are not supported.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12535">PHPBB3-12535</a>] - The profile link should be better adjusted to the avatar image it surrounds in viewtopic.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12685">PHPBB3-12685</a>] - CLI doesn't load extension commands</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12710">PHPBB3-12710</a>] - phpBB 3.0.12 on Oracle fails to upgrade to 3.1.0</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12718">PHPBB3-12718</a>] - Hard Deleting Post does not Decrease Post Count</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12742">PHPBB3-12742</a>] - Notifications duplicate code that requires an event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12744">PHPBB3-12744</a>] - RTL board header is one line higher than LTR</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12748">PHPBB3-12748</a>] - UCP Terms of Use Typo</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12770">PHPBB3-12770</a>] - search_wordmatch unique key name is too long</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12776">PHPBB3-12776</a>] - docs/INSTALL.html is missing 3.0 to 3.1 update instructions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12789">PHPBB3-12789</a>] - Cached directories are not deleted when the cache is purged (with ACM memory enabled).</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12791">PHPBB3-12791</a>] - String profile fields do not use links, smilies and line breaks in memberlist</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12792">PHPBB3-12792</a>] - Profile field type strings function get_profile_contact_value duplicates raw()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12793">PHPBB3-12793</a>] - String '0' does not display for string profile fields</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12794">PHPBB3-12794</a>] - Google+ profile field validation is too strict</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12809">PHPBB3-12809</a>] - RTL styling issues with new jump-box dropdown</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12814">PHPBB3-12814</a>] - Error while trying to setup LDAP Authentication in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12822">PHPBB3-12822</a>] - Preselect avatar type if only 1 type is enabled</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12837">PHPBB3-12837</a>] - Viewing contact form displays "VIEWING_MEMBERS" on viewonline</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12842">PHPBB3-12842</a>] - Out of memory issue in code sniffer call for extensions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12843">PHPBB3-12843</a>] - When you click on "Mark forums read" in the browser, a console error occurs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12844">PHPBB3-12844</a>] - $dbpasswd is cleared too early in connection manager</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12845">PHPBB3-12845</a>] - HTML5 Invalid using role="navigation"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12846">PHPBB3-12846</a>] - SQLite3 bug in profilefield_base_migration.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12849">PHPBB3-12849</a>] - ReferenceError in core.js</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12851">PHPBB3-12851</a>] - Font colour button title is not consistent with other buttons</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12853">PHPBB3-12853</a>] - Problems with ACP/MCP links in mobile design with other translations</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12854">PHPBB3-12854</a>] - Admin contact page should not be used when board emails are disabled</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12855">PHPBB3-12855</a>] - Container is being recompiled on every page request although DEBUG_CONTAINER is not set</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12859">PHPBB3-12859</a>] - Missing post button events from view pm template</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12870">PHPBB3-12870</a>] - Console database migrate function can not update from 3.0.12 to 3.1</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12873">PHPBB3-12873</a>] - Wrong identifier tested in \db\tools\sql_create_(unique_)index()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12875">PHPBB3-12875</a>] - Extension's info_acp_lang files don't fallback correctly when the user's language is not included in the extension</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12881">PHPBB3-12881</a>] - Debug error - Undefined index: mark_time</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12882">PHPBB3-12882</a>] - $config['search_type'] - is not correctly updated when updating from 3.0 to 3.1</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12883">PHPBB3-12883</a>] - Do not use basename() to get the search class in phpbb\cron\task\core\tidy_search</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12886">PHPBB3-12886</a>] - Redundant lock and unlock expressions for QuickMod in viewtopic.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12887">PHPBB3-12887</a>] - Typo in timezone handling code: 'offest' should be 'offset'</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12891">PHPBB3-12891</a>] - Long page generation time when banlist is long</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12895">PHPBB3-12895</a>] - ?style=1 appended to url after using the UCP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12898">PHPBB3-12898</a>] - In cron.php we try to release the lock after the call to garbage_collection()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12901">PHPBB3-12901</a>] - Wrong type hint in show_available_child_styles() doc block</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12902">PHPBB3-12902</a>] - Remove duplicate entry in build_cfg_template() switch statement</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12903">PHPBB3-12903</a>] - Remove unused method in phpBB/phpbb/extension/metadata_manager.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12908">PHPBB3-12908</a>] - Fix broken operator assignment in increment.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12909">PHPBB3-12909</a>] - Use correct lang vars in cli extension enable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12910">PHPBB3-12910</a>] - Profile fields: Two "simple text field" in dropdown menu</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12912">PHPBB3-12912</a>] - Undefined index when adding logs from extensions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12918">PHPBB3-12918</a>] - Functional Tests Suite does not run on its own</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12919">PHPBB3-12919</a>] - Allow using class names as module identifier for extensions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12922">PHPBB3-12922</a>] - Posts per page in MCP should have a minimum value of zero</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12931">PHPBB3-12931</a>] - General error on user registration when domain name is not set</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12932">PHPBB3-12932</a>] - Easy support of non-gregorian calendars</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12937">PHPBB3-12937</a>] - Without config file, extract($phpbb_config_php_file->get_all()); breaks</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12938">PHPBB3-12938</a>] - Board floods "store"-directory with packed attachments</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12940">PHPBB3-12940</a>] - Unused 'use' statements in download/file.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12950">PHPBB3-12950</a>] - Functional tests can not be run anymore if another language is present</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12954">PHPBB3-12954</a>] - Nginx setup on travis returns wrong SCRIPT_NAME info</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12956">PHPBB3-12956</a>] - Unknown column 'field_is_contact' in 'field list'</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12964">PHPBB3-12964</a>] - Undefined $row in download/file.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12967">PHPBB3-12967</a>] - Undefined variable: phpbb_dispatcher in mcp_queue.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12970">PHPBB3-12970</a>] - chema.json is not up to date with migration files</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9165">PHPBB3-9165</a>] - Extend template loop to allow iteration step modification</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10073">PHPBB3-10073</a>] - Contact page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12051">PHPBB3-12051</a>] - Optimise Composer Autoloader on Build</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12560">PHPBB3-12560</a>] - Add methods to set upload and temp paths in Plupload class</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12656">PHPBB3-12656</a>] - Translate existing CLI commands</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12663">PHPBB3-12663</a>] - Extract Command Line Interface language strings into their own file.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12671">PHPBB3-12671</a>] - Possibility to use NOT LIKE expression</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12693">PHPBB3-12693</a>] - Add a travis test that checks file permissions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12738">PHPBB3-12738</a>] - Move related code from functions_posting into remove_post_from_statistic()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12778">PHPBB3-12778</a>] - The automatic updater should have an option to automatically delete removed files during update</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12828">PHPBB3-12828</a>] - Add includes/ucp/ucp_prefs.php common core event to allow additional actions before the page load</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12832">PHPBB3-12832</a>] - Add footer links to the Quick Links menu</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12836">PHPBB3-12836</a>] - [Event] - core.functions.redirect</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12841">PHPBB3-12841</a>] - Allow extensions to position new config vars in an array</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12847">PHPBB3-12847</a>] - Allow extensions to define if they can be enabled</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12857">PHPBB3-12857</a>] - Add template events overall_header_breadcrumbs_before/after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12864">PHPBB3-12864</a>] - Have an EVENT tag after STYLESHEETS in overall_header</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12871">PHPBB3-12871</a>] - Add PHPBB_DISPLAY_LOAD_TIME constant to config.php on installation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12872">PHPBB3-12872</a>] - Add poster_id to viewtopic_modify_post_row</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12884">PHPBB3-12884</a>] - Add core event to the function upload_attachment()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12892">PHPBB3-12892</a>] - S_NUM_ROWS does not scale</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12896">PHPBB3-12896</a>] - Add event in acp_main to allow php checks for admin notices</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12906">PHPBB3-12906</a>] - Add rel="help" to FAQ link</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12913">PHPBB3-12913</a>] - Add more parameters to core.submit_post_end event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12942">PHPBB3-12942</a>] - Add core.add_form_key core event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12944">PHPBB3-12944</a>] - Add core.login_forum_box core event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12953">PHPBB3-12953</a>] - Page title not updated when notifications are marked as read</li>
|
||||
</ul>
|
||||
<h4>Sub-task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12800">PHPBB3-12800</a>] - [Event] - Create core.functions_display.display_user_activity.actives_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12801">PHPBB3-12801</a>] - [Event] - core.functions_posting.load_drafts_draft_list_results</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12876">PHPBB3-12876</a>] - [Event] - core.mcp_mcp_front.mcp_front_view_queue_postid_list_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12880">PHPBB3-12880</a>] - [Event] - core.mcp_queue_!is_topics_query_before</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12927">PHPBB3-12927</a>] - [Event] - core.mcp_queue_get_posts2_query_before</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10404">PHPBB3-10404</a>] - Remove create_function from includes/acp/auth.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12557">PHPBB3-12557</a>] - Fix doc block errors found by Sami</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12826">PHPBB3-12826</a>] - Investigate "catch (Exception"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12860">PHPBB3-12860</a>] - Add template events to mcp_ban.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12861">PHPBB3-12861</a>] - Add event before assigning the posts to the template</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12917">PHPBB3-12917</a>] - Move commit check and file executable checks to 5.3.3 build on travis</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12920">PHPBB3-12920</a>] - Create composer installable app and core packages with subtree split</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12941">PHPBB3-12941</a>] - Check for Sami documentation errors on Travis CI</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12948">PHPBB3-12948</a>] - Remove Travis CI "broken opcache on PHP 5.5.7 and 5.5.8" workaround.</li>
|
||||
</ul>
|
||||
|
||||
<a name="v310RC1"></a><h3>1.v. Changes since 3.1.0-RC1</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -166,7 +488,7 @@
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12829">PHPBB3-12829</a>] - Remove check for pgsql 8.3/8.2</li>
|
||||
</ul>
|
||||
|
||||
<a name="v310b4"></a><h3>1.ii. Changes since 3.1.0-b4</h3>
|
||||
<a name="v310b4"></a><h3>1.vi. Changes since 3.1.0-b4</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -286,7 +608,7 @@
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v310b3"></a><h3>1.iii. Changes since 3.1.0-b3</h3>
|
||||
<a name="v310b3"></a><h3>1.vii. Changes since 3.1.0-b3</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -393,7 +715,7 @@
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v310b2"></a><h3>1.iv. Changes since 3.1.0-b2</h3>
|
||||
<a name="v310b2"></a><h3>1.viii. Changes since 3.1.0-b2</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -558,7 +880,7 @@
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v310b1"></a><h3>1.v. Changes since 3.1.0-b1</h3>
|
||||
<a name="v310b1"></a><h3>1.ix. Changes since 3.1.0-b1</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -626,7 +948,7 @@
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12302">PHPBB3-12302</a>] - Upgrade composer.phar to 1.0.0-alpha8</li>
|
||||
</ul>
|
||||
|
||||
<a name="v310a3"></a><h3>1.vi. Changes since 3.1.0-a3</h3>
|
||||
<a name="v310a3"></a><h3>1.x. Changes since 3.1.0-a3</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -773,7 +1095,7 @@
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v310a2"></a><h3>1.vii. Changes since 3.1.0-a2</h3>
|
||||
<a name="v310a2"></a><h3>1.xi. Changes since 3.1.0-a2</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -881,7 +1203,7 @@
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12147">PHPBB3-12147</a>] - Remove Travis CI notification configuration</li>
|
||||
</ul>
|
||||
|
||||
<a name="v310a1"></a><h3>1.viii. Changes since 3.1.0-a1</h3>
|
||||
<a name="v310a1"></a><h3>1.xii. Changes since 3.1.0-a1</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -957,7 +1279,7 @@
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11998">PHPBB3-11998</a>] - Add console / command line client environment </li>
|
||||
</ul>
|
||||
|
||||
<a name="v30x"></a><h3>1.ix. Changes since 3.0.x</h3>
|
||||
<a name="v30x"></a><h3>1.xiii. Changes since 3.0.x</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -1638,7 +1960,7 @@
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11913">PHPBB3-11913</a>] - Apply reorganisation of download.phpbb.com to build_announcement.php</li>
|
||||
</ul>
|
||||
|
||||
<a name="v3011"></a><h3>1.x. Changes since 3.0.11</h3>
|
||||
<a name="v3011"></a><h3>1.xiv. Changes since 3.0.11</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -1793,7 +2115,7 @@
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11753">PHPBB3-11753</a>] - Upgrade mysql_upgrader.php schema data.</li>
|
||||
</ul>
|
||||
|
||||
<a name="v3010"></a><h3>1.xi. Changes since 3.0.10</h3>
|
||||
<a name="v3010"></a><h3>1.xv. Changes since 3.0.10</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -1918,7 +2240,7 @@
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10909">PHPBB3-10909</a>] - Update Travis Test Configuration: Travis no longer supports PHP 5.3.2</li>
|
||||
</ul>
|
||||
|
||||
<a name="v309"></a><h3>1.xii. Changes since 3.0.9</h3>
|
||||
<a name="v309"></a><h3>1.xvi. Changes since 3.0.9</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
@@ -2054,7 +2376,7 @@
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10480">PHPBB3-10480</a>] - Automate changelog building</li>
|
||||
</ul>
|
||||
|
||||
<a name="v308"></a><h3>1.xiii. Changes since 3.0.8</h3>
|
||||
<a name="v308"></a><h3>1.xvii. Changes since 3.0.8</h3>
|
||||
|
||||
<h4> Bug
|
||||
</h4>
|
||||
@@ -2422,7 +2744,7 @@
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v307-PL1"></a><h3>1.xiv. Changes since 3.0.7-PL1</h3>
|
||||
<a name="v307-PL1"></a><h3>1.xviii. Changes since 3.0.7-PL1</h3>
|
||||
<h4> Security
|
||||
</h4>
|
||||
<ul>
|
||||
@@ -2880,13 +3202,13 @@
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v307"></a><h3>1.xv. Changes since 3.0.7</h3>
|
||||
<a name="v307"></a><h3>1.xix. Changes since 3.0.7</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Sec] Do not expose forum content of forums with ACL entries but no actual permission in ATOM Feeds. (Bug #58595)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v306"></a><h3>1.xvi. Changes since 3.0.6</h3>
|
||||
<a name="v306"></a><h3>1.xx. Changes since 3.0.6</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Allow ban reason and length to be selected and copied in ACP and subsilver2 MCP. (Bug #51095)</li>
|
||||
@@ -2990,7 +3312,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
<a name="v305"></a><h3>1.xvii. Changes since 3.0.5</h3>
|
||||
<a name="v305"></a><h3>1.xxi. Changes since 3.0.5</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Allow whitespaces in avatar gallery names. (Bug #44955)</li>
|
||||
@@ -3212,7 +3534,7 @@
|
||||
<li>[Feature] Send anonymous statistical information to phpBB on installation and update (optional).</li>
|
||||
</ul>
|
||||
|
||||
<a name="v304"></a><h3>1.xviii. Changes since 3.0.4</h3>
|
||||
<a name="v304"></a><h3>1.xxii. Changes since 3.0.4</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Delete user entry from ban list table upon user deletion (Bug #40015 - Patch by TerraFrost)</li>
|
||||
@@ -3301,7 +3623,7 @@
|
||||
<li>[Sec] Only use forum id supplied for posting if global announcement detected. (Reported by nickvergessen)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v303"></a><h3>1.xix. Changes since 3.0.3</h3>
|
||||
<a name="v303"></a><h3>1.xxiii. Changes since 3.0.3</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Allow mixed-case template directories to be inherited (Bug #36725)</li>
|
||||
@@ -3333,7 +3655,7 @@
|
||||
<li>[Sec] Ask for forum password if post within passworded forum quoted in private message. (Reported by nickvergessen)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v302"></a><h3>1.xx. Changes since 3.0.2</h3>
|
||||
<a name="v302"></a><h3>1.xxiv. Changes since 3.0.2</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Correctly set topic starter if first post in topic removed (Bug #30575 - Patch by blueray2048)</li>
|
||||
@@ -3432,7 +3754,7 @@
|
||||
<li>[Sec Precaution] Stricter validation of the HTTP_HOST header (Thanks to Techie-Micheal et al for pointing out possible issues in derived code)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v301"></a><h3>1.xxi. Changes since 3.0.1</h3>
|
||||
<a name="v301"></a><h3>1.xxv. Changes since 3.0.1</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Ability to set permissions on non-mysql dbms (Bug #24955)</li>
|
||||
@@ -3480,7 +3802,7 @@
|
||||
<li>[Sec] Only allow urls gone through redirect() being used within login_box(). (thanks nookieman)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v300"></a><h3>1.xxii. Changes since 3.0.0</h3>
|
||||
<a name="v300"></a><h3>1.xxvi. Changes since 3.0.0</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Change] Validate birthdays (Bug #15004)</li>
|
||||
@@ -3551,7 +3873,7 @@
|
||||
<li>[Fix] Find and display colliding usernames correctly when converting from one database to another (Bug #23925)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc8"></a><h3>1.xxiii. Changes since 3.0.RC8</h3>
|
||||
<a name="v30rc8"></a><h3>1.xxvii. Changes since 3.0.RC8</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Cleaned usernames contain only single spaces, so "a_name" and "a__name" are treated as the same name (Bug #15634)</li>
|
||||
@@ -3560,7 +3882,7 @@
|
||||
<li>[Fix] Call garbage_collection() within database updater to correctly close connections (affects Oracle for example)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc7"></a><h3>1.xxiv. Changes since 3.0.RC7</h3>
|
||||
<a name="v30rc7"></a><h3>1.xxviii. Changes since 3.0.RC7</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Fixed MSSQL related bug in the update system</li>
|
||||
@@ -3595,7 +3917,7 @@
|
||||
<li>[Fix] No duplication of active topics (Bug #15474)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc6"></a><h3>1.xxv. Changes since 3.0.RC6</h3>
|
||||
<a name="v30rc6"></a><h3>1.xxix. Changes since 3.0.RC6</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Submitting language changes using acp_language (Bug #14736)</li>
|
||||
@@ -3605,7 +3927,7 @@
|
||||
<li>[Fix] Able to request new password (Bug #14743)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc5"></a><h3>1.xxvi. Changes since 3.0.RC5</h3>
|
||||
<a name="v30rc5"></a><h3>1.xxx. Changes since 3.0.RC5</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Feature] Removing constant PHPBB_EMBEDDED in favor of using an exit_handler(); the constant was meant to achive this more or less.</li>
|
||||
@@ -3668,7 +3990,7 @@
|
||||
<li>[Sec] New password hashing mechanism for storing passwords (#i42)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc4"></a><h3>1.xxvii. Changes since 3.0.RC4</h3>
|
||||
<a name="v30rc4"></a><h3>1.xxxi. Changes since 3.0.RC4</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] MySQL, PostgreSQL and SQLite related database fixes (Bug #13862)</li>
|
||||
@@ -3719,7 +4041,7 @@
|
||||
<li>[Fix] odbc_autocommit causing existing result sets to be dropped (Bug #14182)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc3"></a><h3>1.xxviii. Changes since 3.0.RC3</h3>
|
||||
<a name="v30rc3"></a><h3>1.xxxii. Changes since 3.0.RC3</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Fixing some subsilver2 and prosilver style issues</li>
|
||||
@@ -3828,7 +4150,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
<a name="v30rc2"></a><h3>1.xxix. Changes since 3.0.RC2</h3>
|
||||
<a name="v30rc2"></a><h3>1.xxxiii. Changes since 3.0.RC2</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Re-allow searching within the memberlist</li>
|
||||
@@ -3874,7 +4196,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
<a name="v30rc1"></a><h3>1.xxx. Changes since 3.0.RC1</h3>
|
||||
<a name="v30rc1"></a><h3>1.xxxiv. Changes since 3.0.RC1</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] (X)HTML issues within the templates (Bug #11255, #11255)</li>
|
||||
|
@@ -24,7 +24,6 @@ phpBB Lead Developer: naderman (Nils Adermann)
|
||||
|
||||
phpBB Developers: bantu (Andreas Fischer)
|
||||
dhruv.goel92 (Dhruv Goel)
|
||||
EXreaction (Nathan Guse)
|
||||
marc1706 (Marc Alexander)
|
||||
nickvergessen (Joas Schilling)
|
||||
nicofuma (Tristan Darricau)
|
||||
@@ -53,6 +52,7 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
|
||||
ckwalsh (Cullen Walsh) [01/2010 - 07/2011]
|
||||
DavidMJ (David M.) [12/2005 - 08/2009]
|
||||
dhn (Dominik Dröscher) [05/2007 - 01/2011]
|
||||
EXreaction (Nathan Guse) [07/2012 - 05/2014]
|
||||
GrahamJE (Graham Eames) [09/2005 - 11/2006]
|
||||
igorw (Igor Wiedler) [08/2010 - 02/2013]
|
||||
imkingdavid (David King) [11/2012 - 06/2014]
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="phpBB 3.1.x frequently asked questions" />
|
||||
<title>phpBB3 • FAQ</title>
|
||||
<title>phpBB • FAQ</title>
|
||||
|
||||
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
<!-- BEGIN DOCUMENT -->
|
||||
|
||||
<p>This is a very basic Frequently Asked Questions (FAQ) page which attempts to answer some of the more commonly asked questions. It is by no means exhaustive and should be used in combination with the 'built-in' User FAQ within phpBB3, the community forums and our IRC channel (see <a href="README.html">README</a> for details).</p>
|
||||
<p>This is a very basic Frequently Asked Questions (FAQ) page which attempts to answer some of the more commonly asked questions. It is by no means exhaustive and should be used in combination with the 'built-in' User FAQ within phpBB, the community forums and our IRC channel (see <a href="README.html">README</a> for details).</p>
|
||||
|
||||
<h1>FAQ</h1>
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Simple answer, no we will not. We are not being difficult when we say this we are actually trying to help you. phpBB has a reputation for being easy to install, that reputation is we believe well deserved. It is a simple process of unarchiving a single file, uploading the resulting directory/files to their intended location and entering some data in a web based form. The sequence of events, what to type where, etc. is covered in detail in the accompanying <a href="INSTALL.html">INSTALL.html</a> documentation. If you cannot install phpBB3 the chances are you will be unable to administer or update it.</p>
|
||||
<p>Simple answer, no we will not. We are not being difficult when we say this we are actually trying to help you. phpBB has a reputation for being easy to install, that reputation is we believe well deserved. It is a simple process of unarchiving a single file, uploading the resulting directory/files to their intended location and entering some data in a web based form. The sequence of events, what to type where, etc. is covered in detail in the accompanying <a href="INSTALL.html">INSTALL.html</a> documentation. If you cannot install phpBB the chances are you will be unable to administer or update it.</p>
|
||||
|
||||
<p>There are people, companies (unrelated to your hosting provider), etc. that will install your forum, either for free or for a payment. We do not recommend you make use of these offers. Unless the service is provided by your hosting company you will have to divulge passwords and other sensitive details. If you did not know how to use an ATM would you give a passer-by your bank card and PIN and ask them to show you what to do? No, probably not! The same applies to your hosting account details!</p>
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="phpBB 3.1.x Installation, updating and conversion informations" />
|
||||
<title>phpBB3 • Install</title>
|
||||
<title>phpBB • Install</title>
|
||||
|
||||
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
<p>This document will walk you through the basics on installing, updating and converting the forum software.</p>
|
||||
|
||||
<p>A basic overview of running phpBB3 can be found in the accompanying <a href="README.html">README</a> file. Please ensure you read that document in addition to this! For more detailed information on using, installing, updating and converting phpBB3 you should read <a href="https://www.phpbb.com/support/documentation/3.0/">the documentation</a> available online.</p>
|
||||
<p>A basic overview of running phpBB can be found in the accompanying <a href="README.html">README</a> file. Please ensure you read that document in addition to this! For more detailed information on using, installing, updating and converting phpBB you should read <a href="https://www.phpbb.com/support/documentation/3.0/">the documentation</a> available online.</p>
|
||||
|
||||
<h1>Install</h1>
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
<li><a href="#update_all">All package types</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><a href="#update30">Updating from phpBB 3.0.x to phpBB 3.1.x</a></li>
|
||||
<li><a href="#convert">Conversion from phpBB 2.0.x to phpBB 3.1.x</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#prereq">Requirements before converting</a></li>
|
||||
@@ -141,10 +142,11 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>PHP 5.3.3+</strong> with support for the database you intend to use.</li>
|
||||
<li>The following PHP modules are required:</li>
|
||||
<li>The following PHP modules are required:
|
||||
<ul>
|
||||
<li>json</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>getimagesize() function must be enabled.</li>
|
||||
<li>Presence of the following modules within PHP will provide access to additional features, but they are not required:
|
||||
<ul>
|
||||
@@ -175,23 +177,23 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Installation of phpBB3 will vary according to your server and database. If you have <em>shell access</em> to your account (via telnet or ssh for example) you may want to upload the entire phpBB3 archive (in binary mode!) to a directory on your host and unarchive it there.</p>
|
||||
<p>Installation of phpBB will vary according to your server and database. If you have <em>shell access</em> to your account (via telnet or ssh for example) you may want to upload the entire phpBB archive (in binary mode!) to a directory on your host and unarchive it there.</p>
|
||||
|
||||
<p>If you do not have shell access or do not wish to use it, you will need to decompress the phpBB3 archive to a local directory on your system using your favourite compression program, e.g. winzip, rar, zip, etc. From there you must FTP <strong>ALL</strong> the files it contains (being sure to retain the directory structure and filenames) to your host. Please ensure that the cases of filenames are retained, do <strong>NOT</strong> force filenames to all lower or upper case as doing so will cause errors later.</p>
|
||||
<p>If you do not have shell access or do not wish to use it, you will need to decompress the phpBB archive to a local directory on your system using your favourite compression program, e.g. winzip, rar, zip, etc. From there you must FTP <strong>ALL</strong> the files it contains (being sure to retain the directory structure and filenames) to your host. Please ensure that the cases of filenames are retained, do <strong>NOT</strong> force filenames to all lower or upper case as doing so will cause errors later.</p>
|
||||
|
||||
<p>All .php, .sql, .cfg, .css, .js, .html, .htaccess and .txt files should be uploaded in <strong>ASCII</strong> mode, while all graphics should be uploaded in <strong>BINARY</strong> mode. If you are unfamiliar with what this means please refer to your FTP client documentation. In most cases this is all handled transparantly by your ftp client, but if you encounter problems later you should be sure the files were uploaded correctly as described here.</p>
|
||||
|
||||
<p>phpBB3 comes supplied with British English as its standard language. However, a number of separate packs for different languages are available. If you are not a native English speaker you may wish to install one or more of these packages before continuing. The installation process below will allow you to select a default language from those available (you can, of course, change this default at a later stage). For more details on language packs, where to obtain them and how to install them please see the <a href="README.html#i18n">README</a>.</p>
|
||||
<p>phpBB comes supplied with British English as its standard language. However, a number of separate packs for different languages are available. If you are not a native English speaker you may wish to install one or more of these packages before continuing. The installation process below will allow you to select a default language from those available (you can, of course, change this default at a later stage). For more details on language packs, where to obtain them and how to install them please see the <a href="README.html#i18n">README</a>.</p>
|
||||
|
||||
<p>Once all the files have been uploaded to your site, you should point your browser at this location with the addition of <code>/install/</code>. For example, if your domain name is <code>www.example.com</code> and you placed the phpBB3 files in the directory <code>/phpBB3</code> off your web root you would enter <code>http://www.example.com/phpBB3/install/</code> or (alternatively) <code>http://www.example.com/phpBB3/install/index.php</code> into your browser. When you have done this, you should see the <strong><em>phpBB3 Introduction</em></strong> screen appear.</p>
|
||||
<p>Once all the files have been uploaded to your site, you should point your browser at this location with the addition of <code>/install/</code>. For example, if your domain name is <code>www.example.com</code> and you placed the phpBB files in the directory <code>/phpBB3</code> off your web root you would enter <code>http://www.example.com/phpBB3/install/</code> or (alternatively) <code>http://www.example.com/phpBB3/install/index.php</code> into your browser. When you have done this, you should see the <strong><em>phpBB Introduction</em></strong> screen appear.</p>
|
||||
|
||||
<h4>Introduction:</h4>
|
||||
|
||||
<p>The initial screen gives you a short introduction into phpBB. It allows you to read the license phpBB3 is released under (General Public License v2) and provides information about how you can receive support. To start the installation, use the <strong><em>INSTALL</em></strong> tab.</p>
|
||||
<p>The initial screen gives you a short introduction into phpBB. It allows you to read the license phpBB is released under (General Public License v2) and provides information about how you can receive support. To start the installation, use the <strong><em>INSTALL</em></strong> tab.</p>
|
||||
|
||||
<h4>Requirements</h4>
|
||||
|
||||
<p>The first page you will see after starting the installation is the Requirements list. phpBB3 automatically checks whether everything that it needs to run properly is installed on your server. You need to have at least the minimum PHP version installed, and at least one database available to continue the installation. Also important, is that all shown folders are available and have the correct permissions. Please see the description of each section to find out whether they are optional or required for phpBB3 to run. If everything is in order, you can continue the installation with <em>Start Install</em>.</p>
|
||||
<p>The first page you will see after starting the installation is the Requirements list. phpBB automatically checks whether everything that it needs to run properly is installed on your server. You need to have at least the minimum PHP version installed, and at least one database available to continue the installation. Also important, is that all shown folders are available and have the correct permissions. Please see the description of each section to find out whether they are optional or required for phpBB to run. If everything is in order, you can continue the installation with <em>Start Install</em>.</p>
|
||||
|
||||
<h4>Database settings</h4>
|
||||
|
||||
@@ -211,7 +213,7 @@
|
||||
|
||||
<p>You don't need to change the Prefix for tables in database setting, unless you plan on using multipe phpBB installations on one database. In this case, you can use a different prefix for each installation to make it work.</p>
|
||||
|
||||
<p>After you entered your details, you can continue with the <em>Proceed to next step</em> button. Now phpBB3 will check whether the data you entered will lead to a successful database connection and whether tables with the same prefix already exist.</p>
|
||||
<p>After you entered your details, you can continue with the <em>Proceed to next step</em> button. Now phpBB will check whether the data you entered will lead to a successful database connection and whether tables with the same prefix already exist.</p>
|
||||
|
||||
<p>A <em>Could not connect to the database</em> error means that you didn't enter the database data correctly and it is not possible for phpBB to connect. Make sure that everything you entered is in order and try again. Again, if you are unsure about your database settings, please contact your host.</p>
|
||||
|
||||
@@ -221,7 +223,7 @@
|
||||
|
||||
<h4>Administrator details</h4>
|
||||
|
||||
<p>Now you have to create your administration user. This user will have full administration access and he/she will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB3 installation, we only include British English. You can download further languages from <a href="https://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p>
|
||||
<p>Now you have to create your administration user. This user will have full administration access and he/she will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB installation, we only include British English. You can download further languages from <a href="https://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p>
|
||||
|
||||
<h4>Configuration file</h4>
|
||||
|
||||
@@ -235,7 +237,7 @@
|
||||
|
||||
<p>If the installation was successful, you can now use the <em>Login</em> button to visit the Administration Control Panel. Congratulations, you have installed phpBB successfully. But there is still work ahead!</p>
|
||||
|
||||
<p>If you are unable to get phpBB3 installed even after reading this guide, please look at the support section of the installer's introduction page to find out where you can ask for further assistance.</p>
|
||||
<p>If you are unable to get phpBB installed even after reading this guide, please look at the support section of the installer's introduction page to find out where you can ask for further assistance.</p>
|
||||
|
||||
<p>At this point if you are converting from phpBB 2.0.x, you should refer to the <a href="#convert">conversion steps</a> for further information. If not, you should remove the install directory from your server as you will only be able to access the Administration Control Panel whilst it is present.</p>
|
||||
|
||||
@@ -255,15 +257,15 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>If you are currently using a stable release of phpBB3, updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Note</strong>: Before updating, we heavily recommend you do a <em>full backup of your database and existing phpBB3 files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p>
|
||||
<p>If you are currently using a stable release of phpBB, updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Note</strong>: Before updating, we heavily recommend you do a <em>full backup of your database and existing phpBB files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p>
|
||||
|
||||
<p><strong>Please make sure you update your phpBB3 source files too, even if you run the <code>database_update.php</code> file.</strong></p>
|
||||
<p><strong>Please make sure you update your phpBB source files too, even if you run the <code>database_update.php</code> file.</strong></p>
|
||||
|
||||
<a name="update_full"></a><h3>4.i. Full package</h3>
|
||||
|
||||
<p>The full package is normally meant for new installations only, but if you want to replace all source files, this package comes in handy.</p>
|
||||
|
||||
<p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB3 files, you may want to leave your <code>files/</code> and <code>images/</code> directorie in place. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <a href="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
|
||||
<p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB files, you may want to leave your <code>files/</code> and <code>images/</code> directories in place. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <a href="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
|
||||
|
||||
<p>You should now run <code>install/database_update.php</code> which, depending on your previous version, will make a number of database changes. You may receive <em>FAILURES</em> during this procedure. They should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker).</p>
|
||||
|
||||
@@ -302,7 +304,7 @@
|
||||
<ul>
|
||||
<li>Go to the <a href="https://www.phpbb.com/downloads/">downloads page</a> and download the latest update package listed there, matching your current version.</li>
|
||||
<li>Upload the uncompressed archive contents to your phpBB installation - only the install folder is required. Upload the whole install folder, retaining the file structure.</li>
|
||||
<li>After the install folder is present, phpBB3 will go offline automatically.</li>
|
||||
<li>After the install folder is present, phpBB will go offline automatically.</li>
|
||||
<li>Point your browser to the install directory, for example <code>http://www.example.com/phpBB3/install/</code></li>
|
||||
<li>Choose the "Update" Tab and follow the instructions</li>
|
||||
</ul>
|
||||
@@ -324,7 +326,41 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="convert"></a><h2>5. Conversion from phpBB 2.0.x to phpBB 3.1.x</h2>
|
||||
<a name="update30"></a><h2>5. Updating from phpBB 3.0.x to phpBB 3.1.x</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Updating from phpBB 3.0.x to 3.1.x is just the same as <a href="#update">updating from stable releases of phpBB 3.1.x</a></p>
|
||||
|
||||
<p>However you can also start with a new set of phpBB 3.1.x files.</p>
|
||||
|
||||
<ol>
|
||||
<li>Delete all files <strong>EXCEPT</strong> for the following:
|
||||
|
||||
<ul>
|
||||
<li>The <code>config.php</code> file</li>
|
||||
<li>The <code>images/</code> directory</li>
|
||||
<li>The <code>files/</code> directory</li>
|
||||
<li>The <code>store/</code> directory</li>
|
||||
</ul></li>
|
||||
|
||||
<li>Upload the contents of the 3.1.x Full Package into your forum's directory.</li>
|
||||
<li>Browse to install/database_update.php</li>
|
||||
<li>Delete the <code>install/</code> directory</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
|
||||
|
||||
<span class="corners-bottom"><span></span></span></div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="convert"></a><h2>6. Conversion from phpBB 2.0.x to phpBB 3.1.x</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
@@ -387,20 +423,20 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="postinstall"></a><h2>6. Important (security related) post-Install tasks for all installation methods</h2>
|
||||
<a name="postinstall"></a><h2>7. Important (security related) post-Install tasks for all installation methods</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Once you have successfully installed phpBB3 you <strong>MUST</strong> ensure you remove the entire <code>install/</code> directory. Leaving the install directory in place is a <em>very serious potential security issue</em> which may lead to deletion or alteration of files, etc. Please note that until this directory is removed, phpBB will not operate and a warning message will be displayed. Beyond this <strong>essential</strong> deletion, you may also wish to delete the docs/ directory if you wish.</p>
|
||||
<p>Once you have successfully installed phpBB you <strong>MUST</strong> ensure you remove the entire <code>install/</code> directory. Leaving the install directory in place is a <em>very serious potential security issue</em> which may lead to deletion or alteration of files, etc. Please note that until this directory is removed, phpBB will not operate and a warning message will be displayed. Beyond this <strong>essential</strong> deletion, you may also wish to delete the docs/ directory if you wish.</p>
|
||||
|
||||
<p>With these directories deleted, you should proceed to the administration panel. Depending on how the installation completed, you may have been directed there automatically. If not, login as the administrator you specified during install/conversion and click the <strong>Administration Control Panel</strong> link at the bottom of any page. Ensure that details specified on the <strong>General</strong> tab are correct!</p>
|
||||
|
||||
<a name="avatars"></a><h3>6.i. Uploadable avatars</h3>
|
||||
|
||||
<p>phpBB3 supports several methods for allowing users to select their own <em>avatar</em> (an avatar is a small image generally unique to a user and displayed just below their username in posts).</p>
|
||||
<p>phpBB supports several methods for allowing users to select their own <em>avatar</em> (an avatar is a small image generally unique to a user and displayed just below their username in posts).</p>
|
||||
|
||||
<p>Two of these options allow users to upload an avatar from their machine or a remote location (via a URL). If you wish to enable this function you should first ensure the correct path for uploadable avatars is set in <strong>Administration Control Panel -> General -> Board Configuration -> Avatar settings</strong>. By default this is <code>images/avatars/uploads</code>, but you can set it to whatever you like, just ensure the configuration setting is updated. You must also ensure this directory can be written to by the webserver. Usually this means you have to alter its permissions to allow anyone to read and write to it. Exactly how you should do this depends on your FTP client or server operating system.</p>
|
||||
|
||||
@@ -425,7 +461,7 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="anti_spam"></a><h2>7. Anti-Spam Measures</h2>
|
||||
<a name="anti_spam"></a><h2>8. Anti-Spam Measures</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
@@ -441,7 +477,7 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="disclaimer"></a><h2>8. Copyright and disclaimer</h2>
|
||||
<a name="disclaimer"></a><h2>9. Copyright and disclaimer</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="phpBB 3.1.x Readme" />
|
||||
<title>phpBB3 • Readme</title>
|
||||
<title>phpBB • Readme</title>
|
||||
|
||||
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
<!-- BEGIN DOCUMENT -->
|
||||
|
||||
<p>Thank you for downloading phpBB3. This README will guide you through the basics of installation and operation of phpBB3. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p>
|
||||
<p>Thank you for downloading phpBB. This README will guide you through the basics of installation and operation of phpBB. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p>
|
||||
|
||||
<h1>Readme</h1>
|
||||
|
||||
@@ -44,15 +44,15 @@
|
||||
<div class="content">
|
||||
|
||||
<ol>
|
||||
<li><a href="#install">Installing phpBB3</a></li>
|
||||
<li><a href="#run">Running phpBB3</a>
|
||||
<li><a href="#install">Installing phpBB</a></li>
|
||||
<li><a href="#run">Running phpBB</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#i18n">Languages (Internationalisation - i18n)</a></li>
|
||||
<li><a href="#styles">Styles</a></li>
|
||||
<li><a href="#mods">Modifications</a></li>
|
||||
<li><a href="#extensions">Extensions</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><a href="#help">Getting help with phpBB3</a>
|
||||
<li><a href="#help">Getting help with phpBB</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#docs">Documentation</a></li>
|
||||
<li><a href="#kb">Knowledge Base</a></li>
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="install"></a><h2>1. Installing phpBB3</h2>
|
||||
<a name="install"></a><h2>1. Installing phpBB</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="run"></a><h2>2. Running phpBB3</h2>
|
||||
<a name="run"></a><h2>2. Running phpBB</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
@@ -132,31 +132,31 @@
|
||||
|
||||
<p>This is the <em>official</em> location for all supported language sets. If you download a package from a 3rd party site you do so with the understanding that we cannot offer support. Please do not ask for support if you download a language pack from a 3rd party site.</p>
|
||||
|
||||
<p>Installation of these packages is straightforward: simply download the required language pack, uncompress (unzip) it and via FTP transfer the included <code>language</code> and <code>styles</code> folders to the root of your board installation. The language can then be installed via the Administration Control Panel of your board: <code>System tab -> General Tasks -> Language packs</code>. A more detailed description of the process is in the Knowledge Base article, <a href="https://www.phpbb.com/kb/article/how-to-install-a-language-pack/">How to Install a Language Pack</a>.</p>
|
||||
<p>Installation of these packages is straightforward: simply download the required language pack, uncompress (unzip) it and via FTP transfer the included <code>language</code> and <code>styles</code> folders to the root of your board installation. The language can then be installed via the Administration Control Panel of your board: <code>Customise tab -> Language management -> Language packs</code>. A more detailed description of the process is in the Knowledge Base article, <a href="https://www.phpbb.com/kb/article/how-to-install-a-language-pack/">How to Install a Language Pack</a>.</p>
|
||||
|
||||
<p>If your language is not available, please visit our <a href="https://www.phpbb.com/community/viewforum.php?f=66">[3.0.x] Translations</a> forum where you will find topics on translations in progress. Should you wish to volunteer to translate a language not currently available or assist in maintaining an existing language pack, you can <a href="https://www.phpbb.com/languages/apply.php">Apply to become a translator</a>.</p>
|
||||
|
||||
<a name="styles"></a><h3>2.ii. Styles</h3>
|
||||
|
||||
<p>Although we are rather proud of the included styles, we realise that they may not be to everyone's taste. Therefore, phpBB3 allows styles to be switched with relative ease. First, you need to locate and download a style you like. You can find them listed in the <a href="https://www.phpbb.com/customise/db/styles-2/">Styles</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||
<p>Although we are rather proud of the included styles, we realise that they may not be to everyone's taste. Therefore, phpBB allows styles to be switched with relative ease. First, you need to locate and download a style you like. You can find them listed in the <a href="https://www.phpbb.com/customise/db/styles-2/">Styles</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||
|
||||
<p>For more information about styles, please see: <a href="https://www.phpbb.com/styles/">https://www.phpbb.com/styles/</a></p>
|
||||
|
||||
<p><strong>Please note</strong> that 3rd party styles downloaded for versions of phpBB2 will <strong>not</strong> work in phpBB3. It is also important to ensure that the style is updated to match the current version of the phpBB software you are using.</p>
|
||||
|
||||
<p>Once you have downloaded a style, the usual next step is to unarchive (or upload the unarchived contents of) the package into your <code>styles/</code> directory. You then need to visit <code>Administration Control Panel -> Styles tab</code> where you should see the new style available. Click "Install" to install the style.</p>
|
||||
<p>Once you have downloaded a style, the usual next step is to unarchive (or upload the unarchived contents of) the package into your <code>styles/</code> directory. You then need to visit <code>Administration Control Panel -> Customise tab -> Style management -> Install Styles</code> where you should see the new style available. Click "Install style" to install the style.</p>
|
||||
|
||||
<p><strong>Please note</strong> that to improve efficiency, the software caches certain data. For this reason, if you create your own style or modify existing ones, please remember to "Refresh" the appropriate style components <code>Administration Control Panel -> Styles tab -> Style Components</code> screen. You may also need to reload the page you have changed in your web browser to overcome browser caching. If the changed components are not refreshed you will not see your changes taking effect.</p>
|
||||
<p><strong>Please note</strong> that to improve efficiency, the software caches certain data. For this reason, if you create your own style or modify existing ones, please remember to purge the board cache by clicking the <code>Run now</code> button next to the <code>Purge the cache</code> option in the index page of the Administration Control Panel. You may also need to reload the page you have changed in your web browser to overcome browser caching. If the cache is not purged, you will not see your changes taking effect.</p>
|
||||
|
||||
<a name="mods"></a><h3>2.iii. Modifications</h3>
|
||||
<a name="extensions"></a><h3>2.iii. Extensions</h3>
|
||||
|
||||
<p>We are proud to have a thriving modifications community. These third party modifications to the standard phpBB software, known as <strong>MODs</strong>, extend its capabilities still further. You can browse through many of the MODs in the <a href="https://www.phpbb.com/customise/db/modifications-1/">Modifications</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||
<p>We are proud to have a thriving extensions community. These third party extensions to the standard phpBB software, extend its capabilities still further. You can browse through many of the extensions in the <a href="https://www.phpbb.com/customise/db/extensions-27/">Extensions</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||
|
||||
<p>For more information about MODs, please see: <a href="https://www.phpbb.com/mods/">https://www.phpbb.com/mods/</a></p>
|
||||
<p>For more information about extensions, please see: <a href="https://www.phpbb.com/extensions">https://www.phpbb.com/extensions</a></p>
|
||||
|
||||
<p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any modification should <strong>NOT</strong> be reported to the bug tracker (see below). First remove the MOD and see if the problem is resolved. Any support for a MOD should only be sought in the "Discussion/Support" forum for that MOD.</p>
|
||||
<p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any extension should <strong>NOT</strong> be reported to the bug tracker (see below). First disable the extension and see if the problem is resolved. Any support for an extension should only be sought in the "Discussion/Support" forum for that extension.</p>
|
||||
|
||||
<p>Also remember that any modifications, particularly those which modify the database in any way, may render upgrading your forum to future versions more difficult. With all this said, many users have and continue to utilise many of the MODs already available with great success.</p>
|
||||
<p>Also remember that any extensions which modify the database in any way, may render upgrading your forum to future versions more difficult.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -167,16 +167,16 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="help"></a><h2>3. Getting help with phpBB3</h2>
|
||||
<a name="help"></a><h2>3. Getting help with phpBB</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>phpBB3 can sometimes seem a little daunting to new users, particularly with regards to the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a>, which covers a few basic getting started questions. If you need additional help there are several places you can find it.</p>
|
||||
<p>phpBB can sometimes seem a little daunting to new users, particularly with regards to the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a>, which covers a few basic getting started questions. If you need additional help there are several places you can find it.</p>
|
||||
|
||||
<a name="docs"></a><h3>3.i. phpBB3 Documentation</h3>
|
||||
<a name="docs"></a><h3>3.i. phpBB Documentation</h3>
|
||||
|
||||
<p>Comprehensive documentation is now available on the phpBB website:</p>
|
||||
|
||||
@@ -244,16 +244,16 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>The phpBB Limited uses a bug tracking system to store, list and manage all reported bugs, it can be found at the location listed below. Please <strong>DO NOT</strong> post bug reports to our forums. In addition please <strong>DO NOT</strong> use the bug tracker for support requests. Posting such a request will only see you directed to the support forums (while taking time away from working on real bugs).</p>
|
||||
<p>The phpBB developers use a bug tracking system to store, list and manage all reported bugs, it can be found at the location listed below. Please <strong>DO NOT</strong> post bug reports to our forums. In addition please <strong>DO NOT</strong> use the bug tracker for support requests. Posting such a request will only see you directed to the support forums (while taking time away from working on real bugs).</p>
|
||||
|
||||
<p><a href="http://tracker.phpbb.com/browse/PHPBB3">http://tracker.phpbb.com/browse/PHPBB3</a></p>
|
||||
|
||||
<p>While we very much appreciate receiving bug reports (the more reports the more stable phpBB will be) we ask you carry out a few steps before adding new entries:</p>
|
||||
|
||||
<ul>
|
||||
<li>First, determine if your bug is reproduceable; how to determine this depends on the bug in question. Only if the bug is reproduceable is it likely to be a problem with phpBB3 (or in some way connected). If something cannot be reproduced it may turn out to have been your hosting provider working on something, a user doing something silly, etc. Bug reports for non-reproduceable events can slow down our attempts to fix real, reproduceable issues<br /><br /></li>
|
||||
<li>First, determine if your bug is reproduceable; how to determine this depends on the bug in question. Only if the bug is reproduceable is it likely to be a problem with phpBB (or in some way connected). If something cannot be reproduced it may turn out to have been your hosting provider working on something, a user doing something silly, etc. Bug reports for non-reproduceable events can slow down our attempts to fix real, reproduceable issues<br /><br /></li>
|
||||
<li>Next, please read or search through the existing bug reports to see if <em>your</em> bug (or one very similar to it) is already listed. If it is please add to that existing bug rather than creating a new duplicate entry (all this does is slow us down).<br /><br /></li>
|
||||
<li>Check the forums (use search!) to see if people have discussed anything that sounds similar to what you are seeing. However, as noted above please <strong>DO NOT</strong> post your particular bug to the forum unless it's non-reproduceable or you are sure it’s related to something you have done rather than phpBB3<br /><br /></li>
|
||||
<li>Check the forums (use search!) to see if people have discussed anything that sounds similar to what you are seeing. However, as noted above please <strong>DO NOT</strong> post your particular bug to the forum unless it's non-reproduceable or you are sure it’s related to something you have done rather than phpBB<br /><br /></li>
|
||||
<li>If no existing bug exists then please feel free to add it</li>
|
||||
</ul>
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
|
||||
<p>The relevant database type/version is listed within the administration control panel.</p>
|
||||
|
||||
<p>Please be as detailed as you can in your report, and if possible, list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request to our repository <a href="https://github.com/phpbb/phpbb3">on GitHub</a>.</p>
|
||||
<p>Please be as detailed as you can in your report, and if possible, list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request to our repository <a href="https://github.com/phpbb/phpbb">on GitHub</a>.</p>
|
||||
|
||||
<p>If you create a patch, it is very much appreciated (but not required) if you follow the phpBB coding guidelines. Please note that the coding guidelines are somewhat different between different versions of phpBB. For phpBB 3.1.x the coding guidelines may be found here: <a href="http://area51.phpbb.com/docs/31x/coding-guidelines.html">http://area51.phpbb.com/docs/31x/coding-guidelines.html</a></p>
|
||||
|
||||
@@ -321,7 +321,7 @@
|
||||
|
||||
<p>phpBB 3.1.x takes advantage of new features added in PHP 5.3. We recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 5.3.3.</p>
|
||||
|
||||
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB3. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
|
||||
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
|
||||
|
||||
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, MSSQL Server 2000, PostgreSQL 8.x, Oracle 8, SQLite 2 and SQLite 3. Versions of PHP used range from 5.3.x to 5.4.x without problem.</p>
|
||||
|
||||
|
@@ -64,6 +64,13 @@ acp_overall_header_head_append
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add assets within the `<head>` tags in the ACP
|
||||
|
||||
acp_overall_header_stylesheets_after
|
||||
===
|
||||
* Location: adm/style/overall_header.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add assets after stylesheets within the `<head>` tags in the ACP.
|
||||
Note that INCLUDECSS will not work with this event.
|
||||
|
||||
acp_posting_buttons_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -78,6 +85,50 @@ acp_posting_buttons_before
|
||||
* Since: 3.1.0-b4
|
||||
* Purpose: Add content before BBCode posting buttons in the ACP
|
||||
|
||||
acp_ranks_edit_after
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_ranks.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content after the rank details when editing a rank in the ACP
|
||||
|
||||
acp_ranks_edit_before
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_ranks.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content before the rank details when editing a rank in the ACP
|
||||
|
||||
acp_ranks_list_column_after
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_ranks.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content before the first column in the ranks list in the ACP
|
||||
|
||||
acp_ranks_list_column_before
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_ranks.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content after the last column (but before the action column)
|
||||
in the ranks list in the ACP
|
||||
|
||||
acp_ranks_list_header_after
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_ranks.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content before the first header-column in the ranks list in the ACP
|
||||
|
||||
acp_ranks_list_header_before
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_ranks.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content after the last header-column (but before the action column)
|
||||
in the ranks list in the ACP
|
||||
|
||||
acp_simple_footer_after
|
||||
===
|
||||
* Location: adm/style/simple_footer.html
|
||||
@@ -96,6 +147,13 @@ acp_simple_header_head_append
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add assets within the `<head>` tags in the simple header of the ACP
|
||||
|
||||
acp_simple_header_stylesheets_after
|
||||
===
|
||||
* Location: adm/style/simple_header.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add assets after stylesheets within the `<head>` tags in the simple header
|
||||
of the ACP. Note that INCLUDECSS will not work with this event.
|
||||
|
||||
acp_users_overview_options_append
|
||||
===
|
||||
* Location: adm/style/acp_users_overview.html
|
||||
@@ -166,6 +224,38 @@ forumlist_body_category_header_before
|
||||
* Since: 3.1.0-a4
|
||||
* Purpose: Add content before the header of the category on the forum list.
|
||||
|
||||
forumlist_body_forum_row_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/forumlist_body.html
|
||||
+ styles/subsilver2/template/forumlist_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add content after the forum list item.
|
||||
|
||||
forumlist_body_forum_row_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/forumlist_body.html
|
||||
+ styles/subsilver2/template/forumlist_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add content at the start of the forum list item.
|
||||
|
||||
forumlist_body_forum_row_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/forumlist_body.html
|
||||
+ styles/subsilver2/template/forumlist_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add content before the forum list item.
|
||||
|
||||
forumlist_body_forum_row_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/forumlist_body.html
|
||||
+ styles/subsilver2/template/forumlist_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add content at the end of the forum list item.
|
||||
|
||||
forumlist_body_last_post_title_prepend
|
||||
===
|
||||
* Locations:
|
||||
@@ -278,6 +368,38 @@ index_body_stat_blocks_before
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add new statistic blocks above the Who Is Online and Board Statistics blocks
|
||||
|
||||
mcp_ban_fields_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_ban.html
|
||||
+ styles/subsilver2/template/mcp_ban.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add additional fields to the ban form in MCP
|
||||
|
||||
mcp_ban_fields_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_ban.html
|
||||
+ styles/subsilver2/template/mcp_ban.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add additional fields to the ban form in MCP
|
||||
|
||||
mcp_ban_unban_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_ban.html
|
||||
+ styles/subsilver2/template/mcp_ban.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add additional fields to the unban form in MCP
|
||||
|
||||
mcp_ban_unban_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_ban.html
|
||||
+ styles/subsilver2/template/mcp_ban.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add additional fields to the unban form in MCP
|
||||
|
||||
memberlist_body_username_append
|
||||
===
|
||||
* Locations:
|
||||
@@ -344,6 +466,38 @@ memberlist_view_user_statistics_before
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add entries before the user statistics part of any user profile
|
||||
|
||||
mcp_warn_post_add_warning_field_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_warn_post.html
|
||||
+ styles/subsilver2/template/mcp_warn_post.html
|
||||
* Since: 3.1.0-RC4
|
||||
* Purpose: Add content during warning for a post - after add warning field.
|
||||
|
||||
mcp_warn_post_add_warning_field_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_warn_post.html
|
||||
+ styles/subsilver2/template/mcp_warn_post.html
|
||||
* Since: 3.1.0-RC4
|
||||
* Purpose: Add content during warning for a post - before add warning field.
|
||||
|
||||
mcp_warn_user_add_warning_field_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_warn_user.html
|
||||
+ styles/subsilver2/template/mcp_warn_user.html
|
||||
* Since: 3.1.0-RC4
|
||||
* Purpose: Add content during warning a user - after add warning field.
|
||||
|
||||
mcp_warn_user_add_warning_field_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_warn_user.html
|
||||
+ styles/subsilver2/template/mcp_warn_user.html
|
||||
* Since: 3.1.0-RC4
|
||||
* Purpose: Add content during warning a user - before add warning field.
|
||||
|
||||
navbar_header_logged_out_content
|
||||
===
|
||||
* Locations:
|
||||
@@ -405,9 +559,18 @@ overall_footer_breadcrumb_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/navbar_footer.html
|
||||
+ styles/subsilver2/template/breadcrumbs.html
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add links to the list of breadcrumbs in the footer
|
||||
|
||||
overall_footer_breadcrumb_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/navbar_footer.html
|
||||
+ styles/subsilver2/template/breadcrumbs.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add links to the list of breadcrumbs in the footer (after site-home, but before board-index)
|
||||
|
||||
overall_footer_content_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -488,6 +651,30 @@ overall_header_breadcrumb_append
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add links to the list of breadcrumbs in the header
|
||||
|
||||
overall_header_breadcrumb_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/navbar_header.html
|
||||
+ styles/subsilver2/template/breadcrumbs.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add links to the list of breadcrumbs in the header (after site-home, but before board-index)
|
||||
|
||||
overall_header_breadcrumbs_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/navbar_header.html
|
||||
+ styles/subsilver2/template/breadcrumbs.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content after the breadcrumbs (outside of the breadcrumbs container)
|
||||
|
||||
overall_header_breadcrumbs_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/navbar_header.html
|
||||
+ styles/subsilver2/template/breadcrumbs.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content before the breadcrumbs (outside of the breadcrumbs container)
|
||||
|
||||
overall_header_content_before
|
||||
===
|
||||
* Locations:
|
||||
@@ -544,6 +731,15 @@ overall_header_page_body_before
|
||||
* Since: 3.1.0-b3
|
||||
* Purpose: Add content after the page-header, but before the page-body
|
||||
|
||||
overall_header_stylesheets_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/overall_header.html
|
||||
+ styles/subsilver2/template/overall_header.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add asset calls after stylesheets within the `</head>` tag.
|
||||
Note that INCLUDECSS will not work with this event.
|
||||
|
||||
posting_editor_buttons_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -600,6 +796,22 @@ posting_editor_subject_before
|
||||
* Since: 3.1.0-a2
|
||||
* Purpose: Add field (e.g. textbox) to the posting screen before the subject
|
||||
|
||||
posting_pm_header_find_username_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/posting_pm_header.html
|
||||
+ styles/subsilver2/template/ucp_header.html
|
||||
* Since: 3.1.0-RC4
|
||||
* Purpose: Add content after the find username link on composing pm
|
||||
|
||||
posting_pm_header_find_username_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/posting_pm_header.html
|
||||
+ styles/subsilver2/template/ucp_header.html
|
||||
* Since: 3.1.0-RC4
|
||||
* Purpose: Add content before the find username link on composing pm
|
||||
|
||||
quickreply_editor_panel_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -702,6 +914,15 @@ simple_header_head_append
|
||||
* Since: 3.1.0-b4
|
||||
* Purpose: Add asset calls directly before the `</head>` tag
|
||||
|
||||
simple_header_stylesheets_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/simple_header.html
|
||||
+ styles/subsilver2/template/simple_header.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add asset calls after stylesheets within the `</head>` tag.
|
||||
Note that INCLUDECSS will not work with this event.
|
||||
|
||||
topiclist_row_prepend
|
||||
===
|
||||
* Locations:
|
||||
@@ -738,6 +959,20 @@ ucp_agreement_terms_before
|
||||
* Since: 3.1.0-b3
|
||||
* Purpose: Add content before the terms of agreement text at user registration
|
||||
|
||||
ucp_pm_viewmessage_avatar_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_pm_viewmessage.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content right after the avatar when viewing a private message
|
||||
|
||||
ucp_pm_viewmessage_avatar_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_pm_viewmessage.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content right before the avatar when viewing a private message
|
||||
|
||||
ucp_pm_viewmessage_contact_fields_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -770,6 +1005,24 @@ ucp_pm_viewmessage_custom_fields_before
|
||||
* Purpose: Add data before the custom fields on the user profile when viewing
|
||||
a private message
|
||||
|
||||
ucp_pm_viewmessage_post_buttons_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_pm_viewmessage.html
|
||||
+ styles/subsilver2/template/ucp_pm_viewmessage.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add post button to private messages (next to edit, quote etc), at
|
||||
the end of the list.
|
||||
|
||||
ucp_pm_viewmessage_post_buttons_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_pm_viewmessage.html
|
||||
+ styles/subsilver2/template/ucp_pm_viewmessage.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add post button to private messages (next to edit, quote etc), at
|
||||
the start of the list.
|
||||
|
||||
ucp_pm_viewmessage_print_head_append
|
||||
===
|
||||
* Locations:
|
||||
@@ -902,6 +1155,70 @@ ucp_friend_list_after
|
||||
* Since: 3.1.0-a4
|
||||
* Purpose: Add optional elements after list of friends in UCP
|
||||
|
||||
viewforum_buttons_bottom_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewforum_body.html
|
||||
+ styles/subsilver2/template/viewforum_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add buttons before New Topic button on the bottom of the topic's list
|
||||
|
||||
viewforum_buttons_bottom_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewforum_body.html
|
||||
+ styles/subsilver2/template/viewforum_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add buttons after New Topic button on the bottom of the topic's list
|
||||
|
||||
viewforum_buttons_top_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewforum_body.html
|
||||
+ styles/subsilver2/template/viewforum_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add buttons before New Topic button on the top of the topic's list
|
||||
|
||||
viewforum_buttons_top_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewforum_body.html
|
||||
+ styles/subsilver2/template/viewforum_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add buttons after New Topic button on the top of the topic's list
|
||||
|
||||
viewtopic_buttons_bottom_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewtopic_body.html
|
||||
+ styles/subsilver2/template/viewtopic_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add buttons before Post Reply button on the bottom of the posts's list
|
||||
|
||||
viewtopic_buttons_bottom_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewtopic_body.html
|
||||
+ styles/subsilver2/template/viewtopic_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add buttons after Post Reply button on the bottom of the posts's list
|
||||
|
||||
viewtopic_buttons_top_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewtopic_body.html
|
||||
+ styles/subsilver2/template/viewtopic_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add buttons before Post Reply button on the top of the posts's list
|
||||
|
||||
viewtopic_buttons_top_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewtopic_body.html
|
||||
+ styles/subsilver2/template/viewtopic_body.html
|
||||
* Since: 3.1.0-RC5
|
||||
* Purpose: Add buttons after Post Reply button on the top of the posts's list
|
||||
|
||||
viewforum_forum_name_append
|
||||
===
|
||||
* Locations:
|
||||
@@ -926,6 +1243,22 @@ viewtopic_print_head_append
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen
|
||||
|
||||
viewtopic_body_avatar_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewtopic_body.html
|
||||
+ styles/subsilver2/template/viewtopic_body.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content right after the avatar when viewing topics
|
||||
|
||||
viewtopic_body_avatar_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewtopic_body.html
|
||||
+ styles/subsilver2/template/viewtopic_body.html
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add content right before the avatar when viewing topics
|
||||
|
||||
viewtopic_body_contact_fields_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -1038,6 +1371,14 @@ viewtopic_body_postrow_post_before
|
||||
* Since: 3.1.0-a4
|
||||
* Purpose: Add data before posts
|
||||
|
||||
viewtopic_body_postrow_post_content_footer
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewtopic_body.html
|
||||
+ styles/subsilver2/template/viewtopic_body.html
|
||||
* Since: 3.1.0-RC4
|
||||
* Purpose: Add data at the end of the posts.
|
||||
|
||||
viewtopic_body_postrow_post_notices_after
|
||||
===
|
||||
* Locations:
|
||||
|
@@ -11,10 +11,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use Symfony\Component\Config\FileLocator;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
@@ -60,6 +56,8 @@ if (isset($_GET['avatar']))
|
||||
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
|
||||
$phpbb_class_loader_ext->register();
|
||||
|
||||
phpbb_load_extensions_autoloaders($phpbb_root_path);
|
||||
|
||||
// Set up container
|
||||
$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_config_php_file, $phpbb_root_path, $phpEx);
|
||||
$phpbb_container = $phpbb_container_builder->get_container();
|
||||
@@ -85,7 +83,6 @@ if (isset($_GET['avatar']))
|
||||
|
||||
// load extensions
|
||||
$phpbb_extension_manager = $phpbb_container->get('ext.manager');
|
||||
$phpbb_subscriber_loader = $phpbb_container->get('event.subscriber_loader');
|
||||
|
||||
// worst-case default
|
||||
$browser = strtolower($request->header('User-Agent', 'msie 6.0'));
|
||||
@@ -143,11 +140,7 @@ if (isset($_GET['avatar']))
|
||||
include($phpbb_root_path . 'common.' . $phpEx);
|
||||
require($phpbb_root_path . 'includes/functions_download' . '.' . $phpEx);
|
||||
|
||||
$download_id = request_var('id', 0);
|
||||
$topic_id = $request->variable('topic_id', 0);
|
||||
$post_id = $request->variable('post_id', 0);
|
||||
$msg_id = $request->variable('msg_id', 0);
|
||||
$archive = $request->variable('archive', '.tar');
|
||||
$attach_id = request_var('id', 0);
|
||||
$mode = request_var('mode', '');
|
||||
$thumbnail = request_var('t', false);
|
||||
|
||||
@@ -162,27 +155,7 @@ if (!$config['allow_attachments'] && !$config['allow_pm_attach'])
|
||||
trigger_error('ATTACHMENT_FUNCTIONALITY_DISABLED');
|
||||
}
|
||||
|
||||
if ($download_id)
|
||||
{
|
||||
// Attachment id (only 1 attachment)
|
||||
$sql_where = 'attach_id = ' . $download_id;
|
||||
}
|
||||
else if ($msg_id)
|
||||
{
|
||||
// Private message id (multiple attachments)
|
||||
$sql_where = 'is_orphan = 0 AND in_message = 1 AND post_msg_id = ' . $msg_id;
|
||||
}
|
||||
else if ($post_id)
|
||||
{
|
||||
// Post id (multiple attachments)
|
||||
$sql_where = 'is_orphan = 0 AND in_message = 0 AND post_msg_id = ' . $post_id;
|
||||
}
|
||||
else if ($topic_id)
|
||||
{
|
||||
// Topic id (multiple attachments)
|
||||
$sql_where = 'is_orphan = 0 AND topic_id = ' . $topic_id;
|
||||
}
|
||||
else
|
||||
if (!$attach_id)
|
||||
{
|
||||
send_status_line(404, 'Not Found');
|
||||
trigger_error('NO_ATTACHMENT_SELECTED');
|
||||
@@ -190,25 +163,12 @@ else
|
||||
|
||||
$sql = 'SELECT attach_id, post_msg_id, topic_id, in_message, poster_id, is_orphan, physical_filename, real_filename, extension, mimetype, filesize, filetime
|
||||
FROM ' . ATTACHMENTS_TABLE . "
|
||||
WHERE $sql_where";
|
||||
WHERE attach_id = $attach_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$attachments = $attachment_ids = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$attachment_id = (int) $row['attach_id'];
|
||||
|
||||
$row['physical_filename'] = utf8_basename($row['physical_filename']);
|
||||
|
||||
$attachment_ids[$attachment_id] = $attachment_id;
|
||||
$attachments[$attachment_id] = $row;
|
||||
}
|
||||
$attachment = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Make $attachment the first of the attachments we fetched.
|
||||
$attachment = current($attachments);
|
||||
|
||||
if (empty($attachments))
|
||||
if (!$attachment)
|
||||
{
|
||||
send_status_line(404, 'Not Found');
|
||||
trigger_error('ERROR_NO_ATTACHMENT');
|
||||
@@ -218,9 +178,9 @@ else if (!download_allowed())
|
||||
send_status_line(403, 'Forbidden');
|
||||
trigger_error($user->lang['LINKAGE_FORBIDDEN']);
|
||||
}
|
||||
else if ($download_id)
|
||||
else
|
||||
{
|
||||
// sizeof($attachments) == 1
|
||||
$attachment['physical_filename'] = utf8_basename($attachment['physical_filename']);
|
||||
|
||||
if (!$attachment['in_message'] && !$config['allow_attachments'] || $attachment['in_message'] && !$config['allow_pm_attach'])
|
||||
{
|
||||
@@ -265,12 +225,12 @@ else if ($download_id)
|
||||
else
|
||||
{
|
||||
// Attachment is in a private message.
|
||||
$row['forum_id'] = false;
|
||||
$post_row = array('forum_id' => false);
|
||||
phpbb_download_handle_pm_auth($db, $auth, $user->data['user_id'], $attachment['post_msg_id']);
|
||||
}
|
||||
|
||||
$extensions = array();
|
||||
if (!extension_allowed($row['forum_id'], $attachment['extension'], $extensions))
|
||||
if (!extension_allowed($post_row['forum_id'], $attachment['extension'], $extensions))
|
||||
{
|
||||
send_status_line(403, 'Forbidden');
|
||||
trigger_error(sprintf($user->lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']));
|
||||
@@ -327,142 +287,3 @@ else if ($download_id)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// sizeof($attachments) >= 1
|
||||
if ($attachment['in_message'])
|
||||
{
|
||||
phpbb_download_handle_pm_auth($db, $auth, $user->data['user_id'], $attachment['post_msg_id']);
|
||||
}
|
||||
else
|
||||
{
|
||||
phpbb_download_handle_forum_auth($db, $auth, $attachment['topic_id']);
|
||||
}
|
||||
|
||||
if (!class_exists('compress'))
|
||||
{
|
||||
require $phpbb_root_path . 'includes/functions_compress.' . $phpEx;
|
||||
}
|
||||
|
||||
if (!in_array($archive, compress::methods()))
|
||||
{
|
||||
$archive = '.tar';
|
||||
}
|
||||
|
||||
$post_visibility = array();
|
||||
if ($msg_id)
|
||||
{
|
||||
$sql = 'SELECT message_subject AS attach_subject
|
||||
FROM ' . PRIVMSGS_TABLE . "
|
||||
WHERE msg_id = $msg_id";
|
||||
}
|
||||
else if ($post_id)
|
||||
{
|
||||
$sql = 'SELECT post_subject AS attach_subject, forum_id, post_visibility
|
||||
FROM ' . POSTS_TABLE . "
|
||||
WHERE post_id = $post_id";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT post_id, post_visibility
|
||||
FROM ' . POSTS_TABLE . "
|
||||
WHERE topic_id = $topic_id
|
||||
AND post_attachment = 1";
|
||||
$result = $db->sql_query($sql);
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$post_visibility[(int) $row['post_id']] = (int) $row['post_visibility'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = 'SELECT topic_title AS attach_subject, forum_id
|
||||
FROM ' . TOPICS_TABLE . "
|
||||
WHERE topic_id = $topic_id";
|
||||
}
|
||||
|
||||
$result = $db->sql_query($sql);
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (empty($row))
|
||||
{
|
||||
send_status_line(404, 'Not Found');
|
||||
trigger_error('ERROR_NO_ATTACHMENT');
|
||||
}
|
||||
|
||||
$clean_name = phpbb_download_clean_filename($row['attach_subject']);
|
||||
$suffix = '_' . (($msg_id) ? 'm' . $msg_id : (($post_id) ? 'p' . $post_id : 't' . $topic_id)) . '_' . $clean_name;
|
||||
$archive_name = 'attachments' . $suffix;
|
||||
|
||||
$store_name = 'att_' . time() . '_' . unique_id();
|
||||
$archive_path = "{$phpbb_root_path}store/{$store_name}{$archive}";
|
||||
|
||||
if ($archive === '.zip')
|
||||
{
|
||||
$compress = new compress_zip('w', $archive_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
$compress = new compress_tar('w', $archive_path, $archive);
|
||||
}
|
||||
|
||||
$extensions = array();
|
||||
$files_added = 0;
|
||||
$forum_id = ($attachment['in_message']) ? false : (int) $row['forum_id'];
|
||||
$disallowed_extension = array();
|
||||
|
||||
foreach ($attachments as $attach)
|
||||
{
|
||||
if (!extension_allowed($forum_id, $attach['extension'], $extensions))
|
||||
{
|
||||
$disallowed_extension[$attach['extension']] = $attach['extension'];
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($post_id && $row['post_visibility'] != ITEM_APPROVED && !$auth->acl_get('m_approve', $forum_id))
|
||||
{
|
||||
// Attachment of a soft deleted post and the user is not allowed to see the post
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($topic_id && (!isset($post_visibility[$attach['post_msg_id']]) || $post_visibility[$attach['post_msg_id']] != ITEM_APPROVED) && !$auth->acl_get('m_approve', $forum_id))
|
||||
{
|
||||
// Attachment of a soft deleted post and the user is not allowed to see the post
|
||||
continue;
|
||||
}
|
||||
|
||||
$prefix = '';
|
||||
if ($topic_id)
|
||||
{
|
||||
$prefix = $attach['post_msg_id'] . '_';
|
||||
}
|
||||
|
||||
$compress->add_custom_file("{$phpbb_root_path}files/{$attach['physical_filename']}", "{$prefix}{$attach['real_filename']}");
|
||||
$files_added++;
|
||||
}
|
||||
|
||||
$compress->close();
|
||||
|
||||
if ($files_added)
|
||||
{
|
||||
phpbb_increment_downloads($db, $attachment_ids);
|
||||
$compress->download($store_name, $archive_name);
|
||||
}
|
||||
|
||||
unlink($archive_path);
|
||||
|
||||
if (!$files_added && !empty($disallowed_extension))
|
||||
{
|
||||
// None of the attachments had a valid extension
|
||||
$disallowed_extension = implode($user->lang['COMMA_SEPARATOR'], $disallowed_extension);
|
||||
send_status_line(403, 'Forbidden');
|
||||
trigger_error($user->lang('EXTENSION_DISABLED_AFTER_POSTING', $disallowed_extension));
|
||||
}
|
||||
else if (!$files_added)
|
||||
{
|
||||
send_status_line(404, 'Not Found');
|
||||
trigger_error('ERROR_NO_ATTACHMENT');
|
||||
}
|
||||
|
||||
file_gc();
|
||||
}
|
||||
|
@@ -164,8 +164,7 @@ if (defined('DEBUG') && request_var('explain', 0) && $auth->acl_get('a_'))
|
||||
{
|
||||
header('Content-type: text/html; charset=UTF-8');
|
||||
header('Cache-Control: private, no-cache="set-cookie"');
|
||||
header('Expires: 0');
|
||||
header('Pragma: no-cache');
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
|
||||
|
||||
$mtime = explode(' ', microtime());
|
||||
$totaltime = $mtime[0] + $mtime[1] - $starttime;
|
||||
|
@@ -1301,7 +1301,6 @@ class acp_attachments
|
||||
/**
|
||||
* Check accuracy of attachment statistics.
|
||||
*
|
||||
* @param $resync bool Resync stats if they're incorrect.
|
||||
* @return bool|string Returns false if stats are correct or error message
|
||||
* otherwise.
|
||||
*/
|
||||
|
@@ -25,14 +25,13 @@ class acp_ban
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $user, $auth, $template, $cache;
|
||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix;
|
||||
global $user, $template, $request, $phpbb_dispatcher;
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
|
||||
$bansubmit = (isset($_POST['bansubmit'])) ? true : false;
|
||||
$unbansubmit = (isset($_POST['unbansubmit'])) ? true : false;
|
||||
$current_time = time();
|
||||
$bansubmit = $request->is_set_post('bansubmit');
|
||||
$unbansubmit = $request->is_set_post('unbansubmit');
|
||||
|
||||
$user->add_lang(array('acp/ban', 'acp/users'));
|
||||
$this->tpl_name = 'acp_ban';
|
||||
@@ -48,23 +47,79 @@ class acp_ban
|
||||
if ($bansubmit)
|
||||
{
|
||||
// Grab the list of entries
|
||||
$ban = utf8_normalize_nfc(request_var('ban', '', true));
|
||||
$ban_len = request_var('banlength', 0);
|
||||
$ban_len_other = request_var('banlengthother', '');
|
||||
$ban_exclude = request_var('banexclude', 0);
|
||||
$ban_reason = utf8_normalize_nfc(request_var('banreason', '', true));
|
||||
$ban_give_reason = utf8_normalize_nfc(request_var('bangivereason', '', true));
|
||||
$ban = $request->variable('ban', '', true);
|
||||
$ban_length = $request->variable('banlength', 0);
|
||||
$ban_length_other = $request->variable('banlengthother', '');
|
||||
$ban_exclude = $request->variable('banexclude', 0);
|
||||
$ban_reason = $request->variable('banreason', '', true);
|
||||
$ban_give_reason = $request->variable('bangivereason', '', true);
|
||||
|
||||
if ($ban)
|
||||
{
|
||||
user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason);
|
||||
$abort_ban = false;
|
||||
/**
|
||||
* Use this event to modify the ban details before the ban is performed
|
||||
*
|
||||
* @event core.acp_ban_before
|
||||
* @var string mode One of the following: user, ip, email
|
||||
* @var string ban Either string or array with usernames, ips or email addresses
|
||||
* @var int ban_length Ban length in minutes
|
||||
* @var string ban_length_other Ban length as a date (YYYY-MM-DD)
|
||||
* @var bool ban_exclude Are we banning or excluding from another ban
|
||||
* @var string ban_reason Ban reason displayed to moderators
|
||||
* @var string ban_give_reason Ban reason displayed to the banned user
|
||||
* @var mixed abort_ban Either false, or an error message that is displayed to the user.
|
||||
* If a string is given the bans are not issued.
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array(
|
||||
'mode',
|
||||
'ban',
|
||||
'ban_length',
|
||||
'ban_length_other',
|
||||
'ban_exclude',
|
||||
'ban_reason',
|
||||
'ban_give_reason',
|
||||
'abort_ban',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_ban_before', compact($vars)));
|
||||
|
||||
if ($abort_ban)
|
||||
{
|
||||
trigger_error($abort_ban . adm_back_link($this->u_action));
|
||||
}
|
||||
user_ban($mode, $ban, $ban_length, $ban_length_other, $ban_exclude, $ban_reason, $ban_give_reason);
|
||||
|
||||
/**
|
||||
* Use this event to perform actions after the ban has been performed
|
||||
*
|
||||
* @event core.acp_ban_after
|
||||
* @var string mode One of the following: user, ip, email
|
||||
* @var string ban Either string or array with usernames, ips or email addresses
|
||||
* @var int ban_length Ban length in minutes
|
||||
* @var string ban_length_other Ban length as a date (YYYY-MM-DD)
|
||||
* @var bool ban_exclude Are we banning or excluding from another ban
|
||||
* @var string ban_reason Ban reason displayed to moderators
|
||||
* @var string ban_give_reason Ban reason displayed to the banned user
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array(
|
||||
'mode',
|
||||
'ban',
|
||||
'ban_length',
|
||||
'ban_length_other',
|
||||
'ban_exclude',
|
||||
'ban_reason',
|
||||
'ban_give_reason',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_ban_after', compact($vars)));
|
||||
|
||||
trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
|
||||
}
|
||||
}
|
||||
else if ($unbansubmit)
|
||||
{
|
||||
$ban = request_var('unban', array(''));
|
||||
$ban = $request->variable('unban', array(''));
|
||||
|
||||
if ($ban)
|
||||
{
|
||||
@@ -176,8 +231,6 @@ class acp_ban
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$banned_options = $excluded_options = array();
|
||||
$ban_length = $ban_reasons = $ban_give_reasons = array();
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$option = '<option value="' . $row['ban_id'] . '">' . $row[$field] . '</option>';
|
||||
@@ -196,60 +249,31 @@ class acp_ban
|
||||
if ($time_length == 0)
|
||||
{
|
||||
// Banned permanently
|
||||
$ban_length[$row['ban_id']] = $user->lang['PERMANENT'];
|
||||
$ban_length = $user->lang['PERMANENT'];
|
||||
}
|
||||
else if (isset($ban_end_text[$time_length]))
|
||||
{
|
||||
// Banned for a given duration
|
||||
$ban_length[$row['ban_id']] = sprintf($user->lang['BANNED_UNTIL_DURATION'], $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true));
|
||||
$ban_length = $user->lang('BANNED_UNTIL_DURATION', $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Banned until given date
|
||||
$ban_length[$row['ban_id']] = sprintf($user->lang['BANNED_UNTIL_DATE'], $user->format_date($row['ban_end'], false, true));
|
||||
$ban_length = $user->lang('BANNED_UNTIL_DATE', $user->format_date($row['ban_end'], false, true));
|
||||
}
|
||||
|
||||
$ban_reasons[$row['ban_id']] = $row['ban_reason'];
|
||||
$ban_give_reasons[$row['ban_id']] = $row['ban_give_reason'];
|
||||
$template->assign_block_vars('bans', array(
|
||||
'BAN_ID' => (int) $row['ban_id'],
|
||||
'LENGTH' => $ban_length,
|
||||
'A_LENGTH' => addslashes($ban_length),
|
||||
'REASON' => $row['ban_reason'],
|
||||
'A_REASON' => addslashes($row['ban_reason']),
|
||||
'GIVE_REASON' => $row['ban_give_reason'],
|
||||
'A_GIVE_REASON' => addslashes($row['ban_give_reason']),
|
||||
));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (sizeof($ban_length))
|
||||
{
|
||||
foreach ($ban_length as $ban_id => $length)
|
||||
{
|
||||
$template->assign_block_vars('ban_length', array(
|
||||
'BAN_ID' => (int) $ban_id,
|
||||
'LENGTH' => $length,
|
||||
'A_LENGTH' => addslashes($length),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
if (sizeof($ban_reasons))
|
||||
{
|
||||
foreach ($ban_reasons as $ban_id => $reason)
|
||||
{
|
||||
$template->assign_block_vars('ban_reason', array(
|
||||
'BAN_ID' => $ban_id,
|
||||
'REASON' => $reason,
|
||||
'A_REASON' => addslashes($reason),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
if (sizeof($ban_give_reasons))
|
||||
{
|
||||
foreach ($ban_give_reasons as $ban_id => $reason)
|
||||
{
|
||||
$template->assign_block_vars('ban_give_reason', array(
|
||||
'BAN_ID' => $ban_id,
|
||||
'REASON' => $reason,
|
||||
'A_REASON' => addslashes($reason),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$options = '';
|
||||
if ($excluded_options)
|
||||
{
|
||||
|
@@ -65,13 +65,16 @@ class acp_board
|
||||
'default_lang' => array('lang' => 'DEFAULT_LANGUAGE', 'validate' => 'lang', 'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
|
||||
'default_dateformat' => array('lang' => 'DEFAULT_DATE_FORMAT', 'validate' => 'string', 'type' => 'custom', 'method' => 'dateformat_select', 'explain' => true),
|
||||
'board_timezone' => array('lang' => 'SYSTEM_TIMEZONE', 'validate' => 'timezone', 'type' => 'custom', 'method' => 'timezone_select', 'explain' => true),
|
||||
'default_style' => array('lang' => 'DEFAULT_STYLE', 'validate' => 'int', 'type' => 'select', 'function' => 'style_select', 'params' => array('{CONFIG_VALUE}', false), 'explain' => false),
|
||||
|
||||
'legend2' => 'BOARD_STYLE',
|
||||
'default_style' => array('lang' => 'DEFAULT_STYLE', 'validate' => 'int', 'type' => 'select', 'function' => 'style_select', 'params' => array('{CONFIG_VALUE}', false), 'explain' => true),
|
||||
'guest_style' => array('lang' => 'GUEST_STYLE', 'validate' => 'int', 'type' => 'select', 'function' => 'style_select', 'params' => array($this->guest_style_get(), false), 'explain' => true),
|
||||
'override_user_style' => array('lang' => 'OVERRIDE_STYLE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
|
||||
'legend2' => 'WARNINGS',
|
||||
'legend3' => 'WARNINGS',
|
||||
'warnings_expire_days' => array('lang' => 'WARNINGS_EXPIRE', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
||||
|
||||
'legend3' => 'ACP_SUBMIT_CHANGES',
|
||||
'legend4' => 'ACP_SUBMIT_CHANGES',
|
||||
)
|
||||
);
|
||||
break;
|
||||
@@ -509,6 +512,14 @@ class acp_board
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($config_name == 'guest_style')
|
||||
{
|
||||
if (isset($cfg_array[$config_name])) {
|
||||
$this->guest_style_set($cfg_array[$config_name]);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->new_config[$config_name] = $config_value = $cfg_array[$config_name];
|
||||
|
||||
if ($config_name == 'email_function_name')
|
||||
@@ -904,12 +915,44 @@ class acp_board
|
||||
*/
|
||||
function timezone_select($value, $key)
|
||||
{
|
||||
global $user;
|
||||
global $template, $user;
|
||||
|
||||
$timezone_select = phpbb_timezone_select($user, $value, true);
|
||||
$timezone_select['tz_select'];
|
||||
$timezone_select = phpbb_timezone_select($template, $user, $value, true);
|
||||
|
||||
return '<select name="config[' . $key . ']" id="' . $key . '">' . $timezone_select['tz_select'] . '</select>';
|
||||
return '<select name="config[' . $key . ']" id="' . $key . '">' . $timezone_select . '</select>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get guest style
|
||||
*/
|
||||
public function guest_style_get()
|
||||
{
|
||||
global $db;
|
||||
|
||||
$sql = 'SELECT user_style
|
||||
FROM ' . USERS_TABLE . '
|
||||
WHERE user_id = ' . ANONYMOUS;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$style = (int) $db->sql_fetchfield('user_style');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
return $style;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set guest style
|
||||
*
|
||||
* @param int $style_id The style ID
|
||||
*/
|
||||
public function guest_style_set($style_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET user_style = ' . (int) $style_id . '
|
||||
WHERE user_id = ' . ANONYMOUS;
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -925,7 +968,7 @@ class acp_board
|
||||
{
|
||||
$user->timezone = new DateTimeZone($config['board_timezone']);
|
||||
}
|
||||
catch (Exception $e)
|
||||
catch (\Exception $e)
|
||||
{
|
||||
// If the board timezone is invalid, we just use the users timezone.
|
||||
}
|
||||
|
@@ -26,12 +26,11 @@ class acp_captcha
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container;
|
||||
|
||||
$user->add_lang('acp/board');
|
||||
|
||||
include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx);
|
||||
$factory = new phpbb_captcha_factory();
|
||||
$factory = $phpbb_container->get('captcha.factory');
|
||||
$captchas = $factory->get_captcha_types();
|
||||
|
||||
$selected = request_var('select_captcha', $config['captcha_plugin']);
|
||||
@@ -47,7 +46,7 @@ class acp_captcha
|
||||
// Delegate
|
||||
if ($configure)
|
||||
{
|
||||
$config_captcha = phpbb_captcha_factory::get_instance($selected);
|
||||
$config_captcha = $factory->get_instance($selected);
|
||||
$config_captcha->acp_page($id, $this);
|
||||
}
|
||||
else
|
||||
@@ -79,11 +78,11 @@ class acp_captcha
|
||||
// sanity check
|
||||
if (isset($captchas['available'][$selected]))
|
||||
{
|
||||
$old_captcha = phpbb_captcha_factory::get_instance($config['captcha_plugin']);
|
||||
$old_captcha = $factory->get_instance($config['captcha_plugin']);
|
||||
$old_captcha->uninstall();
|
||||
|
||||
set_config('captcha_plugin', $selected);
|
||||
$new_captcha = phpbb_captcha_factory::get_instance($config['captcha_plugin']);
|
||||
$new_captcha = $factory->get_instance($config['captcha_plugin']);
|
||||
$new_captcha->install();
|
||||
|
||||
add_log('admin', 'LOG_CONFIG_VISUAL');
|
||||
@@ -114,7 +113,7 @@ class acp_captcha
|
||||
$captcha_select .= '<option value="' . $value . '"' . $current . ' class="disabled-option">' . $user->lang($title) . '</option>';
|
||||
}
|
||||
|
||||
$demo_captcha = phpbb_captcha_factory::get_instance($selected);
|
||||
$demo_captcha = $factory->get_instance($selected);
|
||||
|
||||
foreach ($config_vars as $config_var => $options)
|
||||
{
|
||||
@@ -137,9 +136,9 @@ class acp_captcha
|
||||
*/
|
||||
function deliver_demo($selected)
|
||||
{
|
||||
global $db, $user, $config;
|
||||
global $db, $user, $config, $phpbb_container;
|
||||
|
||||
$captcha = phpbb_captcha_factory::get_instance($selected);
|
||||
$captcha = $phpbb_container->get('captcha.factory')->get_instance($selected);
|
||||
$captcha->init(CONFIRM_REG);
|
||||
$captcha->execute_demo();
|
||||
|
||||
|
@@ -269,7 +269,7 @@ class acp_database
|
||||
break;
|
||||
}
|
||||
|
||||
header('Pragma: no-cache');
|
||||
header('Cache-Control: private, no-cache');
|
||||
header("Content-Type: $mimetype; name=\"$name\"");
|
||||
header("Content-disposition: attachment; filename=$name");
|
||||
|
||||
@@ -510,7 +510,7 @@ class base_extractor
|
||||
if ($download == true)
|
||||
{
|
||||
$name = $filename . $ext;
|
||||
header('Pragma: no-cache');
|
||||
header('Cache-Control: private, no-cache');
|
||||
header("Content-Type: $mimetype; name=\"$name\"");
|
||||
header("Content-disposition: attachment; filename=$name");
|
||||
|
||||
|
@@ -137,6 +137,12 @@ class acp_extensions
|
||||
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$extension = $phpbb_extension_manager->get_extension($ext_name);
|
||||
if (!$extension->is_enableable())
|
||||
{
|
||||
trigger_error($user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if ($phpbb_extension_manager->is_enabled($ext_name))
|
||||
{
|
||||
redirect($this->u_action);
|
||||
@@ -162,6 +168,12 @@ class acp_extensions
|
||||
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$extension = $phpbb_extension_manager->get_extension($ext_name);
|
||||
if (!$extension->is_enableable())
|
||||
{
|
||||
trigger_error($user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if ($phpbb_extension_manager->is_enabled($ext_name))
|
||||
{
|
||||
redirect($this->u_action);
|
||||
|
@@ -331,6 +331,28 @@ class acp_groups
|
||||
}
|
||||
}
|
||||
|
||||
if ($request->is_set_post('avatar_delete'))
|
||||
{
|
||||
if (confirm_box(true))
|
||||
{
|
||||
$avatar_data['id'] = substr($avatar_data['id'], 1);
|
||||
$phpbb_avatar_manager->handle_avatar_delete($db, $user, $avatar_data, GROUPS_TABLE, 'group_');
|
||||
|
||||
$message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED';
|
||||
trigger_error($user->lang[$message] . adm_back_link($this->u_action));
|
||||
}
|
||||
else
|
||||
{
|
||||
confirm_box(false, $user->lang('CONFIRM_AVATAR_DELETE'), build_hidden_fields(array(
|
||||
'avatar_delete' => true,
|
||||
'i' => $id,
|
||||
'mode' => $mode,
|
||||
'g' => $group_id,
|
||||
'action' => $action))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Did we submit?
|
||||
if ($update)
|
||||
{
|
||||
|
@@ -737,7 +737,7 @@ class acp_icons
|
||||
{
|
||||
garbage_collection();
|
||||
|
||||
header('Pragma: public');
|
||||
header('Cache-Control: public');
|
||||
|
||||
// Send out the Headers
|
||||
header('Content-Type: text/x-delimtext; name="' . $mode . '.pak"');
|
||||
|
@@ -26,7 +26,7 @@ class acp_main
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $cache, $user, $auth, $template, $request;
|
||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container;
|
||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container, $phpbb_dispatcher;
|
||||
|
||||
// Show restore permissions notice
|
||||
if ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm'))
|
||||
@@ -445,6 +445,14 @@ class acp_main
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Notice admin
|
||||
*
|
||||
* @event core.acp_main_notice
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$phpbb_dispatcher->dispatch('core.acp_main_notice');
|
||||
|
||||
// Get forum statistics
|
||||
$total_posts = $config['num_posts'];
|
||||
$total_topics = $config['num_topics'];
|
||||
@@ -647,8 +655,8 @@ class acp_main
|
||||
'S_MBSTRING_LOADED' => true,
|
||||
'S_MBSTRING_FUNC_OVERLOAD_FAIL' => (intval(@ini_get('mbstring.func_overload')) & (MB_OVERLOAD_MAIL | MB_OVERLOAD_STRING)),
|
||||
'S_MBSTRING_ENCODING_TRANSLATION_FAIL' => (@ini_get('mbstring.encoding_translation') != 0),
|
||||
'S_MBSTRING_HTTP_INPUT_FAIL' => (@ini_get('mbstring.http_input') != 'pass'),
|
||||
'S_MBSTRING_HTTP_OUTPUT_FAIL' => (@ini_get('mbstring.http_output') != 'pass'),
|
||||
'S_MBSTRING_HTTP_INPUT_FAIL' => !in_array(@ini_get('mbstring.http_input'), array('pass', '')),
|
||||
'S_MBSTRING_HTTP_OUTPUT_FAIL' => !in_array(@ini_get('mbstring.http_output'), array('pass', '')),
|
||||
));
|
||||
}
|
||||
|
||||
|
@@ -766,7 +766,8 @@ class acp_modules
|
||||
/**
|
||||
* Update/Add module
|
||||
*
|
||||
* @param bool $run_inline if set to true errors will be returned and no logs being written
|
||||
* @param array &$module_data The module data
|
||||
* @param bool $run_inline if set to true errors will be returned and no logs being written
|
||||
*/
|
||||
function update_module_data(&$module_data, $run_inline = false)
|
||||
{
|
||||
|
@@ -112,58 +112,8 @@ class acp_profile
|
||||
$db->sql_query('DELETE FROM ' . PROFILE_FIELDS_LANG_TABLE . " WHERE field_id = $field_id");
|
||||
$db->sql_query('DELETE FROM ' . PROFILE_LANG_TABLE . " WHERE field_id = $field_id");
|
||||
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
case 'sqlite':
|
||||
case 'sqlite3':
|
||||
$sql = "SELECT sql
|
||||
FROM sqlite_master
|
||||
WHERE type = 'table'
|
||||
AND name = '" . PROFILE_FIELDS_DATA_TABLE . "'
|
||||
ORDER BY type DESC, name;";
|
||||
$result = $db->sql_query($sql);
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Create a temp table and populate it, destroy the existing one
|
||||
$db->sql_query(preg_replace('#CREATE\s+TABLE\s+"?' . PROFILE_FIELDS_DATA_TABLE . '"?#i', 'CREATE TEMPORARY TABLE ' . PROFILE_FIELDS_DATA_TABLE . '_temp', $row['sql']));
|
||||
$db->sql_query('INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . '_temp SELECT * FROM ' . PROFILE_FIELDS_DATA_TABLE);
|
||||
$db->sql_query('DROP TABLE ' . PROFILE_FIELDS_DATA_TABLE);
|
||||
|
||||
preg_match('#\((.*)\)#s', $row['sql'], $matches);
|
||||
|
||||
$new_table_cols = trim($matches[1]);
|
||||
$old_table_cols = preg_split('/,(?=[\\sa-z])/im', $new_table_cols);
|
||||
$column_list = array();
|
||||
|
||||
foreach ($old_table_cols as $declaration)
|
||||
{
|
||||
$entities = preg_split('#\s+#', trim($declaration));
|
||||
|
||||
if ($entities[0] == 'PRIMARY')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($entities[0] !== 'pf_' . $field_ident)
|
||||
{
|
||||
$column_list[] = $entities[0];
|
||||
}
|
||||
}
|
||||
|
||||
$columns = implode(',', $column_list);
|
||||
|
||||
$new_table_cols = preg_replace('/' . 'pf_' . $field_ident . '[^,]+,/', '', $new_table_cols);
|
||||
|
||||
// create a new table and fill it up. destroy the temp one
|
||||
$db->sql_query('CREATE TABLE ' . PROFILE_FIELDS_DATA_TABLE . ' (' . $new_table_cols . ');');
|
||||
$db->sql_query('INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . PROFILE_FIELDS_DATA_TABLE . '_temp;');
|
||||
$db->sql_query('DROP TABLE ' . PROFILE_FIELDS_DATA_TABLE . '_temp');
|
||||
break;
|
||||
|
||||
default:
|
||||
$db->sql_query('ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " DROP COLUMN pf_$field_ident");
|
||||
}
|
||||
$db_tools = $phpbb_container->get('dbal.tools');
|
||||
$db_tools->sql_column_remove(PROFILE_FIELDS_DATA_TABLE, 'pf_' . $field_ident);
|
||||
|
||||
$order = 0;
|
||||
|
||||
@@ -932,9 +882,7 @@ class acp_profile
|
||||
$field_ident = 'pf_' . $field_ident;
|
||||
|
||||
$db_tools = $phpbb_container->get('dbal.tools');
|
||||
|
||||
list($sql_type, $null) = $db_tools->get_column_type($profile_field->get_database_column_type());
|
||||
$profile_sql[] = $this->add_field_ident($field_ident, $sql_type);
|
||||
$db_tools->sql_column_add(PROFILE_FIELDS_DATA_TABLE, $field_ident, array($profile_field->get_database_column_type(), null));
|
||||
}
|
||||
|
||||
$sql_ary = array(
|
||||
@@ -1188,91 +1136,4 @@ class acp_profile
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return sql statement for adding a new field ident (profile field) to the profile fields data table
|
||||
*/
|
||||
function add_field_ident($field_ident, $sql_type)
|
||||
{
|
||||
global $db;
|
||||
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
case 'mysqli':
|
||||
$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD `$field_ident` " . $sql_type;
|
||||
|
||||
break;
|
||||
|
||||
case 'sqlite':
|
||||
case 'sqlite3':
|
||||
if (version_compare($db->sql_server_info(true), '3.0') == -1)
|
||||
{
|
||||
$sql = "SELECT sql
|
||||
FROM sqlite_master
|
||||
WHERE type = 'table'
|
||||
AND name = '" . PROFILE_FIELDS_DATA_TABLE . "'
|
||||
ORDER BY type DESC, name;";
|
||||
$result = $db->sql_query($sql);
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Create a temp table and populate it, destroy the existing one
|
||||
$db->sql_query(preg_replace('#CREATE\s+TABLE\s+"?' . PROFILE_FIELDS_DATA_TABLE . '"?#i', 'CREATE TEMPORARY TABLE ' . PROFILE_FIELDS_DATA_TABLE . '_temp', $row['sql']));
|
||||
$db->sql_query('INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . '_temp SELECT * FROM ' . PROFILE_FIELDS_DATA_TABLE);
|
||||
$db->sql_query('DROP TABLE ' . PROFILE_FIELDS_DATA_TABLE);
|
||||
|
||||
preg_match('#\((.*)\)#s', $row['sql'], $matches);
|
||||
|
||||
$new_table_cols = trim($matches[1]);
|
||||
$old_table_cols = explode(',', $new_table_cols);
|
||||
$column_list = array();
|
||||
|
||||
foreach ($old_table_cols as $declaration)
|
||||
{
|
||||
$entities = preg_split('#\s+#', trim($declaration));
|
||||
if ($entities[0] == 'PRIMARY')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$column_list[] = $entities[0];
|
||||
}
|
||||
|
||||
$columns = implode(',', $column_list);
|
||||
|
||||
$new_table_cols = $field_ident . ' ' . $sql_type . ',' . $new_table_cols;
|
||||
|
||||
// create a new table and fill it up. destroy the temp one
|
||||
$db->sql_query('CREATE TABLE ' . PROFILE_FIELDS_DATA_TABLE . ' (' . $new_table_cols . ');');
|
||||
$db->sql_query('INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . PROFILE_FIELDS_DATA_TABLE . '_temp;');
|
||||
$db->sql_query('DROP TABLE ' . PROFILE_FIELDS_DATA_TABLE . '_temp');
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD $field_ident [$sql_type]";
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'mssql':
|
||||
case 'mssql_odbc':
|
||||
case 'mssqlnative':
|
||||
$sql = 'ALTER TABLE [' . PROFILE_FIELDS_DATA_TABLE . "] ADD [$field_ident] " . $sql_type;
|
||||
|
||||
break;
|
||||
|
||||
case 'postgres':
|
||||
$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD COLUMN \"$field_ident\" " . $sql_type;
|
||||
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD $field_ident " . $sql_type;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return $sql;
|
||||
}
|
||||
}
|
||||
|
@@ -25,7 +25,7 @@ class acp_ranks
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache, $request;
|
||||
global $db, $user, $auth, $template, $cache, $request, $phpbb_dispatcher;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
$user->add_lang('acp/posting');
|
||||
@@ -73,6 +73,17 @@ class acp_ranks
|
||||
'rank_image' => htmlspecialchars_decode($rank_image)
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify the SQL array when saving a rank
|
||||
*
|
||||
* @event core.acp_ranks_save_modify_sql_ary
|
||||
* @var int rank_id The ID of the rank (if available)
|
||||
* @var array sql_ary Array with the rank's data
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('rank_id', 'sql_ary');
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_ranks_save_modify_sql_ary', compact($vars)));
|
||||
|
||||
if ($rank_id)
|
||||
{
|
||||
$sql = 'UPDATE ' . RANKS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " WHERE rank_id = $rank_id";
|
||||
@@ -202,7 +213,7 @@ class acp_ranks
|
||||
$filename_list = '<option value=""' . (($edit_img == '') ? ' selected="selected"' : '') . '>----------</option>' . $filename_list;
|
||||
unset($existing_imgs, $imglist);
|
||||
|
||||
$template->assign_vars(array(
|
||||
$tpl_ary = array(
|
||||
'S_EDIT' => true,
|
||||
'U_BACK' => $this->u_action,
|
||||
'RANKS_PATH' => $phpbb_root_path . $config['ranks_path'],
|
||||
@@ -212,9 +223,21 @@ class acp_ranks
|
||||
'S_FILENAME_LIST' => $filename_list,
|
||||
'RANK_IMAGE' => ($edit_img) ? $phpbb_root_path . $config['ranks_path'] . '/' . $edit_img : htmlspecialchars($phpbb_admin_path) . 'images/spacer.gif',
|
||||
'S_SPECIAL_RANK' => (isset($ranks['rank_special']) && $ranks['rank_special']) ? true : false,
|
||||
'MIN_POSTS' => (isset($ranks['rank_min']) && !$ranks['rank_special']) ? $ranks['rank_min'] : 0)
|
||||
'MIN_POSTS' => (isset($ranks['rank_min']) && !$ranks['rank_special']) ? $ranks['rank_min'] : 0,
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify the template output array for editing/adding ranks
|
||||
*
|
||||
* @event core.acp_ranks_edit_modify_tpl_ary
|
||||
* @var array ranks Array with the rank's data
|
||||
* @var array tpl_ary Array with the rank's template data
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('ranks', 'tpl_ary');
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_ranks_edit_modify_tpl_ary', compact($vars)));
|
||||
|
||||
$template->assign_vars($tpl_ary);
|
||||
return;
|
||||
|
||||
break;
|
||||
@@ -231,7 +254,7 @@ class acp_ranks
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$template->assign_block_vars('ranks', array(
|
||||
$rank_row = array(
|
||||
'S_RANK_IMAGE' => ($row['rank_image']) ? true : false,
|
||||
'S_SPECIAL_RANK' => ($row['rank_special']) ? true : false,
|
||||
|
||||
@@ -240,8 +263,21 @@ class acp_ranks
|
||||
'MIN_POSTS' => $row['rank_min'],
|
||||
|
||||
'U_EDIT' => $this->u_action . '&action=edit&id=' . $row['rank_id'],
|
||||
'U_DELETE' => $this->u_action . '&action=delete&id=' . $row['rank_id'])
|
||||
'U_DELETE' => $this->u_action . '&action=delete&id=' . $row['rank_id'],
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify the template output array for each listed rank
|
||||
*
|
||||
* @event core.acp_ranks_list_modify_rank_row
|
||||
* @var array row Array with the rank's data
|
||||
* @var array rank_row Array with the rank's template data
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('row', 'rank_row');
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_ranks_list_modify_rank_row', compact($vars)));
|
||||
|
||||
$template->assign_block_vars('ranks', $rank_row);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
|
@@ -70,11 +70,6 @@ class acp_styles
|
||||
$action = $this->request->variable('action', '');
|
||||
$post_actions = array('install', 'activate', 'deactivate', 'uninstall');
|
||||
|
||||
if ($action && in_array($action, $post_actions) && !check_link_hash($request->variable('hash', ''), $action))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
foreach ($post_actions as $key)
|
||||
{
|
||||
if ($this->request->is_set_post($key))
|
||||
@@ -83,6 +78,18 @@ class acp_styles
|
||||
}
|
||||
}
|
||||
|
||||
// The uninstall action uses confirm_box() to verify the validity of the request,
|
||||
// so there is no need to check for a valid token here.
|
||||
if (in_array($action, $post_actions) && $action != 'uninstall')
|
||||
{
|
||||
$is_valid_request = check_link_hash($request->variable('hash', ''), $action) || check_form_key('styles_management');
|
||||
|
||||
if (!$is_valid_request)
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
if ($action != '')
|
||||
{
|
||||
$this->s_hidden_fields['action'] = $action;
|
||||
@@ -122,6 +129,8 @@ class acp_styles
|
||||
*/
|
||||
protected function frontend()
|
||||
{
|
||||
add_form_key('styles_management');
|
||||
|
||||
// Check mode
|
||||
switch ($this->mode)
|
||||
{
|
||||
@@ -133,32 +142,10 @@ class acp_styles
|
||||
$this->welcome_message('INSTALL_STYLES', 'INSTALL_STYLES_EXPLAIN');
|
||||
$this->show_available();
|
||||
return;
|
||||
case 'cache':
|
||||
$this->action_cache();
|
||||
return;
|
||||
}
|
||||
trigger_error($this->user->lang['NO_MODE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
/**
|
||||
* Purge cache
|
||||
*/
|
||||
protected function action_cache()
|
||||
{
|
||||
global $db, $cache, $auth;
|
||||
|
||||
$this->config->increment('assets_version', 1);
|
||||
$this->cache->purge();
|
||||
|
||||
// Clear permissions
|
||||
$this->auth->acl_clear_prefetch();
|
||||
phpbb_cache_moderators($db, $cache, $auth);
|
||||
|
||||
add_log('admin', 'LOG_PURGE_CACHE');
|
||||
|
||||
trigger_error($this->user->lang['PURGED_CACHE'] . adm_back_link($this->u_base_action), E_USER_NOTICE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Install style(s)
|
||||
*/
|
||||
@@ -804,7 +791,7 @@ class acp_styles
|
||||
*
|
||||
* @param array $styles Styles list, passed as reference
|
||||
* @param string $name Name of parent style
|
||||
* @param string $level Styles tree level
|
||||
* @param int $level Styles tree level
|
||||
*/
|
||||
protected function show_available_child_styles(&$styles, $name, $level)
|
||||
{
|
||||
@@ -888,7 +875,7 @@ class acp_styles
|
||||
* Show item in styles list
|
||||
*
|
||||
* @param array $style style row
|
||||
* @param array $level style inheritance level
|
||||
* @param int $level style inheritance level
|
||||
*/
|
||||
protected function list_style(&$style, $level)
|
||||
{
|
||||
|
@@ -404,7 +404,7 @@ class acp_users
|
||||
if ($config['require_activation'] == USER_ACTIVATION_ADMIN)
|
||||
{
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
$phpbb_notifications->delete_notifications('admin_activate_user', $user_row['user_id']);
|
||||
$phpbb_notifications->delete_notifications('notification.type.admin_activate_user', $user_row['user_id']);
|
||||
|
||||
include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
|
||||
|
||||
@@ -465,25 +465,9 @@ class acp_users
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql_ary = array(
|
||||
'user_avatar' => '',
|
||||
'user_avatar_type' => '',
|
||||
'user_avatar_width' => 0,
|
||||
'user_avatar_height' => 0,
|
||||
);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . "
|
||||
WHERE user_id = $user_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Delete old avatar if present
|
||||
$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');
|
||||
$driver = $phpbb_avatar_manager->get_driver($user_row['user_avatar_type']);
|
||||
if ($driver)
|
||||
{
|
||||
$driver->delete($user_row);
|
||||
}
|
||||
$phpbb_avatar_manager->handle_avatar_delete($db, $user, $phpbb_avatar_manager->clean_row($user_row, 'user'), USERS_TABLE, 'user_');
|
||||
|
||||
add_log('admin', 'LOG_USER_DEL_AVATAR', $user_row['username']);
|
||||
add_log('user', $user_id, 'LOG_USER_DEL_AVATAR_USER');
|
||||
@@ -1677,7 +1661,7 @@ class acp_users
|
||||
${'s_sort_' . $sort_option . '_dir'} .= '</select>';
|
||||
}
|
||||
|
||||
$timezone_selects = phpbb_timezone_select($user, $data['tz'], true);
|
||||
phpbb_timezone_select($template, $user, $data['tz'], true);
|
||||
$user_prefs_data = array(
|
||||
'S_PREFS' => true,
|
||||
'S_JABBER_DISABLED' => ($config['jab_enable'] && $user_row['user_jabber'] && @extension_loaded('xml')) ? false : true,
|
||||
@@ -1716,8 +1700,6 @@ class acp_users
|
||||
|
||||
'S_LANG_OPTIONS' => language_select($data['lang']),
|
||||
'S_STYLE_OPTIONS' => style_select($data['style']),
|
||||
'S_TZ_OPTIONS' => $timezone_selects['tz_select'],
|
||||
'S_TZ_DATE_OPTIONS' => $timezone_selects['tz_dates'],
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1779,29 +1761,6 @@ class acp_users
|
||||
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$driver = $phpbb_avatar_manager->get_driver($avatar_data['avatar_type']);
|
||||
if ($driver)
|
||||
{
|
||||
$driver->delete($avatar_data);
|
||||
}
|
||||
|
||||
// Removing the avatar
|
||||
$result = array(
|
||||
'user_avatar' => '',
|
||||
'user_avatar_type' => '',
|
||||
'user_avatar_width' => 0,
|
||||
'user_avatar_height' => 0,
|
||||
);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
||||
WHERE user_id = ' . (int) $user_id;
|
||||
|
||||
$db->sql_query($sql);
|
||||
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1809,6 +1768,23 @@ class acp_users
|
||||
}
|
||||
}
|
||||
|
||||
// Handle deletion of avatars
|
||||
if ($request->is_set_post('avatar_delete'))
|
||||
{
|
||||
if (!confirm_box(true))
|
||||
{
|
||||
confirm_box(false, $user->lang('CONFIRM_AVATAR_DELETE'), build_hidden_fields(array(
|
||||
'avatar_delete' => true))
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$phpbb_avatar_manager->handle_avatar_delete($db, $user, $avatar_data, USERS_TABLE, 'user_');
|
||||
|
||||
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
||||
}
|
||||
}
|
||||
|
||||
$selected_driver = $phpbb_avatar_manager->clean_driver_name($request->variable('avatar_driver', $user_row['user_avatar_type']));
|
||||
|
||||
foreach ($avatar_drivers as $current_driver)
|
||||
|
@@ -183,7 +183,10 @@ class auth_admin extends \phpbb\auth\auth
|
||||
}
|
||||
|
||||
// Defining the user-function here to save some memory
|
||||
$return_acl_fill = create_function('$value', 'return ' . $acl_fill . ';');
|
||||
$return_acl_fill = function () use ($acl_fill)
|
||||
{
|
||||
return $acl_fill;
|
||||
};
|
||||
|
||||
// Actually fill the gaps
|
||||
if (sizeof($hold_ary))
|
||||
|
@@ -22,7 +22,6 @@ class acp_styles_info
|
||||
'modes' => array(
|
||||
'style' => array('title' => 'ACP_STYLES', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')),
|
||||
'install' => array('title' => 'ACP_STYLES_INSTALL', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')),
|
||||
'cache' => array('title' => 'ACP_STYLES_CACHE', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@@ -1,100 +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.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* A small class for 3.0.x (no autoloader in 3.0.x)
|
||||
*/
|
||||
class phpbb_captcha_factory
|
||||
{
|
||||
/**
|
||||
* return an instance of class $name in file $name_plugin.php
|
||||
*/
|
||||
static public function get_instance($name)
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
$name = basename($name);
|
||||
if (!class_exists($name))
|
||||
{
|
||||
include($phpbb_root_path . "includes/captcha/plugins/{$name}_plugin." . $phpEx);
|
||||
}
|
||||
$instance = call_user_func(array($name, 'get_instance'));
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the garbage collector
|
||||
*/
|
||||
function garbage_collect($name)
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
$name = basename($name);
|
||||
if (!class_exists($name))
|
||||
{
|
||||
include($phpbb_root_path . "includes/captcha/plugins/{$name}_plugin." . $phpEx);
|
||||
}
|
||||
$captcha = self::get_instance($name);
|
||||
$captcha->garbage_collect(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* return a list of all discovered CAPTCHA plugins
|
||||
*/
|
||||
function get_captcha_types()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx, $phpbb_extension_manager;
|
||||
|
||||
$captchas = array(
|
||||
'available' => array(),
|
||||
'unavailable' => array(),
|
||||
);
|
||||
|
||||
$finder = $phpbb_extension_manager->get_finder();
|
||||
$captcha_plugin_classes = $finder
|
||||
->extension_directory('/captcha')
|
||||
->suffix('_plugin')
|
||||
->core_path('includes/captcha/plugins/')
|
||||
->get_classes();
|
||||
|
||||
foreach ($captcha_plugin_classes as $class)
|
||||
{
|
||||
// check if this class needs to be loaded in legacy mode
|
||||
$old_class = preg_replace('/^phpbb_captcha_plugins_/', '', $class);
|
||||
if (file_exists($phpbb_root_path . "includes/captcha/plugins/$old_class.$phpEx") && !class_exists($old_class))
|
||||
{
|
||||
include($phpbb_root_path . "includes/captcha/plugins/$old_class.$phpEx");
|
||||
$class = preg_replace('/_plugin$/', '', $old_class);
|
||||
}
|
||||
|
||||
if (call_user_func(array($class, 'is_available')))
|
||||
{
|
||||
$captchas['available'][$class] = call_user_func(array($class, 'get_name'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$captchas['unavailable'][$class] = call_user_func(array($class, 'get_name'));
|
||||
}
|
||||
}
|
||||
|
||||
return $captchas;
|
||||
}
|
||||
}
|
@@ -1,69 +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.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Placeholder for autoload
|
||||
*/
|
||||
if (!class_exists('phpbb_default_captcha', false))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);
|
||||
}
|
||||
|
||||
class phpbb_captcha_gd_wave extends phpbb_default_captcha
|
||||
{
|
||||
|
||||
function phpbb_captcha_gd_wave()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
if (!class_exists('captcha'))
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/captcha/captcha_gd_wave.' . $phpEx);
|
||||
}
|
||||
}
|
||||
|
||||
static public function get_instance()
|
||||
{
|
||||
return new phpbb_captcha_gd_wave();
|
||||
}
|
||||
|
||||
static public function is_available()
|
||||
{
|
||||
return @extension_loaded('gd');
|
||||
}
|
||||
|
||||
static public function get_name()
|
||||
{
|
||||
return 'CAPTCHA_GD_3D';
|
||||
}
|
||||
|
||||
function get_class_name()
|
||||
{
|
||||
return 'phpbb_captcha_gd_wave';
|
||||
}
|
||||
|
||||
function acp_page($id, &$module)
|
||||
{
|
||||
global $config, $db, $template, $user;
|
||||
|
||||
trigger_error($user->lang['CAPTCHA_NO_OPTIONS'] . adm_back_link($module->u_action));
|
||||
}
|
||||
}
|
@@ -1,70 +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.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Placeholder for autoload
|
||||
*/
|
||||
if (!class_exists('phpbb_default_captcha', false))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);
|
||||
}
|
||||
|
||||
class phpbb_captcha_nogd extends phpbb_default_captcha
|
||||
{
|
||||
|
||||
function phpbb_captcha_nogd()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
if (!class_exists('captcha'))
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/captcha/captcha_non_gd.' . $phpEx);
|
||||
}
|
||||
}
|
||||
|
||||
static public function get_instance()
|
||||
{
|
||||
$instance = new phpbb_captcha_nogd();
|
||||
return $instance;
|
||||
}
|
||||
|
||||
static public function is_available()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static public function get_name()
|
||||
{
|
||||
return 'CAPTCHA_NO_GD';
|
||||
}
|
||||
|
||||
function get_class_name()
|
||||
{
|
||||
return 'phpbb_captcha_nogd';
|
||||
}
|
||||
|
||||
function acp_page($id, &$module)
|
||||
{
|
||||
global $user;
|
||||
|
||||
trigger_error($user->lang['CAPTCHA_NO_OPTIONS'] . adm_back_link($module->u_action));
|
||||
}
|
||||
}
|
@@ -43,6 +43,5 @@ $phpbb_path_helper = $phpbb_container->get('path_helper');
|
||||
|
||||
// load extensions
|
||||
$phpbb_extension_manager = $phpbb_container->get('ext.manager');
|
||||
$phpbb_subscriber_loader = $phpbb_container->get('event.subscriber_loader');
|
||||
|
||||
$template = $phpbb_container->get('template');
|
||||
|
@@ -28,7 +28,7 @@ if (!defined('IN_PHPBB'))
|
||||
*/
|
||||
|
||||
// phpBB Version
|
||||
define('PHPBB_VERSION', '3.1.0-RC2');
|
||||
define('PHPBB_VERSION', '3.1.0-RC6');
|
||||
|
||||
// QA-related
|
||||
// define('PHPBB_QA', 1);
|
||||
|
@@ -46,8 +46,9 @@ class diff
|
||||
/**
|
||||
* Computes diffs between sequences of strings.
|
||||
*
|
||||
* @param array $from_lines An array of strings. Typically these are lines from a file.
|
||||
* @param array $to_lines An array of strings.
|
||||
* @param array &$from_content An array of strings. Typically these are lines from a file.
|
||||
* @param array &$to_content An array of strings.
|
||||
* @param bool $preserve_cr If true, \r is replaced by a new line in the diff output
|
||||
*/
|
||||
function diff(&$from_content, &$to_content, $preserve_cr = true)
|
||||
{
|
||||
@@ -491,9 +492,11 @@ class diff3 extends diff
|
||||
/**
|
||||
* Computes diff between 3 sequences of strings.
|
||||
*
|
||||
* @param array $orig The original lines to use.
|
||||
* @param array $final1 The first version to compare to.
|
||||
* @param array $final2 The second version to compare to.
|
||||
* @param array &$orig The original lines to use.
|
||||
* @param array &$final1 The first version to compare to.
|
||||
* @param array &$final2 The second version to compare to.
|
||||
* @param bool $preserve_cr If true, \r\n and bare \r are replaced by a new line
|
||||
* in the diff output
|
||||
*/
|
||||
function diff3(&$orig, &$final1, &$final2, $preserve_cr = true)
|
||||
{
|
||||
|
@@ -31,7 +31,7 @@ function phpbb_load_extensions_autoloaders($phpbb_root_path)
|
||||
new \phpbb\recursive_dot_prefix_filter_iterator(
|
||||
new \RecursiveDirectoryIterator(
|
||||
$phpbb_root_path . 'ext/',
|
||||
\FilesystemIterator::SKIP_DOTS
|
||||
\FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS
|
||||
)
|
||||
),
|
||||
\RecursiveIteratorIterator::SELF_FIRST
|
||||
@@ -289,7 +289,6 @@ function phpbb_gmgetdate($time = false)
|
||||
* @param array $allowed_units only allow these units (data array indexes)
|
||||
*
|
||||
* @return mixed data array if $string_only is false
|
||||
* @author bantu
|
||||
*/
|
||||
function get_formatted_filesize($value, $string_only = true, $allowed_units = false)
|
||||
{
|
||||
@@ -463,7 +462,6 @@ function phpbb_version_compare($version1, $version2, $operator = null)
|
||||
* @param int $perms Permissions to set
|
||||
*
|
||||
* @return bool true on success, otherwise false
|
||||
* @author faw, phpBB Limited
|
||||
*/
|
||||
function phpbb_chmod($filename, $perms = CHMOD_READ)
|
||||
{
|
||||
@@ -939,14 +937,20 @@ function style_select($default = '', $all = false)
|
||||
* Format the timezone offset with hours and minutes
|
||||
*
|
||||
* @param int $tz_offset Timezone offset in seconds
|
||||
* @param bool $show_null Whether null offsets should be shown
|
||||
* @return string Normalized offset string: -7200 => -02:00
|
||||
* 16200 => +04:30
|
||||
*/
|
||||
function phpbb_format_timezone_offset($tz_offset)
|
||||
function phpbb_format_timezone_offset($tz_offset, $show_null = false)
|
||||
{
|
||||
$sign = ($tz_offset < 0) ? '-' : '+';
|
||||
$time_offset = abs($tz_offset);
|
||||
|
||||
if ($time_offset == 0 && $show_null == false)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
$offset_seconds = $time_offset % 3600;
|
||||
$offset_minutes = $offset_seconds / 60;
|
||||
$offset_hours = ($time_offset - $offset_seconds) / 3600;
|
||||
@@ -1031,7 +1035,7 @@ function phpbb_get_timezone_identifiers($selected_timezone)
|
||||
$validate_timezone = new DateTimeZone($selected_timezone);
|
||||
$timezones[] = $selected_timezone;
|
||||
}
|
||||
catch (Exception $e)
|
||||
catch (\Exception $e)
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1042,13 +1046,14 @@ function phpbb_get_timezone_identifiers($selected_timezone)
|
||||
/**
|
||||
* Options to pick a timezone and date/time
|
||||
*
|
||||
* @param \phpbb\template\template $template phpBB template object
|
||||
* @param \phpbb\user $user Object of the current user
|
||||
* @param string $default A timezone to select
|
||||
* @param boolean $truncate Shall we truncate the options text
|
||||
*
|
||||
* @return array Returns an array, also containing the options for the time selector.
|
||||
* @return array Returns an array containing the options for the time selector.
|
||||
*/
|
||||
function phpbb_timezone_select($user, $default = '', $truncate = false)
|
||||
function phpbb_timezone_select($template, $user, $default = '', $truncate = false)
|
||||
{
|
||||
static $timezones;
|
||||
|
||||
@@ -1061,18 +1066,18 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)
|
||||
foreach ($unsorted_timezones as $timezone)
|
||||
{
|
||||
$tz = new DateTimeZone($timezone);
|
||||
$dt = new \phpbb\datetime($user, 'now', $tz);
|
||||
$dt = $user->create_datetime('now', $tz);
|
||||
$offset = $dt->getOffset();
|
||||
$current_time = $dt->format($user->lang['DATETIME_FORMAT'], true);
|
||||
$offset_string = phpbb_format_timezone_offset($offset);
|
||||
$timezones['GMT' . $offset_string . ' - ' . $timezone] = array(
|
||||
$offset_string = phpbb_format_timezone_offset($offset, true);
|
||||
$timezones['UTC' . $offset_string . ' - ' . $timezone] = array(
|
||||
'tz' => $timezone,
|
||||
'offest' => 'GMT' . $offset_string,
|
||||
'offset' => $offset_string,
|
||||
'current' => $current_time,
|
||||
);
|
||||
if ($timezone === $default)
|
||||
{
|
||||
$default_offset = 'GMT' . $offset_string;
|
||||
$default_offset = 'UTC' . $offset_string;
|
||||
}
|
||||
}
|
||||
unset($unsorted_timezones);
|
||||
@@ -1080,18 +1085,27 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)
|
||||
uksort($timezones, 'phpbb_tz_select_compare');
|
||||
}
|
||||
|
||||
$tz_select = $tz_dates = $opt_group = '';
|
||||
$tz_select = $opt_group = '';
|
||||
|
||||
foreach ($timezones as $timezone)
|
||||
foreach ($timezones as $key => $timezone)
|
||||
{
|
||||
if ($opt_group != $timezone['offest'])
|
||||
if ($opt_group != $timezone['offset'])
|
||||
{
|
||||
// Generate tz_select for backwards compatibility
|
||||
$tz_select .= ($opt_group) ? '</optgroup>' : '';
|
||||
$tz_select .= '<optgroup label="' . $timezone['offest'] . ' - ' . $timezone['current'] . '">';
|
||||
$opt_group = $timezone['offest'];
|
||||
$tz_select .= '<optgroup label="' . $user->lang(array('timezones', 'UTC_OFFSET_CURRENT'), $timezone['offset'], $timezone['current']) . '">';
|
||||
$opt_group = $timezone['offset'];
|
||||
$template->assign_block_vars('timezone_select', array(
|
||||
'LABEL' => $user->lang(array('timezones', 'UTC_OFFSET_CURRENT'), $timezone['offset'], $timezone['current']),
|
||||
'VALUE' => $key . ' - ' . $timezone['current'],
|
||||
));
|
||||
|
||||
$selected = ($default_offset == $timezone['offest']) ? ' selected="selected"' : '';
|
||||
$tz_dates .= '<option value="' . $timezone['offest'] . ' - ' . $timezone['current'] . '"' . $selected . '>' . $timezone['offest'] . ' - ' . $timezone['current'] . '</option>';
|
||||
$selected = (!empty($default_offset) && strpos($key, $default_offset) !== false) ? ' selected="selected"' : '';
|
||||
$template->assign_block_vars('timezone_date', array(
|
||||
'VALUE' => $key . ' - ' . $timezone['current'],
|
||||
'SELECTED' => !empty($selected),
|
||||
'TITLE' => $user->lang(array('timezones', 'UTC_OFFSET_CURRENT'), $timezone['offset'], $timezone['current']),
|
||||
));
|
||||
}
|
||||
|
||||
$label = $timezone['tz'];
|
||||
@@ -1099,22 +1113,26 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)
|
||||
{
|
||||
$label = $user->lang['timezones'][$label];
|
||||
}
|
||||
$title = $timezone['offest'] . ' - ' . $label;
|
||||
$title = $user->lang(array('timezones', 'UTC_OFFSET_CURRENT'), $timezone['offset'], $label);
|
||||
|
||||
if ($truncate)
|
||||
{
|
||||
$label = truncate_string($label, 50, 255, false, '...');
|
||||
}
|
||||
|
||||
// Also generate timezone_select for backwards compatibility
|
||||
$selected = ($timezone['tz'] === $default) ? ' selected="selected"' : '';
|
||||
$tz_select .= '<option title="' . $title . '" value="' . $timezone['tz'] . '"' . $selected . '>' . $label . '</option>';
|
||||
$template->assign_block_vars('timezone_select.timezone_options', array(
|
||||
'TITLE' => $title,
|
||||
'VALUE' => $timezone['tz'],
|
||||
'SELECTED' => !empty($selected),
|
||||
'LABEL' => $label,
|
||||
));
|
||||
}
|
||||
$tz_select .= '</optgroup>';
|
||||
|
||||
return array(
|
||||
'tz_select' => $tz_select,
|
||||
'tz_dates' => $tz_dates,
|
||||
);
|
||||
return $tz_select;
|
||||
}
|
||||
|
||||
// Functions handling topic/post tracking/marking
|
||||
@@ -1146,12 +1164,12 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||
|
||||
// Mark all topic notifications read for this user
|
||||
$phpbb_notifications->mark_notifications_read(array(
|
||||
'topic',
|
||||
'quote',
|
||||
'bookmark',
|
||||
'post',
|
||||
'approve_topic',
|
||||
'approve_post',
|
||||
'notification.type.topic',
|
||||
'notification.type.quote',
|
||||
'notification.type.bookmark',
|
||||
'notification.type.post',
|
||||
'notification.type.approve_topic',
|
||||
'notification.type.approve_post',
|
||||
), false, $user->data['user_id'], $post_time);
|
||||
|
||||
if ($config['load_db_lastread'] && $user->data['is_registered'])
|
||||
@@ -1211,8 +1229,8 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
|
||||
$phpbb_notifications->mark_notifications_read_by_parent(array(
|
||||
'topic',
|
||||
'approve_topic',
|
||||
'notification.type.topic',
|
||||
'notification.type.approve_topic',
|
||||
), $forum_id, $user->data['user_id'], $post_time);
|
||||
|
||||
// Mark all post/quote notifications read for this user in this forum
|
||||
@@ -1228,10 +1246,10 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$phpbb_notifications->mark_notifications_read_by_parent(array(
|
||||
'quote',
|
||||
'bookmark',
|
||||
'post',
|
||||
'approve_post',
|
||||
'notification.type.quote',
|
||||
'notification.type.bookmark',
|
||||
'notification.type.post',
|
||||
'notification.type.approve_post',
|
||||
), $topic_ids, $user->data['user_id'], $post_time);
|
||||
|
||||
// Add 0 to forums array to mark global announcements correctly
|
||||
@@ -1334,15 +1352,15 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||
|
||||
// Mark post notifications read for this user in this topic
|
||||
$phpbb_notifications->mark_notifications_read(array(
|
||||
'topic',
|
||||
'approve_topic',
|
||||
'notification.type.topic',
|
||||
'notification.type.approve_topic',
|
||||
), $topic_id, $user->data['user_id'], $post_time);
|
||||
|
||||
$phpbb_notifications->mark_notifications_read_by_parent(array(
|
||||
'quote',
|
||||
'bookmark',
|
||||
'post',
|
||||
'approve_post',
|
||||
'notification.type.quote',
|
||||
'notification.type.bookmark',
|
||||
'notification.type.post',
|
||||
'notification.type.approve_post',
|
||||
), $topic_id, $user->data['user_id'], $post_time);
|
||||
|
||||
if ($config['load_db_lastread'] && $user->data['is_registered'])
|
||||
@@ -1638,7 +1656,7 @@ function get_unread_topics($user_id = false, $sql_extra = '', $sql_sort = '', $s
|
||||
|
||||
if (empty($sql_sort))
|
||||
{
|
||||
$sql_sort = 'ORDER BY t.topic_last_post_time DESC';
|
||||
$sql_sort = 'ORDER BY t.topic_last_post_time DESC, t.topic_last_post_id DESC';
|
||||
}
|
||||
|
||||
if ($config['load_db_lastread'] && $user->data['is_registered'])
|
||||
@@ -1991,6 +2009,9 @@ function tracking_unserialize($string, $max_depth = 3)
|
||||
* @param mixed $params String or array of additional url parameters
|
||||
* @param bool $is_amp Is url using & (true) or & (false)
|
||||
* @param string $session_id Possibility to use a custom session id instead of the global one
|
||||
* @param bool $is_route Is url generated by a route.
|
||||
*
|
||||
* @return string The corrected url.
|
||||
*
|
||||
* Examples:
|
||||
* <code>
|
||||
@@ -2001,7 +2022,7 @@ function tracking_unserialize($string, $max_depth = 3)
|
||||
* </code>
|
||||
*
|
||||
*/
|
||||
function append_sid($url, $params = false, $is_amp = true, $session_id = false)
|
||||
function append_sid($url, $params = false, $is_amp = true, $session_id = false, $is_route = false)
|
||||
{
|
||||
global $_SID, $_EXTRA_URL, $phpbb_hook, $phpbb_path_helper;
|
||||
global $phpbb_dispatcher;
|
||||
@@ -2013,7 +2034,7 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
|
||||
}
|
||||
|
||||
// Update the root path with the correct relative web path
|
||||
if ($phpbb_path_helper instanceof \phpbb\path_helper)
|
||||
if (!$is_route && $phpbb_path_helper instanceof \phpbb\path_helper)
|
||||
{
|
||||
$url = $phpbb_path_helper->update_web_root_path($url);
|
||||
}
|
||||
@@ -2039,9 +2060,10 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
|
||||
* the global one (false)
|
||||
* @var bool|string append_sid_overwrite Overwrite function (string
|
||||
* URL) or not (false)
|
||||
* @var bool is_route Is url generated by a route.
|
||||
* @since 3.1.0-a1
|
||||
*/
|
||||
$vars = array('url', 'params', 'is_amp', 'session_id', 'append_sid_overwrite');
|
||||
$vars = array('url', 'params', 'is_amp', 'session_id', 'append_sid_overwrite', 'is_route');
|
||||
extract($phpbb_dispatcher->trigger_event('core.append_sid', compact($vars)));
|
||||
|
||||
if ($append_sid_overwrite)
|
||||
@@ -2210,7 +2232,7 @@ function generate_board_url($without_script_path = false)
|
||||
*/
|
||||
function redirect($url, $return = false, $disable_cd_check = false)
|
||||
{
|
||||
global $db, $cache, $config, $user, $phpbb_root_path, $phpbb_filesystem, $phpbb_path_helper, $phpEx;
|
||||
global $db, $cache, $config, $user, $phpbb_root_path, $phpbb_filesystem, $phpbb_path_helper, $phpEx, $phpbb_dispatcher;
|
||||
|
||||
$failover_flag = false;
|
||||
|
||||
@@ -2219,11 +2241,6 @@ function redirect($url, $return = false, $disable_cd_check = false)
|
||||
$user->add_lang('common');
|
||||
}
|
||||
|
||||
if (!$return)
|
||||
{
|
||||
garbage_collection();
|
||||
}
|
||||
|
||||
// Make sure no &'s are in, this will break the redirect
|
||||
$url = str_replace('&', '&', $url);
|
||||
|
||||
@@ -2298,10 +2315,26 @@ function redirect($url, $return = false, $disable_cd_check = false)
|
||||
trigger_error('INSECURE_REDIRECT', E_USER_ERROR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute code and/or overwrite redirect()
|
||||
*
|
||||
* @event core.functions.redirect
|
||||
* @var string url The url
|
||||
* @var bool return If true, do not redirect but return the sanitized URL.
|
||||
* @var bool disable_cd_check If true, redirect() will redirect to an external domain. If false, the redirect point to the boards url if it does not match the current domain.
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('url', 'return', 'disable_cd_check');
|
||||
extract($phpbb_dispatcher->trigger_event('core.functions.redirect', compact($vars)));
|
||||
|
||||
if ($return)
|
||||
{
|
||||
return $url;
|
||||
}
|
||||
else
|
||||
{
|
||||
garbage_collection();
|
||||
}
|
||||
|
||||
// Redirect via an HTML form for PITA webservers
|
||||
if (@preg_match('#Microsoft|WebSTAR|Xitami#', getenv('SERVER_SOFTWARE')))
|
||||
@@ -2529,7 +2562,7 @@ function check_link_hash($token, $link_name)
|
||||
*/
|
||||
function add_form_key($form_name)
|
||||
{
|
||||
global $config, $template, $user;
|
||||
global $config, $template, $user, $phpbb_dispatcher;
|
||||
|
||||
$now = time();
|
||||
$token_sid = ($user->data['user_id'] == ANONYMOUS && !empty($config['form_token_sid_guests'])) ? $user->session_id : '';
|
||||
@@ -2540,21 +2573,44 @@ function add_form_key($form_name)
|
||||
'form_token' => $token,
|
||||
));
|
||||
|
||||
/**
|
||||
* Perform additional actions on creation of the form token
|
||||
*
|
||||
* @event core.add_form_key
|
||||
* @var string form_name The form name
|
||||
* @var int now Current time timestamp
|
||||
* @var string s_fields Generated hidden fields
|
||||
* @var string token Form token
|
||||
* @var string token_sid User session ID
|
||||
*
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array(
|
||||
'form_name',
|
||||
'now',
|
||||
's_fields',
|
||||
'token',
|
||||
'token_sid',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.add_form_key', compact($vars)));
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_FORM_TOKEN' => $s_fields,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the form key. Required for all altering actions not secured by confirm_box
|
||||
* @param string $form_name The name of the form; has to match the name used in add_form_key, otherwise no restrictions apply
|
||||
* @param int $timespan The maximum acceptable age for a submitted form in seconds. Defaults to the config setting.
|
||||
* @param string $return_page The address for the return link
|
||||
* @param bool $trigger If true, the function will triger an error when encountering an invalid form
|
||||
*/
|
||||
function check_form_key($form_name, $timespan = false, $return_page = '', $trigger = false)
|
||||
* Check the form key. Required for all altering actions not secured by confirm_box
|
||||
*
|
||||
* @param string $form_name The name of the form; has to match the name used
|
||||
* in add_form_key, otherwise no restrictions apply
|
||||
* @param int $timespan The maximum acceptable age for a submitted form
|
||||
* in seconds. Defaults to the config setting.
|
||||
* @return bool True, if the form key was valid, false otherwise
|
||||
*/
|
||||
function check_form_key($form_name, $timespan = false)
|
||||
{
|
||||
global $config, $user;
|
||||
global $config, $request, $user;
|
||||
|
||||
if ($timespan === false)
|
||||
{
|
||||
@@ -2562,10 +2618,10 @@ function check_form_key($form_name, $timespan = false, $return_page = '', $trigg
|
||||
$timespan = ($config['form_token_lifetime'] == -1) ? -1 : max(30, $config['form_token_lifetime']);
|
||||
}
|
||||
|
||||
if (isset($_POST['creation_time']) && isset($_POST['form_token']))
|
||||
if ($request->is_set_post('creation_time') && $request->is_set_post('form_token'))
|
||||
{
|
||||
$creation_time = abs(request_var('creation_time', 0));
|
||||
$token = request_var('form_token', '');
|
||||
$creation_time = abs($request->variable('creation_time', 0));
|
||||
$token = $request->variable('form_token', '');
|
||||
|
||||
$diff = time() - $creation_time;
|
||||
|
||||
@@ -2582,11 +2638,6 @@ function check_form_key($form_name, $timespan = false, $return_page = '', $trigg
|
||||
}
|
||||
}
|
||||
|
||||
if ($trigger)
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . $return_page);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2717,12 +2768,7 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
|
||||
function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = false, $s_display = true)
|
||||
{
|
||||
global $db, $user, $template, $auth, $phpEx, $phpbb_root_path, $config;
|
||||
global $request, $phpbb_container;
|
||||
|
||||
if (!class_exists('phpbb_captcha_factory', false))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx);
|
||||
}
|
||||
global $request, $phpbb_container, $phpbb_dispatcher;
|
||||
|
||||
$err = '';
|
||||
|
||||
@@ -2807,8 +2853,18 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
|
||||
if ($result['status'] == LOGIN_SUCCESS)
|
||||
{
|
||||
$redirect = request_var('redirect', "{$phpbb_root_path}index.$phpEx");
|
||||
$message = ($l_success) ? $l_success : $user->lang['LOGIN_REDIRECT'];
|
||||
$l_redirect = ($admin) ? $user->lang['PROCEED_TO_ACP'] : (($redirect === "{$phpbb_root_path}index.$phpEx" || $redirect === "index.$phpEx") ? $user->lang['RETURN_INDEX'] : $user->lang['RETURN_PAGE']);
|
||||
|
||||
/**
|
||||
* This event allows an extension to modify the redirection when a user successfully logs in
|
||||
*
|
||||
* @event core.login_box_redirect
|
||||
* @var string redirect Redirect string
|
||||
* @var boolean admin Is admin?
|
||||
* @var bool return If true, do not redirect but return the sanitized URL.
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array('redirect', 'admin', 'return');
|
||||
extract($phpbb_dispatcher->trigger_event('core.login_box_redirect', compact($vars)));
|
||||
|
||||
// append/replace SID (may change during the session for AOL users)
|
||||
$redirect = reapply_sid($redirect);
|
||||
@@ -2833,7 +2889,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
|
||||
{
|
||||
case LOGIN_ERROR_ATTEMPTS:
|
||||
|
||||
$captcha = phpbb_captcha_factory::get_instance($config['captcha_plugin']);
|
||||
$captcha = $phpbb_container->get('captcha.factory')->get_instance($config['captcha_plugin']);
|
||||
$captcha->init(CONFIRM_LOGIN);
|
||||
// $captcha->reset();
|
||||
|
||||
@@ -2945,7 +3001,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
|
||||
*/
|
||||
function login_forum_box($forum_data)
|
||||
{
|
||||
global $db, $phpbb_container, $request, $template, $user;
|
||||
global $db, $phpbb_container, $request, $template, $user, $phpbb_dispatcher;
|
||||
|
||||
$password = $request->variable('password', '', true);
|
||||
|
||||
@@ -3006,6 +3062,17 @@ function login_forum_box($forum_data)
|
||||
$template->assign_var('LOGIN_ERROR', $user->lang['WRONG_PASSWORD']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performing additional actions, load additional data on forum login
|
||||
*
|
||||
* @event core.login_forum_box
|
||||
* @var array forum_data Array with forum data
|
||||
* @var string password Password entered
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('forum_data', 'password');
|
||||
extract($phpbb_dispatcher->trigger_event('core.login_forum_box', compact($vars)));
|
||||
|
||||
page_header($user->lang['LOGIN']);
|
||||
|
||||
$template->assign_vars(array(
|
||||
@@ -3282,6 +3349,11 @@ function get_preg_expression($mode)
|
||||
case 'table_prefix':
|
||||
return '#^[a-zA-Z][a-zA-Z0-9_]*$#';
|
||||
break;
|
||||
|
||||
// Matches the predecing dot
|
||||
case 'path_remove_dot_trailing_slash':
|
||||
return '#^(?:(\.)?)+(?:(.+)?)+(?:([\\/\\\])$)#';
|
||||
break;
|
||||
}
|
||||
|
||||
return '';
|
||||
@@ -3366,8 +3438,6 @@ function short_ipv6($ip, $length)
|
||||
*
|
||||
* @return mixed false if specified address is not valid,
|
||||
* string otherwise
|
||||
*
|
||||
* @author bantu
|
||||
*/
|
||||
function phpbb_ip_normalise($address)
|
||||
{
|
||||
@@ -3396,8 +3466,6 @@ function phpbb_ip_normalise($address)
|
||||
*
|
||||
* @return mixed false on failure,
|
||||
* string otherwise
|
||||
*
|
||||
* @author APTX
|
||||
*/
|
||||
function phpbb_inet_ntop($in_addr)
|
||||
{
|
||||
@@ -3467,8 +3535,6 @@ function phpbb_inet_ntop($in_addr)
|
||||
*
|
||||
* @return mixed false if address is invalid,
|
||||
* in_addr representation of the given address otherwise (string)
|
||||
*
|
||||
* @author APTX
|
||||
*/
|
||||
function phpbb_inet_pton($address)
|
||||
{
|
||||
@@ -3548,8 +3614,6 @@ function phpbb_inet_pton($address)
|
||||
*
|
||||
* Since null can also be returned, you probably want to compare the result
|
||||
* with === true or === false,
|
||||
*
|
||||
* @author bantu
|
||||
*/
|
||||
function phpbb_checkdnsrr($host, $type = 'MX')
|
||||
{
|
||||
@@ -4636,7 +4700,7 @@ function phpbb_get_group_avatar($user_row, $alt = 'GROUP_AVATAR', $ignore_config
|
||||
/**
|
||||
* Get avatar
|
||||
*
|
||||
* @param array $row Row cleaned by \phpbb\avatar\driver\driver::clean_row
|
||||
* @param array $row Row cleaned by \phpbb\avatar\manager::clean_row
|
||||
* @param string $alt Optional language string for alt tag within image, can be a language key or text
|
||||
* @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP
|
||||
*
|
||||
@@ -4870,8 +4934,8 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||
}
|
||||
}
|
||||
|
||||
$dt = new \phpbb\datetime($user, 'now', $user->timezone);
|
||||
$timezone_offset = 'GMT' . phpbb_format_timezone_offset($dt->getOffset());
|
||||
$dt = $user->create_datetime();
|
||||
$timezone_offset = $user->lang(array('timezones', 'UTC_OFFSET'), phpbb_format_timezone_offset($dt->getOffset()));
|
||||
$timezone_name = $user->timezone->getName();
|
||||
if (isset($user->lang['timezones'][$timezone_name]))
|
||||
{
|
||||
@@ -4955,7 +5019,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||
'U_SEARCH_UNREAD' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unreadposts'),
|
||||
'U_SEARCH_ACTIVE_TOPICS'=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=active_topics'),
|
||||
'U_DELETE_COOKIES' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=delete_cookies'),
|
||||
'U_CONTACT_US' => ($config['contact_admin_form_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contactadmin') : '',
|
||||
'U_CONTACT_US' => ($config['contact_admin_form_enable'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contactadmin') : '',
|
||||
'U_TEAM' => ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')) ? '' : append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=team'),
|
||||
'U_TERMS_USE' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=terms'),
|
||||
'U_PRIVACY' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=privacy'),
|
||||
@@ -5030,6 +5094,19 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||
'SITE_LOGO_IMG' => $user->img('site_logo'),
|
||||
));
|
||||
|
||||
// An array of http headers that phpbb will set. The following event may override these.
|
||||
$http_headers = array(
|
||||
// application/xhtml+xml not used because of IE
|
||||
'Content-type' => 'text/html; charset=UTF-8',
|
||||
'Cache-Control' => 'private, no-cache="set-cookie"',
|
||||
'Expires' => gmdate('D, d M Y H:i:s', time()) . ' GMT',
|
||||
);
|
||||
if (!empty($user->data['is_bot']))
|
||||
{
|
||||
// Let reverse proxies know we detected a bot.
|
||||
$http_headers['X-PHPBB-IS-BOT'] = 'yes';
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute code and/or overwrite _common_ template variables after they have been assigned.
|
||||
*
|
||||
@@ -5040,23 +5117,16 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||
* session item, e.g. forum for
|
||||
* session_forum_id
|
||||
* @var int item_id Restrict online users to item id
|
||||
* @var array http_headers HTTP headers that should be set by phpbb
|
||||
*
|
||||
* @since 3.1.0-b3
|
||||
*/
|
||||
$vars = array('page_title', 'display_online_list', 'item_id', 'item');
|
||||
$vars = array('page_title', 'display_online_list', 'item_id', 'item', 'http_headers');
|
||||
extract($phpbb_dispatcher->trigger_event('core.page_header_after', compact($vars)));
|
||||
|
||||
// application/xhtml+xml not used because of IE
|
||||
header('Content-type: text/html; charset=UTF-8');
|
||||
|
||||
header('Cache-Control: private, no-cache="set-cookie"');
|
||||
header('Expires: 0');
|
||||
header('Pragma: no-cache');
|
||||
|
||||
if (!empty($user->data['is_bot']))
|
||||
foreach ($http_headers as $hname => $hval)
|
||||
{
|
||||
// Let reverse proxies know we detected a bot.
|
||||
header('X-PHPBB-IS-BOT: yes');
|
||||
header((string) $hname . ': ' . (string) $hval);
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -5084,9 +5154,10 @@ function phpbb_check_and_display_sql_report(\phpbb\request\request_interface $re
|
||||
* @param \phpbb\config\config $config Config object
|
||||
* @param \phpbb\auth\auth $auth Auth object
|
||||
* @param \phpbb\user $user User object
|
||||
* @param \phpbb\event\dispatcher_interface $phpbb_dispatcher Event dispatcher
|
||||
* @return string
|
||||
*/
|
||||
function phpbb_generate_debug_output(phpbb\db\driver\driver_interface $db, \phpbb\config\config $config, \phpbb\auth\auth $auth, \phpbb\user $user)
|
||||
function phpbb_generate_debug_output(\phpbb\db\driver\driver_interface $db, \phpbb\config\config $config, \phpbb\auth\auth $auth, \phpbb\user $user, \phpbb\event\dispatcher_interface $phpbb_dispatcher)
|
||||
{
|
||||
$debug_info = array();
|
||||
|
||||
@@ -5125,6 +5196,17 @@ function phpbb_generate_debug_output(phpbb\db\driver\driver_interface $db, \phpb
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify debug output information
|
||||
*
|
||||
* @event core.phpbb_generate_debug_output
|
||||
* @var array debug_info Array of strings with debug information
|
||||
*
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('debug_info');
|
||||
extract($phpbb_dispatcher->trigger_event('core.phpbb_generate_debug_output', compact($vars)));
|
||||
|
||||
return implode(' | ', $debug_info);
|
||||
}
|
||||
|
||||
@@ -5163,7 +5245,7 @@ function page_footer($run_cron = true, $display_template = true, $exit_handler =
|
||||
phpbb_check_and_display_sql_report($request, $auth, $db);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'DEBUG_OUTPUT' => phpbb_generate_debug_output($db, $config, $auth, $user),
|
||||
'DEBUG_OUTPUT' => phpbb_generate_debug_output($db, $config, $auth, $user, $phpbb_dispatcher),
|
||||
'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
|
||||
'CREDIT_LINE' => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Limited'),
|
||||
|
||||
@@ -5208,6 +5290,18 @@ function page_footer($run_cron = true, $display_template = true, $exit_handler =
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute code and/or modify output before displaying the template.
|
||||
*
|
||||
* @event core.page_footer_after
|
||||
* @var bool display_template Whether or not to display the template
|
||||
* @var bool exit_handler Whether or not to run the exit_handler()
|
||||
*
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array('display_template', 'exit_handler');
|
||||
extract($phpbb_dispatcher->trigger_event('core.page_footer_after', compact($vars)));
|
||||
|
||||
if ($display_template)
|
||||
{
|
||||
$template->display('body');
|
||||
@@ -5355,7 +5449,7 @@ function phpbb_get_board_contact(\phpbb\config\config $config, $phpEx)
|
||||
*/
|
||||
function phpbb_get_board_contact_link(\phpbb\config\config $config, $phpbb_root_path, $phpEx)
|
||||
{
|
||||
if ($config['contact_admin_form_enable'])
|
||||
if ($config['contact_admin_form_enable'] && $config['email_enable'])
|
||||
{
|
||||
return append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contactadmin');
|
||||
}
|
||||
|
@@ -107,12 +107,30 @@ function adm_page_header($page_title)
|
||||
'S_CONTENT_FLOW_END' => ($user->lang['DIRECTION'] == 'ltr') ? 'right' : 'left',
|
||||
));
|
||||
|
||||
// application/xhtml+xml not used because of IE
|
||||
header('Content-type: text/html; charset=UTF-8');
|
||||
// An array of http headers that phpbb will set. The following event may override these.
|
||||
$http_headers = array(
|
||||
// application/xhtml+xml not used because of IE
|
||||
'Content-type' => 'text/html; charset=UTF-8',
|
||||
'Cache-Control' => 'private, no-cache="set-cookie"',
|
||||
'Expires' => gmdate('D, d M Y H:i:s', time()) . ' GMT',
|
||||
);
|
||||
|
||||
header('Cache-Control: private, no-cache="set-cookie"');
|
||||
header('Expires: 0');
|
||||
header('Pragma: no-cache');
|
||||
/**
|
||||
* Execute code and/or overwrite _common_ template variables after they have been assigned.
|
||||
*
|
||||
* @event core.adm_page_header_after
|
||||
* @var string page_title Page title
|
||||
* @var array http_headers HTTP headers that should be set by phpbb
|
||||
*
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('page_title', 'http_headers');
|
||||
extract($phpbb_dispatcher->trigger_event('core.adm_page_header_after', compact($vars)));
|
||||
|
||||
foreach ($http_headers as $hname => $hval)
|
||||
{
|
||||
header((string) $hname . ': ' . (string) $hval);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -149,7 +167,7 @@ function adm_page_footer($copyright_html = true)
|
||||
phpbb_check_and_display_sql_report($request, $auth, $db);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'DEBUG_OUTPUT' => phpbb_generate_debug_output($db, $config, $auth, $user),
|
||||
'DEBUG_OUTPUT' => phpbb_generate_debug_output($db, $config, $auth, $user, $phpbb_dispatcher),
|
||||
'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
|
||||
'S_COPYRIGHT_HTML' => $copyright_html,
|
||||
'CREDIT_LINE' => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Limited'),
|
||||
@@ -240,7 +258,6 @@ function build_cfg_template($tpl_type, $key, &$new, $config_key, $vars)
|
||||
case 'range':
|
||||
case 'search':
|
||||
case 'tel':
|
||||
case 'url':
|
||||
case 'week':
|
||||
$size = (int) $tpl_type[1];
|
||||
$maxlength = (int) $tpl_type[2];
|
||||
@@ -656,3 +673,30 @@ function validate_range($value_ary, &$error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts new config display_vars into an exisiting display_vars array
|
||||
* at the given position.
|
||||
*
|
||||
* @param array $display_vars An array of existing config display vars
|
||||
* @param array $add_config_vars An array of new config display vars
|
||||
* @param array $where Where to place the new config vars,
|
||||
* before or after an exisiting config, as an array
|
||||
* of the form: array('after' => 'config_name') or
|
||||
* array('before' => 'config_name').
|
||||
* @return array The array of config display vars
|
||||
*/
|
||||
function phpbb_insert_config_array($display_vars, $add_config_vars, $where)
|
||||
{
|
||||
if (is_array($where) && array_key_exists(current($where), $display_vars))
|
||||
{
|
||||
$position = array_search(current($where), array_keys($display_vars)) + ((key($where) == 'before') ? 0 : 1);
|
||||
$display_vars = array_merge(
|
||||
array_slice($display_vars, 0, $position),
|
||||
$add_config_vars,
|
||||
array_slice($display_vars, $position)
|
||||
);
|
||||
}
|
||||
|
||||
return $display_vars;
|
||||
}
|
||||
|
@@ -27,8 +27,6 @@ if (!defined('IN_PHPBB'))
|
||||
* @param string $table constant or fullname of the table
|
||||
* @param int $parent_id parent_id of the current set (default = 0)
|
||||
* @param array $where contains strings to compare closer on the where statement (additional)
|
||||
*
|
||||
* @author EXreaction
|
||||
*/
|
||||
function recalc_nested_sets(&$new_id, $pkey, $table, $parent_id = 0, $where = array())
|
||||
{
|
||||
@@ -315,8 +313,6 @@ function get_forum_branch($forum_id, $type = 'all', $order = 'descending', $incl
|
||||
* @param bool $add_log True if log entry should be added
|
||||
*
|
||||
* @return bool False on error
|
||||
*
|
||||
* @author bantu
|
||||
*/
|
||||
function copy_forum_permissions($src_forum_id, $dest_forum_ids, $clear_dest_perms = true, $add_log = true)
|
||||
{
|
||||
@@ -722,9 +718,9 @@ function delete_topics($where_type, $where_ids, $auto_sync = true, $post_count_s
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
|
||||
$phpbb_notifications->delete_notifications(array(
|
||||
'topic',
|
||||
'approve_topic',
|
||||
'topic_in_queue',
|
||||
'notification.type.topic',
|
||||
'notification.type.approve_topic',
|
||||
'notification.type.topic_in_queue',
|
||||
), $topic_ids);
|
||||
|
||||
return $return;
|
||||
@@ -739,9 +735,9 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =
|
||||
|
||||
// Notifications types to delete
|
||||
$delete_notifications_types = array(
|
||||
'quote',
|
||||
'approve_post',
|
||||
'post_in_queue',
|
||||
'notification.type.quote',
|
||||
'notification.type.approve_post',
|
||||
'notification.type.post_in_queue',
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1224,8 +1220,6 @@ function delete_attachments($mode, $ids, $resync = true)
|
||||
* @param bool $auto_sync Will call sync() if this is true
|
||||
*
|
||||
* @return array Array with affected forums
|
||||
*
|
||||
* @author bantu
|
||||
*/
|
||||
function delete_topic_shadows($forum_id, $sql_more = '', $auto_sync = true)
|
||||
{
|
||||
|
@@ -133,10 +133,9 @@ function phpbb_clean_path($path)
|
||||
*/
|
||||
function tz_select($default = '', $truncate = false)
|
||||
{
|
||||
global $user;
|
||||
global $template, $user;
|
||||
|
||||
$timezone_select = phpbb_timezone_select($user, $default, $truncate);
|
||||
return $timezone_select['tz_select'];
|
||||
return phpbb_timezone_select($template, $user, $default, $truncate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -166,3 +165,30 @@ function update_foes($group_id = false, $user_id = false)
|
||||
global $db, $auth;
|
||||
return phpbb_update_foes($db, $auth, $group_id, $user_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user rank title and image
|
||||
*
|
||||
* @param int $user_rank the current stored users rank id
|
||||
* @param int $user_posts the users number of posts
|
||||
* @param string &$rank_title the rank title will be stored here after execution
|
||||
* @param string &$rank_img the rank image as full img tag is stored here after execution
|
||||
* @param string &$rank_img_src the rank image source is stored here after execution
|
||||
*
|
||||
* @deprecated 3.1.0-RC5 (To be removed: 3.3.0)
|
||||
*
|
||||
* Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false
|
||||
*/
|
||||
function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src)
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
if (!function_exists('phpbb_get_user_rank'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
||||
}
|
||||
|
||||
$rank_data = phpbb_get_user_rank(array('user_rank' => $user_rank), $user_posts);
|
||||
$rank_title = $rank_data['title'];
|
||||
$rank_img = $rank_data['img'];
|
||||
$rank_img_src = $rank_data['img_src'];
|
||||
}
|
||||
|
@@ -509,7 +509,7 @@ class compress_zip extends compress
|
||||
|
||||
$mimetype = 'application/zip';
|
||||
|
||||
header('Pragma: no-cache');
|
||||
header('Cache-Control: private, no-cache');
|
||||
header("Content-Type: $mimetype; name=\"$download_name.zip\"");
|
||||
header("Content-disposition: attachment; filename=$download_name.zip");
|
||||
|
||||
@@ -757,7 +757,7 @@ class compress_tar extends compress
|
||||
break;
|
||||
}
|
||||
|
||||
header('Pragma: no-cache');
|
||||
header('Cache-Control: private, no-cache');
|
||||
header("Content-Type: $mimetype; name=\"$download_name$this->type\"");
|
||||
header("Content-disposition: attachment; filename=$download_name$this->type");
|
||||
|
||||
|
@@ -912,7 +912,7 @@ function parse_attachments($forum_id, &$message, &$attachments, &$update_count,
|
||||
return;
|
||||
}
|
||||
|
||||
global $template, $cache, $user;
|
||||
global $template, $cache, $user, $phpbb_dispatcher;
|
||||
global $extensions, $config, $phpbb_root_path, $phpEx;
|
||||
|
||||
//
|
||||
@@ -1187,6 +1187,34 @@ function parse_attachments($forum_id, &$message, &$attachments, &$update_count,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this event to modify the attachment template data.
|
||||
*
|
||||
* This event is triggered once per attachment.
|
||||
*
|
||||
* @event core.parse_attachments_modify_template_data
|
||||
* @var array attachment Array with attachment data
|
||||
* @var array block_array Template data of the attachment
|
||||
* @var int display_cat Attachment category data
|
||||
* @var string download_link Attachment download link
|
||||
* @var array extensions Array with attachment extensions data
|
||||
* @var mixed forum_id The forum id the attachments are displayed in (false if in private message)
|
||||
* @var bool preview Flag indicating if we are in post preview mode
|
||||
* @var array update_count Array with attachment ids to update download count
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array(
|
||||
'attachment',
|
||||
'block_array',
|
||||
'display_cat',
|
||||
'download_link',
|
||||
'extensions',
|
||||
'forum_id',
|
||||
'preview',
|
||||
'update_count',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.parse_attachments_modify_template_data', compact($vars)));
|
||||
|
||||
$template->assign_block_vars('_file', $block_array);
|
||||
|
||||
$compiled_attachments[] = $template->assign_display('attachment_tpl');
|
||||
@@ -1323,7 +1351,6 @@ function truncate_string($string, $max_length = 60, $max_store_length = 255, $al
|
||||
* @param string $custom_profile_url optional parameter to specify a profile url. The user id get appended to this url as &u={user_id}
|
||||
*
|
||||
* @return string A string consisting of what is wanted based on $mode.
|
||||
* @author BartVB, Acyd Burn
|
||||
*/
|
||||
function get_username_string($mode, $user_id, $username, $username_colour = '', $guest_username = false, $custom_profile_url = false)
|
||||
{
|
||||
|
@@ -379,10 +379,10 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||
$last_catless = true;
|
||||
foreach ($forum_rows as $row)
|
||||
{
|
||||
// Empty category
|
||||
// Category
|
||||
if ($row['parent_id'] == $root_data['forum_id'] && $row['forum_type'] == FORUM_CAT)
|
||||
{
|
||||
$template->assign_block_vars('forumrow', array(
|
||||
$cat_row = array(
|
||||
'S_IS_CAT' => true,
|
||||
'FORUM_ID' => $row['forum_id'],
|
||||
'FORUM_NAME' => $row['forum_name'],
|
||||
@@ -391,9 +391,33 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||
'FORUM_FOLDER_IMG_SRC' => '',
|
||||
'FORUM_IMAGE' => ($row['forum_image']) ? '<img src="' . $phpbb_root_path . $row['forum_image'] . '" alt="' . $user->lang['FORUM_CAT'] . '" />' : '',
|
||||
'FORUM_IMAGE_SRC' => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',
|
||||
'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']))
|
||||
'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']),
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify the template data block of the 'category'
|
||||
*
|
||||
* This event is triggered once per 'category'
|
||||
*
|
||||
* @event core.display_forums_modify_category_template_vars
|
||||
* @var array cat_row Template data of the 'category'
|
||||
* @var bool catless The flag indicating whether the 'category' has a parent category
|
||||
* @var bool last_catless The flag indicating whether the last forum had a parent category
|
||||
* @var array root_data Array with the root forum data
|
||||
* @var array row The data of the 'category'
|
||||
* @since 3.1.0-RC4
|
||||
*/
|
||||
$vars = array(
|
||||
'cat_row',
|
||||
'catless',
|
||||
'last_catless',
|
||||
'root_data',
|
||||
'row',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_category_template_vars', compact($vars)));
|
||||
|
||||
$template->assign_block_vars('forumrow', $cat_row);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -625,6 +649,28 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||
'UNAPPROVED_POST_IMG' => $user->img('icon_topic_unapproved', 'POSTS_UNAPPROVED_FORUM'),
|
||||
));
|
||||
|
||||
/**
|
||||
* Event to perform additional actions after the forum list has been generated
|
||||
*
|
||||
* @event core.display_forums_after
|
||||
* @var array active_forum_ary Array with forum data to display active topics
|
||||
* @var bool display_moderators Flag indicating if we display forum moderators
|
||||
* @var array forum_moderators Array with forum moderators list
|
||||
* @var array forum_rows Data array of all forums we display
|
||||
* @var bool return_moderators Flag indicating if moderators list should be returned
|
||||
* @var array root_data Array with the root forum data
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array(
|
||||
'active_forum_ary',
|
||||
'display_moderators',
|
||||
'forum_moderators',
|
||||
'forum_rows',
|
||||
'return_moderators',
|
||||
'root_data',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.display_forums_after', compact($vars)));
|
||||
|
||||
if ($return_moderators)
|
||||
{
|
||||
return array($active_forum_ary, $forum_moderators);
|
||||
@@ -1063,7 +1109,8 @@ function display_reasons($reason_id = 0)
|
||||
function display_user_activity(&$userdata)
|
||||
{
|
||||
global $auth, $template, $db, $user;
|
||||
global $phpbb_root_path, $phpEx, $phpbb_container;
|
||||
global $phpbb_root_path, $phpEx;
|
||||
global $phpbb_container, $phpbb_dispatcher;
|
||||
|
||||
// Do not display user activity for users having more than 5000 posts...
|
||||
if ($userdata['user_posts'] > 5000)
|
||||
@@ -1134,6 +1181,18 @@ function display_user_activity(&$userdata)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Alter list of forums and topics to display as active
|
||||
*
|
||||
* @event core.display_user_activity_modify_actives
|
||||
* @var array userdata User's data
|
||||
* @var array active_f_row List of active forums
|
||||
* @var array active_t_row List of active posts
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('userdata', 'active_f_row', 'active_t_row');
|
||||
extract($phpbb_dispatcher->trigger_event('core.display_user_activity_modify_actives', compact($vars)));
|
||||
|
||||
$userdata['active_t_row'] = $active_t_row;
|
||||
$userdata['active_f_row'] = $active_f_row;
|
||||
|
||||
@@ -1365,17 +1424,34 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,
|
||||
/**
|
||||
* Get user rank title and image
|
||||
*
|
||||
* @param int $user_rank the current stored users rank id
|
||||
* @param array $user_data the current stored users data
|
||||
* @param int $user_posts the users number of posts
|
||||
* @param string &$rank_title the rank title will be stored here after execution
|
||||
* @param string &$rank_img the rank image as full img tag is stored here after execution
|
||||
* @param string &$rank_img_src the rank image source is stored here after execution
|
||||
*
|
||||
* @return array An associative array containing the rank title (title), the rank image source (img) and the rank image as full img tag (img)
|
||||
*
|
||||
* Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false
|
||||
*/
|
||||
function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src)
|
||||
function phpbb_get_user_rank($user_data, $user_posts)
|
||||
{
|
||||
global $ranks, $config, $phpbb_root_path, $phpbb_path_helper;
|
||||
global $ranks, $config, $phpbb_root_path, $phpbb_path_helper, $phpbb_dispatcher;
|
||||
|
||||
$user_rank_data = array(
|
||||
'title' => null,
|
||||
'img' => null,
|
||||
'img_src' => null,
|
||||
);
|
||||
|
||||
/**
|
||||
* Preparing a user's rank before displaying
|
||||
*
|
||||
* @event core.modify_user_rank
|
||||
* @var array user_data Array with user's data
|
||||
* @var int user_posts User_posts to change
|
||||
* @since 3.1.0-RC4
|
||||
*/
|
||||
|
||||
$vars = array('user_data', 'user_posts');
|
||||
extract($phpbb_dispatcher->trigger_event('core.modify_user_rank', compact($vars)));
|
||||
|
||||
if (empty($ranks))
|
||||
{
|
||||
@@ -1383,11 +1459,14 @@ function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank
|
||||
$ranks = $cache->obtain_ranks();
|
||||
}
|
||||
|
||||
if (!empty($user_rank))
|
||||
if (!empty($user_data['user_rank']))
|
||||
{
|
||||
$rank_title = (isset($ranks['special'][$user_rank]['rank_title'])) ? $ranks['special'][$user_rank]['rank_title'] : '';
|
||||
$rank_img_src = (!empty($ranks['special'][$user_rank]['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image']) : '';
|
||||
$rank_img = (!empty($ranks['special'][$user_rank]['rank_image'])) ? '<img src="' . $rank_img_src . '" alt="' . $ranks['special'][$user_rank]['rank_title'] . '" title="' . $ranks['special'][$user_rank]['rank_title'] . '" />' : '';
|
||||
|
||||
$user_rank_data['title'] = (isset($ranks['special'][$user_data['user_rank']]['rank_title'])) ? $ranks['special'][$user_data['user_rank']]['rank_title'] : '';
|
||||
|
||||
$user_rank_data['img_src'] = (!empty($ranks['special'][$user_data['user_rank']]['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$user_data['user_rank']]['rank_image']) : '';
|
||||
|
||||
$user_rank_data['img'] = (!empty($ranks['special'][$user_data['user_rank']]['rank_image'])) ? '<img src="' . $user_rank_data['img_src'] . '" alt="' . $ranks['special'][$user_data['user_rank']]['rank_title'] . '" title="' . $ranks['special'][$user_data['user_rank']]['rank_title'] . '" />' : '';
|
||||
}
|
||||
else if ($user_posts !== false)
|
||||
{
|
||||
@@ -1397,52 +1476,16 @@ function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank
|
||||
{
|
||||
if ($user_posts >= $rank['rank_min'])
|
||||
{
|
||||
$rank_title = $rank['rank_title'];
|
||||
$rank_img_src = (!empty($rank['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image']) : '';
|
||||
$rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank_img_src . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : '';
|
||||
$user_rank_data['title'] = $rank['rank_title'];
|
||||
$user_rank_data['img_src'] = (!empty($rank['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image']) : '';
|
||||
$user_rank_data['img'] = (!empty($rank['rank_image'])) ? '<img src="' . $user_rank_data['img_src'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : '';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a list of archive types available for compressing attachments
|
||||
*
|
||||
* @param string $param_key Either topic_id or post_id
|
||||
* @param string $param_val The value of the topic or post id
|
||||
* @param string $phpbb_root_path The root path of the phpBB installation
|
||||
* @param string $phpEx The PHP extension
|
||||
*
|
||||
* @return array Array containing the link and the type of compression
|
||||
*/
|
||||
function phpbb_gen_download_links($param_key, $param_val, $phpbb_root_path, $phpEx)
|
||||
{
|
||||
if (!class_exists('compress'))
|
||||
{
|
||||
require $phpbb_root_path . 'includes/functions_compress.' . $phpEx;
|
||||
}
|
||||
|
||||
$methods = compress::methods();
|
||||
// Sort by preferred type.
|
||||
$methods = array_intersect(array('.zip', '.tar.bz2', '.tar.gz', '.tar'), $methods);
|
||||
$links = array();
|
||||
|
||||
foreach ($methods as $method)
|
||||
{
|
||||
$exploded = explode('.', $method);
|
||||
$type = array_pop($exploded);
|
||||
$params = array('archive' => $method);
|
||||
$params[$param_key] = $param_val;
|
||||
|
||||
$links[] = array(
|
||||
'LINK' => append_sid("{$phpbb_root_path}download/file.$phpEx", $params),
|
||||
'TYPE' => $type,
|
||||
);
|
||||
}
|
||||
|
||||
return $links;
|
||||
return $user_rank_data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1455,8 +1498,7 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
|
||||
$username = $data['username'];
|
||||
$user_id = $data['user_id'];
|
||||
|
||||
$rank_title = $rank_img = $rank_img_src = '';
|
||||
get_user_rank($data['user_rank'], (($user_id == ANONYMOUS) ? false : $data['user_posts']), $rank_title, $rank_img, $rank_img_src);
|
||||
$user_rank_data = phpbb_get_user_rank($data, (($user_id == ANONYMOUS) ? false : $data['user_posts']));
|
||||
|
||||
if ((!empty($data['user_allow_viewemail']) && $auth->acl_get('u_sendemail')) || $auth->acl_get('a_user'))
|
||||
{
|
||||
@@ -1537,7 +1579,7 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
|
||||
// Dump it out to the template
|
||||
$template_data = array(
|
||||
'AGE' => $age,
|
||||
'RANK_TITLE' => $rank_title,
|
||||
'RANK_TITLE' => $user_rank_data['title'],
|
||||
'JOINED' => $user->format_date($data['user_regdate']),
|
||||
'LAST_ACTIVE' => (empty($last_active)) ? ' - ' : $user->format_date($last_active),
|
||||
'POSTS' => ($data['user_posts']) ? $data['user_posts'] : 0,
|
||||
@@ -1553,8 +1595,8 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
|
||||
'AVATAR_IMG' => phpbb_get_user_avatar($data),
|
||||
'ONLINE_IMG' => (!$config['load_onlinetrack']) ? '' : (($online) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')),
|
||||
'S_ONLINE' => ($config['load_onlinetrack'] && $online) ? true : false,
|
||||
'RANK_IMG' => $rank_img,
|
||||
'RANK_IMG_SRC' => $rank_img_src,
|
||||
'RANK_IMG' => $user_rank_data['img'],
|
||||
'RANK_IMG_SRC' => $user_rank_data['img_src'],
|
||||
'S_JABBER_ENABLED' => ($config['jab_enable']) ? true : false,
|
||||
|
||||
'S_WARNINGS' => ($auth->acl_getf_global('m_') || $auth->acl_get('m_warn')) ? true : false,
|
||||
|
@@ -45,28 +45,28 @@ function send_avatar_to_browser($file, $browser)
|
||||
|
||||
if ((@file_exists($file_path) && @is_readable($file_path)) && !headers_sent())
|
||||
{
|
||||
header('Pragma: public');
|
||||
header('Cache-Control: public');
|
||||
|
||||
$image_data = @getimagesize($file_path);
|
||||
header('Content-Type: ' . image_type_to_mime_type($image_data[2]));
|
||||
|
||||
if ((strpos(strtolower($user->browser), 'msie') !== false) && !phpbb_is_greater_ie_version($browser, 7))
|
||||
if ((strpos(strtolower($browser), 'msie') !== false) && !phpbb_is_greater_ie_version($browser, 7))
|
||||
{
|
||||
header('Content-Disposition: attachment; ' . header_filename($file));
|
||||
|
||||
if (strpos(strtolower($browser), 'msie 6.0') !== false)
|
||||
{
|
||||
header('Expires: -1');
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
|
||||
}
|
||||
else
|
||||
{
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 31536000));
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
header('Content-Disposition: inline; ' . header_filename($file));
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 31536000));
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');
|
||||
}
|
||||
|
||||
$size = @filesize($file_path);
|
||||
@@ -175,7 +175,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
}
|
||||
|
||||
// Now the tricky part... let's dance
|
||||
header('Pragma: public');
|
||||
header('Cache-Control: public');
|
||||
|
||||
// Send out the Headers. Do not set Content-Disposition to inline please, it is a security measure for users using the Internet Explorer.
|
||||
header('Content-Type: ' . $attachment['mimetype']);
|
||||
@@ -197,7 +197,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
header('Content-Disposition: attachment; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'])));
|
||||
if (empty($user->browser) || (strpos(strtolower($user->browser), 'msie 6.0') !== false))
|
||||
{
|
||||
header('expires: -1');
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -420,8 +420,8 @@ function set_modified_headers($stamp, $browser)
|
||||
{
|
||||
send_status_line(304, 'Not Modified');
|
||||
// seems that we need those too ... browsers
|
||||
header('Pragma: public');
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 31536000));
|
||||
header('Cache-Control: public');
|
||||
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -717,27 +717,6 @@ function phpbb_download_check_pm_auth($db, $user_id, $msg_id)
|
||||
return $allowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans a filename of any characters that could potentially cause a problem on
|
||||
* a user's filesystem.
|
||||
*
|
||||
* @param string $filename The filename to clean
|
||||
*
|
||||
* @return string The cleaned filename
|
||||
*/
|
||||
function phpbb_download_clean_filename($filename)
|
||||
{
|
||||
$bad_chars = array("'", "\\", ' ', '/', ':', '*', '?', '"', '<', '>', '|');
|
||||
|
||||
// rawurlencode to convert any potentially 'bad' characters that we missed
|
||||
$filename = rawurlencode(str_replace($bad_chars, '_', $filename));
|
||||
|
||||
// Turn the %xx entities created by rawurlencode to _
|
||||
$filename = preg_replace("/%(\w{2})/", '_', $filename);
|
||||
|
||||
return $filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the browser is internet explorer version 7+
|
||||
*
|
||||
|
@@ -266,7 +266,7 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,
|
||||
if (is_array($db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, true)))
|
||||
{
|
||||
$db_error = $db->sql_error();
|
||||
$error[] = $lang['INST_ERR_DB_CONNECT'] . '<br />' . (($db_error['message']) ? $db_error['message'] : $lang['INST_ERR_DB_NO_ERROR']);
|
||||
$error[] = $lang['INST_ERR_DB_CONNECT'] . '<br />' . (($db_error['message']) ? utf8_convert_message($db_error['message']) : $lang['INST_ERR_DB_NO_ERROR']);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -449,6 +449,7 @@ function phpbb_create_config_file_data($data, $dbms, $debug = false, $debug_cont
|
||||
}
|
||||
|
||||
$config_data .= "\n@define('PHPBB_INSTALLED', true);\n";
|
||||
$config_data .= "// @define('PHPBB_DISPLAY_LOAD_TIME', true);\n";
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
|
@@ -521,21 +521,21 @@ function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by
|
||||
$limit_days = array(0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
|
||||
$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'tt' => $user->lang['TOPIC_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']);
|
||||
|
||||
$sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'tt' => 't.topic_time', 'r' => (($auth->acl_get('m_approve', $forum_id)) ? 't.topic_posts_approved + t.topic_posts_unapproved + t.topic_posts_softdeleted' : 't.topic_posts_approved'), 's' => 't.topic_title', 'v' => 't.topic_views');
|
||||
$sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => array('t.topic_last_post_time', 't.topic_last_post_id'), 'tt' => 't.topic_time', 'r' => (($auth->acl_get('m_approve', $forum_id)) ? 't.topic_posts_approved + t.topic_posts_unapproved + t.topic_posts_softdeleted' : 't.topic_posts_approved'), 's' => 't.topic_title', 'v' => 't.topic_views');
|
||||
$limit_time_sql = ($min_time) ? "AND t.topic_last_post_time >= $min_time" : '';
|
||||
break;
|
||||
|
||||
case 'posts':
|
||||
$limit_days = array(0 => $user->lang['ALL_POSTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
|
||||
$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']);
|
||||
$sort_by_sql = array('a' => 'u.username_clean', 't' => 'p.post_time', 's' => 'p.post_subject');
|
||||
$sort_by_sql = array('a' => 'u.username_clean', 't' => array('p.post_time', 'p.post_id'), 's' => 'p.post_subject');
|
||||
$limit_time_sql = ($min_time) ? "AND p.post_time >= $min_time" : '';
|
||||
break;
|
||||
|
||||
case 'reports':
|
||||
$limit_days = array(0 => $user->lang['ALL_REPORTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
|
||||
$sort_by_text = array('a' => $user->lang['AUTHOR'], 'r' => $user->lang['REPORTER'], 'p' => $user->lang['POST_TIME'], 't' => $user->lang['REPORT_TIME'], 's' => $user->lang['SUBJECT']);
|
||||
$sort_by_sql = array('a' => 'u.username_clean', 'r' => 'ru.username', 'p' => 'p.post_time', 't' => 'r.report_time', 's' => 'p.post_subject');
|
||||
$sort_by_sql = array('a' => 'u.username_clean', 'r' => 'ru.username', 'p' => array('p.post_time', 'p.post_id'), 't' => 'r.report_time', 's' => 'p.post_subject');
|
||||
break;
|
||||
|
||||
case 'pm_reports':
|
||||
@@ -558,7 +558,16 @@ function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by
|
||||
$sort_key = $default_key;
|
||||
}
|
||||
|
||||
$sort_order_sql = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
|
||||
$direction = ($sort_dir == 'd') ? 'DESC' : 'ASC';
|
||||
|
||||
if (is_array($sort_by_sql[$sort_key]))
|
||||
{
|
||||
$sort_order_sql = implode(' ' . $direction . ', ', $sort_by_sql[$sort_key]) . ' ' . $direction;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sort_order_sql = $sort_by_sql[$sort_key] . ' ' . $direction;
|
||||
}
|
||||
|
||||
$s_limit_days = $s_sort_key = $s_sort_dir = $sort_url = '';
|
||||
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $sort_url);
|
||||
|
@@ -402,17 +402,9 @@ class messenger
|
||||
*/
|
||||
function generate_message_id()
|
||||
{
|
||||
global $config;
|
||||
global $config, $request;
|
||||
|
||||
$domain = 'phpbb.generated';
|
||||
if ($config['server_name'])
|
||||
{
|
||||
$domain = $config['server_name'];
|
||||
}
|
||||
else if (!empty($_SERVER['SERVER_NAME']))
|
||||
{
|
||||
$domain = $_SERVER['SERVER_NAME'];
|
||||
}
|
||||
$domain = ($config['server_name']) ?: $request->server('SERVER_NAME', 'phpbb.generated');
|
||||
|
||||
return md5(unique_id(time())) . '@' . $domain;
|
||||
}
|
||||
|
@@ -489,6 +489,12 @@ class p_master
|
||||
$id = request_var('icat', '');
|
||||
}
|
||||
|
||||
// Restore the backslashes in class names
|
||||
if (strpos($id, '-') !== false)
|
||||
{
|
||||
$id = str_replace('-', '\\', $id);
|
||||
}
|
||||
|
||||
if ($id && !is_numeric($id) && !$this->is_full_class($id))
|
||||
{
|
||||
$id = $this->p_class . '_' . $id;
|
||||
@@ -541,7 +547,9 @@ class p_master
|
||||
*
|
||||
* This method loads a given module, passing it the relevant id and mode.
|
||||
*
|
||||
* @param string $mode mode, as passed through to the module
|
||||
* @param string|false $mode mode, as passed through to the module
|
||||
* @param string|false $module_url If supplied, we use this module url
|
||||
* @param bool $execute_module If true, at the end we execute the main method for the new instance
|
||||
*/
|
||||
function load_active($mode = false, $module_url = false, $execute_module = true)
|
||||
{
|
||||
@@ -614,7 +622,7 @@ class p_master
|
||||
}
|
||||
|
||||
// Not being able to overwrite ;)
|
||||
$this->module->u_action = append_sid("{$phpbb_admin_path}index.$phpEx", 'i=' . $this->get_module_identifier($this->p_name, $this->p_id)) . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}";
|
||||
$this->module->u_action = append_sid("{$phpbb_admin_path}index.$phpEx", 'i=' . $this->get_module_identifier($this->p_name)) . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -646,7 +654,7 @@ class p_master
|
||||
$this->module->u_action = $phpbb_root_path . (($user->page['page_dir']) ? $user->page['page_dir'] . '/' : '') . $user->page['page_name'];
|
||||
}
|
||||
|
||||
$this->module->u_action = append_sid($this->module->u_action, 'i=' . $this->get_module_identifier($this->p_name, $this->p_id)) . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}";
|
||||
$this->module->u_action = append_sid($this->module->u_action, 'i=' . $this->get_module_identifier($this->p_name)) . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}";
|
||||
}
|
||||
|
||||
// Add url_extra parameter to u_action url
|
||||
@@ -899,7 +907,7 @@ class p_master
|
||||
else
|
||||
{
|
||||
// if the category has a name, then use it.
|
||||
$u_title .= $this->get_module_identifier($item_ary['name'], $item_ary['id']);
|
||||
$u_title .= $this->get_module_identifier($item_ary['name']);
|
||||
}
|
||||
// If the item is not a category append the mode
|
||||
if (!$item_ary['cat'])
|
||||
@@ -1040,19 +1048,45 @@ class p_master
|
||||
*/
|
||||
function add_mod_info($module_class)
|
||||
{
|
||||
global $user, $phpEx;
|
||||
|
||||
global $phpbb_extension_manager;
|
||||
global $config, $user, $phpEx, $phpbb_extension_manager;
|
||||
|
||||
$finder = $phpbb_extension_manager->get_finder();
|
||||
|
||||
$lang_files = $finder
|
||||
// We grab the language files from the default, English and user's language.
|
||||
// So we can fall back to the other files like we do when using add_lang()
|
||||
$default_lang_files = $english_lang_files = $user_lang_files = array();
|
||||
|
||||
// Search for board default language if it's not the user language
|
||||
if ($config['default_lang'] != $user->lang_name)
|
||||
{
|
||||
$default_lang_files = $finder
|
||||
->prefix('info_' . strtolower($module_class) . '_')
|
||||
->suffix(".$phpEx")
|
||||
->extension_directory('/language/' . basename($config['default_lang']))
|
||||
->core_path('language/' . basename($config['default_lang']) . '/mods/')
|
||||
->find();
|
||||
}
|
||||
|
||||
// Search for english, if its not the default or user language
|
||||
if ($config['default_lang'] != 'en' && $user->lang_name != 'en')
|
||||
{
|
||||
$english_lang_files = $finder
|
||||
->prefix('info_' . strtolower($module_class) . '_')
|
||||
->suffix(".$phpEx")
|
||||
->extension_directory('/language/en')
|
||||
->core_path('language/en/mods/')
|
||||
->find();
|
||||
}
|
||||
|
||||
// Find files in the user's language
|
||||
$user_lang_files = $finder
|
||||
->prefix('info_' . strtolower($module_class) . '_')
|
||||
->suffix(".$phpEx")
|
||||
->extension_directory('/language/' . $user->lang_name)
|
||||
->core_path('language/' . $user->lang_name . '/mods/')
|
||||
->find();
|
||||
|
||||
$lang_files = array_unique(array_merge($user_lang_files, $english_lang_files, $default_lang_files));
|
||||
foreach ($lang_files as $lang_file => $ext_name)
|
||||
{
|
||||
$user->add_lang_ext($ext_name, $lang_file);
|
||||
@@ -1078,26 +1112,24 @@ class p_master
|
||||
}
|
||||
|
||||
/**
|
||||
* If the basename contains a \ we dont use that for the URL.
|
||||
* If the basename contains a \ we don't use that for the URL.
|
||||
*
|
||||
* Firefox is currently unable to correctly copy a urlencoded \
|
||||
* so users will be unable to post links to modules.
|
||||
* However we can still fallback to the id instead of the name,
|
||||
* so we do that in this case.
|
||||
* However we can replace them with dashes and re-replace them later
|
||||
*
|
||||
* @param string $basename Basename of the module
|
||||
* @param int $id Id of the module
|
||||
* @return mixed Identifier that should be used for
|
||||
* @return string Identifier that should be used for
|
||||
* module link creation
|
||||
*/
|
||||
protected function get_module_identifier($basename, $id)
|
||||
protected function get_module_identifier($basename)
|
||||
{
|
||||
if (strpos($basename, '\\') === false)
|
||||
{
|
||||
return $basename;
|
||||
}
|
||||
|
||||
return $id;
|
||||
return str_replace('\\', '-', $basename);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -398,14 +398,15 @@ function posting_gen_topic_types($forum_id, $cur_topic_type = POST_NORMAL)
|
||||
* @param string $local_storage The path to the local file
|
||||
* @param bool $is_message Whether it is a PM or not
|
||||
* @param \filespec $local_filedata A filespec object created for the local file
|
||||
* @param \phpbb\mimetype\guesser $mimetype_guesser The mimetype guesser object if used
|
||||
* @param \phpbb\plupload\plupload $plupload The plupload object if one is being used
|
||||
*
|
||||
* @return object filespec
|
||||
*/
|
||||
function upload_attachment($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false, \phpbb\plupload\plupload $plupload = null)
|
||||
function upload_attachment($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false, \phpbb\mimetype\guesser $mimetype_guesser = null, \phpbb\plupload\plupload $plupload = null)
|
||||
{
|
||||
global $auth, $user, $config, $db, $cache;
|
||||
global $phpbb_root_path, $phpEx;
|
||||
global $phpbb_root_path, $phpEx, $phpbb_dispatcher;
|
||||
|
||||
$filedata = array(
|
||||
'error' => array()
|
||||
@@ -434,7 +435,7 @@ function upload_attachment($form_name, $forum_id, $local = false, $local_storage
|
||||
$extensions = $cache->obtain_attach_extensions((($is_message) ? false : (int) $forum_id));
|
||||
$upload->set_allowed_extensions(array_keys($extensions['_allowed_']));
|
||||
|
||||
$file = ($local) ? $upload->local_upload($local_storage, $local_filedata) : $upload->form_upload($form_name, $plupload);
|
||||
$file = ($local) ? $upload->local_upload($local_storage, $local_filedata, $mimetype_guesser) : $upload->form_upload($form_name, $mimetype_guesser, $plupload);
|
||||
|
||||
if ($file->init_error)
|
||||
{
|
||||
@@ -506,6 +507,20 @@ function upload_attachment($form_name, $forum_id, $local = false, $local_storage
|
||||
$filedata['real_filename'] = $file->get('uploadname');
|
||||
$filedata['filetime'] = time();
|
||||
|
||||
/**
|
||||
* Event to modify uploaded file before submit to the post
|
||||
*
|
||||
* @event core.modify_uploaded_file
|
||||
* @var array filedata Array containing uploaded file data
|
||||
* @var bool is_image Flag indicating if the file is an image
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array(
|
||||
'filedata',
|
||||
'is_image',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.modify_uploaded_file', compact($vars)));
|
||||
|
||||
// Check our complete quota
|
||||
if ($config['attachment_quota'])
|
||||
{
|
||||
@@ -893,7 +908,7 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a
|
||||
function load_drafts($topic_id = 0, $forum_id = 0, $id = 0, $pm_action = '', $msg_id = 0)
|
||||
{
|
||||
global $user, $db, $template, $auth;
|
||||
global $phpbb_root_path, $phpEx;
|
||||
global $phpbb_root_path, $phpbb_dispatcher, $phpEx;
|
||||
|
||||
$topic_ids = $forum_ids = $draft_rows = array();
|
||||
|
||||
@@ -936,7 +951,7 @@ function load_drafts($topic_id = 0, $forum_id = 0, $id = 0, $pm_action = '', $ms
|
||||
$topic_rows = array();
|
||||
if (sizeof($topic_ids))
|
||||
{
|
||||
$sql = 'SELECT topic_id, forum_id, topic_title
|
||||
$sql = 'SELECT topic_id, forum_id, topic_title, topic_poster
|
||||
FROM ' . TOPICS_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('topic_id', array_unique($topic_ids));
|
||||
$result = $db->sql_query($sql);
|
||||
@@ -947,6 +962,20 @@ function load_drafts($topic_id = 0, $forum_id = 0, $id = 0, $pm_action = '', $ms
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Drafts found and their topics
|
||||
* Edit $draft_rows in order to add or remove drafts loaded
|
||||
*
|
||||
* @event core.load_drafts_draft_list_result
|
||||
* @var array draft_rows The drafts query result. Includes its forum id and everything about the draft
|
||||
* @var array topic_ids The list of topics got from the topics table
|
||||
* @var array topic_rows The topics that draft_rows references
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('draft_rows', 'topic_ids', 'topic_rows');
|
||||
extract($phpbb_dispatcher->trigger_event('core.load_drafts_draft_list_result', compact($vars)));
|
||||
|
||||
unset($topic_ids);
|
||||
|
||||
$template->assign_var('S_SHOW_DRAFTS', true);
|
||||
@@ -1011,6 +1040,7 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
|
||||
global $config, $phpbb_root_path, $phpEx, $phpbb_container;
|
||||
|
||||
$phpbb_content_visibility = $phpbb_container->get('content.visibility');
|
||||
$sql_sort = ($mode == 'post_review') ? 'ASC' : 'DESC';
|
||||
|
||||
// Go ahead and pull all data for this topic
|
||||
$sql = 'SELECT p.post_id
|
||||
@@ -1019,8 +1049,7 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
|
||||
AND " . $phpbb_content_visibility->get_visibility_sql('post', $forum_id, 'p.') . '
|
||||
' . (($mode == 'post_review') ? " AND p.post_id > $cur_post_id" : '') . '
|
||||
' . (($mode == 'post_review_edit') ? " AND p.post_id = $cur_post_id" : '') . '
|
||||
ORDER BY p.post_time ';
|
||||
$sql .= ($mode == 'post_review') ? 'ASC' : 'DESC';
|
||||
ORDER BY p.post_time ' . $sql_sort . ', p.post_id ' . $sql_sort;
|
||||
$result = $db->sql_query_limit($sql, $config['posts_per_page']);
|
||||
|
||||
$post_list = array();
|
||||
@@ -1295,18 +1324,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
|
||||
{
|
||||
delete_topics('topic_id', array($topic_id), false);
|
||||
|
||||
if ($data['topic_visibility'] == ITEM_APPROVED)
|
||||
{
|
||||
$sql_data[FORUMS_TABLE] .= 'forum_posts_approved = forum_posts_approved - 1, forum_topics_approved = forum_topics_approved - 1';
|
||||
}
|
||||
else if ($data['topic_visibility'] == ITEM_UNAPPROVED || $data['post_visibility'] == ITEM_REAPPROVE)
|
||||
{
|
||||
$sql_data[FORUMS_TABLE] .= 'forum_posts_unapproved = forum_posts_unapproved - 1, forum_topics_unapproved = forum_topics_unapproved - 1';
|
||||
}
|
||||
else if ($data['topic_visibility'] == ITEM_DELETED)
|
||||
{
|
||||
$sql_data[FORUMS_TABLE] .= 'forum_posts_softdeleted = forum_posts_softdeleted - 1, forum_topics_softdeleted = forum_topics_softdeleted - 1';
|
||||
}
|
||||
$phpbb_content_visibility->remove_topic_from_statistic($data, $sql_data);
|
||||
|
||||
$update_sql = update_post_information('forum', $forum_id, true);
|
||||
if (sizeof($update_sql))
|
||||
@@ -1324,7 +1342,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
|
||||
WHERE p.topic_id = $topic_id
|
||||
AND p.poster_id = u.user_id
|
||||
AND p.post_visibility = " . ITEM_APPROVED . '
|
||||
ORDER BY p.post_time ASC';
|
||||
ORDER BY p.post_time ASC, p.post_id ASC';
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
@@ -1336,7 +1354,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
|
||||
FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . " u
|
||||
WHERE p.topic_id = $topic_id
|
||||
AND p.poster_id = u.user_id
|
||||
ORDER BY p.post_time ASC";
|
||||
ORDER BY p.post_time ASC, p.post_id ASC";
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
@@ -1391,7 +1409,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
|
||||
WHERE topic_id = $topic_id
|
||||
AND " . $phpbb_content_visibility->get_visibility_sql('post', $forum_id) . '
|
||||
AND post_time > ' . $data['post_time'] . '
|
||||
ORDER BY post_time ASC';
|
||||
ORDER BY post_time ASC, post_id ASC';
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$next_post_id = (int) $db->sql_fetchfield('post_id');
|
||||
$db->sql_freeresult($result);
|
||||
@@ -1402,20 +1420,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
|
||||
{
|
||||
if (!$is_soft)
|
||||
{
|
||||
if ($data['post_visibility'] == ITEM_APPROVED)
|
||||
{
|
||||
$phpbb_content_visibility->remove_post_from_statistic($data, $sql_data);
|
||||
}
|
||||
else if ($data['post_visibility'] == ITEM_UNAPPROVED || $data['post_visibility'] == ITEM_REAPPROVE)
|
||||
{
|
||||
$sql_data[FORUMS_TABLE] = (($sql_data[FORUMS_TABLE]) ? $sql_data[FORUMS_TABLE] . ', ' : '') . 'forum_posts_unapproved = forum_posts_unapproved - 1';
|
||||
$sql_data[TOPICS_TABLE] = (($sql_data[TOPICS_TABLE]) ? $sql_data[TOPICS_TABLE] . ', ' : '') . 'topic_posts_unapproved = topic_posts_unapproved - 1';
|
||||
}
|
||||
else if ($data['post_visibility'] == ITEM_DELETED)
|
||||
{
|
||||
$sql_data[FORUMS_TABLE] = (($sql_data[FORUMS_TABLE]) ? $sql_data[FORUMS_TABLE] . ', ' : '') . 'forum_posts_softdeleted = forum_posts_softdeleted - 1';
|
||||
$sql_data[TOPICS_TABLE] = (($sql_data[TOPICS_TABLE]) ? $sql_data[TOPICS_TABLE] . ', ' : '') . 'topic_posts_softdeleted = topic_posts_softdeleted - 1';
|
||||
}
|
||||
$phpbb_content_visibility->remove_post_from_statistic($data, $sql_data);
|
||||
}
|
||||
|
||||
$sql = 'SELECT 1 AS has_attachments
|
||||
@@ -2251,17 +2256,17 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
{
|
||||
case 'post':
|
||||
$phpbb_notifications->add_notifications(array(
|
||||
'quote',
|
||||
'topic',
|
||||
'notification.type.quote',
|
||||
'notification.type.topic',
|
||||
), $notification_data);
|
||||
break;
|
||||
|
||||
case 'reply':
|
||||
case 'quote':
|
||||
$phpbb_notifications->add_notifications(array(
|
||||
'quote',
|
||||
'bookmark',
|
||||
'post',
|
||||
'notification.type.quote',
|
||||
'notification.type.bookmark',
|
||||
'notification.type.post',
|
||||
), $notification_data);
|
||||
break;
|
||||
|
||||
@@ -2270,10 +2275,10 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
case 'edit':
|
||||
case 'edit_last_post':
|
||||
$phpbb_notifications->update_notifications(array(
|
||||
'quote',
|
||||
'bookmark',
|
||||
'topic',
|
||||
'post',
|
||||
'notification.type.quote',
|
||||
'notification.type.bookmark',
|
||||
'notification.type.topic',
|
||||
'notification.type.post',
|
||||
), $notification_data);
|
||||
break;
|
||||
}
|
||||
@@ -2283,12 +2288,12 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
switch ($mode)
|
||||
{
|
||||
case 'post':
|
||||
$phpbb_notifications->add_notifications('topic_in_queue', $notification_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.topic_in_queue', $notification_data);
|
||||
break;
|
||||
|
||||
case 'reply':
|
||||
case 'quote':
|
||||
$phpbb_notifications->add_notifications('post_in_queue', $notification_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.post_in_queue', $notification_data);
|
||||
break;
|
||||
|
||||
case 'edit_topic':
|
||||
@@ -2305,20 +2310,20 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
{
|
||||
case 'edit_topic':
|
||||
case 'edit_first_post':
|
||||
$phpbb_notifications->add_notifications('topic_in_queue', $notification_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.topic_in_queue', $notification_data);
|
||||
|
||||
// Delete the approve_post notification so we can notify the user again,
|
||||
// when his post got reapproved
|
||||
$phpbb_notifications->delete_notifications('approve_post', $notification_data['post_id']);
|
||||
$phpbb_notifications->delete_notifications('notification.type.approve_post', $notification_data['post_id']);
|
||||
break;
|
||||
|
||||
case 'edit':
|
||||
case 'edit_last_post':
|
||||
$phpbb_notifications->add_notifications('post_in_queue', $notification_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.post_in_queue', $notification_data);
|
||||
|
||||
// Delete the approve_post notification so we can notify the user again,
|
||||
// when his post got reapproved
|
||||
$phpbb_notifications->delete_notifications('approve_post', $notification_data['post_id']);
|
||||
$phpbb_notifications->delete_notifications('notification.type.approve_post', $notification_data['post_id']);
|
||||
break;
|
||||
|
||||
case 'post':
|
||||
@@ -2373,12 +2378,33 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
* event is to modify the return URL ($url).
|
||||
*
|
||||
* @event core.submit_post_end
|
||||
* @var string url The "Return to topic" URL
|
||||
* @var array data Array of post data about the
|
||||
* submitted post
|
||||
* @var string mode Variable containing posting mode value
|
||||
* @var string subject Variable containing post subject value
|
||||
* @var string username Variable containing post author name
|
||||
* @var int topic_type Variable containing topic type value
|
||||
* @var array poll Array with the poll data for the post
|
||||
* @var array data Array with the data for the post
|
||||
* @var int post_visibility Variable containing up to date post visibility
|
||||
* @var bool update_message Flag indicating if the post will be updated
|
||||
* @var bool update_search_index Flag indicating if the search index will be updated
|
||||
* @var string url The "Return to topic" URL
|
||||
*
|
||||
* @since 3.1.0-a3
|
||||
* @change 3.1.0-RC3 Added vars mode, subject, username, topic_type,
|
||||
* poll, update_message, update_search_index
|
||||
*/
|
||||
$vars = array('url', 'data');
|
||||
$vars = array(
|
||||
'mode',
|
||||
'subject',
|
||||
'username',
|
||||
'topic_type',
|
||||
'poll',
|
||||
'data',
|
||||
'post_visibility',
|
||||
'update_message',
|
||||
'update_search_index',
|
||||
'url',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.submit_post_end', compact($vars)));
|
||||
|
||||
return $url;
|
||||
@@ -2514,7 +2540,7 @@ function phpbb_upload_popup($forum_style = 0)
|
||||
/**
|
||||
* Do the various checks required for removing posts as well as removing it
|
||||
*/
|
||||
function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $is_soft = false, $soft_delete_reason = '')
|
||||
function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $is_soft = false, $delete_reason = '')
|
||||
{
|
||||
global $user, $auth, $config, $request;
|
||||
global $phpbb_root_path, $phpEx;
|
||||
@@ -2547,19 +2573,19 @@ function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $
|
||||
'post_postcount' => $post_data['post_postcount'],
|
||||
);
|
||||
|
||||
$next_post_id = delete_post($forum_id, $topic_id, $post_id, $data, $is_soft, $soft_delete_reason);
|
||||
$next_post_id = delete_post($forum_id, $topic_id, $post_id, $data, $is_soft, $delete_reason);
|
||||
$post_username = ($post_data['poster_id'] == ANONYMOUS && !empty($post_data['post_username'])) ? $post_data['post_username'] : $post_data['username'];
|
||||
|
||||
if ($next_post_id === false)
|
||||
{
|
||||
add_log('mod', $forum_id, $topic_id, (($is_soft) ? 'LOG_SOFTDELETE_TOPIC' : 'LOG_DELETE_TOPIC'), $post_data['topic_title'], $post_username, $soft_delete_reason);
|
||||
add_log('mod', $forum_id, $topic_id, (($is_soft) ? 'LOG_SOFTDELETE_TOPIC' : 'LOG_DELETE_TOPIC'), $post_data['topic_title'], $post_username, $delete_reason);
|
||||
|
||||
$meta_info = append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id");
|
||||
$message = $user->lang['POST_DELETED'];
|
||||
}
|
||||
else
|
||||
{
|
||||
add_log('mod', $forum_id, $topic_id, (($is_soft) ? 'LOG_SOFTDELETE_POST' : 'LOG_DELETE_POST'), $post_data['post_subject'], $post_username, $soft_delete_reason);
|
||||
add_log('mod', $forum_id, $topic_id, (($is_soft) ? 'LOG_SOFTDELETE_POST' : 'LOG_DELETE_POST'), $post_data['post_subject'], $post_username, $delete_reason);
|
||||
|
||||
$meta_info = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&p=$next_post_id") . "#p$next_post_id";
|
||||
$message = $user->lang['POST_DELETED'];
|
||||
|
@@ -212,7 +212,7 @@ function get_folder($user_id, $folder_id = false)
|
||||
);
|
||||
}
|
||||
|
||||
if ($folder_id !== false && !isset($folder[$folder_id]))
|
||||
if ($folder_id !== false && $folder_id !== PRIVMSGS_HOLD_BOX && !isset($folder[$folder_id]))
|
||||
{
|
||||
trigger_error('UNKNOWN_FOLDER');
|
||||
}
|
||||
@@ -883,7 +883,7 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id)
|
||||
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
|
||||
$phpbb_notifications->mark_notifications_read('pm', $msg_id, $user_id);
|
||||
$phpbb_notifications->mark_notifications_read('notification.type.pm', $msg_id, $user_id);
|
||||
|
||||
$sql = 'UPDATE ' . PRIVMSGS_TO_TABLE . "
|
||||
SET pm_unread = 0
|
||||
@@ -914,6 +914,24 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id)
|
||||
}
|
||||
}
|
||||
|
||||
function mark_folder_read($user_id, $folder_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$sql = 'SELECT msg_id
|
||||
FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE folder_id = ' . ((int) $folder_id) . '
|
||||
AND user_id = ' . ((int) $user_id) . '
|
||||
AND pm_unread = 1';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
update_unread_status(true, $row['msg_id'], $user_id, $folder_id);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle all actions possible with marked messages
|
||||
*/
|
||||
@@ -1114,7 +1132,7 @@ function delete_pm($user_id, $msg_ids, $folder_id)
|
||||
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
|
||||
$phpbb_notifications->delete_notifications('pm', array_keys($delete_rows));
|
||||
$phpbb_notifications->delete_notifications('notification.type.pm', array_keys($delete_rows));
|
||||
|
||||
// Now we have to check which messages we can delete completely
|
||||
$sql = 'SELECT msg_id
|
||||
@@ -1296,7 +1314,7 @@ function phpbb_delete_users_pms($user_ids)
|
||||
AND ' . $db->sql_in_set('msg_id', $delivered_msg);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$phpbb_notifications->delete_notifications('pm', $delivered_msg);
|
||||
$phpbb_notifications->delete_notifications('notification.type.pm', $delivered_msg);
|
||||
}
|
||||
|
||||
if (!empty($undelivered_msg))
|
||||
@@ -1309,7 +1327,7 @@ function phpbb_delete_users_pms($user_ids)
|
||||
WHERE ' . $db->sql_in_set('msg_id', $undelivered_msg);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$phpbb_notifications->delete_notifications('pm', $undelivered_msg);
|
||||
$phpbb_notifications->delete_notifications('notification.type.pm', $undelivered_msg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1353,7 +1371,7 @@ function phpbb_delete_users_pms($user_ids)
|
||||
WHERE ' . $db->sql_in_set('msg_id', $delete_ids);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$phpbb_notifications->delete_notifications('pm', $delete_ids);
|
||||
$phpbb_notifications->delete_notifications('notification.type.pm', $delete_ids);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1573,7 +1591,7 @@ function get_folder_status($folder_id, $folder)
|
||||
'cur' => $folder['num_messages'],
|
||||
'remaining' => ($user->data['message_limit']) ? $user->data['message_limit'] - $folder['num_messages'] : 0,
|
||||
'max' => $user->data['message_limit'],
|
||||
'percent' => ($user->data['message_limit']) ? (($user->data['message_limit'] > 0) ? round(($folder['num_messages'] / $user->data['message_limit']) * 100) : 100) : 0,
|
||||
'percent' => ($user->data['message_limit']) ? (($user->data['message_limit'] > 0) ? floor(($folder['num_messages'] / $user->data['message_limit']) * 100) : 100) : 0,
|
||||
);
|
||||
|
||||
$return['message'] = $user->lang('FOLDER_STATUS_MSG', $user->lang('MESSAGES_COUNT', (int) $return['max']), $return['cur'], $return['percent']);
|
||||
@@ -1911,11 +1929,11 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true)
|
||||
|
||||
if ($mode == 'edit')
|
||||
{
|
||||
$phpbb_notifications->update_notifications('pm', $pm_data);
|
||||
$phpbb_notifications->update_notifications('notification.type.pm', $pm_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$phpbb_notifications->add_notifications('pm', $pm_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.pm', $pm_data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -507,8 +507,6 @@ class ftp extends transfer
|
||||
|
||||
/**
|
||||
* FTP fsock transfer class
|
||||
*
|
||||
* @author wGEric
|
||||
*/
|
||||
class ftp_fsock extends transfer
|
||||
{
|
||||
|
@@ -52,11 +52,17 @@ class filespec
|
||||
*/
|
||||
protected $plupload;
|
||||
|
||||
/**
|
||||
* phpBB Mimetype guesser
|
||||
* @var \phpbb\mimetype\guesser
|
||||
*/
|
||||
protected $mimetype_guesser;
|
||||
|
||||
/**
|
||||
* File Class
|
||||
* @access private
|
||||
*/
|
||||
function filespec($upload_ary, $upload_namespace, \phpbb\plupload\plupload $plupload = null)
|
||||
function filespec($upload_ary, $upload_namespace, \phpbb\mimetype\guesser $mimetype_guesser = null, \phpbb\plupload\plupload $plupload = null)
|
||||
{
|
||||
if (!isset($upload_ary))
|
||||
{
|
||||
@@ -76,7 +82,7 @@ class filespec
|
||||
|
||||
if (!$this->mimetype)
|
||||
{
|
||||
$this->mimetype = 'application/octetstream';
|
||||
$this->mimetype = 'application/octet-stream';
|
||||
}
|
||||
|
||||
$this->extension = strtolower(self::get_extension($this->realname));
|
||||
@@ -90,6 +96,7 @@ class filespec
|
||||
$this->local = (isset($upload_ary['local_mode'])) ? true : false;
|
||||
$this->upload = $upload_namespace;
|
||||
$this->plupload = $plupload;
|
||||
$this->mimetype_guesser = $mimetype_guesser;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -97,6 +104,7 @@ class filespec
|
||||
*
|
||||
* @param real|unique|unique_ext $mode real creates a realname, filtering some characters, lowering every character. Unique creates an unique filename
|
||||
* @param string $prefix Prefix applied to filename
|
||||
* @param string $user_id The user_id is only needed for when cleaning a user's avatar
|
||||
* @access public
|
||||
*/
|
||||
function clean_filename($mode = 'unique', $prefix = '', $user_id = '')
|
||||
@@ -215,25 +223,24 @@ class filespec
|
||||
}
|
||||
|
||||
/**
|
||||
* Get mimetype. Utilize mime_content_type if the function exist.
|
||||
* Not used at the moment...
|
||||
* Get mimetype
|
||||
*
|
||||
* @param string $filename Filename that needs to be checked
|
||||
* @return string Mimetype of supplied filename
|
||||
*/
|
||||
function get_mimetype($filename)
|
||||
{
|
||||
$mimetype = '';
|
||||
|
||||
if (function_exists('mime_content_type'))
|
||||
if ($this->mimetype_guesser !== null)
|
||||
{
|
||||
$mimetype = mime_content_type($filename);
|
||||
$mimetype = $this->mimetype_guesser->guess($filename, $this->uploadname);
|
||||
|
||||
if ($mimetype !== 'application/octet-stream')
|
||||
{
|
||||
$this->mimetype = $mimetype;
|
||||
}
|
||||
}
|
||||
|
||||
// Some browsers choke on a mimetype of application/octet-stream
|
||||
if (!$mimetype || $mimetype == 'application/octet-stream')
|
||||
{
|
||||
$mimetype = 'application/octetstream';
|
||||
}
|
||||
|
||||
return $mimetype;
|
||||
return $this->mimetype;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -276,8 +283,9 @@ class filespec
|
||||
* Move file to destination folder
|
||||
* The phpbb_root_path variable will be applied to the destination path
|
||||
*
|
||||
* @param string $destination_path Destination path, for example $config['avatar_path']
|
||||
* @param string $destination Destination path, for example $config['avatar_path']
|
||||
* @param bool $overwrite If set to true, an already existing file will be overwritten
|
||||
* @param bool $skip_image_check If set to true, the check for the file to be a valid image is skipped
|
||||
* @param string $chmod Permission mask for chmodding the file after a successful move. The mode entered here reflects the mode defined by {@link phpbb_chmod()}
|
||||
*
|
||||
* @access public
|
||||
@@ -372,6 +380,9 @@ class filespec
|
||||
// Try to get real filesize from destination folder
|
||||
$this->filesize = (@filesize($this->destination_file)) ? @filesize($this->destination_file) : $this->filesize;
|
||||
|
||||
// Get mimetype of supplied file
|
||||
$this->mimetype = $this->get_mimetype($this->destination_file);
|
||||
|
||||
if ($this->is_image() && !$skip_image_check)
|
||||
{
|
||||
$this->width = $this->height = 0;
|
||||
@@ -498,6 +509,8 @@ class fileupload
|
||||
* @param int $min_height Minimum image height (only checked for images)
|
||||
* @param int $max_width Maximum image width (only checked for images)
|
||||
* @param int $max_height Maximum image height (only checked for images)
|
||||
* @param bool|array $disallowed_content If enabled, the first 256 bytes of the file must not
|
||||
* contain any of its values. Defaults to false.
|
||||
*
|
||||
*/
|
||||
function fileupload($error_prefix = '', $allowed_extensions = false, $max_filesize = false, $min_width = false, $min_height = false, $max_width = false, $max_height = false, $disallowed_content = false)
|
||||
@@ -578,12 +591,13 @@ class fileupload
|
||||
* Upload file from users harddisk
|
||||
*
|
||||
* @param string $form_name Form name assigned to the file input field (if it is an array, the key has to be specified)
|
||||
* @param \phpbb\mimetype\guesser $mimetype_guesser Mimetype guesser
|
||||
* @param \phpbb\plupload\plupload $plupload The plupload object
|
||||
*
|
||||
* @return object $file Object "filespec" is returned, all further operations can be done with this object
|
||||
* @access public
|
||||
*/
|
||||
function form_upload($form_name, \phpbb\plupload\plupload $plupload = null)
|
||||
function form_upload($form_name, \phpbb\mimetype\guesser $mimetype_guesser = null, \phpbb\plupload\plupload $plupload = null)
|
||||
{
|
||||
global $user, $request;
|
||||
|
||||
@@ -599,7 +613,7 @@ class fileupload
|
||||
}
|
||||
}
|
||||
|
||||
$file = new filespec($upload, $this, $plupload);
|
||||
$file = new filespec($upload, $this, $mimetype_guesser, $plupload);
|
||||
|
||||
if ($file->init_error)
|
||||
{
|
||||
@@ -659,7 +673,7 @@ class fileupload
|
||||
/**
|
||||
* Move file from another location to phpBB
|
||||
*/
|
||||
function local_upload($source_file, $filedata = false)
|
||||
function local_upload($source_file, $filedata = false, \phpbb\mimetype\guesser $mimetype_guesser = null)
|
||||
{
|
||||
global $user, $request;
|
||||
|
||||
@@ -672,20 +686,6 @@ class fileupload
|
||||
{
|
||||
$upload['name'] = utf8_basename($source_file);
|
||||
$upload['size'] = 0;
|
||||
$mimetype = '';
|
||||
|
||||
if (function_exists('mime_content_type'))
|
||||
{
|
||||
$mimetype = mime_content_type($source_file);
|
||||
}
|
||||
|
||||
// Some browsers choke on a mimetype of application/octet-stream
|
||||
if (!$mimetype || $mimetype == 'application/octet-stream')
|
||||
{
|
||||
$mimetype = 'application/octetstream';
|
||||
}
|
||||
|
||||
$upload['type'] = $mimetype;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -694,7 +694,7 @@ class fileupload
|
||||
$upload['type'] = $filedata['type'];
|
||||
}
|
||||
|
||||
$file = new filespec($upload, $this);
|
||||
$file = new filespec($upload, $this, $mimetype_guesser);
|
||||
|
||||
if ($file->init_error)
|
||||
{
|
||||
@@ -749,10 +749,11 @@ class fileupload
|
||||
* Uploads file from given url
|
||||
*
|
||||
* @param string $upload_url URL pointing to file to upload, for example http://www.foobar.com/example.gif
|
||||
* @param \phpbb\mimetype\guesser $mimetype_guesser Mimetype guesser
|
||||
* @return object $file Object "filespec" is returned, all further operations can be done with this object
|
||||
* @access public
|
||||
*/
|
||||
function remote_upload($upload_url)
|
||||
function remote_upload($upload_url, \phpbb\mimetype\guesser $mimetype_guesser = null)
|
||||
{
|
||||
global $user, $phpbb_root_path;
|
||||
|
||||
@@ -931,7 +932,7 @@ class fileupload
|
||||
|
||||
$upload_ary['tmp_name'] = $filename;
|
||||
|
||||
$file = new filespec($upload_ary, $this);
|
||||
$file = new filespec($upload_ary, $this, $mimetype_guesser);
|
||||
$this->common_checks($file);
|
||||
|
||||
return $file;
|
||||
|
@@ -29,7 +29,7 @@ if (!defined('IN_PHPBB'))
|
||||
* @param \phpbb\extension\manager $manager Extension manager
|
||||
* @param RequestContext $context Symfony RequestContext object
|
||||
* @param string $root_path Root path
|
||||
* @param string $php_ext PHP extension
|
||||
* @param string $php_ext PHP file extension
|
||||
* @return null
|
||||
*/
|
||||
function phpbb_get_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path, $php_ext)
|
||||
@@ -52,7 +52,7 @@ function phpbb_get_url_matcher(\phpbb\extension\manager $manager, RequestContext
|
||||
*
|
||||
* @param \phpbb\extension\manager $manager Extension manager
|
||||
* @param string $root_path Root path
|
||||
* @param string $php_ext PHP extension
|
||||
* @param string $php_ext PHP file extension
|
||||
* @return null
|
||||
*/
|
||||
function phpbb_create_dumped_url_matcher(\phpbb\extension\manager $manager, $root_path, $php_ext)
|
||||
@@ -88,7 +88,7 @@ function phpbb_create_url_matcher(\phpbb\extension\manager $manager, RequestCont
|
||||
*
|
||||
* @param RequestContext $context Symfony RequestContext object
|
||||
* @param string $root_path Root path
|
||||
* @param string $php_ext PHP extension
|
||||
* @param string $php_ext PHP file extension
|
||||
* @return phpbb_url_matcher
|
||||
*/
|
||||
function phpbb_load_url_matcher(RequestContext $context, $root_path, $php_ext)
|
||||
@@ -103,7 +103,7 @@ function phpbb_load_url_matcher(RequestContext $context, $root_path, $php_ext)
|
||||
* The class is automatically dumped to the cache directory
|
||||
*
|
||||
* @param string $root_path Root path
|
||||
* @param string $php_ext PHP extension
|
||||
* @param string $php_ext PHP file extension
|
||||
* @return bool True if it exists, false if not
|
||||
*/
|
||||
function phpbb_url_matcher_dumped($root_path, $php_ext)
|
||||
|
@@ -363,12 +363,16 @@ function user_add($user_row, $cp_data = false)
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove User
|
||||
* @param $mode Either 'retain' or 'remove'
|
||||
*/
|
||||
* Remove User
|
||||
*
|
||||
* @param string $mode Either 'retain' or 'remove'
|
||||
* @param mixed $user_ids Either an array of integers or an integer
|
||||
* @param bool $retain_username
|
||||
* @return bool
|
||||
*/
|
||||
function user_delete($mode, $user_ids, $retain_username = true)
|
||||
{
|
||||
global $cache, $config, $db, $user, $auth, $phpbb_dispatcher;
|
||||
global $cache, $config, $db, $user, $phpbb_dispatcher;
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
$db->sql_transaction('begin');
|
||||
@@ -555,11 +559,6 @@ function user_delete($mode, $user_ids, $retain_username = true)
|
||||
WHERE ' . $db->sql_in_set('poster_id', $user_ids);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = 'UPDATE ' . POSTS_TABLE . '
|
||||
SET post_edit_user = ' . ANONYMOUS . '
|
||||
WHERE ' . $db->sql_in_set('post_edit_user', $user_ids);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET user_posts = user_posts + ' . $added_guest_posts . '
|
||||
WHERE user_id = ' . ANONYMOUS;
|
||||
@@ -589,6 +588,30 @@ function user_delete($mode, $user_ids, $retain_username = true)
|
||||
|
||||
$cache->destroy('sql', MODERATOR_CACHE_TABLE);
|
||||
|
||||
// Change user_id to anonymous for posts edited by this user
|
||||
$sql = 'UPDATE ' . POSTS_TABLE . '
|
||||
SET post_edit_user = ' . ANONYMOUS . '
|
||||
WHERE ' . $db->sql_in_set('post_edit_user', $user_ids);
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Change user_id to anonymous for pms edited by this user
|
||||
$sql = 'UPDATE ' . PRIVMSGS_TABLE . '
|
||||
SET message_edit_user = ' . ANONYMOUS . '
|
||||
WHERE ' . $db->sql_in_set('message_edit_user', $user_ids);
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Change user_id to anonymous for posts deleted by this user
|
||||
$sql = 'UPDATE ' . POSTS_TABLE . '
|
||||
SET post_delete_user = ' . ANONYMOUS . '
|
||||
WHERE ' . $db->sql_in_set('post_delete_user', $user_ids);
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Change user_id to anonymous for topics deleted by this user
|
||||
$sql = 'UPDATE ' . TOPICS_TABLE . '
|
||||
SET topic_delete_user = ' . ANONYMOUS . '
|
||||
WHERE ' . $db->sql_in_set('topic_delete_user', $user_ids);
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Delete user log entries about this user
|
||||
$sql = 'DELETE FROM ' . LOG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('reportee_id', $user_ids);
|
||||
@@ -2675,7 +2698,7 @@ function group_user_add($group_id, $user_id_ary = false, $username_ary = false,
|
||||
|
||||
foreach ($add_id_ary as $user_id)
|
||||
{
|
||||
$phpbb_notifications->add_notifications('group_request', array(
|
||||
$phpbb_notifications->add_notifications('notification.type.group_request', array(
|
||||
'group_id' => $group_id,
|
||||
'user_id' => $user_id,
|
||||
'group_name' => $group_name,
|
||||
@@ -2832,7 +2855,7 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false,
|
||||
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
|
||||
$phpbb_notifications->delete_notifications('group_request', $user_id_ary, $group_id);
|
||||
$phpbb_notifications->delete_notifications('notification.type.group_request', $user_id_ary, $group_id);
|
||||
|
||||
// Return false - no error
|
||||
return false;
|
||||
@@ -2996,12 +3019,12 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna
|
||||
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
|
||||
$phpbb_notifications->add_notifications('group_request_approved', array(
|
||||
$phpbb_notifications->add_notifications('notification.type.group_request_approved', array(
|
||||
'user_ids' => $user_id_ary,
|
||||
'group_id' => $group_id,
|
||||
'group_name' => $group_name,
|
||||
));
|
||||
$phpbb_notifications->delete_notifications('group_request', $user_id_ary, $group_id);
|
||||
$phpbb_notifications->delete_notifications('notification.type.group_request', $user_id_ary, $group_id);
|
||||
|
||||
$log = 'LOG_USERS_APPROVED';
|
||||
break;
|
||||
|
@@ -25,7 +25,7 @@ class mcp_ban
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $user, $auth, $template, $cache;
|
||||
global $db, $user, $auth, $template, $request, $phpbb_dispatcher;
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
@@ -33,55 +33,133 @@ class mcp_ban
|
||||
// Include the admin banning interface...
|
||||
include($phpbb_root_path . 'includes/acp/acp_ban.' . $phpEx);
|
||||
|
||||
$bansubmit = (isset($_POST['bansubmit'])) ? true : false;
|
||||
$unbansubmit = (isset($_POST['unbansubmit'])) ? true : false;
|
||||
$current_time = time();
|
||||
$bansubmit = $request->is_set_post('bansubmit');
|
||||
$unbansubmit = $request->is_set_post('unbansubmit');
|
||||
|
||||
$user->add_lang(array('acp/ban', 'acp/users'));
|
||||
$this->tpl_name = 'mcp_ban';
|
||||
|
||||
/**
|
||||
* Use this event to pass perform actions when a ban is issued or revoked
|
||||
*
|
||||
* @event core.mcp_ban_main
|
||||
* @var bool bansubmit True if a ban is issued
|
||||
* @var bool unbansubmit True if a ban is removed
|
||||
* @var string mode Mode of the ban that is being worked on
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array(
|
||||
'bansubmit',
|
||||
'unbansubmit',
|
||||
'mode',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_ban_main', compact($vars)));
|
||||
|
||||
// Ban submitted?
|
||||
if ($bansubmit)
|
||||
{
|
||||
// Grab the list of entries
|
||||
$ban = request_var('ban', '', ($mode === 'user') ? true : false);
|
||||
|
||||
if ($mode === 'user')
|
||||
{
|
||||
$ban = utf8_normalize_nfc($ban);
|
||||
}
|
||||
|
||||
$ban_len = request_var('banlength', 0);
|
||||
$ban_len_other = request_var('banlengthother', '');
|
||||
$ban_exclude = request_var('banexclude', 0);
|
||||
$ban_reason = utf8_normalize_nfc(request_var('banreason', '', true));
|
||||
$ban_give_reason = utf8_normalize_nfc(request_var('bangivereason', '', true));
|
||||
$ban = $request->variable('ban', '', $mode === 'user');
|
||||
$ban_length = $request->variable('banlength', 0);
|
||||
$ban_length_other = $request->variable('banlengthother', '');
|
||||
$ban_exclude = $request->variable('banexclude', 0);
|
||||
$ban_reason = $request->variable('banreason', '', true);
|
||||
$ban_give_reason = $request->variable('bangivereason', '', true);
|
||||
|
||||
if ($ban)
|
||||
{
|
||||
if (confirm_box(true))
|
||||
{
|
||||
user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason);
|
||||
$abort_ban = false;
|
||||
/**
|
||||
* Use this event to modify the ban details before the ban is performed
|
||||
*
|
||||
* @event core.mcp_ban_before
|
||||
* @var string mode One of the following: user, ip, email
|
||||
* @var string ban Either string or array with usernames, ips or email addresses
|
||||
* @var int ban_length Ban length in minutes
|
||||
* @var string ban_length_other Ban length as a date (YYYY-MM-DD)
|
||||
* @var bool ban_exclude Are we banning or excluding from another ban
|
||||
* @var string ban_reason Ban reason displayed to moderators
|
||||
* @var string ban_give_reason Ban reason displayed to the banned user
|
||||
* @var mixed abort_ban Either false, or an error message that is displayed to the user.
|
||||
* If a string is given the bans are not issued.
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array(
|
||||
'mode',
|
||||
'ban',
|
||||
'ban_length',
|
||||
'ban_length_other',
|
||||
'ban_exclude',
|
||||
'ban_reason',
|
||||
'ban_give_reason',
|
||||
'abort_ban',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_ban_before', compact($vars)));
|
||||
|
||||
if ($abort_ban)
|
||||
{
|
||||
trigger_error($abort_ban);
|
||||
}
|
||||
user_ban($mode, $ban, $ban_length, $ban_length_other, $ban_exclude, $ban_reason, $ban_give_reason);
|
||||
|
||||
/**
|
||||
* Use this event to perform actions after the ban has been performed
|
||||
*
|
||||
* @event core.mcp_ban_after
|
||||
* @var string mode One of the following: user, ip, email
|
||||
* @var string ban Either string or array with usernames, ips or email addresses
|
||||
* @var int ban_length Ban length in minutes
|
||||
* @var string ban_length_other Ban length as a date (YYYY-MM-DD)
|
||||
* @var bool ban_exclude Are we banning or excluding from another ban
|
||||
* @var string ban_reason Ban reason displayed to moderators
|
||||
* @var string ban_give_reason Ban reason displayed to the banned user
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array(
|
||||
'mode',
|
||||
'ban',
|
||||
'ban_length',
|
||||
'ban_length_other',
|
||||
'ban_exclude',
|
||||
'ban_reason',
|
||||
'ban_give_reason',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_ban_after', compact($vars)));
|
||||
|
||||
trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">« ' . $user->lang['BACK_TO_PREV'] . '</a>');
|
||||
}
|
||||
else
|
||||
{
|
||||
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
|
||||
$hidden_fields = array(
|
||||
'mode' => $mode,
|
||||
'ban' => $ban,
|
||||
'bansubmit' => true,
|
||||
'banlength' => $ban_len,
|
||||
'banlengthother' => $ban_len_other,
|
||||
'banlength' => $ban_length,
|
||||
'banlengthother' => $ban_length_other,
|
||||
'banexclude' => $ban_exclude,
|
||||
'banreason' => $ban_reason,
|
||||
'bangivereason' => $ban_give_reason)));
|
||||
'bangivereason' => $ban_give_reason,
|
||||
);
|
||||
|
||||
/**
|
||||
* Use this event to pass data from the ban form to the confirmation screen
|
||||
*
|
||||
* @event core.mcp_ban_confirm
|
||||
* @var array hidden_fields Hidden fields that are passed through the confirm screen
|
||||
* @since 3.1.0-RC5
|
||||
*/
|
||||
$vars = array('hidden_fields');
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_ban_confirm', compact($vars)));
|
||||
|
||||
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields($hidden_fields));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ($unbansubmit)
|
||||
{
|
||||
$ban = request_var('unban', array(''));
|
||||
$ban = $request->variable('unban', array(''));
|
||||
|
||||
if ($ban)
|
||||
{
|
||||
@@ -157,9 +235,9 @@ class mcp_ban
|
||||
}
|
||||
|
||||
// As a "service" we will check if any post id is specified and populate the username of the poster id if given
|
||||
$post_id = request_var('p', 0);
|
||||
$user_id = request_var('u', 0);
|
||||
$username = $pre_fill = false;
|
||||
$post_id = $request->variable('p', 0);
|
||||
$user_id = $request->variable('u', 0);
|
||||
$pre_fill = false;
|
||||
|
||||
if ($user_id && $user_id <> ANONYMOUS)
|
||||
{
|
||||
|
@@ -26,6 +26,7 @@ function mcp_front_view($id, $mode, $action)
|
||||
{
|
||||
global $phpEx, $phpbb_root_path, $config;
|
||||
global $template, $db, $user, $auth, $module;
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
// Latest 5 unapproved
|
||||
if ($module->loaded('queue'))
|
||||
@@ -65,7 +66,7 @@ function mcp_front_view($id, $mode, $action)
|
||||
FROM ' . POSTS_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('forum_id', $forum_list) . '
|
||||
AND ' . $db->sql_in_set('post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE)) . '
|
||||
ORDER BY post_time DESC';
|
||||
ORDER BY post_time DESC, post_id DESC';
|
||||
$result = $db->sql_query_limit($sql, 5);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
@@ -80,6 +81,19 @@ function mcp_front_view($id, $mode, $action)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Alter list of posts and total as required
|
||||
*
|
||||
* @event core.mcp_front_view_queue_postid_list_after
|
||||
* @var int total Number of unapproved posts
|
||||
* @var array post_list List of unapproved posts
|
||||
* @var array forum_list List of forums that contain the posts
|
||||
* @var array forum_names Associative array with forum_id as key and it's corresponding forum_name as value
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('total', 'post_list', 'forum_list', 'forum_names');
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_front_view_queue_postid_list_after', compact($vars)));
|
||||
|
||||
if ($total)
|
||||
{
|
||||
$sql = 'SELECT p.post_id, p.post_subject, p.post_time, p.post_attachment, p.poster_id, p.post_username, u.username, u.username_clean, u.user_colour, t.topic_id, t.topic_title, t.topic_first_post_id, p.forum_id
|
||||
@@ -87,7 +101,7 @@ function mcp_front_view($id, $mode, $action)
|
||||
WHERE ' . $db->sql_in_set('p.post_id', $post_list) . '
|
||||
AND t.topic_id = p.topic_id
|
||||
AND p.poster_id = u.user_id
|
||||
ORDER BY p.post_time DESC';
|
||||
ORDER BY p.post_time DESC, p.post_id DESC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
@@ -176,8 +190,20 @@ function mcp_front_view($id, $mode, $action)
|
||||
AND p.poster_id = u2.user_id
|
||||
AND ' . $db->sql_in_set('p.forum_id', $forum_list),
|
||||
|
||||
'ORDER_BY' => 'p.post_time DESC',
|
||||
'ORDER_BY' => 'p.post_time DESC, p.post_id DESC',
|
||||
);
|
||||
|
||||
/**
|
||||
* Alter sql query to get latest reported posts
|
||||
*
|
||||
* @event core.mcp_front_reports_listing_query_before
|
||||
* @var int sql_ary Associative array with the query to be executed
|
||||
* @var array forum_list List of forums that contain the posts
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array('sql_ary', 'forum_list');
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_front_reports_listing_query_before', compact($vars)));
|
||||
|
||||
$sql = $db->sql_build_query('SELECT', $sql_ary);
|
||||
$result = $db->sql_query_limit($sql, 5);
|
||||
|
||||
|
@@ -161,9 +161,13 @@ class mcp_main
|
||||
* This event allows you to handle custom quickmod options
|
||||
*
|
||||
* @event core.modify_quickmod_actions
|
||||
* @var string action Topic quick moderation action name
|
||||
* @var bool quickmod Flag indicating whether MCP is in quick moderation mode
|
||||
* @since 3.1.0-a4
|
||||
* @change 3.1.0-RC4 Added variables: action, quickmod
|
||||
*/
|
||||
$phpbb_dispatcher->dispatch('core.modify_quickmod_actions');
|
||||
$vars = array('action', 'quickmod');
|
||||
extract($phpbb_dispatcher->trigger_event('core.modify_quickmod_actions', compact($vars)));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -750,7 +754,8 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''
|
||||
{
|
||||
global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container;
|
||||
|
||||
if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_delete')))
|
||||
$check_permission = ($is_soft) ? 'm_softdelete' : 'm_delete';
|
||||
if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array($check_permission)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -878,7 +883,8 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
|
||||
{
|
||||
global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container;
|
||||
|
||||
if (!phpbb_check_ids($post_ids, POSTS_TABLE, 'post_id', array('m_softdelete')))
|
||||
$check_permission = ($is_soft) ? 'm_softdelete' : 'm_delete';
|
||||
if (!phpbb_check_ids($post_ids, POSTS_TABLE, 'post_id', array($check_permission)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -1114,6 +1120,7 @@ function mcp_fork_topic($topic_ids)
|
||||
$forum_id = request_var('f', 0);
|
||||
$redirect = request_var('redirect', build_url(array('action', 'quickmod')));
|
||||
$additional_msg = $success_msg = '';
|
||||
$counter = array();
|
||||
|
||||
$s_hidden_fields = build_hidden_fields(array(
|
||||
'topic_id_list' => $topic_ids,
|
||||
@@ -1264,7 +1271,7 @@ function mcp_fork_topic($topic_ids)
|
||||
$sql = 'SELECT *
|
||||
FROM ' . POSTS_TABLE . "
|
||||
WHERE topic_id = $topic_id
|
||||
ORDER BY post_time ASC";
|
||||
ORDER BY post_time ASC, post_id ASC";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$post_rows = array();
|
||||
@@ -1306,9 +1313,20 @@ function mcp_fork_topic($topic_ids)
|
||||
'post_edit_time' => (int) $row['post_edit_time'],
|
||||
'post_edit_count' => (int) $row['post_edit_count'],
|
||||
'post_edit_locked' => (int) $row['post_edit_locked'],
|
||||
'post_postcount' => 0,
|
||||
'post_postcount' => $row['post_postcount'],
|
||||
);
|
||||
|
||||
// Adjust post count only if the post can be incremented to the user counter
|
||||
if ($row['post_postcount'])
|
||||
{
|
||||
if (isset($counter[$row['poster_id']]))
|
||||
{
|
||||
++$counter[$row['poster_id']];
|
||||
}
|
||||
else
|
||||
{
|
||||
$counter[$row['poster_id']] = 1;
|
||||
}
|
||||
}
|
||||
$db->sql_query('INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
|
||||
$new_post_id = $db->sql_nextid();
|
||||
|
||||
@@ -1428,6 +1446,18 @@ function mcp_fork_topic($topic_ids)
|
||||
WHERE forum_id = ' . $to_forum_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
if (!empty($counter))
|
||||
{
|
||||
// Do only one query per user and not a query per post.
|
||||
foreach ($counter as $user_id => $count)
|
||||
{
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET user_posts = user_posts + ' . (int) $count . '
|
||||
WHERE user_id = ' . (int) $user_id;
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
sync('topic', 'topic_id', $new_topic_id_list);
|
||||
sync('forum', 'forum_id', $to_forum_id);
|
||||
|
||||
|
@@ -95,7 +95,7 @@ class mcp_pm_reports
|
||||
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
|
||||
$phpbb_notifications->mark_notifications_read_by_parent('report_pm', $report_id, $user->data['user_id']);
|
||||
$phpbb_notifications->mark_notifications_read_by_parent('notification.type.report_pm', $report_id, $user->data['user_id']);
|
||||
|
||||
$pm_id = $report['pm_id'];
|
||||
$report_id = $report['report_id'];
|
||||
|
@@ -37,6 +37,7 @@ class mcp_queue
|
||||
{
|
||||
global $auth, $db, $user, $template, $cache, $request;
|
||||
global $config, $phpbb_root_path, $phpEx, $action, $phpbb_container;
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
|
||||
|
||||
@@ -164,7 +165,7 @@ class mcp_queue
|
||||
{
|
||||
$post_id = (int) $topic_info[$topic_id]['topic_first_post_id'];
|
||||
|
||||
$phpbb_notifications->mark_notifications_read('topic_in_queue', $topic_id, $user->data['user_id']);
|
||||
$phpbb_notifications->mark_notifications_read('notification.type.topic_in_queue', $topic_id, $user->data['user_id']);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -172,7 +173,7 @@ class mcp_queue
|
||||
}
|
||||
}
|
||||
|
||||
$phpbb_notifications->mark_notifications_read('post_in_queue', $post_id, $user->data['user_id']);
|
||||
$phpbb_notifications->mark_notifications_read('notification.type.post_in_queue', $post_id, $user->data['user_id']);
|
||||
|
||||
$post_info = phpbb_get_post_data(array($post_id), 'm_approve', true);
|
||||
|
||||
@@ -429,6 +430,29 @@ class mcp_queue
|
||||
OR t.topic_delete_user = 0)
|
||||
$limit_time_sql
|
||||
ORDER BY $sort_order_sql";
|
||||
|
||||
/**
|
||||
* Alter sql query to get posts in queue to be accepted
|
||||
*
|
||||
* @event core.mcp_queue_get_posts_query_before
|
||||
* @var string sql Associative array with the query to be executed
|
||||
* @var array forum_list List of forums that contain the posts
|
||||
* @var int visibility_const Integer with one of the possible ITEM_* constant values
|
||||
* @var int topic_id If topic_id not equal to 0, the topic id to filter the posts to display
|
||||
* @var string limit_time_sql String with the SQL code to limit the time interval of the post (Note: May be empty string)
|
||||
* @var string sort_order_sql String with the ORDER BY SQL code used in this query
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array(
|
||||
'sql',
|
||||
'forum_list',
|
||||
'visibility_const',
|
||||
'topic_id',
|
||||
'limit_time_sql',
|
||||
'sort_order_sql',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_queue_get_posts_query_before', compact($vars)));
|
||||
|
||||
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
|
||||
|
||||
$i = 0;
|
||||
@@ -478,6 +502,29 @@ class mcp_queue
|
||||
AND topic_delete_user <> 0
|
||||
$limit_time_sql
|
||||
ORDER BY $sort_order_sql";
|
||||
|
||||
/**
|
||||
* Alter sql query to get information on all topics in the list of forums provided.
|
||||
*
|
||||
* @event core.mcp_queue_get_posts_for_topics_query_before
|
||||
* @var string sql String with the query to be executed
|
||||
* @var array forum_list List of forums that contain the posts
|
||||
* @var int visibility_const Integer with one of the possible ITEM_* constant values
|
||||
* @var int topic_id topic_id in the page request
|
||||
* @var string limit_time_sql String with the SQL code to limit the time interval of the post (Note: May be empty string)
|
||||
* @var string sort_order_sql String with the ORDER BY SQL code used in this query
|
||||
* @since 3.1.0-RC3
|
||||
*/
|
||||
$vars = array(
|
||||
'sql',
|
||||
'forum_list',
|
||||
'visibility_const',
|
||||
'topic_id',
|
||||
'limit_time_sql',
|
||||
'sort_order_sql',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_queue_get_posts_for_topics_query_before', compact($vars)));
|
||||
|
||||
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
|
||||
|
||||
$rowset = array();
|
||||
@@ -654,11 +701,11 @@ class mcp_queue
|
||||
// A single topic approval may also happen here, so handle deleting the respective notification.
|
||||
if (!$post_data['topic_posts_approved'])
|
||||
{
|
||||
$phpbb_notifications->delete_notifications('topic_in_queue', $post_data['topic_id']);
|
||||
$phpbb_notifications->delete_notifications('notification.type.topic_in_queue', $post_data['topic_id']);
|
||||
|
||||
if ($post_data['post_visibility'] == ITEM_UNAPPROVED)
|
||||
{
|
||||
$phpbb_notifications->add_notifications(array('topic'), $post_data);
|
||||
$phpbb_notifications->add_notifications(array('notification.type.topic'), $post_data);
|
||||
}
|
||||
if ($post_data['post_visibility'] != ITEM_APPROVED)
|
||||
{
|
||||
@@ -674,18 +721,18 @@ class mcp_queue
|
||||
if ($post_data['post_visibility'] == ITEM_UNAPPROVED)
|
||||
{
|
||||
$phpbb_notifications->add_notifications(array(
|
||||
'bookmark',
|
||||
'post',
|
||||
'notification.type.bookmark',
|
||||
'notification.type.post',
|
||||
), $post_data);
|
||||
}
|
||||
}
|
||||
$phpbb_notifications->add_notifications(array('quote'), $post_data);
|
||||
$phpbb_notifications->delete_notifications('post_in_queue', $post_id);
|
||||
$phpbb_notifications->add_notifications(array('notification.type.quote'), $post_data);
|
||||
$phpbb_notifications->delete_notifications('notification.type.post_in_queue', $post_id);
|
||||
|
||||
$phpbb_notifications->mark_notifications_read(array(
|
||||
'quote',
|
||||
'bookmark',
|
||||
'post',
|
||||
'notification.type.quote',
|
||||
'notification.type.bookmark',
|
||||
'notification.type.post',
|
||||
), $post_data['post_id'], $user->data['user_id']);
|
||||
|
||||
// Notify Poster?
|
||||
@@ -698,11 +745,11 @@ class mcp_queue
|
||||
|
||||
if (!$post_data['topic_posts_approved'])
|
||||
{
|
||||
$phpbb_notifications->add_notifications('approve_post', $post_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.approve_topic', $post_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$phpbb_notifications->add_notifications('approve_topic', $post_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.approve_post', $post_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -874,7 +921,7 @@ class mcp_queue
|
||||
'post_username' => $topic_data['topic_first_poster_name'],
|
||||
));
|
||||
|
||||
$phpbb_notifications->delete_notifications('topic_in_queue', $topic_id);
|
||||
$phpbb_notifications->delete_notifications('notification.type.topic_in_queue', $topic_id);
|
||||
|
||||
// Only add notifications, if we are not reapproving post
|
||||
// When the topic was already approved, but was edited and
|
||||
@@ -883,17 +930,17 @@ class mcp_queue
|
||||
if ($topic_data['topic_visibility'] == ITEM_UNAPPROVED)
|
||||
{
|
||||
$phpbb_notifications->add_notifications(array(
|
||||
'quote',
|
||||
'topic',
|
||||
'notification.type.quote',
|
||||
'notification.type.topic',
|
||||
), $topic_data);
|
||||
}
|
||||
|
||||
$phpbb_notifications->mark_notifications_read('quote', $topic_data['post_id'], $user->data['user_id']);
|
||||
$phpbb_notifications->mark_notifications_read('topic', $topic_id, $user->data['user_id']);
|
||||
$phpbb_notifications->mark_notifications_read('notification.type.quote', $topic_data['post_id'], $user->data['user_id']);
|
||||
$phpbb_notifications->mark_notifications_read('notification.type.topic', $topic_id, $user->data['user_id']);
|
||||
|
||||
if ($notify_poster)
|
||||
{
|
||||
$phpbb_notifications->add_notifications('approve_topic', $topic_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.approve_topic', $topic_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1131,12 +1178,12 @@ class mcp_queue
|
||||
$topic_information[$topic_id]['topic_posts_softdeleted'] == 0 &&
|
||||
$topic_information[$topic_id]['topic_posts_unapproved'] == $topic_posts_unapproved[$topic_id];
|
||||
|
||||
$phpbb_notifications->delete_notifications('post_in_queue', $post_id);
|
||||
$phpbb_notifications->delete_notifications('notification.type.post_in_queue', $post_id);
|
||||
|
||||
// Do we disapprove the whole topic? Remove potential notifications
|
||||
if ($disapprove_all_posts_in_topic)
|
||||
{
|
||||
$phpbb_notifications->delete_notifications('topic_in_queue', $post_data['topic_id']);
|
||||
$phpbb_notifications->delete_notifications('notification.type.topic_in_queue', $post_data['topic_id']);
|
||||
}
|
||||
|
||||
// Notify Poster?
|
||||
@@ -1181,13 +1228,13 @@ class mcp_queue
|
||||
{
|
||||
// If there is only 1 post when disapproving the topic,
|
||||
// we send the user a "disapprove topic" notification...
|
||||
$phpbb_notifications->add_notifications('disapprove_topic', $post_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.disapprove_topic', $post_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
// ... otherwise there are multiple unapproved posts and
|
||||
// all of them are disapproved as posts.
|
||||
$phpbb_notifications->add_notifications('disapprove_post', $post_data);
|
||||
$phpbb_notifications->add_notifications('notification.type.disapprove_post', $post_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -36,7 +36,7 @@ class mcp_reports
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $auth, $db, $user, $template, $cache;
|
||||
global $config, $phpbb_root_path, $phpEx, $action, $phpbb_container;
|
||||
global $config, $phpbb_root_path, $phpEx, $action, $phpbb_container, $phpbb_dispatcher;
|
||||
|
||||
include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
|
||||
|
||||
@@ -92,7 +92,7 @@ class mcp_reports
|
||||
|
||||
$phpbb_notifications = $phpbb_container->get('notification_manager');
|
||||
|
||||
$phpbb_notifications->mark_notifications_read('report_post', $post_id, $user->data['user_id']);
|
||||
$phpbb_notifications->mark_notifications_read('notification.type.report_post', $post_id, $user->data['user_id']);
|
||||
|
||||
if (!$report_id && $report['report_closed'])
|
||||
{
|
||||
@@ -364,6 +364,27 @@ class mcp_reports
|
||||
AND r.pm_id = 0
|
||||
$limit_time_sql
|
||||
ORDER BY $sort_order_sql";
|
||||
|
||||
/**
|
||||
* Alter sql query to get report id of all reports for requested forum and topic or just forum
|
||||
*
|
||||
* @event core.mcp_reports_get_reports_query_before
|
||||
* @var string sql String with the query to be executed
|
||||
* @var array forum_list List of forums that contain the posts
|
||||
* @var int topic_id topic_id in the page request
|
||||
* @var string limit_time_sql String with the SQL code to limit the time interval of the post (Note: May be empty string)
|
||||
* @var string sort_order_sql String with the ORDER BY SQL code used in this query
|
||||
* @since 3.1.0-RC4
|
||||
*/
|
||||
$vars = array(
|
||||
'sql',
|
||||
'forum_list',
|
||||
'topic_id',
|
||||
'limit_time_sql',
|
||||
'sort_order_sql',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_reports_get_reports_query_before', compact($vars)));
|
||||
|
||||
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
|
||||
|
||||
$i = 0;
|
||||
@@ -631,12 +652,12 @@ function close_report($report_id_list, $mode, $action, $pm = false)
|
||||
if ($pm)
|
||||
{
|
||||
add_log('mod', 0, 0, 'LOG_PM_REPORT_' . strtoupper($action) . 'D', $post_info[$report['pm_id']]['message_subject']);
|
||||
$phpbb_notifications->delete_notifications('report_pm', $report['pm_id']);
|
||||
$phpbb_notifications->delete_notifications('notification.type.report_pm', $report['pm_id']);
|
||||
}
|
||||
else
|
||||
{
|
||||
add_log('mod', $post_info[$report['post_id']]['forum_id'], $post_info[$report['post_id']]['topic_id'], 'LOG_REPORT_' . strtoupper($action) . 'D', $post_info[$report['post_id']]['post_subject']);
|
||||
$phpbb_notifications->delete_notifications('report_post', $report['post_id']);
|
||||
$phpbb_notifications->delete_notifications('notification.type.report_post', $report['post_id']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -654,7 +675,7 @@ function close_report($report_id_list, $mode, $action, $pm = false)
|
||||
|
||||
if ($pm)
|
||||
{
|
||||
$phpbb_notifications->add_notifications('report_pm_closed', array_merge($post_info[$post_id], array(
|
||||
$phpbb_notifications->add_notifications('notification.type.report_pm_closed', array_merge($post_info[$post_id], array(
|
||||
'reporter' => $reporter['user_id'],
|
||||
'closer_id' => $user->data['user_id'],
|
||||
'from_user_id' => $post_info[$post_id]['author_id'],
|
||||
@@ -662,7 +683,7 @@ function close_report($report_id_list, $mode, $action, $pm = false)
|
||||
}
|
||||
else
|
||||
{
|
||||
$phpbb_notifications->add_notifications('report_post_closed', array_merge($post_info[$post_id], array(
|
||||
$phpbb_notifications->add_notifications('notification.type.report_post_closed', array_merge($post_info[$post_id], array(
|
||||
'reporter' => $reporter['user_id'],
|
||||
'closer_id' => $user->data['user_id'],
|
||||
)));
|
||||
|
@@ -332,16 +332,16 @@ class mcp_warn
|
||||
|
||||
// We want to make the message available here as a reminder
|
||||
// Parse the message and subject
|
||||
$parse_flags = OPTION_FLAG_SMILIES | ($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0);
|
||||
$parse_flags = OPTION_FLAG_SMILIES | ($user_row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0);
|
||||
$message = generate_text_for_display($user_row['post_text'], $user_row['bbcode_uid'], $user_row['bbcode_bitfield'], $parse_flags, true);
|
||||
|
||||
// Generate the appropriate user information for the user we are looking at
|
||||
if (!function_exists('get_user_rank'))
|
||||
if (!function_exists('phpbb_get_user_rank'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
||||
}
|
||||
|
||||
get_user_rank($user_row['user_rank'], $user_row['user_posts'], $rank_title, $rank_img, $rank_img_src);
|
||||
$user_rank_data = phpbb_get_user_rank($user_row, $user_row['user_posts']);
|
||||
$avatar_img = phpbb_get_user_avatar($user_row);
|
||||
|
||||
$template->assign_vars(array(
|
||||
@@ -350,13 +350,13 @@ class mcp_warn
|
||||
'POST' => $message,
|
||||
'USERNAME' => $user_row['username'],
|
||||
'USER_COLOR' => (!empty($user_row['user_colour'])) ? $user_row['user_colour'] : '',
|
||||
'RANK_TITLE' => $rank_title,
|
||||
'RANK_TITLE' => $user_rank_data['title'],
|
||||
'JOINED' => $user->format_date($user_row['user_regdate']),
|
||||
'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0,
|
||||
'WARNINGS' => ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0,
|
||||
|
||||
'AVATAR_IMG' => $avatar_img,
|
||||
'RANK_IMG' => $rank_img,
|
||||
'RANK_IMG' => $user_rank_data['img'],
|
||||
|
||||
'L_WARNING_POST_DEFAULT' => sprintf($user->lang['WARNING_POST_DEFAULT'], generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&p=$post_id#p$post_id"),
|
||||
|
||||
@@ -486,18 +486,18 @@ class mcp_warn
|
||||
}
|
||||
|
||||
// Generate the appropriate user information for the user we are looking at
|
||||
if (!function_exists('get_user_rank'))
|
||||
if (!function_exists('phpbb_get_user_rank'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
||||
}
|
||||
get_user_rank($user_row['user_rank'], $user_row['user_posts'], $rank_title, $rank_img, $rank_img_src);
|
||||
$user_rank_data = phpbb_get_user_rank($user_row, $user_row['user_posts']);
|
||||
$avatar_img = phpbb_get_user_avatar($user_row);
|
||||
|
||||
// OK, they didn't submit a warning so lets build the page for them to do so
|
||||
$template->assign_vars(array(
|
||||
'U_POST_ACTION' => $this->u_action,
|
||||
|
||||
'RANK_TITLE' => $rank_title,
|
||||
'RANK_TITLE' => $user_rank_data['title'],
|
||||
'JOINED' => $user->format_date($user_row['user_regdate']),
|
||||
'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0,
|
||||
'WARNINGS' => ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0,
|
||||
@@ -508,7 +508,7 @@ class mcp_warn
|
||||
'U_PROFILE' => get_username_string('profile', $user_row['user_id'], $user_row['username'], $user_row['user_colour']),
|
||||
|
||||
'AVATAR_IMG' => $avatar_img,
|
||||
'RANK_IMG' => $rank_img,
|
||||
'RANK_IMG' => $user_rank_data['img'],
|
||||
|
||||
'S_CAN_NOTIFY' => $s_can_notify,
|
||||
));
|
||||
@@ -535,7 +535,7 @@ function add_warning($user_row, $warning, $send_pm = true, $post_id = 0)
|
||||
|
||||
$message_parser = new parse_message();
|
||||
|
||||
$message_parser->message = sprintf($lang['WARNING_PM_BODY'], $warning);
|
||||
$message_parser->message = $user->lang('WARNING_PM_BODY', $warning);
|
||||
$message_parser->parse(true, true, true, false, false, true, true);
|
||||
|
||||
$pm_data = array(
|
||||
@@ -553,7 +553,7 @@ function add_warning($user_row, $warning, $send_pm = true, $post_id = 0)
|
||||
'address_list' => array('u' => array($user_row['user_id'] => 'to')),
|
||||
);
|
||||
|
||||
submit_pm('post', $lang['WARNING_PM_SUBJECT'], $pm_data, false);
|
||||
submit_pm('post', $user->lang('WARNING_PM_SUBJECT'), $pm_data, false);
|
||||
}
|
||||
|
||||
add_log('admin', 'LOG_USER_WARNING', $user_row['username']);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user