mirror of
https://github.com/phpbb/phpbb.git
synced 2025-09-08 23:31:04 +02:00
Compare commits
626 Commits
release-3.
...
release-3.
Author | SHA1 | Date | |
---|---|---|---|
|
a5d83e12ec | ||
|
08c146ee34 | ||
|
dc49a8a199 | ||
|
d811743303 | ||
|
65f7137825 | ||
|
04ef19595c | ||
|
71f9c6ebe5 | ||
|
cc556122f3 | ||
|
8938a0ce98 | ||
|
689ebd3bb6 | ||
|
ea8334b693 | ||
|
e50e5dbcae | ||
|
127f5a3ffa | ||
|
9402339af9 | ||
|
ca5243810f | ||
|
840cb510e4 | ||
|
c1fa252fc1 | ||
|
fd822ade20 | ||
|
c255e1fae8 | ||
|
1c4f49249f | ||
|
65c6bae91d | ||
|
2a49420124 | ||
|
ecdc05a13e | ||
|
05a8baffdb | ||
|
3f6119c42b | ||
|
f0dbfc56d5 | ||
|
acf9cdba01 | ||
|
a6939fcb8e | ||
|
fb29d79bc1 | ||
|
b357f78546 | ||
|
58bd7a90a9 | ||
|
170613848a | ||
|
0914123391 | ||
|
e754a51acc | ||
|
e3ec1440ef | ||
|
635f73bc06 | ||
|
3f58b5f9ab | ||
|
7a3e55bdb3 | ||
|
03c30d4bc6 | ||
|
1a1def5339 | ||
|
fbc8a4a275 | ||
|
b63b83a920 | ||
|
0984dbb3f8 | ||
|
18b29ca074 | ||
|
7034986427 | ||
|
18fe3b2833 | ||
|
ca9e3eb528 | ||
|
e84459ba67 | ||
|
5808c9fae1 | ||
|
bc404a3701 | ||
|
0082dd8039 | ||
|
90a80b7b31 | ||
|
e6b7defd38 | ||
|
7254980753 | ||
|
33a62648d1 | ||
|
f5d49b61bb | ||
|
e53343857a | ||
|
994c1d79b1 | ||
|
4c58dfc19a | ||
|
a233f98bbf | ||
|
e72f6d4236 | ||
|
ff22d54eae | ||
|
5bd497ae54 | ||
|
8ae7d2495c | ||
|
8d8886e7ba | ||
|
d550f925ab | ||
|
f178c06b4f | ||
|
d0486964ce | ||
|
67995e1e09 | ||
|
2d33b6adc6 | ||
|
771be9310d | ||
|
3c8bdc8fb4 | ||
|
3dd1f9e707 | ||
|
8303058ac6 | ||
|
f645865333 | ||
|
4efcfc2477 | ||
|
8a624c4dcc | ||
|
1cbc6dedab | ||
|
82e1b8fd72 | ||
|
f9a596c544 | ||
|
3bf133c96c | ||
|
d0540eea52 | ||
|
601ffba0cf | ||
|
eadd5851d0 | ||
|
d44dde390a | ||
|
450402ea42 | ||
|
43731202fd | ||
|
4147c38838 | ||
|
2f277b6f67 | ||
|
32f3ddca70 | ||
|
d4ecb910d8 | ||
|
80b72e3d0b | ||
|
5bf3e4b3c6 | ||
|
e6a0e4caed | ||
|
2edf7056f0 | ||
|
f991a99a14 | ||
|
71a3f12d2a | ||
|
827ded82b8 | ||
|
74054317d2 | ||
|
afddb81acf | ||
|
91ab27ecc9 | ||
|
45c3cb52e4 | ||
|
927220c873 | ||
|
dcdb0dcd23 | ||
|
6abcfe41e0 | ||
|
c8670d5324 | ||
|
0b2369901a | ||
|
d114a3d415 | ||
|
948ce2d84f | ||
|
59396771e6 | ||
|
051644d663 | ||
|
22b8632426 | ||
|
0f95e607ff | ||
|
4cf998e9df | ||
|
716cff0c97 | ||
|
2cc9b6a857 | ||
|
ac87784a11 | ||
|
d10a5b67a1 | ||
|
877e15a6e6 | ||
|
4826f7c1d3 | ||
|
d7c417de69 | ||
|
376e85c1d6 | ||
|
18eaf10e5a | ||
|
63f7fb1ea6 | ||
|
9267235f30 | ||
|
4c3ddea09f | ||
|
bc86210db8 | ||
|
191a776ce6 | ||
|
896249f0e8 | ||
|
bac6dbda5e | ||
|
1b46435734 | ||
|
cdca848018 | ||
|
481a592b8d | ||
|
7f69580df3 | ||
|
7646280d51 | ||
|
b567c6e241 | ||
|
45199adebd | ||
|
fc50fd272b | ||
|
09f6637597 | ||
|
7b2ffaf78c | ||
|
7313eb54b4 | ||
|
abd6bd8154 | ||
|
e0e59bc6c0 | ||
|
0ea839e595 | ||
|
1470985ff2 | ||
|
c3896c8b5d | ||
|
c006479274 | ||
|
35b7e95098 | ||
|
5cf1fc62db | ||
|
849fd9df7d | ||
|
d81df55963 | ||
|
9f2f541b4a | ||
|
d1df78604b | ||
|
15f6d66a61 | ||
|
1d38abdd7e | ||
|
927c211d41 | ||
|
779758f219 | ||
|
fb481f96d3 | ||
|
085a839963 | ||
|
dcadfe092c | ||
|
59027c94f2 | ||
|
612abf391f | ||
|
fbff3b77bd | ||
|
38d0f2892e | ||
|
20a4d095de | ||
|
a620ce0713 | ||
|
0572d6e33a | ||
|
6c09910c10 | ||
|
3567f45e3d | ||
|
02a35baf70 | ||
|
bad8f0b9bc | ||
|
0d17b32e25 | ||
|
0f640ab7af | ||
|
766839a60a | ||
|
a0bd23b747 | ||
|
cb44dbc8cb | ||
|
c3b7332ea8 | ||
|
b9189ec325 | ||
|
8af6df3946 | ||
|
366e8583c8 | ||
|
74f723e4ec | ||
|
d2ad751851 | ||
|
20c03cccdd | ||
|
76b3fbc006 | ||
|
c40642b827 | ||
|
9d7acd1897 | ||
|
77b3f36992 | ||
|
a0abb1e10e | ||
|
2f6993fa81 | ||
|
49c19a267f | ||
|
3d93fd40ed | ||
|
f2c4bf176d | ||
|
dd89a369f3 | ||
|
c0882c1d34 | ||
|
7cad25e4cb | ||
|
ff411ee81b | ||
|
14fd750b08 | ||
|
bc96a9f1f6 | ||
|
7df7cfff33 | ||
|
45ea013b11 | ||
|
3e5e8fd0e3 | ||
|
9658ecae8b | ||
|
d6771d6a7f | ||
|
c656bd60ef | ||
|
4139e4f2b5 | ||
|
3489780faa | ||
|
40bc4ac484 | ||
|
3ccaac488b | ||
|
19b018ece0 | ||
|
54e31efcbc | ||
|
cff57f9076 | ||
|
d9991bdaf1 | ||
|
0fc1de279e | ||
|
87f82c404e | ||
|
efc2b46303 | ||
|
fbcbd79d79 | ||
|
97a0f49be4 | ||
|
21803dc99b | ||
|
c127591d25 | ||
|
9e6207add3 | ||
|
aa84ea8e5d | ||
|
2d742beb92 | ||
|
84d2d767b9 | ||
|
5f6fa321ef | ||
|
cc42c09a95 | ||
|
ea51dc25c1 | ||
|
0f000aff0d | ||
|
445a8be895 | ||
|
956c7186ec | ||
|
47e7cd7194 | ||
|
48659c2ce1 | ||
|
aa6c2fae5c | ||
|
0e68c35cfd | ||
|
71f82f2615 | ||
|
573507e6a5 | ||
|
853362ddad | ||
|
ea73920261 | ||
|
b6ea338309 | ||
|
b20d98a229 | ||
|
a03cec5b8d | ||
|
fadec0d2b9 | ||
|
3c223b3a5d | ||
|
daee389e53 | ||
|
aad13389ce | ||
|
620d033e06 | ||
|
fe79705e99 | ||
|
90b7d1fbda | ||
|
df96351244 | ||
|
5235e6de53 | ||
|
7e2d544016 | ||
|
aae6341989 | ||
|
8eda17f430 | ||
|
230e737790 | ||
|
08d169c109 | ||
|
e40afd8cd1 | ||
|
ad3b7830b4 | ||
|
3a4f1bc061 | ||
|
96adf7f0d6 | ||
|
7d5d5b0f06 | ||
|
daae2147c8 | ||
|
c084990a68 | ||
|
41b3450f2f | ||
|
959e5fb79d | ||
|
76ffd288fe | ||
|
800411e514 | ||
|
3322117c38 | ||
|
591eff9e78 | ||
|
47e418e50e | ||
|
839987fa19 | ||
|
533d2b90b8 | ||
|
99a99c5412 | ||
|
5505f98aad | ||
|
fbe5193359 | ||
|
b51247e1da | ||
|
c60caace5d | ||
|
8f84119743 | ||
|
1ee9cc91d4 | ||
|
e1d2c4c900 | ||
|
0e53442fd4 | ||
|
365489a317 | ||
|
10753454bf | ||
|
78ff392b64 | ||
|
a3faf1fefc | ||
|
642bfe9a39 | ||
|
5e36dd3d0b | ||
|
0f46d35f75 | ||
|
b01b3b8b94 | ||
|
997bdc7778 | ||
|
30b3fbb2cf | ||
|
ff76a3e433 | ||
|
6c98e3b12f | ||
|
390a37492d | ||
|
16620ea3d2 | ||
|
e9d8425f15 | ||
|
4dcd2351ea | ||
|
255368843c | ||
|
619d323dd1 | ||
|
8e3a38e80d | ||
|
34cfa5f885 | ||
|
2f1d2e847e | ||
|
2df3703b2a | ||
|
a1a3daaca8 | ||
|
c2836725f9 | ||
|
dbd9c1f242 | ||
|
d98fd7868b | ||
|
6d58c4a4b5 | ||
|
0d15a95f97 | ||
|
6bbc18fa40 | ||
|
16c3b40b4e | ||
|
ad4889be4b | ||
|
34ebbbc7c3 | ||
|
1ff01d722a | ||
|
ba5243ba76 | ||
|
8323de331e | ||
|
b80b624551 | ||
|
6e6a2c5df8 | ||
|
df0388ccc5 | ||
|
114cfe2c27 | ||
|
36d4169768 | ||
|
260dc5ed7c | ||
|
f8fb3e0f9f | ||
|
372324cead | ||
|
39f5b82bc3 | ||
|
55f7438187 | ||
|
c77798b1a3 | ||
|
221cd3eb68 | ||
|
bc4c82bae5 | ||
|
577d669ba7 | ||
|
a298ed1a66 | ||
|
43ea7168d1 | ||
|
c9ea560c63 | ||
|
0fd04f2e6f | ||
|
74285b4308 | ||
|
cdf6464382 | ||
|
4533dd9fa0 | ||
|
9b1e2e523c | ||
|
0e114f91f4 | ||
|
9be9062df3 | ||
|
dc32b900c5 | ||
|
ac36cc25eb | ||
|
af2bf4ef36 | ||
|
87209fdd06 | ||
|
c259a9b387 | ||
|
ad4fe1799f | ||
|
6984f17f62 | ||
|
2f6a258175 | ||
|
552691efbf | ||
|
85898d3d2c | ||
|
466bdee8e6 | ||
|
10f430f393 | ||
|
ffc6623dd4 | ||
|
e3a85ff0a7 | ||
|
163292bc11 | ||
|
a41b16d06a | ||
|
cac8ac8242 | ||
|
6f8c0df1c6 | ||
|
c891277996 | ||
|
cefbd39b82 | ||
|
77f1bac64b | ||
|
849cd74700 | ||
|
51ef1ae346 | ||
|
a02b124dd0 | ||
|
3cb09358fe | ||
|
9f2867b115 | ||
|
2059d57c04 | ||
|
0cc0920734 | ||
|
8b8f693d00 | ||
|
8afa9fdf28 | ||
|
244ff0f969 | ||
|
eca10dc08f | ||
|
8e54c9ef8b | ||
|
832a87b924 | ||
|
05d0879795 | ||
|
f02afe58bc | ||
|
d98a1c4bc4 | ||
|
868d55913d | ||
|
20148e4d06 | ||
|
fce30d1d91 | ||
|
2406fe2e5e | ||
|
1f0c616974 | ||
|
4dfadfc97f | ||
|
1dd0ceabf6 | ||
|
98a6133c1e | ||
|
1ad64f89b8 | ||
|
bf8ee698f9 | ||
|
59b52d6312 | ||
|
40354f1f90 | ||
|
71e632b9f0 | ||
|
cb226f83be | ||
|
85e4566223 | ||
|
55a0570567 | ||
|
b4e673acc1 | ||
|
cd4190a72d | ||
|
6b798d02fb | ||
|
cdaed8dabf | ||
|
165e0edb2a | ||
|
5a6933fee7 | ||
|
047c7375a5 | ||
|
f1eda6868f | ||
|
4e5f29a21b | ||
|
88d7c4fe57 | ||
|
32d569c594 | ||
|
c6383d3f89 | ||
|
1d25c80a9c | ||
|
0b3951cb81 | ||
|
ae76bfc99e | ||
|
cc62b68243 | ||
|
6972d06f59 | ||
|
2fd2fb94cf | ||
|
06c980f1ec | ||
|
f66ca6a9cc | ||
|
ec24f739e8 | ||
|
c588332aa5 | ||
|
51d830a6d3 | ||
|
32d9efff47 | ||
|
7d73d1ff83 | ||
|
c958ba13e8 | ||
|
2f17757f4e | ||
|
b8bbf9db03 | ||
|
4267cc3a43 | ||
|
90e9d5c462 | ||
|
cdd56c0505 | ||
|
18f9c9f6e2 | ||
|
97040dc6ff | ||
|
931582aad9 | ||
|
3910387ee5 | ||
|
d2f95ef875 | ||
|
537dca0892 | ||
|
2436af94e3 | ||
|
75f57fa407 | ||
|
a078336cb1 | ||
|
4da479d47f | ||
|
bc08813866 | ||
|
6b435cbf13 | ||
|
72f6241aa2 | ||
|
585a3ed863 | ||
|
abb01946bd | ||
|
27e33f39f7 | ||
|
c3578bc3e3 | ||
|
0d3ca3883e | ||
|
a084b07495 | ||
|
bf397cb985 | ||
|
73b9327631 | ||
|
bd59241110 | ||
|
33584f12f0 | ||
|
2ae08dc3ba | ||
|
32ba128ea5 | ||
|
70aa4407d3 | ||
|
5503c09cd5 | ||
|
6d589a8bb9 | ||
|
43c52b073b | ||
|
4b8e8df55c | ||
|
dccb5564d2 | ||
|
857a085496 | ||
|
ce48b4de57 | ||
|
2efdaaa0e2 | ||
|
64178b40b8 | ||
|
65921a7891 | ||
|
f008708d5c | ||
|
d737430a03 | ||
|
b3e8eb9feb | ||
|
bd0244180b | ||
|
3ee5472a8c | ||
|
557f85e7fc | ||
|
a019a86bfc | ||
|
71a70500ea | ||
|
863d65112b | ||
|
429ecb938c | ||
|
a36f96aefa | ||
|
b14043b276 | ||
|
6bcc372af5 | ||
|
eccb3d6602 | ||
|
773f6d08a5 | ||
|
463e8e4b13 | ||
|
7c99fcf782 | ||
|
775d1c855a | ||
|
e050cf5c11 | ||
|
bb11294b96 | ||
|
488fd8f54c | ||
|
f68e98c064 | ||
|
c016e09ca4 | ||
|
48696b5148 | ||
|
263fbe54fc | ||
|
4a92a8efb5 | ||
|
c12d67cd90 | ||
|
52afa74f4e | ||
|
b00a39b9ad | ||
|
6078bae7f8 | ||
|
317f3e848f | ||
|
2ee8bd0c4a | ||
|
a277f9cf07 | ||
|
8e1461ca61 | ||
|
9fb649793d | ||
|
b74e811496 | ||
|
7e1e3e1a5e | ||
|
0771eaa732 | ||
|
1455be2260 | ||
|
3bf64de247 | ||
|
2dae36e3fb | ||
|
6fd507f60d | ||
|
5330ea0f09 | ||
|
3038bf5eaf | ||
|
ba13832085 | ||
|
2081a78095 | ||
|
f68820762b | ||
|
f222f8a84a | ||
|
d51c67440e | ||
|
0cc41be3c0 | ||
|
4ac2547d62 | ||
|
ef132e1531 | ||
|
55223e6840 | ||
|
29d2c66922 | ||
|
941be83395 | ||
|
8e8e25cc1f | ||
|
e7289fa019 | ||
|
5b501e594c | ||
|
4eecc95a42 | ||
|
5eb493fa86 | ||
|
43e0283fb1 | ||
|
8cf2790d55 | ||
|
eaafb758ce | ||
|
33cd613406 | ||
|
20e08aa2a0 | ||
|
da7c41f167 | ||
|
ef91c6abed | ||
|
f3fe610a5e | ||
|
0026ed02ae | ||
|
befacabf7e | ||
|
775df0eb8a | ||
|
3df9b2c8f8 | ||
|
e8454e018d | ||
|
78a0d10a5a | ||
|
960dc08946 | ||
|
d0a5f87a44 | ||
|
a1ecb6db69 | ||
|
63db42522b | ||
|
a840d70bbf | ||
|
51952005eb | ||
|
b54aa81cdd | ||
|
6f109dd1ef | ||
|
38082c41e3 | ||
|
652e3da28d | ||
|
927cc2ebad | ||
|
2ec4855cba | ||
|
55b854906d | ||
|
1c52968df6 | ||
|
cddb884be6 | ||
|
53b9216c78 | ||
|
a3c10f575b | ||
|
2f53761eaf | ||
|
c4b93c9c1c | ||
|
65a4f0d631 | ||
|
9170261885 | ||
|
f75a01182f | ||
|
7f1c4cd205 | ||
|
e4336de68d | ||
|
4653951673 | ||
|
a19bf11f73 | ||
|
9595946508 | ||
|
773a701d62 | ||
|
c60dbede3e | ||
|
aaa99b4719 | ||
|
804236bce4 | ||
|
cf8c13b04c | ||
|
83f737a30a | ||
|
6764bea40c | ||
|
3708770eb9 | ||
|
8d3716ab91 | ||
|
cff2895599 | ||
|
516670225d | ||
|
256730c76a | ||
|
e9cbb45435 | ||
|
2a53831124 | ||
|
7dc1af25bc | ||
|
d316927225 | ||
|
cf2b96def7 | ||
|
9d88238f89 | ||
|
b2141fd1a8 | ||
|
4cf666f0bc | ||
|
ff8b5058e0 | ||
|
08acf2acba | ||
|
b63c61d099 | ||
|
72248cab45 | ||
|
73073ac8c3 | ||
|
9961aefa38 | ||
|
6350798e97 | ||
|
0a512b2695 | ||
|
e30518461c | ||
|
10d96d4f33 | ||
|
191b80a750 | ||
|
c103c42857 | ||
|
dcf90a8d8b | ||
|
a8fb33218c | ||
|
e6e4c0e62d | ||
|
7e6371ea8e | ||
|
c3fd07a5f0 | ||
|
559325fbd6 | ||
|
0d7625c534 | ||
|
06507f9fa6 | ||
|
9ca3cd519a | ||
|
e7262e2d39 | ||
|
734972cc3d | ||
|
03348087d8 | ||
|
f57f09f814 | ||
|
3572f4c92e | ||
|
c7bbcd7b84 | ||
|
c0f3463819 | ||
|
c3b30144e3 | ||
|
aa3c5286cd | ||
|
8e1102b1da | ||
|
269e253524 | ||
|
23bdb2eede | ||
|
4cdec74e94 | ||
|
1b01667c7b | ||
|
fdcedb262f | ||
|
ed378a2ec3 | ||
|
96bdcedacd | ||
|
c938077172 | ||
|
58dfff38fa | ||
|
c4ef83e4d2 | ||
|
e80f79fc9a | ||
|
920219dc56 | ||
|
04f320cb01 | ||
|
ebe5eb8342 | ||
|
3479f95090 | ||
|
054da80114 |
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
Checklist:
|
||||
|
||||
- [ ] Correct branch: master for new features; 3.2.x, 3.1.x for fixes
|
||||
- [ ] Tests pass
|
||||
- [ ] Code follows coding guidelines: [master / 3.2.x](https://area51.phpbb.com/docs/master/coding-guidelines.html), [3.1.x](https://area51.phpbb.com/docs/31x/coding-guidelines.html)
|
||||
- [ ] Commit follows commit message [format](https://wiki.phpbb.com/Git#Commit_Messages)
|
||||
|
||||
Tracker ticket (set the ticket ID to **your ticket ID**):
|
||||
|
||||
https://tracker.phpbb.com/browse/PHPBB3-12345
|
@@ -19,6 +19,7 @@
|
||||
"jquery": true,
|
||||
|
||||
"globals": {
|
||||
"JSON": true
|
||||
"JSON": true,
|
||||
"phpbb": true
|
||||
}
|
||||
}
|
||||
|
@@ -22,12 +22,9 @@ matrix:
|
||||
env: DB=mysqli
|
||||
- php: 5.6
|
||||
env: DB=mysqli
|
||||
- php: 7.0
|
||||
env: DB=mysqli
|
||||
- php: hhvm
|
||||
env: DB=mysqli
|
||||
allow_failures:
|
||||
- php: 7.0
|
||||
- php: hhvm
|
||||
fast_finish: true
|
||||
|
||||
|
@@ -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.9-RC1" />
|
||||
<property name="prevversion" value="3.1.8" />
|
||||
<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1" />
|
||||
<property name="newversion" value="3.1.11-RC1" />
|
||||
<property name="prevversion" value="3.1.10" />
|
||||
<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9" />
|
||||
<!-- no configuration should be needed beyond this point -->
|
||||
|
||||
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
||||
@@ -49,7 +49,7 @@
|
||||
-->
|
||||
<target name="composer">
|
||||
<exec dir="phpBB"
|
||||
command="php ../composer.phar install --dev"
|
||||
command="php ../composer.phar install --ignore-platform-reqs"
|
||||
checkreturn="true"
|
||||
passthru="true" />
|
||||
</target>
|
||||
@@ -143,6 +143,7 @@
|
||||
<phingcall target="export">
|
||||
<property name="revision" value="release-${version}" />
|
||||
<property name="dir" value="build/old_versions/release-${version}" />
|
||||
<property name="skip-composer" value="true" />
|
||||
</phingcall>
|
||||
|
||||
<phingcall target="clean-diff-dir">
|
||||
@@ -251,26 +252,35 @@
|
||||
<equals arg1="${composer-has-dependencies}" arg2="1" trim="true" />
|
||||
<then>
|
||||
<!-- We have non-dev composer dependencies -->
|
||||
<exec dir="."
|
||||
command="git ls-tree ${revision} composer.phar"
|
||||
checkreturn="true"
|
||||
outputProperty='composer-ls-tree-output' />
|
||||
<if>
|
||||
<equals arg1="${composer-ls-tree-output}" arg2="" trim="true" />
|
||||
<not><isset property="skip-composer" /></not>
|
||||
<then>
|
||||
<fail message="There are composer dependencies, but composer.phar is missing." />
|
||||
</then>
|
||||
<else>
|
||||
<!-- Export the phar, install dependencies, delete phar. -->
|
||||
<exec dir="."
|
||||
command="git archive ${revision} composer.phar | tar -xf - -C ${dir}"
|
||||
checkreturn="true" />
|
||||
<exec dir="${dir}"
|
||||
command="php composer.phar install --no-dev --optimize-autoloader"
|
||||
command="git ls-tree ${revision} composer.phar"
|
||||
checkreturn="true"
|
||||
passthru="true" />
|
||||
<delete file="${dir}/composer.phar" />
|
||||
</else>
|
||||
outputProperty='composer-ls-tree-output' />
|
||||
<if>
|
||||
<equals arg1="${composer-ls-tree-output}" arg2="" trim="true" />
|
||||
<then>
|
||||
<fail message="There are composer dependencies, but composer.phar is missing." />
|
||||
</then>
|
||||
<else>
|
||||
<!-- Export the phar, install dependencies, delete phar. -->
|
||||
<exec dir="."
|
||||
command="git archive ${revision} composer.phar | tar -xf - -C ${dir}"
|
||||
checkreturn="true" />
|
||||
<exec dir="${dir}"
|
||||
command="php composer.phar install --no-dev --optimize-autoloader --ignore-platform-reqs"
|
||||
checkreturn="true"
|
||||
passthru="true" />
|
||||
<delete file="${dir}/composer.phar" />
|
||||
|
||||
<phingcall target="clean-vendor-dir">
|
||||
<property name="dir" value="${dir}" />
|
||||
</phingcall>
|
||||
</else>
|
||||
</if>
|
||||
</then>
|
||||
</if>
|
||||
</then>
|
||||
<else>
|
||||
@@ -287,10 +297,6 @@
|
||||
<delete dir="${dir}/develop" />
|
||||
<delete dir="${dir}/install/data" />
|
||||
|
||||
<phingcall target="clean-vendor-dir">
|
||||
<property name="dir" value="${dir}" />
|
||||
</phingcall>
|
||||
|
||||
<echo msg="Setting permissions for checkout of ${revision} in ${dir}" />
|
||||
<!-- set permissions of all files to 644, directories to 755 -->
|
||||
<exec dir="${dir}" command="find . -type f|xargs chmod 644" escape="false" />
|
||||
@@ -307,6 +313,7 @@
|
||||
<delete dir="${dir}/vendor/lusitanian/oauth/examples" />
|
||||
<delete dir="${dir}/vendor/lusitanian/oauth/tests" />
|
||||
<delete file="${dir}/vendor/lusitanian/oauth/.gitignore" />
|
||||
<delete file="${dir}/vendor/lusitanian/oauth/.scrutinizer.yml" />
|
||||
<delete file="${dir}/vendor/lusitanian/oauth/.travis.yml" />
|
||||
<delete file="${dir}/vendor/lusitanian/oauth/phpunit.xml.dist" />
|
||||
<delete file="${dir}/vendor/lusitanian/oauth/README.md" />
|
||||
@@ -381,10 +388,9 @@
|
||||
<delete file="${dir}/vendor/twig/twig/.editorconfig" />
|
||||
<delete file="${dir}/vendor/twig/twig/.gitignore" />
|
||||
<delete file="${dir}/vendor/twig/twig/.travis.yml" />
|
||||
<delete file="${dir}/vendor/twig/twig/AUTHORS" />
|
||||
<delete file="${dir}/vendor/twig/twig/CHANGELOG" />
|
||||
<delete file="${dir}/vendor/twig/twig/phpunit.xml.dist" />
|
||||
<delete file="${dir}/vendor/twig/twig/README.markdown" />
|
||||
<delete file="${dir}/vendor/twig/twig/README.rst" />
|
||||
</target>
|
||||
|
||||
<target name="clean-diff-dir">
|
||||
|
@@ -129,53 +129,19 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
}
|
||||
}
|
||||
|
||||
$old_docblock = $stackPtr;
|
||||
while (($docblock = $phpcsFile->findNext(T_DOC_COMMENT_CLOSE_TAG, ($old_docblock + 1))) !== false)
|
||||
{
|
||||
$old_docblock = $docblock;
|
||||
$ok = $this->checkDocblock($phpcsFile, $docblock, $tokens, $class_name_full, $class_name_short) ? true : $ok;
|
||||
}
|
||||
|
||||
// Checks in type hinting
|
||||
$old_function_declaration = $stackPtr;
|
||||
while (($function_declaration = $phpcsFile->findNext(T_FUNCTION, ($old_function_declaration + 1))) !== false)
|
||||
{
|
||||
$old_function_declaration = $function_declaration;
|
||||
|
||||
// Check docblocks
|
||||
$find = array(
|
||||
T_COMMENT,
|
||||
T_DOC_COMMENT_CLOSE_TAG,
|
||||
T_DOC_COMMENT,
|
||||
T_CLASS,
|
||||
T_FUNCTION,
|
||||
T_OPEN_TAG,
|
||||
);
|
||||
|
||||
$comment_end = $phpcsFile->findPrevious($find, ($function_declaration - 1));
|
||||
if ($comment_end !== false)
|
||||
{
|
||||
if ($tokens[$comment_end]['code'] === T_DOC_COMMENT_CLOSE_TAG)
|
||||
{
|
||||
$comment_start = $tokens[$comment_end]['comment_opener'];
|
||||
foreach ($tokens[$comment_start]['comment_tags'] as $tag) {
|
||||
if ($tokens[$tag]['content'] !== '@param' && $tokens[$tag]['content'] !== '@return' && $tokens[$tag]['content'] !== '@throws') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$classes = $tokens[($tag + 2)]['content'];
|
||||
$space = strpos($classes, ' ');
|
||||
if ($space !== false) {
|
||||
$classes = substr($classes, 0, $space);
|
||||
}
|
||||
|
||||
$tab = strpos($classes, "\t");
|
||||
if ($tab !== false) {
|
||||
$classes = substr($classes, 0, $tab);
|
||||
}
|
||||
|
||||
$classes = explode('|', str_replace('[]', '', $classes));
|
||||
foreach ($classes as $class)
|
||||
{
|
||||
$ok = $this->check($phpcsFile, $class, $class_name_full, $class_name_short, $tokens[$tag + 2]['line']) ? true : $ok;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check type hint
|
||||
$params = $phpcsFile->getMethodParameters($function_declaration);
|
||||
foreach ($params as $param)
|
||||
@@ -234,4 +200,49 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PHP_CodeSniffer_File $phpcsFile
|
||||
* @param int $field
|
||||
* @param array $tokens
|
||||
* @param string $class_name_full
|
||||
* @param string $class_name_short
|
||||
* @param bool $ok
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function checkDocblock(PHP_CodeSniffer_File $phpcsFile, $comment_end, $tokens, $class_name_full, $class_name_short)
|
||||
{
|
||||
$ok = false;
|
||||
|
||||
$comment_start = $tokens[$comment_end]['comment_opener'];
|
||||
foreach ($tokens[$comment_start]['comment_tags'] as $tag)
|
||||
{
|
||||
if (!in_array($tokens[$tag]['content'], array('@param', '@var', '@return', '@throws'), true))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$classes = $tokens[($tag + 2)]['content'];
|
||||
$space = strpos($classes, ' ');
|
||||
if ($space !== false)
|
||||
{
|
||||
$classes = substr($classes, 0, $space);
|
||||
}
|
||||
|
||||
$tab = strpos($classes, "\t");
|
||||
if ($tab !== false)
|
||||
{
|
||||
$classes = substr($classes, 0, $tab);
|
||||
}
|
||||
|
||||
$classes = explode('|', str_replace('[]', '', $classes));
|
||||
foreach ($classes as $class)
|
||||
{
|
||||
$ok = $this->check($phpcsFile, $class, $class_name_full, $class_name_short, $tokens[$tag + 2]['line']) ? true : $ok;
|
||||
}
|
||||
}
|
||||
|
||||
return $ok;
|
||||
}
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@ $config['versions'] = Sami\Version\GitVersionCollection::create(__DIR__ . '/../'
|
||||
*/
|
||||
->add('3.0.x')
|
||||
->add('3.1.x')
|
||||
->add('3.2.x')
|
||||
->add('master')
|
||||
;
|
||||
|
||||
|
@@ -1,292 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
function show_usage()
|
||||
{
|
||||
$filename = basename(__FILE__);
|
||||
|
||||
echo "$filename adds repositories of a github network as remotes to a local git repository.\n";
|
||||
echo "\n";
|
||||
|
||||
echo "Usage: [php] $filename -s collaborators|organisation|contributors|forks [OPTIONS]\n";
|
||||
echo "\n";
|
||||
|
||||
echo "Scopes:\n";
|
||||
echo " collaborators Repositories of people who have push access to the specified repository\n";
|
||||
echo " contributors Repositories of people who have contributed to the specified repository\n";
|
||||
echo " organisation Repositories of members of the organisation at github\n";
|
||||
echo " forks All repositories of the whole github network\n";
|
||||
echo "\n";
|
||||
|
||||
echo "Options:\n";
|
||||
echo " -s scope See description above (mandatory)\n";
|
||||
echo " -u github_username Overwrites the github username (optional)\n";
|
||||
echo " -r repository_name Overwrites the repository name (optional)\n";
|
||||
echo " -m your_github_username Sets up ssh:// instead of git:// for pushable repositories (optional)\n";
|
||||
echo " -d Outputs the commands instead of running them (optional)\n";
|
||||
echo " -h This help text\n";
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Handle arguments
|
||||
$opts = getopt('s:u:r:m:dh');
|
||||
|
||||
if (empty($opts) || isset($opts['h']))
|
||||
{
|
||||
show_usage();
|
||||
}
|
||||
|
||||
$scope = get_arg($opts, 's', '');
|
||||
$username = get_arg($opts, 'u', 'phpbb');
|
||||
$repository = get_arg($opts, 'r', 'phpbb3');
|
||||
$developer = get_arg($opts, 'm', '');
|
||||
$dry_run = !get_arg($opts, 'd', true);
|
||||
run(null, $dry_run);
|
||||
exit(work($scope, $username, $repository, $developer));
|
||||
|
||||
function work($scope, $username, $repository, $developer)
|
||||
{
|
||||
// Get some basic data
|
||||
$forks = get_forks($username, $repository);
|
||||
$collaborators = get_collaborators($username, $repository);
|
||||
|
||||
if ($forks === false || $collaborators === false)
|
||||
{
|
||||
echo "Error: failed to retrieve forks or collaborators\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
switch ($scope)
|
||||
{
|
||||
case 'collaborators':
|
||||
$remotes = array_intersect_key($forks, $collaborators);
|
||||
break;
|
||||
|
||||
case 'organisation':
|
||||
$remotes = array_intersect_key($forks, get_organisation_members($username));
|
||||
break;
|
||||
|
||||
case 'contributors':
|
||||
$remotes = array_intersect_key($forks, get_contributors($username, $repository));
|
||||
break;
|
||||
|
||||
case 'forks':
|
||||
$remotes = $forks;
|
||||
break;
|
||||
|
||||
default:
|
||||
show_usage();
|
||||
}
|
||||
|
||||
if (file_exists('.git'))
|
||||
{
|
||||
add_remote($username, $repository, isset($collaborators[$developer]));
|
||||
}
|
||||
else
|
||||
{
|
||||
clone_repository($username, $repository, isset($collaborators[$developer]));
|
||||
}
|
||||
|
||||
// Add private security repository for developers
|
||||
if ($username == 'phpbb' && $repository == 'phpbb3' && isset($collaborators[$developer]))
|
||||
{
|
||||
run("git remote add $username-security " . get_repository_url($username, "$repository-security", true));
|
||||
}
|
||||
|
||||
// Skip blessed repository.
|
||||
unset($remotes[$username]);
|
||||
|
||||
foreach ($remotes as $remote)
|
||||
{
|
||||
add_remote($remote['username'], $remote['repository'], $remote['username'] == $developer);
|
||||
}
|
||||
|
||||
run('git remote update');
|
||||
}
|
||||
|
||||
function clone_repository($username, $repository, $pushable = false)
|
||||
{
|
||||
$url = get_repository_url($username, $repository, false);
|
||||
run("git clone $url ./ --origin $username");
|
||||
|
||||
if ($pushable)
|
||||
{
|
||||
$ssh_url = get_repository_url($username, $repository, true);
|
||||
run("git remote set-url --push $username $ssh_url");
|
||||
}
|
||||
}
|
||||
|
||||
function add_remote($username, $repository, $pushable = false)
|
||||
{
|
||||
$url = get_repository_url($username, $repository, false);
|
||||
run("git remote add $username $url");
|
||||
|
||||
if ($pushable)
|
||||
{
|
||||
$ssh_url = get_repository_url($username, $repository, true);
|
||||
run("git remote set-url --push $username $ssh_url");
|
||||
}
|
||||
}
|
||||
|
||||
function get_repository_url($username, $repository, $ssh = false)
|
||||
{
|
||||
$url_base = ($ssh) ? 'git@github.com:' : 'git://github.com/';
|
||||
|
||||
return $url_base . $username . '/' . $repository . '.git';
|
||||
}
|
||||
|
||||
function api_request($query)
|
||||
{
|
||||
return api_url_request("https://api.github.com/$query?per_page=100");
|
||||
}
|
||||
|
||||
function api_url_request($url)
|
||||
{
|
||||
$contents = file_get_contents($url, false, stream_context_create(array(
|
||||
'http' => array(
|
||||
'header' => "User-Agent: phpBB/1.0\r\n",
|
||||
),
|
||||
)));
|
||||
|
||||
$sub_request_result = array();
|
||||
// Check headers for pagination links
|
||||
if (!empty($http_response_header))
|
||||
{
|
||||
foreach ($http_response_header as $header_element)
|
||||
{
|
||||
// Find Link Header which gives us a link to the next page
|
||||
if (strpos($header_element, 'Link: ') === 0)
|
||||
{
|
||||
list($head, $header_content) = explode(': ', $header_element);
|
||||
foreach (explode(', ', $header_content) as $links)
|
||||
{
|
||||
list($url, $rel) = explode('; ', $links);
|
||||
if ($rel == 'rel="next"')
|
||||
{
|
||||
// Found a next link, follow it and merge the results
|
||||
$sub_request_result = api_url_request(substr($url, 1, -1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($contents === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
$contents = json_decode($contents);
|
||||
|
||||
if (isset($contents->message) && strpos($contents->message, 'API Rate Limit') === 0)
|
||||
{
|
||||
throw new RuntimeException('Reached github API Rate Limit. Please try again later' . "\n", 4);
|
||||
}
|
||||
|
||||
return ($sub_request_result) ? array_merge($sub_request_result, $contents) : $contents;
|
||||
}
|
||||
|
||||
function get_contributors($username, $repository)
|
||||
{
|
||||
$request = api_request("repos/$username/$repository/stats/contributors");
|
||||
if ($request === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$usernames = array();
|
||||
foreach ($request as $contribution)
|
||||
{
|
||||
$usernames[$contribution->author->login] = $contribution->author->login;
|
||||
}
|
||||
|
||||
return $usernames;
|
||||
}
|
||||
|
||||
function get_organisation_members($username)
|
||||
{
|
||||
$request = api_request("orgs/$username/public_members");
|
||||
if ($request === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$usernames = array();
|
||||
foreach ($request as $member)
|
||||
{
|
||||
$usernames[$member->login] = $member->login;
|
||||
}
|
||||
|
||||
return $usernames;
|
||||
}
|
||||
|
||||
function get_collaborators($username, $repository)
|
||||
{
|
||||
$request = api_request("repos/$username/$repository/collaborators");
|
||||
if ($request === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$usernames = array();
|
||||
foreach ($request as $collaborator)
|
||||
{
|
||||
$usernames[$collaborator->login] = $collaborator->login;
|
||||
}
|
||||
|
||||
return $usernames;
|
||||
}
|
||||
|
||||
function get_forks($username, $repository)
|
||||
{
|
||||
$request = api_request("repos/$username/$repository/forks");
|
||||
if ($request === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$usernames = array();
|
||||
foreach ($request as $fork)
|
||||
{
|
||||
$usernames[$fork->owner->login] = array(
|
||||
'username' => $fork->owner->login,
|
||||
'repository' => $fork->name,
|
||||
);
|
||||
}
|
||||
|
||||
return $usernames;
|
||||
}
|
||||
|
||||
function get_arg($array, $index, $default)
|
||||
{
|
||||
return isset($array[$index]) ? $array[$index] : $default;
|
||||
}
|
||||
|
||||
function run($cmd, $dry = false)
|
||||
{
|
||||
static $dry_run;
|
||||
|
||||
if (is_null($cmd))
|
||||
{
|
||||
$dry_run = $dry;
|
||||
}
|
||||
else if (!empty($dry_run))
|
||||
{
|
||||
echo "$cmd\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
passthru(escapeshellcmd($cmd));
|
||||
}
|
||||
}
|
@@ -14,7 +14,7 @@
|
||||
<legend>{L_RESTORE_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="file">{L_SELECT_FILE}{L_COLON}</label></dt>
|
||||
<dd><select id="file" name="file" size="10"><!-- BEGIN files --><option value="{files.FILE}"<!-- IF files.S_LAST_ROW --> selected="selected"<!-- ENDIF -->>{files.NAME}</option><!-- END files --></select></dd>
|
||||
<dd><select id="file" name="file" size="10"><!-- BEGIN files --><option value="{files.FILE}"<!-- IF files.S_FIRST_ROW --> selected="selected"<!-- ENDIF -->>{files.NAME}</option><!-- END files --></select></dd>
|
||||
</dl>
|
||||
|
||||
<p class="submit-buttons">
|
||||
|
@@ -21,6 +21,7 @@
|
||||
<p>{VERSIONCHECK_FAIL_REASON}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- EVENT acp_ext_details_notice -->
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_EXT_DETAILS}</legend>
|
||||
@@ -136,4 +137,5 @@
|
||||
<!-- END meta_authors -->
|
||||
</fieldset>
|
||||
|
||||
<!-- EVENT acp_ext_details_end -->
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
|
@@ -44,11 +44,11 @@
|
||||
<tbody>
|
||||
<!-- IF .enabled -->
|
||||
<tr>
|
||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong></td>
|
||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong><!-- EVENT acp_ext_list_enabled_title_after --></td>
|
||||
</tr>
|
||||
<!-- BEGIN enabled -->
|
||||
<tr class="ext_enabled row-highlight">
|
||||
<td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong></td>
|
||||
<td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_enabled_name_after --></td>
|
||||
<td style="text-align: center;">
|
||||
<!-- IF enabled.S_VERSIONCHECK -->
|
||||
<strong <!-- IF enabled.S_UP_TO_DATE -->style="color: #228822;"<!-- ELSE -->style="color: #BC2A4D;"<!-- ENDIF -->>{enabled.META_VERSION}</strong>
|
||||
@@ -69,11 +69,11 @@
|
||||
|
||||
<!-- IF .disabled -->
|
||||
<tr>
|
||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong></td>
|
||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong><!-- EVENT acp_ext_list_disabled_title_after --></td>
|
||||
</tr>
|
||||
<!-- BEGIN disabled -->
|
||||
<tr class="ext_disabled row-highlight">
|
||||
<td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong></td>
|
||||
<td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_disabled_name_after --></td>
|
||||
<td style="text-align: center;">
|
||||
<!-- IF disabled.S_VERSIONCHECK -->
|
||||
<strong <!-- IF disabled.S_UP_TO_DATE -->style="color: #228822;"<!-- ELSE -->style="color: #BC2A4D;"<!-- ENDIF -->>{disabled.META_VERSION}</strong>
|
||||
|
@@ -47,6 +47,21 @@
|
||||
<dd><label><input type="radio" class="radio" id="jab_use_ssl" name="jab_use_ssl" value="1"<!-- IF JAB_USE_SSL --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="jab_use_ssl" value="0"<!-- IF not JAB_USE_SSL --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="jab_verify_peer">{L_JAB_VERIFY_PEER}{L_COLON}</label><br /><span>{L_JAB_VERIFY_PEER_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" id="jab_verify_peer" name="jab_verify_peer" value="1"<!-- IF JAB_VERIFY_PEER --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="jab_verify_peer" value="0"<!-- IF not JAB_VERIFY_PEER --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="jab_verify_peer_name">{L_JAB_VERIFY_PEER_NAME}{L_COLON}</label><br /><span>{L_JAB_VERIFY_PEER_NAME_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" id="jab_verify_peer_name" name="jab_verify_peer_name" value="1"<!-- IF JAB_VERIFY_PEER_NAME --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="jab_verify_peer_name" value="0"<!-- IF not JAB_VERIFY_PEER_NAME --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="jab_allow_self_signed">{L_JAB_ALLOW_SELF_SIGNED}{L_COLON}</label><br /><span>{L_JAB_ALLOW_SELF_SIGNED_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" id="jab_allow_self_signed" name="jab_allow_self_signed" value="1"<!-- IF JAB_ALLOW_SELF_SIGNED --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="jab_allow_self_signed" value="0"<!-- IF not JAB_ALLOW_SELF_SIGNED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="jab_package_size">{L_JAB_PACKAGE_SIZE}{L_COLON}</label><br /><span>{L_JAB_PACKAGE_SIZE_EXPLAIN}</span></dt>
|
||||
|
@@ -14,7 +14,11 @@
|
||||
|
||||
<p>{L_ADMIN_INTRO}</p>
|
||||
|
||||
<!-- IF S_VERSIONCHECK_FAIL -->
|
||||
<!-- IF S_UPDATE_INCOMPLETE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_UPDATE_INCOMPLETE} <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||
</div>
|
||||
<!-- ELSEIF S_VERSIONCHECK_FAIL -->
|
||||
<div class="errorbox notice">
|
||||
<p>{L_VERSIONCHECK_FAIL}</p>
|
||||
<p>{VERSIONCHECK_FAIL_REASON}</p>
|
||||
@@ -26,6 +30,11 @@
|
||||
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_VERSION_UPGRADEABLE -->
|
||||
<div class="errorbox notice">
|
||||
<p>{UPGRADE_INSTRUCTIONS}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_SEARCH_INDEX_MISSING -->
|
||||
<div class="errorbox">
|
||||
|
@@ -63,6 +63,7 @@
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
</select>
|
||||
<!-- EVENT acp_posting_buttons_custom_tags_before -->
|
||||
<!-- BEGIN custom_tags -->
|
||||
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{custom_tags.BBCODE_HELPLINE}" />
|
||||
<!-- END custom_tags -->
|
||||
|
@@ -85,6 +85,7 @@
|
||||
<dd><input type="checkbox" class="radio" id="field_is_contact" name="field_is_contact" value="1"<!-- IF S_FIELD_CONTACT --> checked="checked"<!-- ENDIF --> /></dd>
|
||||
<dd><input class="text medium" type="text" name="field_contact_desc" id="field_contact_desc" value="{FIELD_CONTACT_DESC}" /> <label for="field_contact_desc">{L_FIELD_CONTACT_DESC}</label></dd>
|
||||
<dd><input class="text medium" type="text" name="field_contact_url" id="field_contact_url" value="{FIELD_CONTACT_URL}" /> <label for="field_contact_url">{L_FIELD_CONTACT_URL}</label></dd>
|
||||
<!-- EVENT acp_profile_contact_last -->
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
@@ -127,6 +128,7 @@
|
||||
<!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- EVENT acp_profile_step_one_lang_after -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="quick">
|
||||
|
@@ -51,6 +51,10 @@
|
||||
<dt><label>{L_STYLE_PATH}{L_COLON}</label></dt>
|
||||
<dd><strong>{STYLE_PATH}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_STYLE_VERSION}{L_COLON}</label></dt>
|
||||
<dd><strong>{STYLE_VERSION}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="name">{L_COPYRIGHT}{L_COLON}</label></dt>
|
||||
<dd><strong>{STYLE_COPYRIGHT}</strong></dd>
|
||||
|
@@ -6,22 +6,43 @@
|
||||
|
||||
<p>{L_VERSION_CHECK_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_UPDATE_INCOMPLETE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_UPDATE_INCOMPLETE} {L_UPDATE_INCOMPLETE_MORE}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_UP_TO_DATE -->
|
||||
<div class="successbox">
|
||||
<p>{L_VERSION_UP_TO_DATE_ACP} - <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
|
||||
</div>
|
||||
<!-- ELSE -->
|
||||
<!-- ELSEIF not S_UPDATE_INCOMPLETE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_VERSION_NOT_UP_TO_DATE_ACP} - <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_VERSION_UPGRADEABLE -->
|
||||
<div class="errorbox notice">
|
||||
<p>{UPGRADE_INSTRUCTIONS}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<fieldset>
|
||||
<legend></legend>
|
||||
<!-- IF not S_UPDATE_INCOMPLETE -->
|
||||
<dl>
|
||||
<dt><label>{L_CURRENT_VERSION}</label></dt>
|
||||
<dd><strong>{CURRENT_VERSION}</strong></dd>
|
||||
</dl>
|
||||
<!-- ELSE -->
|
||||
<dl>
|
||||
<dt><label>{L_FILES_VERSION}</label></dt>
|
||||
<dd><strong>{FILES_VERSION}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_DATABASE_VERSION}</label></dt>
|
||||
<dd><strong>{CURRENT_VERSION}</strong></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
|
||||
<!-- BEGIN updates_available -->
|
||||
@@ -38,6 +59,11 @@
|
||||
</fieldset>
|
||||
<!-- END updates_available -->
|
||||
|
||||
<!-- IF S_UPDATE_INCOMPLETE -->
|
||||
{INCOMPLETE_INSTRUCTIONS}
|
||||
<br>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF not S_UP_TO_DATE -->
|
||||
{UPDATE_INSTRUCTIONS}
|
||||
<br /><br />
|
||||
|
@@ -62,7 +62,127 @@ phpbb.addAjaxCallback('row_delete', function(res) {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Handler for submitting permissions form in chunks
|
||||
* This call will submit permissions forms in chunks of 5 fieldsets.
|
||||
*/
|
||||
function submitPermissions() {
|
||||
var $form = $('form#set-permissions'),
|
||||
fieldsetList = $form.find('fieldset[id^=perm]'),
|
||||
formDataSets = [],
|
||||
$submitAllButton = $form.find('input[type=submit][name^=action]')[0],
|
||||
$submitButton = $form.find('input[type=submit][data-clicked=true]')[0];
|
||||
|
||||
// Set proper start values for handling refresh of page
|
||||
var permissionSubmitSize = 0,
|
||||
permissionRequestCount = 0,
|
||||
forumIds = [],
|
||||
permissionSubmitFailed = false;
|
||||
|
||||
if ($submitAllButton !== $submitButton) {
|
||||
fieldsetList = $form.find('fieldset#' + $submitButton.closest('fieldset.permissions').id);
|
||||
}
|
||||
|
||||
$.each(fieldsetList, function (key, value) {
|
||||
if (key % 5 === 0) {
|
||||
formDataSets[Math.floor(key / 5)] = $form.find('fieldset#' + value.id).serialize();
|
||||
} else {
|
||||
formDataSets[Math.floor(key / 5)] += '&' + $form.find('fieldset#' + value.id).serialize();
|
||||
}
|
||||
});
|
||||
|
||||
permissionSubmitSize = formDataSets.length;
|
||||
|
||||
// Add each forum ID to forum ID list to preserve selected forums
|
||||
$.each($form.find('input[type=hidden][name^=forum_id]'), function (key, value) {
|
||||
if (value.name.match(/^forum_id\[([0-9]+)\]$/)) {
|
||||
forumIds.push(value.value);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Handler for submitted permissions form chunk
|
||||
*
|
||||
* @param {object} res Object returned by AJAX call
|
||||
*/
|
||||
function handlePermissionReturn(res) {
|
||||
permissionRequestCount++;
|
||||
var $dark = $('#darkenwrapper');
|
||||
|
||||
if (res.S_USER_WARNING) {
|
||||
phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
||||
permissionSubmitFailed = true;
|
||||
} else if (!permissionSubmitFailed && res.S_USER_NOTICE) {
|
||||
// Display success message at the end of submitting the form
|
||||
if (permissionRequestCount >= permissionSubmitSize) {
|
||||
var $alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
||||
var $alertBoxLink = $alert.find('p.alert_text > a');
|
||||
|
||||
// Create form to submit instead of normal "Back to previous page" link
|
||||
if ($alertBoxLink) {
|
||||
// Remove forum_id[] from URL
|
||||
$alertBoxLink.attr('href', $alertBoxLink.attr('href').replace(/(&forum_id\[\]=[0-9]+)/g, ''));
|
||||
var previousPageForm = '<form action="' + $alertBoxLink.attr('href') + '" method="post">';
|
||||
$.each(forumIds, function (key, value) {
|
||||
previousPageForm += '<input type="text" name="forum_id[]" value="' + value + '" />';
|
||||
});
|
||||
previousPageForm += '</form>';
|
||||
|
||||
$alertBoxLink.on('click', function (e) {
|
||||
var $previousPageForm = $(previousPageForm);
|
||||
$('body').append($previousPageForm);
|
||||
e.preventDefault();
|
||||
$previousPageForm.submit();
|
||||
});
|
||||
}
|
||||
|
||||
// Do not allow closing alert
|
||||
$dark.off('click');
|
||||
$alert.find('.alert_close').hide();
|
||||
|
||||
if (typeof res.REFRESH_DATA !== 'undefined') {
|
||||
setTimeout(function () {
|
||||
// Create forum to submit using POST. This will prevent
|
||||
// exceeding the maximum length of URLs
|
||||
var form = '<form action="' + res.REFRESH_DATA.url.replace(/(&forum_id\[\]=[0-9]+)/g, '') + '" method="post">';
|
||||
$.each(forumIds, function (key, value) {
|
||||
form += '<input type="text" name="forum_id[]" value="' + value + '" />';
|
||||
});
|
||||
form += '</form>';
|
||||
$form = $(form);
|
||||
$('body').append($form);
|
||||
|
||||
// Hide the alert even if we refresh the page, in case the user
|
||||
// presses the back button.
|
||||
$dark.fadeOut(phpbb.alertTime, function () {
|
||||
if (typeof $alert !== 'undefined') {
|
||||
$alert.hide();
|
||||
}
|
||||
});
|
||||
|
||||
// Submit form
|
||||
$form.submit();
|
||||
}, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create AJAX request for each form data set
|
||||
$.each(formDataSets, function (key, formData) {
|
||||
$.ajax({
|
||||
url: $form.action,
|
||||
type: 'POST',
|
||||
data: formData + '&' + $submitButton.name + '=' + encodeURIComponent($submitButton.value) +
|
||||
'&creation_time=' + $form.find('input[type=hidden][name=creation_time]')[0].value +
|
||||
'&form_token=' + $form.find('input[type=hidden][name=form_token]')[0].value +
|
||||
'&' + $form.children('input[type=hidden]').serialize() +
|
||||
'&' + $form.find('input[type=checkbox][name^=inherit]').serialize(),
|
||||
success: handlePermissionReturn,
|
||||
error: handlePermissionReturn
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$('[data-ajax]').each(function() {
|
||||
var $this = $(this),
|
||||
@@ -83,6 +203,18 @@ $('[data-ajax]').each(function() {
|
||||
*/
|
||||
$(function() {
|
||||
phpbb.resizeTextArea($('textarea:not(.no-auto-resize)'), {minHeight: 75});
|
||||
|
||||
var $setPermissionsForm = $('form#set-permissions');
|
||||
if ($setPermissionsForm.length) {
|
||||
$setPermissionsForm.on('submit', function (e) {
|
||||
submitPermissions();
|
||||
e.preventDefault();
|
||||
});
|
||||
$setPermissionsForm.find('input[type=submit]').click(function() {
|
||||
$('input[type=submit]', $(this).parents($('form#set-permissions'))).removeAttr('data-clicked');
|
||||
$(this).attr('data-clicked', true);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
@@ -53,7 +53,7 @@ function marklist(id, name, state)
|
||||
|
||||
for (var r = 0; r < rb.length; r++)
|
||||
{
|
||||
if (rb[r].name.substr(0, name.length) == name)
|
||||
if (rb[r].name.substr(0, name.length) == name && rb[r].disabled !== true)
|
||||
{
|
||||
rb[r].checked = state;
|
||||
}
|
||||
|
@@ -66,7 +66,7 @@ function marklist(id, name, state)
|
||||
|
||||
for (var r = 0; r < rb.length; r++)
|
||||
{
|
||||
if (rb[r].name.substr(0, name.length) == name)
|
||||
if (rb[r].name.substr(0, name.length) == name && rb[r].disabled !== true)
|
||||
{
|
||||
rb[r].checked = state;
|
||||
}
|
||||
|
@@ -33,20 +33,27 @@ phpbb.loadingIndicator = function() {
|
||||
|
||||
if (!$loadingIndicator.is(':visible')) {
|
||||
$loadingIndicator.fadeIn(phpbb.alertTime);
|
||||
// Wait fifteen seconds and display an error if nothing has been returned by then.
|
||||
// Wait 60 seconds and display an error if nothing has been returned by then.
|
||||
phpbb.clearLoadingTimeout();
|
||||
phpbbAlertTimer = setTimeout(function() {
|
||||
var $alert = $('#phpbb_alert');
|
||||
|
||||
if ($loadingIndicator.is(':visible')) {
|
||||
phpbb.alert($alert.attr('data-l-err'), $alert.attr('data-l-timeout-processing-req'));
|
||||
}
|
||||
}, 15000);
|
||||
phpbb.showTimeoutMessage();
|
||||
}, 60000);
|
||||
}
|
||||
|
||||
return $loadingIndicator;
|
||||
};
|
||||
|
||||
/**
|
||||
* Show timeout message
|
||||
*/
|
||||
phpbb.showTimeoutMessage = function () {
|
||||
var $alert = $('#phpbb_alert');
|
||||
|
||||
if ($loadingIndicator.is(':visible')) {
|
||||
phpbb.alert($alert.attr('data-l-err'), $alert.attr('data-l-timeout-processing-req'));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Clear loading alert timeout
|
||||
*/
|
||||
|
@@ -34,7 +34,7 @@
|
||||
"symfony/http-kernel": "2.3.*",
|
||||
"symfony/routing": "2.3.*",
|
||||
"symfony/yaml": "2.3.*",
|
||||
"twig/twig": "1.*"
|
||||
"twig/twig": "^1.0,<1.25"
|
||||
},
|
||||
"require-dev": {
|
||||
"fabpot/goutte": "1.0.*",
|
||||
|
298
phpBB/composer.lock
generated
298
phpBB/composer.lock
generated
@@ -1,10 +1,11 @@
|
||||
{
|
||||
"_readme": [
|
||||
"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",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "33fa9de480a8a9c8f7e3f2926cd4c034",
|
||||
"hash": "ab3d7f33388bce90e6032110a537e61f",
|
||||
"content-hash": "9c138398f4bc789098b020ed37f6ae20",
|
||||
"packages": [
|
||||
{
|
||||
"name": "lusitanian/oauth",
|
||||
@@ -71,22 +72,30 @@
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/log.git",
|
||||
"reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
|
||||
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
|
||||
"reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
||||
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Psr\\Log\\": ""
|
||||
"psr-4": {
|
||||
"Psr\\Log\\": "Psr/Log/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@@ -100,26 +109,27 @@
|
||||
}
|
||||
],
|
||||
"description": "Common interface for logging libraries",
|
||||
"homepage": "https://github.com/php-fig/log",
|
||||
"keywords": [
|
||||
"log",
|
||||
"psr",
|
||||
"psr-3"
|
||||
],
|
||||
"time": "2012-12-21 11:40:51"
|
||||
"time": "2016-10-10 12:19:37"
|
||||
},
|
||||
{
|
||||
"name": "symfony/config",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/Config",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/config.git",
|
||||
"reference": "1324aed10a750ed5a0446a71d95e321bf5d3bd24"
|
||||
"reference": "16a645cef1c09ebfc907d3c9b3e9f5836a7d4d3b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/config/zipball/1324aed10a750ed5a0446a71d95e321bf5d3bd24",
|
||||
"reference": "1324aed10a750ed5a0446a71d95e321bf5d3bd24",
|
||||
"url": "https://api.github.com/repos/symfony/config/zipball/16a645cef1c09ebfc907d3c9b3e9f5836a7d4d3b",
|
||||
"reference": "16a645cef1c09ebfc907d3c9b3e9f5836a7d4d3b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -156,21 +166,21 @@
|
||||
],
|
||||
"description": "Symfony Config Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-04 07:12:06"
|
||||
"time": "2016-05-30 08:14:41"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/Console",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "cc386594e19024e53e81ee7b6d6c37c221864c4e"
|
||||
"reference": "20c12c6d6c5a087a66d4e77999451713a92a3507"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/cc386594e19024e53e81ee7b6d6c37c221864c4e",
|
||||
"reference": "cc386594e19024e53e81ee7b6d6c37c221864c4e",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/20c12c6d6c5a087a66d4e77999451713a92a3507",
|
||||
"reference": "20c12c6d6c5a087a66d4e77999451713a92a3507",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -212,21 +222,21 @@
|
||||
],
|
||||
"description": "Symfony Console Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-04 09:20:54"
|
||||
"time": "2016-05-26 08:04:58"
|
||||
},
|
||||
{
|
||||
"name": "symfony/debug",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/Debug",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/debug.git",
|
||||
"reference": "a6f7b78e406658897f689fa8b00a06205446bebd"
|
||||
"reference": "863d29c31a1ddfcf1faedf5f8362f392e3261632"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/debug/zipball/a6f7b78e406658897f689fa8b00a06205446bebd",
|
||||
"reference": "a6f7b78e406658897f689fa8b00a06205446bebd",
|
||||
"url": "https://api.github.com/repos/symfony/debug/zipball/863d29c31a1ddfcf1faedf5f8362f392e3261632",
|
||||
"reference": "863d29c31a1ddfcf1faedf5f8362f392e3261632",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -274,21 +284,21 @@
|
||||
],
|
||||
"description": "Symfony Debug Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-04 13:04:09"
|
||||
"time": "2016-03-30 09:02:35"
|
||||
},
|
||||
{
|
||||
"name": "symfony/dependency-injection",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/DependencyInjection",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/dependency-injection.git",
|
||||
"reference": "7cbda8ce5b5e4bd865401cf243070708e1f9a5e6"
|
||||
"reference": "06265ee128644eb70356bd72ab28c9ded6618d19"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7cbda8ce5b5e4bd865401cf243070708e1f9a5e6",
|
||||
"reference": "7cbda8ce5b5e4bd865401cf243070708e1f9a5e6",
|
||||
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/06265ee128644eb70356bd72ab28c9ded6618d19",
|
||||
"reference": "06265ee128644eb70356bd72ab28c9ded6618d19",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -333,21 +343,21 @@
|
||||
],
|
||||
"description": "Symfony DependencyInjection Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-08 16:58:37"
|
||||
"time": "2016-05-30 08:31:06"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/EventDispatcher",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher.git",
|
||||
"reference": "b2d9d812e21d6e00983061d49ee61a82f54cace7"
|
||||
"reference": "fd6d162d97bf3e6060622e5c015af39ca72e33bc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b2d9d812e21d6e00983061d49ee61a82f54cace7",
|
||||
"reference": "b2d9d812e21d6e00983061d49ee61a82f54cace7",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fd6d162d97bf3e6060622e5c015af39ca72e33bc",
|
||||
"reference": "fd6d162d97bf3e6060622e5c015af39ca72e33bc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -390,21 +400,21 @@
|
||||
],
|
||||
"description": "Symfony EventDispatcher Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-04 07:12:06"
|
||||
"time": "2016-04-04 09:22:54"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/Filesystem",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "56f6725f520a357e19deaef6558c3d223046b843"
|
||||
"reference": "8fd9cd1da0afe63f0d9d4f27875782a2b7d590d3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/56f6725f520a357e19deaef6558c3d223046b843",
|
||||
"reference": "56f6725f520a357e19deaef6558c3d223046b843",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/8fd9cd1da0afe63f0d9d4f27875782a2b7d590d3",
|
||||
"reference": "8fd9cd1da0afe63f0d9d4f27875782a2b7d590d3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -440,21 +450,21 @@
|
||||
],
|
||||
"description": "Symfony Filesystem Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-10 16:50:02"
|
||||
"time": "2016-04-12 15:20:10"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/HttpFoundation",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-foundation.git",
|
||||
"reference": "f5cd42d4895d9ede5d26cb1b2883dd4f7e455a40"
|
||||
"reference": "9f4dbb1f3e3cad22d9462e0306c9c71212458f61"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/f5cd42d4895d9ede5d26cb1b2883dd4f7e455a40",
|
||||
"reference": "f5cd42d4895d9ede5d26cb1b2883dd4f7e455a40",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/9f4dbb1f3e3cad22d9462e0306c9c71212458f61",
|
||||
"reference": "9f4dbb1f3e3cad22d9462e0306c9c71212458f61",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -494,21 +504,21 @@
|
||||
],
|
||||
"description": "Symfony HttpFoundation Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-12 16:03:08"
|
||||
"time": "2016-05-13 15:22:39"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/HttpKernel",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-kernel.git",
|
||||
"reference": "a704146970a1ff261c05e865b636bcc5d95f1b5b"
|
||||
"reference": "57e0329236e8edf2b0e683043c604f7c9aba9398"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/a704146970a1ff261c05e865b636bcc5d95f1b5b",
|
||||
"reference": "a704146970a1ff261c05e865b636bcc5d95f1b5b",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/57e0329236e8edf2b0e683043c604f7c9aba9398",
|
||||
"reference": "57e0329236e8edf2b0e683043c604f7c9aba9398",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -570,20 +580,20 @@
|
||||
],
|
||||
"description": "Symfony HttpKernel Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-13 16:38:02"
|
||||
"time": "2016-05-30 08:41:10"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.1.1",
|
||||
"version": "v1.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "1289d16209491b584839022f29257ad859b8532d"
|
||||
"reference": "e79d363049d1c2128f133a2667e4f4190904f7f4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/1289d16209491b584839022f29257ad859b8532d",
|
||||
"reference": "1289d16209491b584839022f29257ad859b8532d",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4",
|
||||
"reference": "e79d363049d1c2128f133a2667e4f4190904f7f4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -595,7 +605,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1-dev"
|
||||
"dev-master": "1.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -629,21 +639,21 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2016-01-20 09:13:37"
|
||||
"time": "2016-11-14 01:06:16"
|
||||
},
|
||||
{
|
||||
"name": "symfony/routing",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/Routing",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/routing.git",
|
||||
"reference": "9f464f27cb127232f5c32d5a736fe769e5249442"
|
||||
"reference": "5b8a2bb7569df81401171829498809e90d6e446c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/routing/zipball/9f464f27cb127232f5c32d5a736fe769e5249442",
|
||||
"reference": "9f464f27cb127232f5c32d5a736fe769e5249442",
|
||||
"url": "https://api.github.com/repos/symfony/routing/zipball/5b8a2bb7569df81401171829498809e90d6e446c",
|
||||
"reference": "5b8a2bb7569df81401171829498809e90d6e446c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -691,21 +701,21 @@
|
||||
],
|
||||
"description": "Symfony Routing Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-04 07:12:06"
|
||||
"time": "2016-05-29 10:13:06"
|
||||
},
|
||||
{
|
||||
"name": "symfony/yaml",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/Yaml",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/yaml.git",
|
||||
"reference": "d5a6f4c771ae5d3faedda30eeb8db4cfb40a59fe"
|
||||
"reference": "2cb5f366f9e0df014fc93de46cc416ba0a3055f8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/d5a6f4c771ae5d3faedda30eeb8db4cfb40a59fe",
|
||||
"reference": "d5a6f4c771ae5d3faedda30eeb8db4cfb40a59fe",
|
||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/2cb5f366f9e0df014fc93de46cc416ba0a3055f8",
|
||||
"reference": "2cb5f366f9e0df014fc93de46cc416ba0a3055f8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -741,20 +751,20 @@
|
||||
],
|
||||
"description": "Symfony Yaml Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-04 07:12:08"
|
||||
"time": "2016-05-30 08:10:17"
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v1.24.0",
|
||||
"version": "v1.24.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8"
|
||||
"reference": "33093f6e310e6976baeac7b14f3a6ec02f2d79b7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8",
|
||||
"reference": "3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/33093f6e310e6976baeac7b14f3a6ec02f2d79b7",
|
||||
"reference": "33093f6e310e6976baeac7b14f3a6ec02f2d79b7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -802,7 +812,7 @@
|
||||
"keywords": [
|
||||
"templating"
|
||||
],
|
||||
"time": "2016-01-25 21:22:18"
|
||||
"time": "2016-09-01 17:50:53"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
@@ -1066,16 +1076,16 @@
|
||||
},
|
||||
{
|
||||
"name": "michelf/php-markdown",
|
||||
"version": "1.6.0",
|
||||
"version": "1.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/michelf/php-markdown.git",
|
||||
"reference": "156e56ee036505ec637d761ee62dc425d807183c"
|
||||
"reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/156e56ee036505ec637d761ee62dc425d807183c",
|
||||
"reference": "156e56ee036505ec637d761ee62dc425d807183c",
|
||||
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/1f51cc520948f66cd2af8cbc45a5ee175e774220",
|
||||
"reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1113,7 +1123,7 @@
|
||||
"keywords": [
|
||||
"markdown"
|
||||
],
|
||||
"time": "2015-12-24 01:37:31"
|
||||
"time": "2016-10-29 18:58:20"
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
@@ -1421,22 +1431,30 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-timer",
|
||||
"version": "1.0.7",
|
||||
"version": "1.0.9",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
||||
"reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
|
||||
"reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
|
||||
"reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
|
||||
"reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": "^5.3.3 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"src/"
|
||||
@@ -1458,20 +1476,20 @@
|
||||
"keywords": [
|
||||
"timer"
|
||||
],
|
||||
"time": "2015-06-21 08:01:12"
|
||||
"time": "2017-02-26 11:10:40"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-token-stream",
|
||||
"version": "1.4.8",
|
||||
"version": "1.4.11",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
||||
"reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
|
||||
"reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
|
||||
"reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7",
|
||||
"reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1507,7 +1525,7 @@
|
||||
"keywords": [
|
||||
"tokenizer"
|
||||
],
|
||||
"time": "2015-09-15 10:49:45"
|
||||
"time": "2017-02-27 10:12:30"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
@@ -1747,22 +1765,22 @@
|
||||
},
|
||||
{
|
||||
"name": "sebastian/comparator",
|
||||
"version": "1.2.0",
|
||||
"version": "1.2.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/comparator.git",
|
||||
"reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
|
||||
"reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
|
||||
"reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
|
||||
"reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"sebastian/diff": "~1.2",
|
||||
"sebastian/exporter": "~1.2"
|
||||
"sebastian/exporter": "~1.2 || ~2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.4"
|
||||
@@ -1807,27 +1825,27 @@
|
||||
"compare",
|
||||
"equality"
|
||||
],
|
||||
"time": "2015-07-26 15:48:44"
|
||||
"time": "2017-01-29 09:50:25"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/diff",
|
||||
"version": "1.4.1",
|
||||
"version": "1.4.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/diff.git",
|
||||
"reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
|
||||
"reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
|
||||
"reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
|
||||
"reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": "^5.3.3 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.8"
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -1859,27 +1877,27 @@
|
||||
"keywords": [
|
||||
"diff"
|
||||
],
|
||||
"time": "2015-12-08 07:14:41"
|
||||
"time": "2017-05-22 07:24:03"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/environment",
|
||||
"version": "1.3.5",
|
||||
"version": "1.3.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/environment.git",
|
||||
"reference": "dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf"
|
||||
"reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf",
|
||||
"reference": "dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
|
||||
"reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": "^5.3.3 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.4"
|
||||
"phpunit/phpunit": "^4.8 || ^5.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -1909,20 +1927,20 @@
|
||||
"environment",
|
||||
"hhvm"
|
||||
],
|
||||
"time": "2016-02-26 18:40:46"
|
||||
"time": "2016-08-18 05:49:44"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/exporter",
|
||||
"version": "1.2.1",
|
||||
"version": "1.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/exporter.git",
|
||||
"reference": "7ae5513327cb536431847bcc0c10edba2701064e"
|
||||
"reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
|
||||
"reference": "7ae5513327cb536431847bcc0c10edba2701064e",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
|
||||
"reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1930,12 +1948,13 @@
|
||||
"sebastian/recursion-context": "~1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-mbstring": "*",
|
||||
"phpunit/phpunit": "~4.4"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2.x-dev"
|
||||
"dev-master": "1.3.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1975,20 +1994,20 @@
|
||||
"export",
|
||||
"exporter"
|
||||
],
|
||||
"time": "2015-06-21 07:55:53"
|
||||
"time": "2016-06-17 09:04:28"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/recursion-context",
|
||||
"version": "1.0.2",
|
||||
"version": "1.0.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/recursion-context.git",
|
||||
"reference": "913401df809e99e4f47b27cdd781f4a258d58791"
|
||||
"reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791",
|
||||
"reference": "913401df809e99e4f47b27cdd781f4a258d58791",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
|
||||
"reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2028,7 +2047,7 @@
|
||||
],
|
||||
"description": "Provides functionality to recursively process PHP variables",
|
||||
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
||||
"time": "2015-11-11 19:50:13"
|
||||
"time": "2016-10-03 07:41:43"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/version",
|
||||
@@ -2067,19 +2086,20 @@
|
||||
},
|
||||
{
|
||||
"name": "squizlabs/php_codesniffer",
|
||||
"version": "2.5.1",
|
||||
"version": "2.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
||||
"reference": "6731851d6aaf1d0d6c58feff1065227b7fda3ba8"
|
||||
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6731851d6aaf1d0d6c58feff1065227b7fda3ba8",
|
||||
"reference": "6731851d6aaf1d0d6c58feff1065227b7fda3ba8",
|
||||
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
|
||||
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-simplexml": "*",
|
||||
"ext-tokenizer": "*",
|
||||
"ext-xmlwriter": "*",
|
||||
"php": ">=5.1.2"
|
||||
@@ -2140,11 +2160,11 @@
|
||||
"phpcs",
|
||||
"standards"
|
||||
],
|
||||
"time": "2016-01-19 23:39:10"
|
||||
"time": "2017-05-22 02:43:20"
|
||||
},
|
||||
{
|
||||
"name": "symfony/browser-kit",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/BrowserKit",
|
||||
"source": {
|
||||
"type": "git",
|
||||
@@ -2202,7 +2222,7 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/CssSelector",
|
||||
"source": {
|
||||
"type": "git",
|
||||
@@ -2256,17 +2276,17 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/dom-crawler",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/DomCrawler",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/dom-crawler.git",
|
||||
"reference": "507dca599566359a4489aa732612347ff65b9a51"
|
||||
"reference": "b1a52aeafe4dd31914c75e72fc9b9ca3a3e5981d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/507dca599566359a4489aa732612347ff65b9a51",
|
||||
"reference": "507dca599566359a4489aa732612347ff65b9a51",
|
||||
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b1a52aeafe4dd31914c75e72fc9b9ca3a3e5981d",
|
||||
"reference": "b1a52aeafe4dd31914c75e72fc9b9ca3a3e5981d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2308,21 +2328,21 @@
|
||||
],
|
||||
"description": "Symfony DomCrawler Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-04 07:12:08"
|
||||
"time": "2016-04-06 13:13:46"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/Finder",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/finder.git",
|
||||
"reference": "24cbc57da78ef7d05250c657b18b1ddcb1298bdf"
|
||||
"reference": "dce4b58434fc1cbd66e3006e539bb53074dfea82"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/24cbc57da78ef7d05250c657b18b1ddcb1298bdf",
|
||||
"reference": "24cbc57da78ef7d05250c657b18b1ddcb1298bdf",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/dce4b58434fc1cbd66e3006e539bb53074dfea82",
|
||||
"reference": "dce4b58434fc1cbd66e3006e539bb53074dfea82",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2358,21 +2378,21 @@
|
||||
],
|
||||
"description": "Symfony Finder Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-09 12:50:31"
|
||||
"time": "2016-05-13 14:58:35"
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v2.3.39",
|
||||
"version": "v2.3.42",
|
||||
"target-dir": "Symfony/Component/Process",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/process.git",
|
||||
"reference": "12b5d095f70d2dd706c181e51106005e008e5ca8"
|
||||
"reference": "89aced1438655ad81fc828c2e2e555e9b88fef3b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/process/zipball/12b5d095f70d2dd706c181e51106005e008e5ca8",
|
||||
"reference": "12b5d095f70d2dd706c181e51106005e008e5ca8",
|
||||
"url": "https://api.github.com/repos/symfony/process/zipball/89aced1438655ad81fc828c2e2e555e9b88fef3b",
|
||||
"reference": "89aced1438655ad81fc828c2e2e555e9b88fef3b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2408,7 +2428,7 @@
|
||||
],
|
||||
"description": "Symfony Process Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-03-04 07:12:06"
|
||||
"time": "2016-03-31 08:39:43"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
|
@@ -62,6 +62,7 @@ services:
|
||||
- @auth.provider.oauth.service_collection
|
||||
- %tables.users%
|
||||
- @service_container
|
||||
- @dispatcher
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
tags:
|
||||
|
@@ -139,3 +139,24 @@ services:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
||||
console.command.fixup.update_hashes:
|
||||
class: phpbb\console\command\fixup\update_hashes
|
||||
arguments:
|
||||
- @config
|
||||
- @user
|
||||
- @dbal.conn
|
||||
- @passwords.manager
|
||||
- @passwords.driver_collection
|
||||
- %passwords.algorithms%
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
||||
console.command.fixup.fix_left_right_ids:
|
||||
class: phpbb\console\command\fixup\fix_left_right_ids
|
||||
arguments:
|
||||
- @user
|
||||
- @dbal.conn
|
||||
- @cache.driver
|
||||
tags:
|
||||
- { name: console.command }
|
||||
|
@@ -146,3 +146,17 @@ services:
|
||||
- [set_name, [cron.task.core.tidy_warnings]]
|
||||
tags:
|
||||
- { name: cron.task }
|
||||
|
||||
cron.task.core.update_hashes:
|
||||
class: phpbb\cron\task\core\update_hashes
|
||||
arguments:
|
||||
- @config
|
||||
- @dbal.conn
|
||||
- @passwords.update.lock
|
||||
- @passwords.manager
|
||||
- @passwords.driver_collection
|
||||
- %passwords.algorithms%
|
||||
calls:
|
||||
- [set_name, [cron.task.core.update_hashes]]
|
||||
tags:
|
||||
- { name: cron.task }
|
||||
|
@@ -5,9 +5,7 @@ services:
|
||||
- @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%]]
|
||||
synthetic: true
|
||||
|
||||
dbal.tools:
|
||||
class: phpbb\db\tools
|
||||
|
@@ -25,6 +25,7 @@ services:
|
||||
- @user
|
||||
- @auth
|
||||
- @content.visibility
|
||||
- @dispatcher
|
||||
- %core.php_ext%
|
||||
|
||||
feed.forums:
|
||||
@@ -38,6 +39,7 @@ services:
|
||||
- @user
|
||||
- @auth
|
||||
- @content.visibility
|
||||
- @dispatcher
|
||||
- %core.php_ext%
|
||||
|
||||
feed.news:
|
||||
@@ -51,6 +53,7 @@ services:
|
||||
- @user
|
||||
- @auth
|
||||
- @content.visibility
|
||||
- @dispatcher
|
||||
- %core.php_ext%
|
||||
|
||||
feed.overall:
|
||||
@@ -64,6 +67,7 @@ services:
|
||||
- @user
|
||||
- @auth
|
||||
- @content.visibility
|
||||
- @dispatcher
|
||||
- %core.php_ext%
|
||||
|
||||
feed.topic:
|
||||
@@ -77,6 +81,7 @@ services:
|
||||
- @user
|
||||
- @auth
|
||||
- @content.visibility
|
||||
- @dispatcher
|
||||
- %core.php_ext%
|
||||
|
||||
feed.topics:
|
||||
@@ -90,6 +95,7 @@ services:
|
||||
- @user
|
||||
- @auth
|
||||
- @content.visibility
|
||||
- @dispatcher
|
||||
- %core.php_ext%
|
||||
|
||||
feed.topics_active:
|
||||
@@ -103,4 +109,5 @@ services:
|
||||
- @user
|
||||
- @auth
|
||||
- @content.visibility
|
||||
- @dispatcher
|
||||
- %core.php_ext%
|
||||
|
@@ -122,3 +122,10 @@ services:
|
||||
- @passwords.driver_helper
|
||||
tags:
|
||||
- { name: passwords.driver }
|
||||
|
||||
passwords.update.lock:
|
||||
class: phpbb\lock\db
|
||||
arguments:
|
||||
- update_hashes_lock
|
||||
- '@config'
|
||||
- '@dbal.conn'
|
||||
|
@@ -55,6 +55,18 @@ if ($cron_lock->acquire())
|
||||
$task = $cron->find_task($cron_type);
|
||||
if ($task)
|
||||
{
|
||||
/**
|
||||
* This event enables you to catch the task before it runs
|
||||
*
|
||||
* @event core.cron_run_before
|
||||
* @var \phpbb\cron\task\wrapper task Current Cron task
|
||||
* @since 3.1.8-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'task',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.cron_run_before', compact($vars)));
|
||||
|
||||
if ($task->is_parametrized())
|
||||
{
|
||||
$task->parse_parameters($request);
|
||||
|
@@ -50,6 +50,8 @@
|
||||
<ol>
|
||||
<li><a href="#changelog">Changelog</a>
|
||||
<ul>
|
||||
<li><a href="#v3110">Changes since 3.1.10</a></li>
|
||||
<li><a href="#v319">Changes since 3.1.9</a></li>
|
||||
<li><a href="#v318">Changes since 3.1.8</a></li>
|
||||
<li><a href="#v317pl1">Changes since 3.1.7-PL1</a></li>
|
||||
<li><a href="#v317">Changes since 3.1.7</a></li>
|
||||
@@ -118,7 +120,232 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<a name="v318"></a><h3>Changes since 3.1.8</h3>
|
||||
<a name="v3110"></a><h3>Changes since 3.1.10</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7336">PHPBB3-7336</a>] - Words in new topic title aren't found by search after topic is split</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8116">PHPBB3-8116</a>] - Server timeout or browsercrash after viewing postdetails</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8301">PHPBB3-8301</a>] - admin log generate slow queries</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9590">PHPBB3-9590</a>] - Unable to update permissions for more than 6 forums at a time</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11076">PHPBB3-11076</a>] - Update notification in ACP for minimum PHP version missing essential information</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11483">PHPBB3-11483</a>] - Forced Activation needs looking at.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11611">PHPBB3-11611</a>] - setup_github_network.php no longer creates a repository</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13247">PHPBB3-13247</a>] - Online indicator in post profile hides behind certain avatars</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13250">PHPBB3-13250</a>] - File cache does not write entries starting with _ and containing a slash</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13429">PHPBB3-13429</a>] - Changes tag in docblock of events should be unified</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13558">PHPBB3-13558</a>] - Error - stream_socket_enable_crypto()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13757">PHPBB3-13757</a>] - Negative PM count</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14468">PHPBB3-14468</a>] - [php] - 'core.viewforum_modify_topics_data' add parameter forum_id</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14549">PHPBB3-14549</a>] - Correctly redirect back after topic merge in MCP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14770">PHPBB3-14770</a>] - Plupload: WRONG_FILESIZE is used wrong</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14795">PHPBB3-14795</a>] - Topic merge bug</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14801">PHPBB3-14801</a>] - Search highlight option doesn't always highlight unicode strings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14802">PHPBB3-14802</a>] - Empty/blank lines should not be additional poll options</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14806">PHPBB3-14806</a>] - Authentication for e-mail is not working</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14819">PHPBB3-14819</a>] - Soft deleted posts visible in topic review</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14821">PHPBB3-14821</a>] - Do not expect parsed HTML in kernel subscriber output</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14830">PHPBB3-14830</a>] - FORM_INVALID error on ACP search and CPF settings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14831">PHPBB3-14831</a>] - Extension migration file fails</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14838">PHPBB3-14838</a>] - feeds.attachments_base - server 500 error for large attachment tables</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14844">PHPBB3-14844</a>] - BBcodes B and I return <strong> and <em> tags instead of CSS under inherited styles</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14859">PHPBB3-14859</a>] - PM report notifications only sent out to full Global Moderators</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14860">PHPBB3-14860</a>] - Broken link on subscriptions page on mobile devices</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14863">PHPBB3-14863</a>] - "Array" in message title when permanently deleting posts</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14864">PHPBB3-14864</a>] - ACP datefromat text input still has 30 max length while dateformat field had been expanded to 64</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14876">PHPBB3-14876</a>] - Multibyte message is not displayed properly on exception</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14877">PHPBB3-14877</a>] - CSS error in ".codebox code" definition</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14881">PHPBB3-14881</a>] - Problems using EVENT (overall_footer_content_after)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14888">PHPBB3-14888</a>] - Missing check for disabled profile field types</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14889">PHPBB3-14889</a>] - Missing method declaration in profile fields type interface</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14890">PHPBB3-14890</a>] - Wrong validation of input field in profile field type string</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14906">PHPBB3-14906</a>] - Duplicated sig key in user_cache_data array</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14923">PHPBB3-14923</a>] - SQL PostgreSQL blocking errors during DB update installation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14938">PHPBB3-14938</a>] - Inconsistent data results from ext_mgr->all_available() vs ext_mgr->is_available()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14941">PHPBB3-14941</a>] - MySQL Fulltext search index creating still fails on InnoDB</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14943">PHPBB3-14943</a>] - Template loop access gives PHP error</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14953">PHPBB3-14953</a>] - Incorrect "order by" definition in ucp_pm_viewfolder</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14968">PHPBB3-14968</a>] - Version check marks 3.1.10 boards as outdated </li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14997">PHPBB3-14997</a>] - Bad Position for topiclist_row_topic_title_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14998">PHPBB3-14998</a>] - ACP Update link is incorrect!</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15003">PHPBB3-15003</a>] - When using mark all, disabled check boxes should not become checked</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15006">PHPBB3-15006</a>] - Permission inheritance with checkbox not working</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15011">PHPBB3-15011</a>] - Error not checked on metadata load failure</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15108">PHPBB3-15108</a>] - Duplicate code in request->overwrite</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15143">PHPBB3-15143</a>] - version check on branch is broken</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15146">PHPBB3-15146</a>] - Date profile field validation incorrect</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15150">PHPBB3-15150</a>] - Yabber SSL/TLS certification</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15186">PHPBB3-15186</a>] - The force_delete_allowed flag does not affect actual posts deletion ability</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15187">PHPBB3-15187</a>] - ACP Template files not purged during Extension Enable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15246">PHPBB3-15246</a>] - Memcache driver incorrectly handles Unix sockets</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15248">PHPBB3-15248</a>] - Event core.modify_posting_auth does not honor its parameters</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9211">PHPBB3-9211</a>] - List subforums-links separately in parent-forums' legend</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12749">PHPBB3-12749</a>] - core.submit_post_end add subject to the event data</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13457">PHPBB3-13457</a>] - New Hooks for ucp_main</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13459">PHPBB3-13459</a>] - New Template-Event in overall_header.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13479">PHPBB3-13479</a>] - Add hook for modifying highlighting on viewtopic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13601">PHPBB3-13601</a>] - New event upon acl_clear_prefetch</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13603">PHPBB3-13603</a>] - New event upon index_body_online_block_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13605">PHPBB3-13605</a>] - New event upon ucp_pm_compose_predefined_message</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13608">PHPBB3-13608</a>] - New event upon ucp_restore_permissions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13609">PHPBB3-13609</a>] - New event upon ucp_switch_permissions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13845">PHPBB3-13845</a>] - Add event when user changes or delete avatar</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14119">PHPBB3-14119</a>] - [PHP] - (User) unban event request</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14239">PHPBB3-14239</a>] - [PHP] - Add event ucp_remind_modify_select_sql</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14331">PHPBB3-14331</a>] - Add rank calculation or result event access</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14520">PHPBB3-14520</a>] - [Template] - ucp_pm_viewmessage_message_body_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14522">PHPBB3-14522</a>] - [Template] - ucp_register_buttons_before</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14524">PHPBB3-14524</a>] - [PHP] - core.ucp_register_requests_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14733">PHPBB3-14733</a>] - Support increasing hashing cost factor</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14750">PHPBB3-14750</a>] - Fileupload form should not set invalid attributes for file input</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14758">PHPBB3-14758</a>] - ACP-Parameter "Maximum thumbnail width in pixel" should be "Maximum thumbnail width/heigth in pixel:"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14759">PHPBB3-14759</a>] - Event core.mcp_main_modify_shadow_sql</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14760">PHPBB3-14760</a>] - Event core.mcp_main_modify_fork_sql</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14786">PHPBB3-14786</a>] - Add mcp_forum_actions_before/after events</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14804">PHPBB3-14804</a>] - Add core event to MCP after merging topics</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14805">PHPBB3-14805</a>] - Allow building package for previous versions on PHP 7</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14808">PHPBB3-14808</a>] - Add template event overall_header_searchbox_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14817">PHPBB3-14817</a>] - Add core event on includes/functions_download.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14825">PHPBB3-14825</a>] - Add OAuth events</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14827">PHPBB3-14827</a>] - Possibility to add multiple form keys</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14842">PHPBB3-14842</a>] - Avatar size 0 - unlimited</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14847">PHPBB3-14847</a>] - Add php event to add options in ACP Attachments</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14848">PHPBB3-14848</a>] - Add ACP template events after extensions list titles</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14849">PHPBB3-14849</a>] - Add ACP extension event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14850">PHPBB3-14850</a>] - Add core events for smilies</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14852">PHPBB3-14852</a>] - Add core event to the function build_header()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14853">PHPBB3-14853</a>] - Add core event to allow modifying PM attachments download auth</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14855">PHPBB3-14855</a>] - Update notifications and PM alert bubbles</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14870">PHPBB3-14870</a>] - Add php events to modify list of PMs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14872">PHPBB3-14872</a>] - Remove count versus sizeof restriction in coding guidelines</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14874">PHPBB3-14874</a>] - Error on sending a .pak smiley</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14882">PHPBB3-14882</a>] - Add core event to MCP after move posts sync</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14887">PHPBB3-14887</a>] - ACP profile step 1 lang specific event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14918">PHPBB3-14918</a>] - Provide quick access to extension version metadata</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14940">PHPBB3-14940</a>] - Add ACP template event acp_ext_details_end</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14957">PHPBB3-14957</a>] - Do not cache database config</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14958">PHPBB3-14958</a>] - Twig extension function lang() performs redundant template data copying</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15020">PHPBB3-15020</a>] - Add Events for mcp_topic_postrow_post_subject</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15059">PHPBB3-15059</a>] - Do not wrap content in code box</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15081">PHPBB3-15081</a>] - Add ACP template event acp_ext_details_notice</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15107">PHPBB3-15107</a>] - Add additional vars to event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15131">PHPBB3-15131</a>] - Add variable to the 'core.mcp_main_modify_fork_sql' event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15142">PHPBB3-15142</a>] - Extension Version Check Should Support Branches</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15151">PHPBB3-15151</a>] - ACP Cookie settings should contain explanatory text for all fields</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15199">PHPBB3-15199</a>] - Add core event to the function send() in the messenger</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15200">PHPBB3-15200</a>] - Allow extensions using custom templates for help/faq controllers </li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15205">PHPBB3-15205</a>] - Add template events to forumlist_body.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15219">PHPBB3-15219</a>] - Add cron to update passwords hashes to bcrypt</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15226">PHPBB3-15226</a>] - Add index for latest topics query in feeds</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15237">PHPBB3-15237</a>] - Unguarded includes functions_user</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15238">PHPBB3-15238</a>] - Add console command to fix left/right IDs for the forums and modules</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15241">PHPBB3-15241</a>] - Add ACP template event acp_profile_contact_last</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15250">PHPBB3-15250</a>] - Add core event to MCP at the end of merge_posts</li>
|
||||
</ul>
|
||||
<h4>New Feature</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12545">PHPBB3-12545</a>] - new pre-posting event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13730">PHPBB3-13730</a>] - [PHP] - core.delete_post_end</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14390">PHPBB3-14390</a>] - [prosilver] - ucp_main_front_user_details_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14498">PHPBB3-14498</a>] - Not possible to deactivate display of "who is online" and birthdays for guests</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14662">PHPBB3-14662</a>] - [Template] - memberlist_team_username_prepend & append</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14868">PHPBB3-14868</a>] - [Template] - mcp_forum_modify_select_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14996">PHPBB3-14996</a>] - [event] - Add Event search_results_topictitle_after</li>
|
||||
</ul>
|
||||
<h4>Sub-task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13149">PHPBB3-13149</a>] - [Event] - core.phpbb_log_get_topic_auth_sql_before</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15178">PHPBB3-15178</a>] - Update 3.1.x dependencies</li>
|
||||
</ul>
|
||||
|
||||
<a name="v319"></a><h3>Changes since 3.1.9</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11446">PHPBB3-11446</a>] - Use sql_in_set as designed and consistent with the rest of phpBB code in phpbb_notification_manager</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12230">PHPBB3-12230</a>] - Do not auto remove user group when Newly Registered Users group was disabled</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12925">PHPBB3-12925</a>] - Use plural for permanent delete posts/topics confirmation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14109">PHPBB3-14109</a>] - MySQL InnoDB does not support multiple index definitions on the same query.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14291">PHPBB3-14291</a>] - Function send_file_to_browser() endlessly overwrites 'filesize' in ATTACHMENTS_TABLE</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14610">PHPBB3-14610</a>] - Q&A CAPTCHA logs error when it has been solved</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14615">PHPBB3-14615</a>] - delete avatar triggers the new min max value in the HTML5 inputs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14616">PHPBB3-14616</a>] - Auto-prune fails on large forums</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14631">PHPBB3-14631</a>] - 3.1.9 DB cli update crashes with PHP Fatal error: Call to undefined function phpbb\truncate_string()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14654">PHPBB3-14654</a>] - Imagemagick > ImageMagick</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14661">PHPBB3-14661</a>] - Fix a typo in twig.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14673">PHPBB3-14673</a>] - Missing Language Variable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14683">PHPBB3-14683</a>] - Typos in operators in some email templates</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14703">PHPBB3-14703</a>] - module.add adds a module to the wrong parent</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14704">PHPBB3-14704</a>] - Remove unused language files and corresponding functions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14721">PHPBB3-14721</a>] - New registrants choosing old deleted usernames get linked to old accounts with namechange</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14742">PHPBB3-14742</a>] - Improvements to migrator</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14745">PHPBB3-14745</a>] - "U_NOTIFICATION_SETTINGS" contains an HTML entity but is printed in a plaintext email</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14755">PHPBB3-14755</a>] - Error in MCP Move posts</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14782">PHPBB3-14782</a>] - Quick Links > Your Posts gives mysql error</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14788">PHPBB3-14788</a>] - Update developer list to reflect team changes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14796">PHPBB3-14796</a>] - Log table is using constant in log delete method</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13709">PHPBB3-13709</a>] - Fallback to english in email templates by extensions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13716">PHPBB3-13716</a>] - Check phpBB version constant against config version</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13865">PHPBB3-13865</a>] - Complement core event search_modify_param</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14184">PHPBB3-14184</a>] - Missing info on SMTP mail function option</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14429">PHPBB3-14429</a>] - core.obtain_users_online_string_modify</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14466">PHPBB3-14466</a>] - Add an event to cron.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14469">PHPBB3-14469</a>] - [Template] - <!-- EVENT viewforum_topicrow_before --></li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14516">PHPBB3-14516</a>] - [Template] - memberlist_email_before</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14581">PHPBB3-14581</a>] - Add core events relating to soft delete</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14592">PHPBB3-14592</a>] - [PHP] - core.search_backend_search_after</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14596">PHPBB3-14596</a>] - Prevent installs of 3.1 on PHP 7</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14624">PHPBB3-14624</a>] - Add event to ucp_profile in signature section</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14630">PHPBB3-14630</a>] - Add event to ucp_pm_compose</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14638">PHPBB3-14638</a>] - [PHP] - multiple UCP subscription events for form data and template variables</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14643">PHPBB3-14643</a>] - Select newest file in restore list</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14652">PHPBB3-14652</a>] - Typo birthdays</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14664">PHPBB3-14664</a>] - Fix PHPDoc comment in cron manager</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14672">PHPBB3-14672</a>] - Add template event to viewforum</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14685">PHPBB3-14685</a>] - PHP event for altering announcements sql</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14687">PHPBB3-14687</a>] - Modify viewforum_modify_topicrow</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14688">PHPBB3-14688</a>] - Add core events to the feeds</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14689">PHPBB3-14689</a>] - Build 3.2.x API docs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14695">PHPBB3-14695</a>] - Add posting_editor_subject_prepend/append template events</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14712">PHPBB3-14712</a>] - Add search.php core event to allow modifying the forum select list</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14713">PHPBB3-14713</a>] - Add core event to the admin function get_forum_list()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14715">PHPBB3-14715</a>] - Add template events in posting_topic_review & mcp_topic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14720">PHPBB3-14720</a>] - Add global javascript variable 'phpbb' to jshint settings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14727">PHPBB3-14727</a>] - Event core.search_modify_submit_parameters</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14738">PHPBB3-14738</a>] - Add core events to improve modifying forum lists</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14747">PHPBB3-14747</a>] - Add topic_last_poster_id and topic_last_post_time to Event core.modify_posting_auth</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14762">PHPBB3-14762</a>] - Add core event to session.php to alter IP address</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14781">PHPBB3-14781</a>] - Add core event to the function group_user_attributes()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14783">PHPBB3-14783</a>] - Event - ACP Posting Buttons Before Custom BBCodes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14784">PHPBB3-14784</a>] - missing rewrite for lighttpd</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14785">PHPBB3-14785</a>] - [Template event] - overall_header_headerbar_append</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14787">PHPBB3-14787</a>] - Add more parameters to the core.search_modify_url_parameters event</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14789">PHPBB3-14789</a>] - Add missing link hash and form token checks to ACP</li>
|
||||
</ul>
|
||||
<h4>New Feature</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13978">PHPBB3-13978</a>] - [PHP] - User control panel - on signature change</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14484">PHPBB3-14484</a>] - Support extensions in UI tests</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14506">PHPBB3-14506</a>] - [Template] - mcp_move_before</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12133">PHPBB3-12133</a>] - Update list of browsers supporting filename* in Content-Disposition</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14538">PHPBB3-14538</a>] - Update composer dependencies</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14598">PHPBB3-14598</a>] - Phing Sniffer Testing Use Statements in DocBlocks</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14743">PHPBB3-14743</a>] - Remove PHP7 from test matrix in 3.1.x</li>
|
||||
</ul>
|
||||
|
||||
<a name="v318"></a><h3>Changes since 3.1.8</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
*
|
||||
* phpBB © Copyright phpBB Limited 2003-2014
|
||||
* phpBB © Copyright phpBB Limited 2003-2016
|
||||
* http://www.phpbb.com
|
||||
*
|
||||
* phpBB is free software. You can redistribute it and/or modify it
|
||||
@@ -20,14 +20,13 @@
|
||||
|
||||
phpBB Project Manager: Marshalrusty (Yuriy Rusko)
|
||||
|
||||
phpBB Lead Developer: naderman (Nils Adermann)
|
||||
phpBB Product Manager: naderman (Nils Adermann)
|
||||
|
||||
phpBB Lead Developer: Marc (Marc Alexander)
|
||||
|
||||
phpBB Developers: bantu (Andreas Fischer)
|
||||
CHItA (Máté Bartus)
|
||||
dhruv.goel92 (Dhruv Goel)
|
||||
Elsensee (Oliver Schramm)
|
||||
marc1706 (Marc Alexander)
|
||||
nickvergessen (Joas Schilling)
|
||||
Nicofuma (Tristan Darricau)
|
||||
prototech (Cesar Gallegos)
|
||||
|
||||
@@ -54,11 +53,13 @@ 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]
|
||||
dhruv.goel92 (Dhruv Goel) [04/2013 - 05/2016]
|
||||
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]
|
||||
kellanved (Henry Sudhof) [04/2007 - 03/2011]
|
||||
nickvergessen (Joas Schilling)[04/2010 - 12/2015]
|
||||
Oleg (Oleg Pudeyev) [01/2011 - 05/2013]
|
||||
rxu (Ruslan Uzdenov) [04/2010 - 12/2012]
|
||||
TerraFrost (Jim Wigginton) [04/2009 - 01/2011]
|
||||
|
@@ -160,7 +160,7 @@
|
||||
<li>zlib Compression support</li>
|
||||
<li>Remote FTP support</li>
|
||||
<li>XML support</li>
|
||||
<li>Imagemagick support</li>
|
||||
<li>ImageMagick support</li>
|
||||
<li>GD Support</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
@@ -1122,9 +1122,6 @@ append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;
|
||||
<p>Some of these functions are only chosen over others because of personal preference and have no benefit other than maintaining consistency throughout the code.</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<p>Use <code>sizeof</code> instead of <code>count</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Use <code>strpos</code> instead of <code>strstr</code></p>
|
||||
</li>
|
||||
|
@@ -58,6 +58,42 @@ acp_email_options_after
|
||||
* Since: 3.1.2-RC1
|
||||
* Purpose: Add settings to mass email form
|
||||
|
||||
acp_ext_details_end
|
||||
===
|
||||
* Location: adm/style/acp_ext_details.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add more detailed information on extension after the available information.
|
||||
|
||||
acp_ext_details_notice
|
||||
===
|
||||
* Location: adm/style/acp_ext_details.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add extension detail notices after version check information.
|
||||
|
||||
acp_ext_list_disabled_name_after
|
||||
===
|
||||
* Location: adm/style/acp_ext_list.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content after the name of disabled extensions in the list
|
||||
|
||||
acp_ext_list_disabled_title_after
|
||||
===
|
||||
* Location: adm/style/acp_ext_list.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add text after disabled extensions section title.
|
||||
|
||||
acp_ext_list_enabled_name_after
|
||||
===
|
||||
* Location: adm/style/acp_ext_list.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content after the name of enabled extensions in the list
|
||||
|
||||
acp_ext_list_enabled_title_after
|
||||
===
|
||||
* Location: adm/style/acp_ext_list.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add text after enabled extensions section title.
|
||||
|
||||
acp_forums_custom_settings
|
||||
===
|
||||
* Location: adm/style/acp_forums.html
|
||||
@@ -343,6 +379,13 @@ acp_posting_buttons_before
|
||||
* Since: 3.1.0-b4
|
||||
* Purpose: Add content before BBCode posting buttons in the ACP
|
||||
|
||||
acp_posting_buttons_custom_tags_before
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_posting_buttons.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content before the custom BBCodes in the ACP
|
||||
|
||||
acp_profile_contact_before
|
||||
===
|
||||
* Locations:
|
||||
@@ -350,6 +393,20 @@ acp_profile_contact_before
|
||||
* Since: 3.1.6-RC1
|
||||
* Purpose: Add extra options to custom profile field configuration in the ACP
|
||||
|
||||
acp_profile_contact_last
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_profile.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add contact specific options to custom profile fields in the ACP
|
||||
|
||||
acp_profile_step_one_lang_after
|
||||
===
|
||||
* Locations:
|
||||
+ adm/style/acp_profile.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add extra lang specific options to custom profile field step one configuration in the ACP
|
||||
|
||||
acp_prune_forums_append
|
||||
===
|
||||
* Locations:
|
||||
@@ -643,6 +700,22 @@ forumlist_body_last_post_title_prepend
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add content before the post title of the latest post in a forum on the forum list.
|
||||
|
||||
forumlist_body_subforum_link_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/forumlist_body.html
|
||||
+ styles/subsilver2/template/forumlist_body.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content at the end of subforum link item.
|
||||
|
||||
forumlist_body_subforum_link_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/forumlist_body.html
|
||||
+ styles/subsilver2/template/forumlist_body.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content at the start of subforum link item.
|
||||
|
||||
forumlist_body_subforums_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -667,6 +740,14 @@ forumlist_body_last_row_after
|
||||
* Since: 3.1.0-b2
|
||||
* Purpose: Add content after the very last row of the forum list.
|
||||
|
||||
index_body_birthday_block_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/index_body.html
|
||||
+ styles/subsilver2/template/index_body.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add new statistic blocks before the Birthday block
|
||||
|
||||
index_body_block_birthday_append
|
||||
===
|
||||
* Locations:
|
||||
@@ -787,6 +868,30 @@ mcp_ban_unban_before
|
||||
* Since: 3.1.0-RC3
|
||||
* Purpose: Add additional fields to the unban form in MCP
|
||||
|
||||
mcp_forum_actions_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_forum.html
|
||||
+ styles/subsilver2/template/mcp_forum.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add some information after actions fieldset
|
||||
|
||||
mcp_forum_actions_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_forum.html
|
||||
+ styles/subsilver2/template/mcp_forum.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add additional options to actions select
|
||||
|
||||
mcp_forum_actions_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_forum.html
|
||||
+ styles/subsilver2/template/mcp_forum.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add some information before actions fieldset
|
||||
|
||||
mcp_forum_topic_title_before
|
||||
===
|
||||
* Locations:
|
||||
@@ -843,6 +948,14 @@ mcp_front_latest_unapproved_before
|
||||
* Since: 3.1.3-RC1
|
||||
* Purpose: Add content before latest unapproved posts list
|
||||
|
||||
mcp_move_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_move.html
|
||||
+ styles/subsilver2/template/mcp_move.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content before move topic/post form
|
||||
|
||||
mcp_post_additional_options
|
||||
===
|
||||
* Locations:
|
||||
@@ -867,6 +980,36 @@ mcp_topic_options_before
|
||||
* Since: 3.1.6-RC1
|
||||
* Purpose: Add some options (field, checkbox, ...) before the subject field when split a subject
|
||||
|
||||
mcp_topic_postrow_post_details_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_topic.html
|
||||
+ styles/subsilver2/template/mcp_topic.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content after post details in topic moderation
|
||||
|
||||
mcp_topic_postrow_post_details_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_topic.html
|
||||
+ styles/subsilver2/template/mcp_topic.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content before post details in topic moderation
|
||||
|
||||
mcp_topic_postrow_post_subject_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_topic.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content after post subject in topic moderation
|
||||
|
||||
mcp_topic_postrow_post_subject_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/mcp_topic.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content before post subject in topic moderation
|
||||
|
||||
mcp_topic_topic_title_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -951,6 +1094,14 @@ memberlist_body_username_prepend
|
||||
* Purpose: Add information before every username in the memberlist. Works in
|
||||
all display modes (leader, group and normal memberlist).
|
||||
|
||||
memberlist_email_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/memberlist_email.html
|
||||
+ styles/subsilver2/template/memberlist_email.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Allow adding customizations before the memberlist_email form.
|
||||
|
||||
memberlist_search_fields_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -975,6 +1126,22 @@ memberlist_search_sorting_options_before
|
||||
* Since: 3.1.2-RC1
|
||||
* Purpose: Add information before the search sorting options field.
|
||||
|
||||
memberlist_team_username_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/memberlist_team.html
|
||||
+ styles/subsilver2/template/memberlist_team.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Append information to username of team member
|
||||
|
||||
memberlist_team_username_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/memberlist_team.html
|
||||
+ styles/subsilver2/template/memberlist_team.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add information before team user username
|
||||
|
||||
memberlist_view_contact_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -1336,6 +1503,20 @@ overall_header_head_append
|
||||
* Since: 3.1.0-a1
|
||||
* Purpose: Add asset calls directly before the `</head>` tag
|
||||
|
||||
overall_header_headerbar_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/overall_header.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content at the end of the headerbar
|
||||
|
||||
overall_header_headerbar_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/overall_header.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content at the beginning of the headerbar
|
||||
|
||||
overall_header_navbar_before
|
||||
===
|
||||
* Locations:
|
||||
@@ -1384,6 +1565,13 @@ overall_header_page_body_before
|
||||
* Since: 3.1.0-b3
|
||||
* Purpose: Add content after the page-header, but before the page-body
|
||||
|
||||
overall_header_searchbox_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/overall_header.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content after the search box in the header
|
||||
|
||||
overall_header_searchbox_before
|
||||
===
|
||||
* Locations:
|
||||
@@ -1487,6 +1675,14 @@ posting_editor_subject_after
|
||||
* Since: 3.1.0-a2
|
||||
* Purpose: Add field (e.g. textbox) to the posting screen after the subject
|
||||
|
||||
posting_editor_subject_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/posting_editor.html
|
||||
+ styles/subsilver2/template/posting_body.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add field, text, etc. to the posting after the subject text box
|
||||
|
||||
posting_editor_subject_before
|
||||
===
|
||||
* Locations:
|
||||
@@ -1495,6 +1691,14 @@ posting_editor_subject_before
|
||||
* Since: 3.1.0-a2
|
||||
* Purpose: Add field (e.g. textbox) to the posting screen before the subject
|
||||
|
||||
posting_editor_subject_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/posting_editor.html
|
||||
+ styles/subsilver2/template/posting_body.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add field, text, etc. to the posting before the subject text box
|
||||
|
||||
posting_editor_submit_buttons
|
||||
===
|
||||
* Locations:
|
||||
@@ -1556,6 +1760,22 @@ posting_preview_poll_after
|
||||
* Since: 3.1.7-RC1
|
||||
* Purpose: Add content after the poll preview block
|
||||
|
||||
posting_topic_review_row_post_details_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/posting_topic_review.html
|
||||
+ styles/subsilver2/template/posting_topic_review.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content after post details in topic review
|
||||
|
||||
posting_topic_review_row_post_details_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/posting_topic_review.html
|
||||
+ styles/subsilver2/template/posting_topic_review.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content before post details in topic review
|
||||
|
||||
posting_topic_title_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -1794,6 +2014,13 @@ search_results_topic_before
|
||||
* Since: 3.1.0-b4
|
||||
* Purpose: Add data before search result topics
|
||||
|
||||
search_results_topic_title_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/search_results.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add data after search results topic title
|
||||
|
||||
simple_footer_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -1853,6 +2080,18 @@ topiclist_row_append
|
||||
* Changed: 3.1.6-RC1 Added event to mcp_forum.html
|
||||
* Purpose: Add content into topic rows (inside the elements containing topic titles)
|
||||
|
||||
topiclist_row_topic_title_after
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/search_results.html
|
||||
+ styles/prosilver/template/viewforum_body.html
|
||||
+ styles/prosilver/template/mcp_forum.html
|
||||
+ styles/subsilver2/template/search_results.html
|
||||
+ styles/subsilver2/template/viewforum_body.html
|
||||
+ styles/subsilver2/template/mcp_forum.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content into topic rows (after the elements containing the topic titles)
|
||||
|
||||
ucp_agreement_terms_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -1877,6 +2116,14 @@ ucp_main_front_user_activity_after
|
||||
* Since: 3.1.6-RC1
|
||||
* Purpose: Add content right after the user activity info viewing UCP front page
|
||||
|
||||
ucp_main_front_user_activity_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_main_front.html
|
||||
+ styles/subsilver2/template/ucp_main_front.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content after last user activity info viewing UCP front page
|
||||
|
||||
ucp_main_front_user_activity_before
|
||||
===
|
||||
* Locations:
|
||||
@@ -1885,6 +2132,14 @@ ucp_main_front_user_activity_before
|
||||
* Since: 3.1.6-RC1
|
||||
* Purpose: Add content right before the user activity info viewing UCP front page
|
||||
|
||||
ucp_main_front_user_activity_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_main_front.html
|
||||
+ styles/subsilver2/template/ucp_main_front.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content before first user activity info viewing UCP front page
|
||||
|
||||
ucp_pm_history_post_buttons_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -1981,6 +2236,13 @@ 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_options_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_pm_viewmessage.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content right before display options
|
||||
|
||||
ucp_pm_viewmessage_post_buttons_after
|
||||
===
|
||||
* Locations:
|
||||
@@ -2139,6 +2401,14 @@ ucp_profile_register_details_after
|
||||
* Since: 3.1.4-RC1
|
||||
* Purpose: Add options in profile page fieldset - after confirm password field.
|
||||
|
||||
ucp_register_buttons_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_register.html
|
||||
+ styles/subsilver2/template/ucp_register.html
|
||||
* Since: 3.1.11-RC1
|
||||
* Purpose: Add content before buttons in registration form.
|
||||
|
||||
ucp_register_credentials_before
|
||||
===
|
||||
* Locations:
|
||||
@@ -2227,6 +2497,14 @@ viewforum_body_topic_row_prepend
|
||||
* Since: 3.1.7-RC1
|
||||
* Purpose: Add content at the end of the topic list item.
|
||||
|
||||
viewforum_body_topicrow_row_before
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/viewforum_body.html
|
||||
+ styles/subsilver2/template/viewforum_body.html
|
||||
* Since: 3.1.10-RC1
|
||||
* Purpose: Add content before list of topics.
|
||||
|
||||
viewforum_buttons_bottom_before
|
||||
===
|
||||
* Locations:
|
||||
|
@@ -1,7 +1,7 @@
|
||||
# Sample lighttpd configuration file for phpBB.
|
||||
# Global settings have been removed, copy them
|
||||
# from your system's lighttpd.conf.
|
||||
# Tested with lighttpd 1.4.26
|
||||
# Tested with lighttpd 1.4.35
|
||||
|
||||
# If you want to use the X-Sendfile feature,
|
||||
# uncomment the 'allow-x-send-file' for the fastcgi
|
||||
@@ -16,6 +16,7 @@
|
||||
server.modules += (
|
||||
"mod_access",
|
||||
"mod_fastcgi",
|
||||
"mod_rewrite",
|
||||
"mod_accesslog"
|
||||
)
|
||||
|
||||
@@ -49,7 +50,15 @@ $HTTP["host"] == "www.myforums.com" {
|
||||
$HTTP["url"] =~ "/\.htaccess|/\.htpasswd|/\.htgroups" {
|
||||
url.access-deny = ( "" )
|
||||
}
|
||||
|
||||
|
||||
# The following 3 lines will rewrite URLs passed through the front controller
|
||||
# to not require app.php in the actual URL. In other words, a controller is
|
||||
# by default accessed at /app.php/my/controller, but can also be accessed at
|
||||
# /my/controller
|
||||
url.rewrite-if-not-file = (
|
||||
"^/(.*)$" => "/app.php/$1"
|
||||
)
|
||||
|
||||
fastcgi.server = ( ".php" =>
|
||||
((
|
||||
"bin-path" => "/usr/bin/php-cgi",
|
||||
|
@@ -262,7 +262,7 @@ else
|
||||
* @var string mode Download mode
|
||||
* @var bool thumbnail Flag indicating if the file is a thumbnail
|
||||
* @since 3.1.6-RC1
|
||||
* @change 3.1.7-RC1 Fixing wrong name of a variable (replacing "extension" by "extensions")
|
||||
* @changed 3.1.7-RC1 Fixing wrong name of a variable (replacing "extension" by "extensions")
|
||||
*/
|
||||
$vars = array(
|
||||
'attach_id',
|
||||
|
@@ -25,6 +25,7 @@ $auth->acl($user->data);
|
||||
$user->setup();
|
||||
|
||||
$mode = request_var('mode', '');
|
||||
$template_file = 'faq_body.html';
|
||||
|
||||
// Load the appropriate faq file
|
||||
switch ($mode)
|
||||
@@ -47,13 +48,16 @@ switch ($mode)
|
||||
* @var string lang_file Language file containing the help data
|
||||
* @var string ext_name Vendor and extension name where the help
|
||||
* language file can be loaded from
|
||||
* @var string template_file Template file name
|
||||
* @since 3.1.4-RC1
|
||||
* @changed 3.1.11-RC1 Added template_file var
|
||||
*/
|
||||
$vars = array(
|
||||
'page_title',
|
||||
'mode',
|
||||
'lang_file',
|
||||
'ext_name',
|
||||
'template_file',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.faq_mode_validation', compact($vars)));
|
||||
|
||||
@@ -106,7 +110,7 @@ $template->assign_vars(array(
|
||||
page_header($l_title);
|
||||
|
||||
$template->set_filenames(array(
|
||||
'body' => 'faq_body.html')
|
||||
'body' => $template_file)
|
||||
);
|
||||
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
|
||||
|
||||
|
@@ -84,6 +84,20 @@ $feed->open();
|
||||
// Iterate through items
|
||||
while ($row = $feed->get_item())
|
||||
{
|
||||
/**
|
||||
* Event to modify the feed row
|
||||
*
|
||||
* @event core.feed_modify_feed_row
|
||||
* @var int forum_id Forum ID
|
||||
* @var string mode Feeds mode (forums|topics|topics_new|topics_active|news)
|
||||
* @var array row Array with feed data
|
||||
* @var int topic_id Topic ID
|
||||
*
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array('forum_id', 'mode', 'row', 'topic_id');
|
||||
extract($phpbb_dispatcher->trigger_event('core.feed_modify_feed_row', compact($vars)));
|
||||
|
||||
// BBCode options to correctly disable urls, smilies, bbcode...
|
||||
if ($feed->get('options') === NULL)
|
||||
{
|
||||
|
@@ -42,7 +42,7 @@ class acp_attachments
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache, $phpbb_container;
|
||||
global $db, $user, $auth, $template, $cache, $phpbb_container, $phpbb_dispatcher;
|
||||
global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx;
|
||||
|
||||
$this->id = $id;
|
||||
@@ -162,6 +162,18 @@ class acp_attachments
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Event to add and/or modify acp_attachement configurations
|
||||
*
|
||||
* @event core.acp_attachments_config_edit_add
|
||||
* @var array display_vars Array of config values to display and process
|
||||
* @var string mode Mode of the config page we are displaying
|
||||
* @var boolean submit Do we display the form or process the submission
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array('display_vars', 'mode', 'submit');
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_attachments_config_edit_add', compact($vars)));
|
||||
|
||||
$this->new_config = $config;
|
||||
$cfg_array = (isset($_REQUEST['config'])) ? request_var('config', array('' => '')) : $this->new_config;
|
||||
$error = array();
|
||||
|
@@ -26,7 +26,7 @@ if (!defined('IN_PHPBB'))
|
||||
class acp_board
|
||||
{
|
||||
var $u_action;
|
||||
var $new_config = array();
|
||||
var $new_config;
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
@@ -318,9 +318,9 @@ class acp_board
|
||||
'title' => 'ACP_COOKIE_SETTINGS',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_COOKIE_SETTINGS',
|
||||
'cookie_domain' => array('lang' => 'COOKIE_DOMAIN', 'validate' => 'string', 'type' => 'text::255', 'explain' => false),
|
||||
'cookie_name' => array('lang' => 'COOKIE_NAME', 'validate' => 'string', 'type' => 'text::16', 'explain' => false),
|
||||
'cookie_path' => array('lang' => 'COOKIE_PATH', 'validate' => 'string', 'type' => 'text::255', 'explain' => false),
|
||||
'cookie_domain' => array('lang' => 'COOKIE_DOMAIN', 'validate' => 'string', 'type' => 'text::255', 'explain' => true),
|
||||
'cookie_name' => array('lang' => 'COOKIE_NAME', 'validate' => 'string', 'type' => 'text::16', 'explain' => true),
|
||||
'cookie_path' => array('lang' => 'COOKIE_PATH', 'validate' => 'string', 'type' => 'text::255', 'explain' => true),
|
||||
'cookie_secure' => array('lang' => 'COOKIE_SECURE', 'validate' => 'bool', 'type' => 'radio:disabled_enabled', 'explain' => true),
|
||||
)
|
||||
);
|
||||
@@ -449,11 +449,14 @@ class acp_board
|
||||
|
||||
'legend2' => 'SMTP_SETTINGS',
|
||||
'smtp_delivery' => array('lang' => 'USE_SMTP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'smtp_host' => array('lang' => 'SMTP_SERVER', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => false),
|
||||
'smtp_host' => array('lang' => 'SMTP_SERVER', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => true),
|
||||
'smtp_port' => array('lang' => 'SMTP_PORT', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true),
|
||||
'smtp_auth_method' => array('lang' => 'SMTP_AUTH_METHOD', 'validate' => 'string', 'type' => 'select', 'method' => 'mail_auth_select', 'explain' => true),
|
||||
'smtp_username' => array('lang' => 'SMTP_USERNAME', 'validate' => 'string', 'type' => 'text:25:255', 'explain' => true),
|
||||
'smtp_password' => array('lang' => 'SMTP_PASSWORD', 'validate' => 'string', 'type' => 'password:25:255', 'explain' => true),
|
||||
'smtp_verify_peer' => array('lang' => 'SMTP_VERIFY_PEER', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'smtp_verify_peer_name' => array('lang' => 'SMTP_VERIFY_PEER_NAME', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'smtp_allow_self_signed'=> array('lang' => 'SMTP_ALLOW_SELF_SIGNED','validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
|
||||
'legend3' => 'ACP_SUBMIT_CHANGES',
|
||||
)
|
||||
@@ -482,7 +485,7 @@ class acp_board
|
||||
$user->add_lang($display_vars['lang']);
|
||||
}
|
||||
|
||||
$this->new_config = $config;
|
||||
$this->new_config = clone $config;
|
||||
$cfg_array = (isset($_REQUEST['config'])) ? utf8_normalize_nfc(request_var('config', array('' => ''), true)) : $this->new_config;
|
||||
$error = array();
|
||||
|
||||
@@ -1017,7 +1020,7 @@ class acp_board
|
||||
$user->timezone = $old_tz;
|
||||
|
||||
return "<select name=\"dateoptions\" id=\"dateoptions\" onchange=\"if (this.value == 'custom') { document.getElementById('" . addslashes($key) . "').value = '" . addslashes($value) . "'; } else { document.getElementById('" . addslashes($key) . "').value = this.value; }\">$dateformat_options</select>
|
||||
<input type=\"text\" name=\"config[$key]\" id=\"$key\" value=\"$value\" maxlength=\"30\" />";
|
||||
<input type=\"text\" name=\"config[$key]\" id=\"$key\" value=\"$value\" maxlength=\"64\" />";
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -39,6 +39,9 @@ class acp_database
|
||||
$action = request_var('action', '');
|
||||
$submit = (isset($_POST['submit'])) ? true : false;
|
||||
|
||||
$form_key = 'acp_database';
|
||||
add_form_key($form_key);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'MODE' => $mode
|
||||
));
|
||||
@@ -62,6 +65,11 @@ class acp_database
|
||||
trigger_error($user->lang['TABLE_SELECT_ERROR'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!check_form_key($form_key))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$store = $download = $structure = $schema_data = false;
|
||||
|
||||
if ($where == 'store_and_download' || $where == 'store')
|
||||
|
@@ -22,55 +22,81 @@ if (!defined('IN_PHPBB'))
|
||||
class acp_extensions
|
||||
{
|
||||
var $u_action;
|
||||
var $tpl_name;
|
||||
var $page_title;
|
||||
|
||||
private $db;
|
||||
private $config;
|
||||
private $template;
|
||||
private $user;
|
||||
private $cache;
|
||||
private $log;
|
||||
private $request;
|
||||
private $phpbb_dispatcher;
|
||||
private $ext_manager;
|
||||
|
||||
function main()
|
||||
{
|
||||
// Start the page
|
||||
global $config, $user, $template, $request, $phpbb_extension_manager, $db, $phpbb_root_path, $phpEx, $phpbb_log, $cache;
|
||||
global $config, $user, $template, $request, $phpbb_extension_manager, $phpbb_root_path, $phpEx, $phpbb_log, $cache, $phpbb_dispatcher;
|
||||
|
||||
$this->db = $db;
|
||||
$this->config = $config;
|
||||
$this->template = $template;
|
||||
$this->user = $user;
|
||||
$this->cache = $cache;
|
||||
$this->request = $request;
|
||||
$this->log = $phpbb_log;
|
||||
$this->phpbb_dispatcher = $phpbb_dispatcher;
|
||||
$this->ext_manager = $phpbb_extension_manager;
|
||||
|
||||
$user->add_lang(array('install', 'acp/extensions', 'migrator'));
|
||||
$this->user->add_lang(array('install', 'acp/extensions', 'migrator'));
|
||||
|
||||
$this->page_title = 'ACP_EXTENSIONS';
|
||||
|
||||
$action = $request->variable('action', 'list');
|
||||
$ext_name = $request->variable('ext_name', '');
|
||||
$action = $this->request->variable('action', 'list');
|
||||
$ext_name = $this->request->variable('ext_name', '');
|
||||
|
||||
// What is a safe limit of execution time? Half the max execution time should be safe.
|
||||
$safe_time_limit = (ini_get('max_execution_time') / 2);
|
||||
$start_time = time();
|
||||
|
||||
// Cancel action
|
||||
if ($request->is_set_post('cancel'))
|
||||
if ($this->request->is_set_post('cancel'))
|
||||
{
|
||||
$action = 'list';
|
||||
$ext_name = '';
|
||||
}
|
||||
|
||||
if (in_array($action, array('enable', 'disable', 'delete_data')) && !check_link_hash($request->variable('hash', ''), $action . '.' . $ext_name))
|
||||
if (in_array($action, array('enable', 'disable', 'delete_data')) && !check_link_hash($this->request->variable('hash', ''), $action . '.' . $ext_name))
|
||||
{
|
||||
trigger_error('FORM_INVALID', E_USER_WARNING);
|
||||
}
|
||||
|
||||
/**
|
||||
* Event to run a specific action on extension
|
||||
*
|
||||
* @event core.acp_extensions_run_action_before
|
||||
* @var string action Action to run; if the event completes execution of the action, should be set to 'none'
|
||||
* @var string u_action Url we are at
|
||||
* @var string ext_name Extension name from request
|
||||
* @var int safe_time_limit Safe limit of execution time
|
||||
* @var int start_time Start time
|
||||
* @var string tpl_name Template file to load
|
||||
* @since 3.1.11-RC1
|
||||
* @changed 3.2.1-RC1 Renamed to core.acp_extensions_run_action_before, added tpl_name, added action 'none'
|
||||
*/
|
||||
$u_action = $this->u_action;
|
||||
$tpl_name = '';
|
||||
$vars = array('action', 'u_action', 'ext_name', 'safe_time_limit', 'start_time', 'tpl_name');
|
||||
extract($this->phpbb_dispatcher->trigger_event('core.acp_extensions_run_action_before', compact($vars)));
|
||||
|
||||
// In case they have been updated by the event
|
||||
$this->u_action = $u_action;
|
||||
$this->tpl_name = $tpl_name;
|
||||
|
||||
// If they've specified an extension, let's load the metadata manager and validate it.
|
||||
if ($ext_name)
|
||||
{
|
||||
$md_manager = new \phpbb\extension\metadata_manager($ext_name, $config, $phpbb_extension_manager, $template, $user, $phpbb_root_path);
|
||||
$md_manager = $this->ext_manager->create_extension_metadata_manager($ext_name, $this->template);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -85,6 +111,10 @@ class acp_extensions
|
||||
// What are we doing?
|
||||
switch ($action)
|
||||
{
|
||||
case 'none':
|
||||
// Intentionally empty, used by extensions that execute additional actions in the prior event
|
||||
break;
|
||||
|
||||
case 'set_config_version_check_force_unstable':
|
||||
$force_unstable = $this->request->variable('force_unstable', false);
|
||||
|
||||
@@ -94,12 +124,12 @@ class acp_extensions
|
||||
'force_unstable' => $force_unstable,
|
||||
));
|
||||
|
||||
confirm_box(false, $user->lang('EXTENSION_FORCE_UNSTABLE_CONFIRM'), $s_hidden_fields);
|
||||
confirm_box(false, $this->user->lang('EXTENSION_FORCE_UNSTABLE_CONFIRM'), $s_hidden_fields);
|
||||
}
|
||||
else
|
||||
{
|
||||
$config->set('extension_force_unstable', false);
|
||||
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||
$this->config->set('extension_force_unstable', false);
|
||||
trigger_error($this->user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -107,17 +137,17 @@ class acp_extensions
|
||||
default:
|
||||
if (confirm_box(true))
|
||||
{
|
||||
$config->set('extension_force_unstable', true);
|
||||
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||
$this->config->set('extension_force_unstable', true);
|
||||
trigger_error($this->user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||
}
|
||||
|
||||
$this->list_enabled_exts($phpbb_extension_manager);
|
||||
$this->list_disabled_exts($phpbb_extension_manager);
|
||||
$this->list_available_exts($phpbb_extension_manager);
|
||||
$this->list_enabled_exts();
|
||||
$this->list_disabled_exts();
|
||||
$this->list_available_exts();
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1',
|
||||
'FORCE_UNSTABLE' => $config['extension_force_unstable'],
|
||||
'FORCE_UNSTABLE' => $this->config['extension_force_unstable'],
|
||||
'U_ACTION' => $this->u_action,
|
||||
));
|
||||
|
||||
@@ -125,30 +155,29 @@ class acp_extensions
|
||||
break;
|
||||
|
||||
case 'enable_pre':
|
||||
if (!$md_manager->validate_dir())
|
||||
try
|
||||
{
|
||||
trigger_error($user->lang['EXTENSION_DIR_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
$md_manager->validate_enable();
|
||||
}
|
||||
catch (\phpbb\extension\exception $e)
|
||||
{
|
||||
trigger_error($e . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!$md_manager->validate_enable())
|
||||
{
|
||||
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$extension = $phpbb_extension_manager->get_extension($ext_name);
|
||||
$extension = $this->ext_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);
|
||||
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if ($phpbb_extension_manager->is_enabled($ext_name))
|
||||
if ($this->ext_manager->is_enabled($ext_name))
|
||||
{
|
||||
redirect($this->u_action);
|
||||
}
|
||||
|
||||
$this->tpl_name = 'acp_ext_enable';
|
||||
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'PRE' => true,
|
||||
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_ENABLE_CONFIRM', $md_manager->get_metadata('display-name')),
|
||||
'U_ENABLE' => $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name),
|
||||
@@ -156,57 +185,65 @@ class acp_extensions
|
||||
break;
|
||||
|
||||
case 'enable':
|
||||
if (!$md_manager->validate_dir())
|
||||
try
|
||||
{
|
||||
trigger_error($user->lang['EXTENSION_DIR_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
$md_manager->validate_enable();
|
||||
}
|
||||
catch (\phpbb\extension\exception $e)
|
||||
{
|
||||
trigger_error($e . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!$md_manager->validate_enable())
|
||||
{
|
||||
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$extension = $phpbb_extension_manager->get_extension($ext_name);
|
||||
$extension = $this->ext_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);
|
||||
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
while ($phpbb_extension_manager->enable_step($ext_name))
|
||||
while ($this->ext_manager->enable_step($ext_name))
|
||||
{
|
||||
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||
if ((time() - $start_time) >= $safe_time_limit)
|
||||
{
|
||||
$template->assign_var('S_NEXT_STEP', true);
|
||||
$this->template->assign_var('S_NEXT_STEP', true);
|
||||
|
||||
meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name));
|
||||
}
|
||||
}
|
||||
$this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE', time(), array($ext_name));
|
||||
|
||||
// Update custom style for admin area
|
||||
$this->template->set_custom_style(array(
|
||||
array(
|
||||
'name' => 'adm',
|
||||
'ext_path' => 'adm/style/',
|
||||
),
|
||||
), array($phpbb_root_path . 'adm/style'));
|
||||
|
||||
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_ENABLE', time(), array($ext_name));
|
||||
}
|
||||
catch (\phpbb\db\migration\exception $e)
|
||||
{
|
||||
$template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user));
|
||||
$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user));
|
||||
}
|
||||
|
||||
$this->tpl_name = 'acp_ext_enable';
|
||||
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'U_RETURN' => $this->u_action . '&action=list',
|
||||
));
|
||||
break;
|
||||
|
||||
case 'disable_pre':
|
||||
if (!$phpbb_extension_manager->is_enabled($ext_name))
|
||||
if (!$this->ext_manager->is_enabled($ext_name))
|
||||
{
|
||||
redirect($this->u_action);
|
||||
}
|
||||
|
||||
$this->tpl_name = 'acp_ext_disable';
|
||||
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'PRE' => true,
|
||||
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_DISABLE_CONFIRM', $md_manager->get_metadata('display-name')),
|
||||
'U_DISABLE' => $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name),
|
||||
@@ -214,38 +251,38 @@ class acp_extensions
|
||||
break;
|
||||
|
||||
case 'disable':
|
||||
if (!$phpbb_extension_manager->is_enabled($ext_name))
|
||||
if (!$this->ext_manager->is_enabled($ext_name))
|
||||
{
|
||||
redirect($this->u_action);
|
||||
}
|
||||
|
||||
while ($phpbb_extension_manager->disable_step($ext_name))
|
||||
while ($this->ext_manager->disable_step($ext_name))
|
||||
{
|
||||
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||
if ((time() - $start_time) >= $safe_time_limit)
|
||||
{
|
||||
$template->assign_var('S_NEXT_STEP', true);
|
||||
$this->template->assign_var('S_NEXT_STEP', true);
|
||||
|
||||
meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name));
|
||||
}
|
||||
}
|
||||
$this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_DISABLE', time(), array($ext_name));
|
||||
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_DISABLE', time(), array($ext_name));
|
||||
|
||||
$this->tpl_name = 'acp_ext_disable';
|
||||
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'U_RETURN' => $this->u_action . '&action=list',
|
||||
));
|
||||
break;
|
||||
|
||||
case 'delete_data_pre':
|
||||
if ($phpbb_extension_manager->is_enabled($ext_name))
|
||||
if ($this->ext_manager->is_enabled($ext_name))
|
||||
{
|
||||
redirect($this->u_action);
|
||||
}
|
||||
$this->tpl_name = 'acp_ext_delete_data';
|
||||
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'PRE' => true,
|
||||
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_DELETE_DATA_CONFIRM', $md_manager->get_metadata('display-name')),
|
||||
'U_PURGE' => $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name),
|
||||
@@ -253,33 +290,33 @@ class acp_extensions
|
||||
break;
|
||||
|
||||
case 'delete_data':
|
||||
if ($phpbb_extension_manager->is_enabled($ext_name))
|
||||
if ($this->ext_manager->is_enabled($ext_name))
|
||||
{
|
||||
redirect($this->u_action);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
while ($phpbb_extension_manager->purge_step($ext_name))
|
||||
while ($this->ext_manager->purge_step($ext_name))
|
||||
{
|
||||
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||
if ((time() - $start_time) >= $safe_time_limit)
|
||||
{
|
||||
$template->assign_var('S_NEXT_STEP', true);
|
||||
$this->template->assign_var('S_NEXT_STEP', true);
|
||||
|
||||
meta_refresh(0, $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name));
|
||||
}
|
||||
}
|
||||
$this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE', time(), array($ext_name));
|
||||
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_PURGE', time(), array($ext_name));
|
||||
}
|
||||
catch (\phpbb\db\migration\exception $e)
|
||||
{
|
||||
$template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user));
|
||||
$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user));
|
||||
}
|
||||
|
||||
$this->tpl_name = 'acp_ext_delete_data';
|
||||
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'U_RETURN' => $this->u_action . '&action=list',
|
||||
));
|
||||
break;
|
||||
@@ -290,28 +327,25 @@ class acp_extensions
|
||||
|
||||
try
|
||||
{
|
||||
$updates_available = $this->version_check($md_manager, $request->variable('versioncheck_force', false));
|
||||
$updates_available = $this->version_check($md_manager, $this->request->variable('versioncheck_force', false));
|
||||
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'S_UP_TO_DATE' => empty($updates_available),
|
||||
'S_VERSIONCHECK' => true,
|
||||
'UP_TO_DATE_MSG' => $this->user->lang(empty($updates_available) ? 'UP_TO_DATE' : 'NOT_UP_TO_DATE', $md_manager->get_metadata('display-name')),
|
||||
));
|
||||
|
||||
foreach ($updates_available as $branch => $version_data)
|
||||
{
|
||||
$template->assign_block_vars('updates_available', $version_data);
|
||||
}
|
||||
$this->template->assign_block_vars('updates_available', $updates_available);
|
||||
}
|
||||
catch (\RuntimeException $e)
|
||||
{
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'S_VERSIONCHECK_STATUS' => $e->getCode(),
|
||||
'VERSIONCHECK_FAIL_REASON' => ($e->getMessage() !== $user->lang('VERSIONCHECK_FAIL')) ? $e->getMessage() : '',
|
||||
'VERSIONCHECK_FAIL_REASON' => ($e->getMessage() !== $this->user->lang('VERSIONCHECK_FAIL')) ? $e->getMessage() : '',
|
||||
));
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
$this->template->assign_vars(array(
|
||||
'U_BACK' => $this->u_action . '&action=list',
|
||||
'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=details&versioncheck_force=1&ext_name=' . urlencode($md_manager->get_metadata('name')),
|
||||
));
|
||||
@@ -319,21 +353,41 @@ class acp_extensions
|
||||
$this->tpl_name = 'acp_ext_details';
|
||||
break;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event to run after a specific action on extension has completed
|
||||
*
|
||||
* @event core.acp_extensions_run_action_after
|
||||
* @var string action Action that has run
|
||||
* @var string u_action Url we are at
|
||||
* @var string ext_name Extension name from request
|
||||
* @var int safe_time_limit Safe limit of execution time
|
||||
* @var int start_time Start time
|
||||
* @var string tpl_name Template file to load
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$u_action = $this->u_action;
|
||||
$tpl_name = $this->tpl_name;
|
||||
$vars = array('action', 'u_action', 'ext_name', 'safe_time_limit', 'start_time', 'tpl_name');
|
||||
extract($this->phpbb_dispatcher->trigger_event('core.acp_extensions_run_action_after', compact($vars)));
|
||||
|
||||
// In case they have been updated by the event
|
||||
$this->u_action = $u_action;
|
||||
$this->tpl_name = $tpl_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists all the enabled extensions and dumps to the template
|
||||
*
|
||||
* @param $phpbb_extension_manager An instance of the extension manager
|
||||
* @return null
|
||||
*/
|
||||
public function list_enabled_exts(\phpbb\extension\manager $phpbb_extension_manager)
|
||||
public function list_enabled_exts()
|
||||
{
|
||||
$enabled_extension_meta_data = array();
|
||||
|
||||
foreach ($phpbb_extension_manager->all_enabled() as $name => $location)
|
||||
foreach ($this->ext_manager->all_enabled() as $name => $location)
|
||||
{
|
||||
$md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, $this->template);
|
||||
$md_manager = $this->ext_manager->create_extension_metadata_manager($name, $this->template);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -381,16 +435,15 @@ class acp_extensions
|
||||
/**
|
||||
* Lists all the disabled extensions and dumps to the template
|
||||
*
|
||||
* @param $phpbb_extension_manager An instance of the extension manager
|
||||
* @return null
|
||||
*/
|
||||
public function list_disabled_exts(\phpbb\extension\manager $phpbb_extension_manager)
|
||||
public function list_disabled_exts()
|
||||
{
|
||||
$disabled_extension_meta_data = array();
|
||||
|
||||
foreach ($phpbb_extension_manager->all_disabled() as $name => $location)
|
||||
foreach ($this->ext_manager->all_disabled() as $name => $location)
|
||||
{
|
||||
$md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, $this->template);
|
||||
$md_manager = $this->ext_manager->create_extension_metadata_manager($name, $this->template);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -439,18 +492,17 @@ class acp_extensions
|
||||
/**
|
||||
* Lists all the available extensions and dumps to the template
|
||||
*
|
||||
* @param $phpbb_extension_manager An instance of the extension manager
|
||||
* @return null
|
||||
*/
|
||||
public function list_available_exts(\phpbb\extension\manager $phpbb_extension_manager)
|
||||
public function list_available_exts()
|
||||
{
|
||||
$uninstalled = array_diff_key($phpbb_extension_manager->all_available(), $phpbb_extension_manager->all_configured());
|
||||
$uninstalled = array_diff_key($this->ext_manager->all_available(), $this->ext_manager->all_configured());
|
||||
|
||||
$available_extension_meta_data = array();
|
||||
|
||||
foreach ($uninstalled as $name => $location)
|
||||
{
|
||||
$md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, $this->template);
|
||||
$md_manager = $this->ext_manager->create_extension_metadata_manager($name, $this->template);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -519,7 +571,7 @@ class acp_extensions
|
||||
* @param \phpbb\extension\metadata_manager $md_manager The metadata manager for the version to check.
|
||||
* @param bool $force_update Ignores cached data. Defaults to false.
|
||||
* @param bool $force_cache Force the use of the cache. Override $force_update.
|
||||
* @return string
|
||||
* @return array
|
||||
* @throws RuntimeException
|
||||
*/
|
||||
protected function version_check(\phpbb\extension\metadata_manager $md_manager, $force_update = false, $force_cache = false)
|
||||
@@ -538,7 +590,7 @@ class acp_extensions
|
||||
$version_helper->set_file_location($version_check['host'], $version_check['directory'], $version_check['filename'], isset($version_check['ssl']) ? $version_check['ssl'] : false);
|
||||
$version_helper->force_stability($this->config['extension_force_unstable'] ? 'unstable' : null);
|
||||
|
||||
return $updates = $version_helper->get_suggested_updates($force_update, $force_cache);
|
||||
return $version_helper->get_ext_update_on_branch($force_update, $force_cache);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -842,9 +842,26 @@ class acp_forums
|
||||
ORDER BY left_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
$rowset = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
$rowset[(int) $row['forum_id']] = $row;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
/**
|
||||
* Modify the forum list data
|
||||
*
|
||||
* @event core.acp_manage_forums_modify_forum_list
|
||||
* @var array rowset Array with the forums list data
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array('rowset');
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_modify_forum_list', compact($vars)));
|
||||
|
||||
if (!empty($rowset))
|
||||
{
|
||||
foreach ($rowset as $row)
|
||||
{
|
||||
$forum_type = $row['forum_type'];
|
||||
|
||||
@@ -888,7 +905,6 @@ class acp_forums
|
||||
'U_SYNC' => $url . '&action=sync')
|
||||
);
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
else if ($this->parent_id)
|
||||
{
|
||||
@@ -904,7 +920,7 @@ class acp_forums
|
||||
'U_SYNC' => $url . '&action=sync')
|
||||
);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
unset($rowset);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'ERROR_MSG' => (sizeof($errors)) ? implode('<br />', $errors) : '',
|
||||
|
@@ -40,6 +40,10 @@ class acp_icons
|
||||
$action = (isset($_POST['edit'])) ? 'edit' : $action;
|
||||
$action = (isset($_POST['import'])) ? 'import' : $action;
|
||||
$icon_id = request_var('id', 0);
|
||||
$submit = $request->is_set_post('submit', false);
|
||||
|
||||
$form_key = 'acp_icons';
|
||||
add_form_key($form_key);
|
||||
|
||||
$mode = ($mode == 'smilies') ? 'smilies' : 'icons';
|
||||
|
||||
@@ -325,6 +329,11 @@ class acp_icons
|
||||
case 'create':
|
||||
case 'modify':
|
||||
|
||||
if (!check_form_key($form_key))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
// Get items to create/modify
|
||||
$images = (isset($_POST['image'])) ? array_keys(request_var('image', array('' => 0))) : array();
|
||||
|
||||
@@ -513,6 +522,11 @@ class acp_icons
|
||||
{
|
||||
$order = 0;
|
||||
|
||||
if (!check_form_key($form_key))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!($pak_ary = @file($phpbb_root_path . $img_path . '/' . $pak)))
|
||||
{
|
||||
trigger_error($user->lang['PAK_FILE_NOT_READABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
@@ -698,7 +712,7 @@ class acp_icons
|
||||
|
||||
$template->assign_vars(array(
|
||||
'MESSAGE_TITLE' => $user->lang['EXPORT_' . $lang],
|
||||
'MESSAGE_TEXT' => sprintf($user->lang['EXPORT_' . $lang . '_EXPLAIN'], '<a href="' . $this->u_action . '&action=send">', '</a>'),
|
||||
'MESSAGE_TEXT' => sprintf($user->lang['EXPORT_' . $lang . '_EXPLAIN'], '<a href="' . $this->u_action . '&action=send&hash=' . generate_link_hash('acp_icons') . '">', '</a>'),
|
||||
|
||||
'S_USER_NOTICE' => true,
|
||||
)
|
||||
@@ -710,6 +724,11 @@ class acp_icons
|
||||
|
||||
case 'send':
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_icons'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM $table
|
||||
ORDER BY {$fields}_order";
|
||||
@@ -811,6 +830,11 @@ class acp_icons
|
||||
case 'move_up':
|
||||
case 'move_down':
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_icons'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
// Get current order id...
|
||||
$sql = "SELECT {$fields}_order as current_order
|
||||
FROM $table
|
||||
@@ -928,8 +952,8 @@ class acp_icons
|
||||
'EMOTION' => (isset($row['emotion'])) ? $row['emotion'] : '',
|
||||
'U_EDIT' => $this->u_action . '&action=edit&id=' . $row[$fields . '_id'],
|
||||
'U_DELETE' => $this->u_action . '&action=delete&id=' . $row[$fields . '_id'],
|
||||
'U_MOVE_UP' => $this->u_action . '&action=move_up&id=' . $row[$fields . '_id'] . '&start=' . $pagination_start,
|
||||
'U_MOVE_DOWN' => $this->u_action . '&action=move_down&id=' . $row[$fields . '_id'] . '&start=' . $pagination_start,
|
||||
'U_MOVE_UP' => $this->u_action . '&action=move_up&id=' . $row[$fields . '_id'] . '&start=' . $pagination_start . '&hash=' . generate_link_hash('acp_icons'),
|
||||
'U_MOVE_DOWN' => $this->u_action . '&action=move_down&id=' . $row[$fields . '_id'] . '&start=' . $pagination_start . '&hash=' . generate_link_hash('acp_icons'),
|
||||
));
|
||||
|
||||
if (!$spacer && !$row['display_on_posting'])
|
||||
|
@@ -50,13 +50,16 @@ class acp_jabber
|
||||
$this->tpl_name = 'acp_jabber';
|
||||
$this->page_title = 'ACP_JABBER_SETTINGS';
|
||||
|
||||
$jab_enable = request_var('jab_enable', (bool) $config['jab_enable']);
|
||||
$jab_host = request_var('jab_host', (string) $config['jab_host']);
|
||||
$jab_port = request_var('jab_port', (int) $config['jab_port']);
|
||||
$jab_username = request_var('jab_username', (string) $config['jab_username']);
|
||||
$jab_password = request_var('jab_password', (string) $config['jab_password']);
|
||||
$jab_package_size = request_var('jab_package_size', (int) $config['jab_package_size']);
|
||||
$jab_use_ssl = request_var('jab_use_ssl', (bool) $config['jab_use_ssl']);
|
||||
$jab_enable = request_var('jab_enable', (bool) $config['jab_enable']);
|
||||
$jab_host = request_var('jab_host', (string) $config['jab_host']);
|
||||
$jab_port = request_var('jab_port', (int) $config['jab_port']);
|
||||
$jab_username = request_var('jab_username', (string) $config['jab_username']);
|
||||
$jab_password = request_var('jab_password', (string) $config['jab_password']);
|
||||
$jab_package_size = request_var('jab_package_size', (int) $config['jab_package_size']);
|
||||
$jab_use_ssl = request_var('jab_use_ssl', (bool) $config['jab_use_ssl']);
|
||||
$jab_verify_peer = request_var('jab_verify_peer', (bool) $config['jab_verify_peer']);
|
||||
$jab_verify_peer_name = request_var('jab_verify_peer_name', (bool) $config['jab_verify_peer_name']);
|
||||
$jab_allow_self_signed = request_var('jab_allow_self_signed', (bool) $config['jab_allow_self_signed']);
|
||||
|
||||
$form_name = 'acp_jabber';
|
||||
add_form_key($form_name);
|
||||
@@ -76,7 +79,7 @@ class acp_jabber
|
||||
// Is this feature enabled? Then try to establish a connection
|
||||
if ($jab_enable)
|
||||
{
|
||||
$jabber = new jabber($jab_host, $jab_port, $jab_username, $jab_password, $jab_use_ssl);
|
||||
$jabber = new jabber($jab_host, $jab_port, $jab_username, $jab_password, $jab_use_ssl, $jab_verify_peer, $jab_verify_peer_name, $jab_allow_self_signed);
|
||||
|
||||
if (!$jabber->connect())
|
||||
{
|
||||
@@ -116,6 +119,9 @@ class acp_jabber
|
||||
}
|
||||
set_config('jab_package_size', $jab_package_size);
|
||||
set_config('jab_use_ssl', $jab_use_ssl);
|
||||
set_config('jab_verify_peer', $jab_verify_peer);
|
||||
set_config('jab_verify_peer_name', $jab_verify_peer_name);
|
||||
set_config('jab_allow_self_signed', $jab_allow_self_signed);
|
||||
|
||||
add_log('admin', 'LOG_' . $log);
|
||||
trigger_error($message . adm_back_link($this->u_action));
|
||||
@@ -131,6 +137,9 @@ class acp_jabber
|
||||
'JAB_PASSWORD' => $jab_password !== '' ? '********' : '',
|
||||
'JAB_PACKAGE_SIZE' => $jab_package_size,
|
||||
'JAB_USE_SSL' => $jab_use_ssl,
|
||||
'JAB_VERIFY_PEER' => $jab_verify_peer,
|
||||
'JAB_VERIFY_PEER_NAME' => $jab_verify_peer_name,
|
||||
'JAB_ALLOW_SELF_SIGNED' => $jab_allow_self_signed,
|
||||
'S_CAN_USE_SSL' => jabber::can_use_ssl(),
|
||||
'S_GTALK_NOTE' => (!@function_exists('dns_get_record')) ? true : false,
|
||||
));
|
||||
|
@@ -244,6 +244,11 @@ class acp_language
|
||||
break;
|
||||
|
||||
case 'install':
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_language'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$lang_iso = request_var('iso', '');
|
||||
$lang_iso = basename($lang_iso);
|
||||
|
||||
@@ -423,7 +428,7 @@ class acp_language
|
||||
'ISO' => htmlspecialchars($lang_ary['iso']),
|
||||
'LOCAL_NAME' => htmlspecialchars($lang_ary['local_name'], ENT_COMPAT, 'UTF-8'),
|
||||
'NAME' => htmlspecialchars($lang_ary['name'], ENT_COMPAT, 'UTF-8'),
|
||||
'U_INSTALL' => $this->u_action . '&action=install&iso=' . urlencode($lang_ary['iso']))
|
||||
'U_INSTALL' => $this->u_action . '&action=install&iso=' . urlencode($lang_ary['iso']) . '&hash=' . generate_link_hash('acp_language'))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -421,23 +421,33 @@ class acp_main
|
||||
// Version check
|
||||
$user->add_lang('install');
|
||||
|
||||
if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.3.3', '<'))
|
||||
if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.4.0', '<'))
|
||||
{
|
||||
$template->assign_vars(array(
|
||||
'S_PHP_VERSION_OLD' => true,
|
||||
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], '<a href="https://www.phpbb.com/community/viewtopic.php?f=14&t=2152375">', '</a>'),
|
||||
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], PHP_VERSION, '5.4.0', '<a href="https://www.phpbb.com/support/docs/en/3.2/ug/quickstart/requirements">', '</a>'),
|
||||
));
|
||||
}
|
||||
|
||||
if ($auth->acl_get('a_board'))
|
||||
{
|
||||
/** @var \phpbb\version_helper $version_helper */
|
||||
$version_helper = $phpbb_container->get('version_helper');
|
||||
try
|
||||
{
|
||||
$recheck = $request->variable('versioncheck_force', false);
|
||||
$updates_available = $version_helper->get_suggested_updates($recheck);
|
||||
$updates_available = $version_helper->get_update_on_branch($recheck);
|
||||
$upgrades_available = $version_helper->get_suggested_updates();
|
||||
if (!empty($upgrades_available))
|
||||
{
|
||||
$upgrades_available = array_pop($upgrades_available);
|
||||
}
|
||||
|
||||
$template->assign_var('S_VERSION_UP_TO_DATE', empty($updates_available));
|
||||
$template->assign_vars(array(
|
||||
'S_VERSION_UP_TO_DATE' => empty($updates_available),
|
||||
'S_VERSION_UPGRADEABLE' => !empty($upgrades_available),
|
||||
'UPGRADE_INSTRUCTIONS' => !empty($upgrades_available) ? $user->lang('UPGRADE_INSTRUCTIONS', $upgrades_available['current'], $upgrades_available['announcement']) : false,
|
||||
));
|
||||
}
|
||||
catch (\RuntimeException $e)
|
||||
{
|
||||
@@ -453,6 +463,12 @@ class acp_main
|
||||
$template->assign_var('S_VERSION_UP_TO_DATE', true);
|
||||
}
|
||||
|
||||
// Incomplete update?
|
||||
if (phpbb_version_compare($config['version'], PHPBB_VERSION, '<'))
|
||||
{
|
||||
$template->assign_var('S_UPDATE_INCOMPLETE', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notice admin
|
||||
*
|
||||
|
@@ -46,6 +46,9 @@ class acp_modules
|
||||
$user->add_lang('acp/modules');
|
||||
$this->tpl_name = 'acp_modules';
|
||||
|
||||
$form_key = 'acp_modules';
|
||||
add_form_key($form_key);
|
||||
|
||||
// module class
|
||||
$this->module_class = $mode;
|
||||
|
||||
@@ -119,6 +122,11 @@ class acp_modules
|
||||
trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_modules'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM ' . MODULES_TABLE . "
|
||||
WHERE module_class = '" . $db->sql_escape($this->module_class) . "'
|
||||
@@ -150,6 +158,11 @@ class acp_modules
|
||||
trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_modules'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM ' . MODULES_TABLE . "
|
||||
WHERE module_class = '" . $db->sql_escape($this->module_class) . "'
|
||||
@@ -273,6 +286,11 @@ class acp_modules
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
if (!check_form_key($form_key))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!$module_data['module_langname'])
|
||||
{
|
||||
trigger_error($user->lang['NO_MODULE_LANGNAME'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||
@@ -460,12 +478,12 @@ class acp_modules
|
||||
'S_ACP_MODULE_MANAGEMENT' => ($this->module_class == 'acp' && ($row['module_basename'] == 'modules' || $row['module_langname'] == 'ACP_MODULE_MANAGEMENT')) ? true : false,
|
||||
|
||||
'U_MODULE' => $this->u_action . '&parent_id=' . $row['module_id'],
|
||||
'U_MOVE_UP' => $url . '&action=move_up',
|
||||
'U_MOVE_DOWN' => $url . '&action=move_down',
|
||||
'U_MOVE_UP' => $url . '&action=move_up&hash=' . generate_link_hash('acp_modules'),
|
||||
'U_MOVE_DOWN' => $url . '&action=move_down&hash=' . generate_link_hash('acp_modules'),
|
||||
'U_EDIT' => $url . '&action=edit',
|
||||
'U_DELETE' => $url . '&action=delete',
|
||||
'U_ENABLE' => $url . '&action=enable',
|
||||
'U_DISABLE' => $url . '&action=disable')
|
||||
'U_ENABLE' => $url . '&action=enable&hash=' . generate_link_hash('acp_modules'),
|
||||
'U_DISABLE' => $url . '&action=disable&hash=' . generate_link_hash('acp_modules'))
|
||||
);
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
@@ -484,8 +502,8 @@ class acp_modules
|
||||
|
||||
'U_EDIT' => $url . '&action=edit',
|
||||
'U_DELETE' => $url . '&action=delete',
|
||||
'U_ENABLE' => $url . '&action=enable',
|
||||
'U_DISABLE' => $url . '&action=disable')
|
||||
'U_ENABLE' => $url . '&action=enable&hash=' . generate_link_hash('acp_modules'),
|
||||
'U_DISABLE' => $url . '&action=disable&hash=' . generate_link_hash('acp_modules'))
|
||||
);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
@@ -366,6 +366,11 @@ class acp_permission_roles
|
||||
case 'move_up':
|
||||
case 'move_down':
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_permission_roles'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql = 'SELECT role_order
|
||||
FROM ' . ACL_ROLES_TABLE . "
|
||||
WHERE role_id = $role_id";
|
||||
@@ -440,8 +445,8 @@ class acp_permission_roles
|
||||
|
||||
'U_EDIT' => $this->u_action . '&action=edit&role_id=' . $row['role_id'],
|
||||
'U_REMOVE' => $this->u_action . '&action=remove&role_id=' . $row['role_id'],
|
||||
'U_MOVE_UP' => $this->u_action . '&action=move_up&role_id=' . $row['role_id'],
|
||||
'U_MOVE_DOWN' => $this->u_action . '&action=move_down&role_id=' . $row['role_id'],
|
||||
'U_MOVE_UP' => $this->u_action . '&action=move_up&role_id=' . $row['role_id'] . '&hash=' . generate_link_hash('acp_permission_roles'),
|
||||
'U_MOVE_DOWN' => $this->u_action . '&action=move_down&role_id=' . $row['role_id'] . '&hash=' . generate_link_hash('acp_permission_roles'),
|
||||
'U_DISPLAY_ITEMS' => ($row['role_id'] == $display_item) ? '' : $this->u_action . '&display_item=' . $row['role_id'] . '#assigned_to')
|
||||
);
|
||||
|
||||
|
@@ -755,6 +755,7 @@ class acp_permissions
|
||||
|
||||
$this->log_action($mode, 'add', $permission_type, $ug_type, $ug_id, $forum_id);
|
||||
|
||||
meta_refresh(5, $this->u_action);
|
||||
trigger_error($user->lang['AUTH_UPDATED'] . adm_back_link($this->u_action));
|
||||
}
|
||||
|
||||
@@ -825,10 +826,12 @@ class acp_permissions
|
||||
|
||||
if ($mode == 'setting_forum_local' || $mode == 'setting_mod_local')
|
||||
{
|
||||
meta_refresh(5, $this->u_action . '&forum_id[]=' . implode('&forum_id[]=', $forum_ids));
|
||||
trigger_error($user->lang['AUTH_UPDATED'] . adm_back_link($this->u_action . '&forum_id[]=' . implode('&forum_id[]=', $forum_ids)));
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_refresh(5, $this->u_action);
|
||||
trigger_error($user->lang['AUTH_UPDATED'] . adm_back_link($this->u_action));
|
||||
}
|
||||
}
|
||||
@@ -899,10 +902,12 @@ class acp_permissions
|
||||
|
||||
if ($mode == 'setting_forum_local' || $mode == 'setting_mod_local')
|
||||
{
|
||||
meta_refresh(5, $this->u_action . '&forum_id[]=' . implode('&forum_id[]=', $forum_id));
|
||||
trigger_error($user->lang['AUTH_UPDATED'] . adm_back_link($this->u_action . '&forum_id[]=' . implode('&forum_id[]=', $forum_id)));
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_refresh(5, $this->u_action);
|
||||
trigger_error($user->lang['AUTH_UPDATED'] . adm_back_link($this->u_action));
|
||||
}
|
||||
}
|
||||
|
@@ -53,6 +53,9 @@ class acp_profile
|
||||
$error = array();
|
||||
$s_hidden_fields = '';
|
||||
|
||||
$form_key = 'acp_profile';
|
||||
add_form_key($form_key);
|
||||
|
||||
if (!$field_id && in_array($action, array('delete','activate', 'deactivate', 'move_up', 'move_down', 'edit')))
|
||||
{
|
||||
trigger_error($user->lang['NO_FIELD_ID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
@@ -161,6 +164,11 @@ class acp_profile
|
||||
|
||||
case 'activate':
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_profile'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql = 'SELECT lang_id
|
||||
FROM ' . LANG_TABLE . "
|
||||
WHERE lang_iso = '" . $db->sql_escape($config['default_lang']) . "'";
|
||||
@@ -201,6 +209,11 @@ class acp_profile
|
||||
|
||||
case 'deactivate':
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_profile'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql = 'UPDATE ' . PROFILE_FIELDS_TABLE . "
|
||||
SET field_active = 0
|
||||
WHERE field_id = $field_id";
|
||||
@@ -230,6 +243,11 @@ class acp_profile
|
||||
case 'move_up':
|
||||
case 'move_down':
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_profile'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql = 'SELECT field_order
|
||||
FROM ' . PROFILE_FIELDS_TABLE . "
|
||||
WHERE field_id = $field_id";
|
||||
@@ -581,6 +599,11 @@ class acp_profile
|
||||
{
|
||||
if (($step == 3 && (sizeof($this->lang_defs['iso']) == 1 || $save)) || ($action == 'edit' && $save))
|
||||
{
|
||||
if (!check_form_key($form_key))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$this->save_profile_field($cp, $field_type, $action);
|
||||
}
|
||||
}
|
||||
@@ -729,18 +752,22 @@ class acp_profile
|
||||
$s_one_need_edit = true;
|
||||
}
|
||||
|
||||
if (!isset($this->type_collection[$row['field_type']]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$profile_field = $this->type_collection[$row['field_type']];
|
||||
$template->assign_block_vars('fields', array(
|
||||
'FIELD_IDENT' => $row['field_ident'],
|
||||
'FIELD_TYPE' => $profile_field->get_name(),
|
||||
|
||||
'L_ACTIVATE_DEACTIVATE' => $user->lang[$active_lang],
|
||||
'U_ACTIVATE_DEACTIVATE' => $this->u_action . "&action=$active_value&field_id=$id",
|
||||
'U_ACTIVATE_DEACTIVATE' => $this->u_action . "&action=$active_value&field_id=$id" . '&hash=' . generate_link_hash('acp_profile'),
|
||||
'U_EDIT' => $this->u_action . "&action=edit&field_id=$id",
|
||||
'U_TRANSLATE' => $this->u_action . "&action=edit&field_id=$id&step=3",
|
||||
'U_DELETE' => $this->u_action . "&action=delete&field_id=$id",
|
||||
'U_MOVE_UP' => $this->u_action . "&action=move_up&field_id=$id",
|
||||
'U_MOVE_DOWN' => $this->u_action . "&action=move_down&field_id=$id",
|
||||
'U_MOVE_UP' => $this->u_action . "&action=move_up&field_id=$id" . '&hash=' . generate_link_hash('acp_profile'),
|
||||
'U_MOVE_DOWN' => $this->u_action . "&action=move_down&field_id=$id" . '&hash=' . generate_link_hash('acp_profile'),
|
||||
|
||||
'S_NEED_EDIT' => $s_need_edit)
|
||||
);
|
||||
|
@@ -282,6 +282,11 @@ class acp_reasons
|
||||
case 'move_up':
|
||||
case 'move_down':
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_reasons'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$sql = 'SELECT reason_order
|
||||
FROM ' . REPORTS_REASONS_TABLE . "
|
||||
WHERE reason_id = $reason_id";
|
||||
@@ -383,8 +388,8 @@ class acp_reasons
|
||||
|
||||
'U_EDIT' => $this->u_action . '&action=edit&id=' . $row['reason_id'],
|
||||
'U_DELETE' => (!$other_reason) ? $this->u_action . '&action=delete&id=' . $row['reason_id'] : '',
|
||||
'U_MOVE_UP' => $this->u_action . '&action=move_up&id=' . $row['reason_id'],
|
||||
'U_MOVE_DOWN' => $this->u_action . '&action=move_down&id=' . $row['reason_id'])
|
||||
'U_MOVE_UP' => $this->u_action . '&action=move_up&id=' . $row['reason_id'] . '&hash=' . generate_link_hash('acp_reasons'),
|
||||
'U_MOVE_DOWN' => $this->u_action . '&action=move_down&id=' . $row['reason_id'] . '&hash=' . generate_link_hash('acp_reasons'))
|
||||
);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
@@ -50,11 +50,16 @@ class acp_search
|
||||
|
||||
function settings($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache;
|
||||
global $db, $user, $auth, $template, $cache, $request;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
$submit = (isset($_POST['submit'])) ? true : false;
|
||||
|
||||
if ($submit && !check_link_hash($request->variable('hash', ''), 'acp_search'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$search_types = $this->get_search_types();
|
||||
|
||||
$settings = array(
|
||||
@@ -226,13 +231,13 @@ class acp_search
|
||||
'S_YES_SEARCH' => (bool) $config['load_search'],
|
||||
'S_SETTINGS' => true,
|
||||
|
||||
'U_ACTION' => $this->u_action)
|
||||
'U_ACTION' => $this->u_action . '&hash=' . generate_link_hash('acp_search'))
|
||||
);
|
||||
}
|
||||
|
||||
function index($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache;
|
||||
global $db, $user, $auth, $template, $cache, $request;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
$action = request_var('action', '');
|
||||
@@ -244,6 +249,12 @@ class acp_search
|
||||
$this->state = array();
|
||||
$this->save_state();
|
||||
}
|
||||
$submit = $request->is_set_post('submit', false);
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_search') && in_array($action, array('create', 'delete')))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if ($action)
|
||||
{
|
||||
@@ -294,7 +305,7 @@ class acp_search
|
||||
if (method_exists($this->search, 'delete_index'))
|
||||
{
|
||||
// pass a reference to myself so the $search object can make use of save_state() and attributes
|
||||
if ($error = $this->search->delete_index($this, append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=$mode&action=delete", false)))
|
||||
if ($error = $this->search->delete_index($this, append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=$mode&action=delete&hash=" . generate_link_hash('acp_search'), false)))
|
||||
{
|
||||
$this->state = array('');
|
||||
$this->save_state();
|
||||
@@ -339,7 +350,7 @@ class acp_search
|
||||
$mtime = explode(' ', microtime());
|
||||
$totaltime = $mtime[0] + $mtime[1] - $starttime;
|
||||
$rows_per_second = $row_count / $totaltime;
|
||||
meta_refresh(1, append_sid($this->u_action . '&action=delete&skip_rows=' . $post_counter));
|
||||
meta_refresh(1, append_sid($this->u_action . '&action=delete&skip_rows=' . $post_counter . '&hash=' . generate_link_hash('acp_search')));
|
||||
trigger_error($user->lang('SEARCH_INDEX_DELETE_REDIRECT', (int) $row_count, $post_counter, $rows_per_second));
|
||||
}
|
||||
}
|
||||
@@ -429,7 +440,7 @@ class acp_search
|
||||
$mtime = explode(' ', microtime());
|
||||
$totaltime = $mtime[0] + $mtime[1] - $starttime;
|
||||
$rows_per_second = $row_count / $totaltime;
|
||||
meta_refresh(1, append_sid($this->u_action . '&action=create&skip_rows=' . $post_counter));
|
||||
meta_refresh(1, append_sid($this->u_action . '&action=create&skip_rows=' . $post_counter . '&hash=' . generate_link_hash('acp_search')));
|
||||
trigger_error($user->lang('SEARCH_INDEX_CREATE_REDIRECT', (int) $row_count, $post_counter) . $user->lang('SEARCH_INDEX_CREATE_REDIRECT_RATE', $rows_per_second));
|
||||
}
|
||||
}
|
||||
@@ -508,7 +519,7 @@ class acp_search
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_INDEX' => true,
|
||||
'U_ACTION' => $this->u_action,
|
||||
'U_ACTION' => $this->u_action . '&hash=' . generate_link_hash('acp_search'),
|
||||
'U_PROGRESS_BAR' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=$mode&action=progress_bar"),
|
||||
'UA_PROGRESS_BAR' => addslashes(append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=$mode&action=progress_bar")),
|
||||
));
|
||||
@@ -517,7 +528,7 @@ class acp_search
|
||||
{
|
||||
$template->assign_vars(array(
|
||||
'S_CONTINUE_INDEXING' => $this->state[1],
|
||||
'U_CONTINUE_INDEXING' => $this->u_action . '&action=' . $this->state[1],
|
||||
'U_CONTINUE_INDEXING' => $this->u_action . '&action=' . $this->state[1] . '&hash=' . generate_link_hash('acp_search'),
|
||||
'L_CONTINUE' => ($this->state[1] == 'create') ? $user->lang['CONTINUE_INDEXING'] : $user->lang['CONTINUE_DELETING_INDEX'],
|
||||
'L_CONTINUE_EXPLAIN' => ($this->state[1] == 'create') ? $user->lang['CONTINUE_INDEXING_EXPLAIN'] : $user->lang['CONTINUE_DELETING_INDEX_EXPLAIN'])
|
||||
);
|
||||
|
@@ -433,6 +433,9 @@ class acp_styles
|
||||
trigger_error($this->user->lang['NO_MATCHING_STYLES_FOUND'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
// Read style configuration file
|
||||
$style_cfg = $this->read_style_cfg($style['style_path']);
|
||||
|
||||
// Find all available parent styles
|
||||
$list = $this->find_possible_parents($styles, $id);
|
||||
|
||||
@@ -579,6 +582,7 @@ class acp_styles
|
||||
'STYLE_ID' => $style['style_id'],
|
||||
'STYLE_NAME' => htmlspecialchars($style['style_name']),
|
||||
'STYLE_PATH' => htmlspecialchars($style['style_path']),
|
||||
'STYLE_VERSION' => htmlspecialchars($style_cfg['style_version']),
|
||||
'STYLE_COPYRIGHT' => strip_tags($style['style_copyright']),
|
||||
'STYLE_PARENT' => $style['style_parent_id'],
|
||||
'S_STYLE_ACTIVE' => $style['style_active'],
|
||||
|
@@ -37,7 +37,12 @@ class acp_update
|
||||
try
|
||||
{
|
||||
$recheck = $request->variable('versioncheck_force', false);
|
||||
$updates_available = $version_helper->get_suggested_updates($recheck);
|
||||
$updates_available = $version_helper->get_update_on_branch($recheck);
|
||||
$upgrades_available = $version_helper->get_suggested_updates();
|
||||
if (!empty($upgrades_available))
|
||||
{
|
||||
$upgrades_available = array_pop($upgrades_available);
|
||||
}
|
||||
}
|
||||
catch (\RuntimeException $e)
|
||||
{
|
||||
@@ -46,12 +51,9 @@ class acp_update
|
||||
$updates_available = array();
|
||||
}
|
||||
|
||||
foreach ($updates_available as $branch => $version_data)
|
||||
{
|
||||
$template->assign_block_vars('updates_available', $version_data);
|
||||
}
|
||||
$template->assign_block_vars('updates_available', $updates_available);
|
||||
|
||||
$update_link = append_sid($phpbb_root_path . 'install/index.' . $phpEx, 'mode=update');
|
||||
$update_link = append_sid($phpbb_root_path . 'install/');
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_UP_TO_DATE' => empty($updates_available),
|
||||
@@ -61,6 +63,20 @@ class acp_update
|
||||
'CURRENT_VERSION' => $config['version'],
|
||||
|
||||
'UPDATE_INSTRUCTIONS' => sprintf($user->lang['UPDATE_INSTRUCTIONS'], $update_link),
|
||||
'S_VERSION_UPGRADEABLE' => !empty($upgrades_available),
|
||||
'UPGRADE_INSTRUCTIONS' => !empty($upgrades_available) ? $user->lang('UPGRADE_INSTRUCTIONS', $upgrades_available['current'], $upgrades_available['announcement']) : false,
|
||||
));
|
||||
|
||||
// Incomplete update?
|
||||
if (phpbb_version_compare($config['version'], PHPBB_VERSION, '<'))
|
||||
{
|
||||
$database_update_link = append_sid($phpbb_root_path . 'install/database_update.' . $phpEx);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_UPDATE_INCOMPLETE' => true,
|
||||
'FILES_VERSION' => PHPBB_VERSION,
|
||||
'INCOMPLETE_INSTRUCTIONS' => $user->lang('UPDATE_INCOMPLETE_EXPLAIN', $database_update_link),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -373,11 +373,6 @@ class acp_users
|
||||
if ($user_row['user_type'] == USER_NORMAL)
|
||||
{
|
||||
user_active_flip('deactivate', $user_id, INACTIVE_REMIND);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . "
|
||||
SET user_actkey = '" . $db->sql_escape($user_actkey) . "'
|
||||
WHERE user_id = $user_id";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -386,8 +381,18 @@ class acp_users
|
||||
FROM ' . USERS_TABLE . '
|
||||
WHERE user_id = ' . $user_id;
|
||||
$result = $db->sql_query($sql);
|
||||
$user_actkey = (string) $db->sql_fetchfield('user_actkey');
|
||||
$user_activation_key = (string) $db->sql_fetchfield('user_actkey');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$user_actkey = empty($user_activation_key) ? $user_actkey : $user_activation_key;
|
||||
}
|
||||
|
||||
if ($user_row['user_type'] == USER_NORMAL || empty($user_activation_key))
|
||||
{
|
||||
$sql = 'UPDATE ' . USERS_TABLE . "
|
||||
SET user_actkey = '" . $db->sql_escape($user_actkey) . "'
|
||||
WHERE user_id = $user_id";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
$messenger = new messenger(false);
|
||||
@@ -1924,7 +1929,7 @@ class acp_users
|
||||
|
||||
'S_FORM_ENCTYPE' => ' enctype="multipart/form-data"',
|
||||
|
||||
'L_AVATAR_EXPLAIN' => sprintf($user->lang['AVATAR_EXPLAIN'], $config['avatar_max_width'], $config['avatar_max_height'], $config['avatar_filesize'] / 1024),
|
||||
'L_AVATAR_EXPLAIN' => $user->lang(($config['avatar_filesize'] == 0) ? 'AVATAR_EXPLAIN_NO_FILESIZE' : 'AVATAR_EXPLAIN', $config['avatar_max_width'], $config['avatar_max_height'], $config['avatar_filesize'] / 1024),
|
||||
|
||||
'S_AVATARS_ENABLED' => ($config['allow_avatar'] && $avatars_enabled),
|
||||
));
|
||||
@@ -2274,6 +2279,12 @@ class acp_users
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!check_link_hash($request->variable('hash', ''), 'acp_users'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
group_user_attributes($action, $group_id, $user_id);
|
||||
|
||||
if ($action == 'default')
|
||||
@@ -2431,8 +2442,8 @@ class acp_users
|
||||
{
|
||||
$template->assign_block_vars('group', array(
|
||||
'U_EDIT_GROUP' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=groups&mode=manage&action=edit&u=$user_id&g={$data['group_id']}&back_link=acp_users_groups"),
|
||||
'U_DEFAULT' => $this->u_action . "&action=default&u=$user_id&g=" . $data['group_id'],
|
||||
'U_DEMOTE_PROMOTE' => $this->u_action . '&action=' . (($data['group_leader']) ? 'demote' : 'promote') . "&u=$user_id&g=" . $data['group_id'],
|
||||
'U_DEFAULT' => $this->u_action . "&action=default&u=$user_id&g=" . $data['group_id'] . '&hash=' . generate_link_hash('acp_users'),
|
||||
'U_DEMOTE_PROMOTE' => $this->u_action . '&action=' . (($data['group_leader']) ? 'demote' : 'promote') . "&u=$user_id&g=" . $data['group_id'] . '&hash=' . generate_link_hash('acp_users'),
|
||||
'U_DELETE' => $this->u_action . "&action=delete&u=$user_id&g=" . $data['group_id'],
|
||||
'U_APPROVE' => ($group_type == 'pending') ? $this->u_action . "&action=approve&u=$user_id&g=" . $data['group_id'] : '',
|
||||
|
||||
|
@@ -15,16 +15,31 @@ class acp_logs_info
|
||||
{
|
||||
function module()
|
||||
{
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
$modes = array(
|
||||
'admin' => array('title' => 'ACP_ADMIN_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),
|
||||
'mod' => array('title' => 'ACP_MOD_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),
|
||||
'users' => array('title' => 'ACP_USERS_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),
|
||||
'critical' => array('title' => 'ACP_CRITICAL_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),
|
||||
);
|
||||
|
||||
/**
|
||||
* Event to add or modify ACP log modulemodes
|
||||
*
|
||||
* @event core.acp_logs_info_modify_modes
|
||||
* @var array modes Array with modes info
|
||||
* @since 3.1.11-RC1
|
||||
* @since 3.2.1-RC1
|
||||
*/
|
||||
$vars = array('modes');
|
||||
extract($phpbb_dispatcher->trigger_event('core.acp_logs_info_modify_modes', compact($vars)));
|
||||
|
||||
return array(
|
||||
'filename' => 'acp_logs',
|
||||
'title' => 'ACP_LOGGING',
|
||||
'version' => '1.0.0',
|
||||
'modes' => array(
|
||||
'admin' => array('title' => 'ACP_ADMIN_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),
|
||||
'mod' => array('title' => 'ACP_MOD_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),
|
||||
'users' => array('title' => 'ACP_USERS_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),
|
||||
'critical' => array('title' => 'ACP_CRITICAL_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),
|
||||
),
|
||||
'modes' => $modes,
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -28,7 +28,7 @@ if (!defined('IN_PHPBB'))
|
||||
*/
|
||||
|
||||
// phpBB Version
|
||||
define('PHPBB_VERSION', '3.1.9-RC1');
|
||||
define('PHPBB_VERSION', '3.1.11-RC1');
|
||||
|
||||
// QA-related
|
||||
// define('PHPBB_QA', 1);
|
||||
|
@@ -2233,13 +2233,6 @@ function generate_board_url($without_script_path = false)
|
||||
global $config, $user, $request;
|
||||
|
||||
$server_name = $user->host;
|
||||
$server_port = $request->server('SERVER_PORT', 0);
|
||||
$forwarded_proto = $request->server('HTTP_X_FORWARDED_PROTO');
|
||||
|
||||
if (!empty($forwarded_proto) && $forwarded_proto === 'https')
|
||||
{
|
||||
$server_port = 443;
|
||||
}
|
||||
|
||||
// Forcing server vars is the only way to specify/override the protocol
|
||||
if ($config['force_server_vars'] || !$server_name)
|
||||
@@ -2254,6 +2247,13 @@ function generate_board_url($without_script_path = false)
|
||||
}
|
||||
else
|
||||
{
|
||||
$server_port = $request->server('SERVER_PORT', 0);
|
||||
$forwarded_proto = $request->server('HTTP_X_FORWARDED_PROTO');
|
||||
|
||||
if (!empty($forwarded_proto) && $forwarded_proto === 'https')
|
||||
{
|
||||
$server_port = 443;
|
||||
}
|
||||
// Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection
|
||||
$cookie_secure = $request->is_secure() ? 1 : 0;
|
||||
$url = (($cookie_secure) ? 'https://' : 'http://') . $server_name;
|
||||
@@ -2609,8 +2609,9 @@ function check_link_hash($token, $link_name)
|
||||
/**
|
||||
* Add a secret token to the form (requires the S_FORM_TOKEN template variable)
|
||||
* @param string $form_name The name of the form; has to match the name used in check_form_key, otherwise no restrictions apply
|
||||
* @param string $template_variable_suffix A string that is appended to the name of the template variable to which the form elements are assigned
|
||||
*/
|
||||
function add_form_key($form_name)
|
||||
function add_form_key($form_name, $template_variable_suffix = '')
|
||||
{
|
||||
global $config, $template, $user, $phpbb_dispatcher;
|
||||
|
||||
@@ -2627,13 +2628,15 @@ function add_form_key($form_name)
|
||||
* 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
|
||||
* @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
|
||||
* @var string template_variable_suffix The string that is appended to template variable name
|
||||
*
|
||||
* @since 3.1.0-RC3
|
||||
* @changed 3.1.11-RC1 Added template_variable_suffix
|
||||
*/
|
||||
$vars = array(
|
||||
'form_name',
|
||||
@@ -2641,12 +2644,11 @@ function add_form_key($form_name)
|
||||
's_fields',
|
||||
'token',
|
||||
'token_sid',
|
||||
'template_variable_suffix',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.add_form_key', compact($vars)));
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_FORM_TOKEN' => $s_fields,
|
||||
));
|
||||
$template->assign_var('S_FORM_TOKEN' . $template_variable_suffix, $s_fields);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2774,7 +2776,7 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
|
||||
$u_action .= ((strpos($u_action, '?') === false) ? '?' : '&') . 'confirm_key=' . $confirm_key;
|
||||
|
||||
$template->assign_vars(array(
|
||||
'MESSAGE_TITLE' => (!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang[$title],
|
||||
'MESSAGE_TITLE' => (!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang($title, 1),
|
||||
'MESSAGE_TEXT' => (!isset($user->lang[$title . '_CONFIRM'])) ? $title : $user->lang[$title . '_CONFIRM'],
|
||||
|
||||
'YES_VALUE' => $user->lang['YES'],
|
||||
@@ -4334,6 +4336,30 @@ function obtain_users_online_string($online_users, $item_id = 0, $item = 'forum'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify online userlist data
|
||||
*
|
||||
* @event core.obtain_users_online_string_before_modify
|
||||
* @var array online_users Array with online users data
|
||||
* from obtain_users_online()
|
||||
* @var int item_id Restrict online users to item id
|
||||
* @var string item Restrict online users to a certain
|
||||
* session item, e.g. forum for
|
||||
* session_forum_id
|
||||
* @var array rowset Array with online users data
|
||||
* @var array user_online_link Array with online users items (usernames)
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'online_users',
|
||||
'item_id',
|
||||
'item',
|
||||
'rowset',
|
||||
'user_online_link',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.obtain_users_online_string_before_modify', compact($vars)));
|
||||
|
||||
$online_userlist = implode(', ', $user_online_link);
|
||||
|
||||
if (!$online_userlist)
|
||||
|
@@ -65,7 +65,7 @@ function recalc_nested_sets(&$new_id, $pkey, $table, $parent_id = 0, $where = ar
|
||||
*/
|
||||
function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl = false, $ignore_nonpost = false, $ignore_emptycat = true, $only_acl_post = false, $return_array = false)
|
||||
{
|
||||
global $db, $user, $auth;
|
||||
global $db, $user, $auth, $phpbb_dispatcher;
|
||||
|
||||
// This query is identical to the jumpbox one
|
||||
$sql = 'SELECT forum_id, forum_name, parent_id, forum_type, forum_flags, forum_options, left_id, right_id
|
||||
@@ -73,16 +73,33 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl =
|
||||
ORDER BY left_id ASC';
|
||||
$result = $db->sql_query($sql, 600);
|
||||
|
||||
$rowset = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$rowset[(int) $row['forum_id']] = $row;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$right = 0;
|
||||
$padding_store = array('0' => '');
|
||||
$padding = '';
|
||||
$forum_list = ($return_array) ? array() : '';
|
||||
|
||||
/**
|
||||
* Modify the forum list data
|
||||
*
|
||||
* @event core.make_forum_select_modify_forum_list
|
||||
* @var array rowset Array with the forums list data
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array('rowset');
|
||||
extract($phpbb_dispatcher->trigger_event('core.make_forum_select_modify_forum_list', compact($vars)));
|
||||
|
||||
// Sometimes it could happen that forums will be displayed here not be displayed within the index page
|
||||
// This is the result of forums not displayed at index, having list permissions and a parent of a forum with no permissions.
|
||||
// If this happens, the padding could be "broken"
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
foreach ($rowset as $row)
|
||||
{
|
||||
if ($row['left_id'] < $right)
|
||||
{
|
||||
@@ -133,8 +150,7 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl =
|
||||
$forum_list .= '<option value="' . $row['forum_id'] . '"' . (($disabled) ? ' disabled="disabled" class="disabled-option"' : $selected) . '>' . $padding . $row['forum_name'] . '</option>';
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
unset($padding_store);
|
||||
unset($padding_store, $rowset);
|
||||
|
||||
return $forum_list;
|
||||
}
|
||||
@@ -201,7 +217,7 @@ function group_select_options($group_id, $exclude_ids = false, $manage_founder =
|
||||
*/
|
||||
function get_forum_list($acl_list = 'f_list', $id_only = true, $postable_only = false, $no_cache = false)
|
||||
{
|
||||
global $db, $auth;
|
||||
global $db, $auth, $phpbb_dispatcher;
|
||||
static $forum_rows;
|
||||
|
||||
if (!isset($forum_rows))
|
||||
@@ -256,6 +272,16 @@ function get_forum_list($acl_list = 'f_list', $id_only = true, $postable_only =
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify the forum list data
|
||||
*
|
||||
* @event core.get_forum_list_modify_data
|
||||
* @var array rowset Array with the forum list data
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array('rowset');
|
||||
extract($phpbb_dispatcher->trigger_event('core.get_forum_list_modify_data', compact($vars)));
|
||||
|
||||
return $rowset;
|
||||
}
|
||||
|
||||
@@ -615,8 +641,8 @@ function move_posts($post_ids, $topic_id, $auto_sync = true)
|
||||
*
|
||||
* @event core.move_posts_before
|
||||
* @var array post_ids Array of post ids to move
|
||||
* @var string topic_id The topic id the posts are moved to
|
||||
* @var bool auto_sync Whether or not to perform auto sync
|
||||
* @var int topic_id The topic id the posts are moved to
|
||||
* @var bool auto_sync Whether or not to perform auto sync
|
||||
* @var array forum_ids Array of the forum ids the posts are moved from
|
||||
* @var array topic_ids Array of the topic ids the posts are moved from
|
||||
* @var array forum_row Array with the forum id of the topic the posts are moved to
|
||||
@@ -647,8 +673,8 @@ function move_posts($post_ids, $topic_id, $auto_sync = true)
|
||||
*
|
||||
* @event core.move_posts_after
|
||||
* @var array post_ids Array of the moved post ids
|
||||
* @var string topic_id The topic id the posts are moved to
|
||||
* @var bool auto_sync Whether or not to perform auto sync
|
||||
* @var int topic_id The topic id the posts are moved to
|
||||
* @var bool auto_sync Whether or not to perform auto sync
|
||||
* @var array forum_ids Array of the forum ids the posts are moved from
|
||||
* @var array topic_ids Array of the topic ids the posts are moved from
|
||||
* @var array forum_row Array with the forum id of the topic the posts are moved to
|
||||
@@ -672,6 +698,28 @@ function move_posts($post_ids, $topic_id, $auto_sync = true)
|
||||
sync('topic_attachment', 'topic_id', $topic_ids);
|
||||
sync('topic', 'topic_id', $topic_ids, true);
|
||||
sync('forum', 'forum_id', $forum_ids, true, true);
|
||||
|
||||
/**
|
||||
* Perform additional actions after move post sync
|
||||
*
|
||||
* @event core.move_posts_sync_after
|
||||
* @var array post_ids Array of the moved post ids
|
||||
* @var int topic_id The topic id the posts are moved to
|
||||
* @var bool auto_sync Whether or not to perform auto sync
|
||||
* @var array forum_ids Array of the forum ids the posts are moved from
|
||||
* @var array topic_ids Array of the topic ids the posts are moved from
|
||||
* @var array forum_row Array with the forum id of the topic the posts are moved to
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'post_ids',
|
||||
'topic_id',
|
||||
'auto_sync',
|
||||
'forum_ids',
|
||||
'topic_ids',
|
||||
'forum_row',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.move_posts_sync_after', compact($vars)));
|
||||
}
|
||||
|
||||
// Update posted information
|
||||
@@ -2531,7 +2579,7 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
|
||||
/**
|
||||
* Prune function
|
||||
*/
|
||||
function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync = true)
|
||||
function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync = true, $prune_limit = 0)
|
||||
{
|
||||
global $db, $phpbb_dispatcher;
|
||||
|
||||
@@ -2583,9 +2631,19 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync
|
||||
* @var int prune_flags The prune flags
|
||||
* @var bool auto_sync Whether or not to perform auto sync
|
||||
* @var string sql_and SQL text appended to where clause
|
||||
* @var int prune_limit The prune limit
|
||||
* @since 3.1.3-RC1
|
||||
* @changed 3.1.10-RC1 Added prune_limit
|
||||
*/
|
||||
$vars = array('forum_id', 'prune_mode', 'prune_date', 'prune_flags', 'auto_sync', 'sql_and');
|
||||
$vars = array(
|
||||
'forum_id',
|
||||
'prune_mode',
|
||||
'prune_date',
|
||||
'prune_flags',
|
||||
'auto_sync',
|
||||
'sql_and',
|
||||
'prune_limit',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.prune_sql', compact($vars)));
|
||||
|
||||
$sql = 'SELECT topic_id
|
||||
@@ -2593,7 +2651,7 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync
|
||||
WHERE ' . $db->sql_in_set('forum_id', $forum_id) . "
|
||||
AND poll_start = 0
|
||||
$sql_and";
|
||||
$result = $db->sql_query($sql);
|
||||
$result = $db->sql_query_limit($sql, $prune_limit);
|
||||
|
||||
$topic_list = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
@@ -2610,7 +2668,7 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync
|
||||
AND poll_start > 0
|
||||
AND poll_last_vote < $prune_date
|
||||
$sql_and";
|
||||
$result = $db->sql_query($sql);
|
||||
$result = $db->sql_query_limit($sql, $prune_limit);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
@@ -2643,12 +2701,15 @@ function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_fr
|
||||
$prune_date = time() - ($prune_days * 86400);
|
||||
$next_prune = time() + ($prune_freq * 86400);
|
||||
|
||||
prune($forum_id, $prune_mode, $prune_date, $prune_flags, true);
|
||||
$result = prune($forum_id, $prune_mode, $prune_date, $prune_flags, true, 300);
|
||||
|
||||
$sql = 'UPDATE ' . FORUMS_TABLE . "
|
||||
SET prune_next = $next_prune
|
||||
WHERE forum_id = $forum_id";
|
||||
$db->sql_query($sql);
|
||||
if ($result['topics'] == 0 && $result['posts'] == 0)
|
||||
{
|
||||
$sql = 'UPDATE ' . FORUMS_TABLE . "
|
||||
SET prune_next = $next_prune
|
||||
WHERE forum_id = $forum_id";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
add_log('admin', 'LOG_AUTO_PRUNE', $row['forum_name']);
|
||||
}
|
||||
|
@@ -150,7 +150,7 @@ function gen_sort_selects(&$limit_days, &$sort_by_text, &$sort_days, &$sort_key,
|
||||
*/
|
||||
function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list = false, $force_display = false)
|
||||
{
|
||||
global $config, $auth, $template, $user, $db, $phpbb_path_helper;
|
||||
global $config, $auth, $template, $user, $db, $phpbb_path_helper, $phpbb_dispatcher;
|
||||
|
||||
// We only return if the jumpbox is not forced to be displayed (in case it is needed for functionality)
|
||||
if (!$config['load_jumpbox'] && $force_display === false)
|
||||
@@ -163,16 +163,33 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
|
||||
ORDER BY left_id ASC';
|
||||
$result = $db->sql_query($sql, 600);
|
||||
|
||||
$rowset = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$rowset[(int) $row['forum_id']] = $row;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$right = $padding = 0;
|
||||
$padding_store = array('0' => 0);
|
||||
$display_jumpbox = false;
|
||||
$iteration = 0;
|
||||
|
||||
/**
|
||||
* Modify the jumpbox forum list data
|
||||
*
|
||||
* @event core.make_jumpbox_modify_forum_list
|
||||
* @var array rowset Array with the forums list data
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array('rowset');
|
||||
extract($phpbb_dispatcher->trigger_event('core.make_jumpbox_modify_forum_list', compact($vars)));
|
||||
|
||||
// Sometimes it could happen that forums will be displayed here not be displayed within the index page
|
||||
// This is the result of forums not displayed at index, having list permissions and a parent of a forum with no permissions.
|
||||
// If this happens, the padding could be "broken"
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
foreach ($rowset as $row)
|
||||
{
|
||||
if ($row['left_id'] < $right)
|
||||
{
|
||||
@@ -205,20 +222,21 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
|
||||
continue;
|
||||
}
|
||||
|
||||
$tpl_ary = array();
|
||||
if (!$display_jumpbox)
|
||||
{
|
||||
$template->assign_block_vars('jumpbox_forums', array(
|
||||
$tpl_ary[] = array(
|
||||
'FORUM_ID' => ($select_all) ? 0 : -1,
|
||||
'FORUM_NAME' => ($select_all) ? $user->lang['ALL_FORUMS'] : $user->lang['SELECT_FORUM'],
|
||||
'S_FORUM_COUNT' => $iteration,
|
||||
'LINK' => $phpbb_path_helper->append_url_params($action, array('f' => $forum_id)),
|
||||
));
|
||||
);
|
||||
|
||||
$iteration++;
|
||||
$display_jumpbox = true;
|
||||
}
|
||||
|
||||
$template->assign_block_vars('jumpbox_forums', array(
|
||||
$tpl_ary[] = array(
|
||||
'FORUM_ID' => $row['forum_id'],
|
||||
'FORUM_NAME' => $row['forum_name'],
|
||||
'SELECTED' => ($row['forum_id'] == $forum_id) ? ' selected="selected"' : '',
|
||||
@@ -227,7 +245,25 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
|
||||
'S_IS_LINK' => ($row['forum_type'] == FORUM_LINK) ? true : false,
|
||||
'S_IS_POST' => ($row['forum_type'] == FORUM_POST) ? true : false,
|
||||
'LINK' => $phpbb_path_helper->append_url_params($action, array('f' => $row['forum_id'])),
|
||||
));
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify the jumpbox before it is assigned to the template
|
||||
*
|
||||
* @event core.make_jumpbox_modify_tpl_ary
|
||||
* @var array row The data of the forum
|
||||
* @var array tpl_ary Template data of the forum
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'row',
|
||||
'tpl_ary',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.make_jumpbox_modify_tpl_ary', compact($vars)));
|
||||
|
||||
$template->assign_block_vars_array('jumpbox_forums', $tpl_ary);
|
||||
|
||||
unset($tpl_ary);
|
||||
|
||||
for ($i = 0; $i < $padding; $i++)
|
||||
{
|
||||
@@ -235,8 +271,7 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
|
||||
}
|
||||
$iteration++;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
unset($padding_store);
|
||||
unset($padding_store, $rowset);
|
||||
|
||||
$url_parts = $phpbb_path_helper->get_url_parts($action);
|
||||
|
||||
@@ -644,9 +679,11 @@ function generate_text_for_storage(&$text, &$uid, &$bitfield, &$flags, $allow_bb
|
||||
* @var string uid The BBCode UID
|
||||
* @var string bitfield The BBCode Bitfield
|
||||
* @var int flags The BBCode Flags
|
||||
* @var string message_parser The message_parser object
|
||||
* @since 3.1.0-a1
|
||||
* @changed 3.1.11-RC1 Added message_parser to vars
|
||||
*/
|
||||
$vars = array('text', 'uid', 'bitfield', 'flags');
|
||||
$vars = array('text', 'uid', 'bitfield', 'flags', 'message_parser');
|
||||
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_storage_after', compact($vars)));
|
||||
|
||||
return $message_parser->warn_msg;
|
||||
@@ -945,7 +982,7 @@ function bbcode_nl2br($text)
|
||||
*/
|
||||
function smiley_text($text, $force_option = false)
|
||||
{
|
||||
global $config, $user, $phpbb_path_helper;
|
||||
global $config, $user, $phpbb_path_helper, $phpbb_dispatcher;
|
||||
|
||||
if ($force_option || !$config['allow_smilies'] || !$user->optionget('viewsmilies'))
|
||||
{
|
||||
@@ -954,6 +991,16 @@ function smiley_text($text, $force_option = false)
|
||||
else
|
||||
{
|
||||
$root_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . '/' : $phpbb_path_helper->get_web_root_path();
|
||||
|
||||
/**
|
||||
* Event to override the root_path for smilies
|
||||
*
|
||||
* @event core.smiley_text_root_path
|
||||
* @var string root_path root_path for smilies
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array('root_path');
|
||||
extract($phpbb_dispatcher->trigger_event('core.smiley_text_root_path', compact($vars)));
|
||||
return preg_replace('#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/(.*?) \/><!\-\- s\1 \-\->#', '<img class="smilies" src="' . $root_path . $config['smilies_path'] . '/\2 />', $text);
|
||||
}
|
||||
}
|
||||
|
@@ -646,7 +646,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||
* @var array row The data of the forum
|
||||
* @var array subforums_row Template data of subforums
|
||||
* @since 3.1.0-a1
|
||||
* @change 3.1.0-b5 Added var subforums_row
|
||||
* @changed 3.1.0-b5 Added var subforums_row
|
||||
*/
|
||||
$vars = array('forum_row', 'row', 'subforums_row');
|
||||
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_template_vars', compact($vars)));
|
||||
@@ -1554,6 +1554,23 @@ function phpbb_get_user_rank($user_data, $user_posts)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify a user's rank before displaying
|
||||
*
|
||||
* @event core.get_user_rank_after
|
||||
* @var array user_data Array with user's data
|
||||
* @var int user_posts User_posts to change
|
||||
* @var array user_rank_data User rank data
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
|
||||
$vars = array(
|
||||
'user_data',
|
||||
'user_posts',
|
||||
'user_rank_data',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.get_user_rank_after', compact($vars)));
|
||||
|
||||
return $user_rank_data;
|
||||
}
|
||||
|
||||
|
@@ -124,7 +124,7 @@ function wrap_img_in_html($src, $title)
|
||||
*/
|
||||
function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
{
|
||||
global $user, $db, $config, $phpbb_root_path;
|
||||
global $user, $db, $config, $phpbb_dispatcher, $phpbb_root_path;
|
||||
|
||||
$filename = $phpbb_root_path . $upload_dir . '/' . $attachment['physical_filename'];
|
||||
|
||||
@@ -149,6 +149,26 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
// Now send the File Contents to the Browser
|
||||
$size = @filesize($filename);
|
||||
|
||||
/**
|
||||
* Event to alter attachment before it is sent to browser.
|
||||
*
|
||||
* @event core.send_file_to_browser_before
|
||||
* @var array attachment Attachment data
|
||||
* @var string upload_dir Relative path of upload directory
|
||||
* @var int category Attachment category
|
||||
* @var string filename Path to file, including filename
|
||||
* @var int size File size
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'attachment',
|
||||
'upload_dir',
|
||||
'category',
|
||||
'filename',
|
||||
'size',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.send_file_to_browser_before', compact($vars)));
|
||||
|
||||
// To correctly display further errors we need to make sure we are using the correct headers for both (unsetting content-length may not work)
|
||||
|
||||
// Check if headers already sent or not able to get the file contents.
|
||||
@@ -166,7 +186,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
}
|
||||
|
||||
// Make sure the database record for the filesize is correct
|
||||
if ($size > 0 && $size != $attachment['filesize'])
|
||||
if ($size > 0 && $size != $attachment['filesize'] && strpos($attachment['physical_filename'], 'thumb_') === false)
|
||||
{
|
||||
// Update database record
|
||||
$sql = 'UPDATE ' . ATTACHMENTS_TABLE . '
|
||||
@@ -284,7 +304,7 @@ function header_filename($file)
|
||||
|
||||
// There be dragons here.
|
||||
// Not many follows the RFC...
|
||||
if (strpos($user_agent, 'MSIE') !== false || strpos($user_agent, 'Safari') !== false || strpos($user_agent, 'Konqueror') !== false)
|
||||
if (strpos($user_agent, 'MSIE') !== false || strpos($user_agent, 'Konqueror') !== false)
|
||||
{
|
||||
return "filename=" . rawurlencode($file);
|
||||
}
|
||||
@@ -677,6 +697,8 @@ function phpbb_download_handle_forum_auth($db, $auth, $topic_id)
|
||||
*/
|
||||
function phpbb_download_handle_pm_auth($db, $auth, $user_id, $msg_id)
|
||||
{
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
if (!$auth->acl_get('u_pm_download'))
|
||||
{
|
||||
send_status_line(403, 'Forbidden');
|
||||
@@ -685,6 +707,18 @@ function phpbb_download_handle_pm_auth($db, $auth, $user_id, $msg_id)
|
||||
|
||||
$allowed = phpbb_download_check_pm_auth($db, $user_id, $msg_id);
|
||||
|
||||
/**
|
||||
* Event to modify PM attachments download auth
|
||||
*
|
||||
* @event core.modify_pm_attach_download_auth
|
||||
* @var bool allowed Whether the user is allowed to download from that PM or not
|
||||
* @var int msg_id The id of the PM to download from
|
||||
* @var int user_id The user id for auth check
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array('allowed', 'msg_id', 'user_id');
|
||||
extract($phpbb_dispatcher->trigger_event('core.modify_pm_attach_download_auth', compact($vars)));
|
||||
|
||||
if (!$allowed)
|
||||
{
|
||||
send_status_line(403, 'Forbidden');
|
||||
|
@@ -41,6 +41,9 @@ class jabber
|
||||
var $username;
|
||||
var $password;
|
||||
var $use_ssl;
|
||||
var $verify_peer;
|
||||
var $verify_peer_name;
|
||||
var $allow_self_signed;
|
||||
var $resource = 'functions_jabber.phpbb.php';
|
||||
|
||||
var $enable_logging;
|
||||
@@ -49,8 +52,18 @@ class jabber
|
||||
var $features = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $server Jabber server
|
||||
* @param int $port Jabber server port
|
||||
* @param string $username Jabber username or JID
|
||||
* @param string $password Jabber password
|
||||
* @param boold $use_ssl Use ssl
|
||||
* @param bool $verify_peer Verify SSL certificate
|
||||
* @param bool $verify_peer_name Verify Jabber peer name
|
||||
* @param bool $allow_self_signed Allow self signed certificates
|
||||
*/
|
||||
function jabber($server, $port, $username, $password, $use_ssl = false)
|
||||
function __construct($server, $port, $username, $password, $use_ssl = false, $verify_peer = true, $verify_peer_name = true, $allow_self_signed = false)
|
||||
{
|
||||
$this->connect_server = ($server) ? $server : 'localhost';
|
||||
$this->port = ($port) ? $port : 5222;
|
||||
@@ -71,6 +84,9 @@ class jabber
|
||||
|
||||
$this->password = $password;
|
||||
$this->use_ssl = ($use_ssl && self::can_use_ssl()) ? true : false;
|
||||
$this->verify_peer = $verify_peer;
|
||||
$this->verify_peer_name = $verify_peer_name;
|
||||
$this->allow_self_signed = $allow_self_signed;
|
||||
|
||||
// Change port if we use SSL
|
||||
if ($this->port == 5222 && $this->use_ssl)
|
||||
@@ -96,7 +112,7 @@ class jabber
|
||||
*/
|
||||
static public function can_use_tls()
|
||||
{
|
||||
if (!@extension_loaded('openssl') || !function_exists('stream_socket_enable_crypto') || !function_exists('stream_get_meta_data') || !function_exists('socket_set_blocking') || !function_exists('stream_get_wrappers'))
|
||||
if (!@extension_loaded('openssl') || !function_exists('stream_socket_enable_crypto') || !function_exists('stream_get_meta_data') || !function_exists('stream_set_blocking') || !function_exists('stream_get_wrappers'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -139,7 +155,7 @@ class jabber
|
||||
|
||||
$this->session['ssl'] = $this->use_ssl;
|
||||
|
||||
if ($this->open_socket($this->connect_server, $this->port, $this->use_ssl))
|
||||
if ($this->open_socket($this->connect_server, $this->port, $this->use_ssl, $this->verify_peer, $this->verify_peer_name, $this->allow_self_signed))
|
||||
{
|
||||
$this->send("<?xml version='1.0' encoding='UTF-8' ?" . ">\n");
|
||||
$this->send("<stream:stream to='{$this->server}' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>\n");
|
||||
@@ -227,10 +243,13 @@ class jabber
|
||||
* @param string $server host to connect to
|
||||
* @param int $port port number
|
||||
* @param bool $use_ssl use ssl or not
|
||||
* @param bool $verify_peer verify ssl certificate
|
||||
* @param bool $verify_peer_name verify peer name
|
||||
* @param bool $allow_self_signed allow self-signed ssl certificates
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
function open_socket($server, $port, $use_ssl = false)
|
||||
function open_socket($server, $port, $use_ssl, $verify_peer, $verify_peer_name, $allow_self_signed)
|
||||
{
|
||||
if (@function_exists('dns_get_record'))
|
||||
{
|
||||
@@ -241,12 +260,26 @@ class jabber
|
||||
}
|
||||
}
|
||||
|
||||
$server = $use_ssl ? 'ssl://' . $server : $server;
|
||||
$options = array();
|
||||
|
||||
if ($this->connection = @fsockopen($server, $port, $errorno, $errorstr, $this->timeout))
|
||||
if ($use_ssl)
|
||||
{
|
||||
socket_set_blocking($this->connection, 0);
|
||||
socket_set_timeout($this->connection, 60);
|
||||
$remote_socket = 'ssl://' . $server . ':' . $port;
|
||||
|
||||
// Set ssl context options, see http://php.net/manual/en/context.ssl.php
|
||||
$options['ssl'] = array('verify_peer' => $verify_peer, 'verify_peer_name' => $verify_peer_name, 'allow_self_signed' => $allow_self_signed);
|
||||
}
|
||||
else
|
||||
{
|
||||
$remote_socket = $server . ':' . $port;
|
||||
}
|
||||
|
||||
$socket_context = stream_context_create($options);
|
||||
|
||||
if ($this->connection = @stream_socket_client($remote_socket, $errorno, $errorstr, $this->timeout, STREAM_CLIENT_CONNECT, $socket_context))
|
||||
{
|
||||
stream_set_blocking($this->connection, 0);
|
||||
stream_set_timeout($this->connection, 60);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -563,7 +596,7 @@ class jabber
|
||||
case 'proceed':
|
||||
// continue switching to TLS
|
||||
$meta = stream_get_meta_data($this->connection);
|
||||
socket_set_blocking($this->connection, 1);
|
||||
stream_set_blocking($this->connection, 1);
|
||||
|
||||
if (!stream_socket_enable_crypto($this->connection, true, STREAM_CRYPTO_METHOD_TLS_CLIENT))
|
||||
{
|
||||
@@ -571,7 +604,7 @@ class jabber
|
||||
return false;
|
||||
}
|
||||
|
||||
socket_set_blocking($this->connection, $meta['blocked']);
|
||||
stream_set_blocking($this->connection, $meta['blocked']);
|
||||
$this->session['tls'] = true;
|
||||
|
||||
// new stream
|
||||
|
@@ -231,6 +231,13 @@ class messenger
|
||||
$template_lang = basename($config['default_lang']);
|
||||
}
|
||||
|
||||
$ext_template_paths = array(
|
||||
array(
|
||||
'name' => $template_lang . '_email',
|
||||
'ext_path' => 'language/' . $template_lang . '/email' . $template_dir_prefix,
|
||||
),
|
||||
);
|
||||
|
||||
if ($template_path)
|
||||
{
|
||||
$template_paths = array(
|
||||
@@ -246,23 +253,38 @@ class messenger
|
||||
$template_path . $template_dir_prefix,
|
||||
);
|
||||
|
||||
$board_language = basename($config['default_lang']);
|
||||
|
||||
// we can only specify default language fallback when the path is not a custom one for which we
|
||||
// do not know the default language alternative
|
||||
if ($template_lang !== basename($config['default_lang']))
|
||||
if ($template_lang !== $board_language)
|
||||
{
|
||||
$fallback_template_path = (!empty($user->lang_path)) ? $user->lang_path : $phpbb_root_path . 'language/';
|
||||
$fallback_template_path .= basename($config['default_lang']) . '/email';
|
||||
$fallback_template_path .= $board_language . '/email';
|
||||
|
||||
$template_paths[] = $fallback_template_path . $template_dir_prefix;
|
||||
|
||||
$ext_template_paths[] = array(
|
||||
'name' => $board_language . '_email',
|
||||
'ext_path' => 'language/' . $board_language . '/email' . $template_dir_prefix,
|
||||
);
|
||||
}
|
||||
// If everything fails just fall back to en template
|
||||
if ($template_lang !== 'en' && $board_language !== 'en')
|
||||
{
|
||||
$fallback_template_path = (!empty($user->lang_path)) ? $user->lang_path : $phpbb_root_path . 'language/';
|
||||
$fallback_template_path .= 'en/email';
|
||||
|
||||
$template_paths[] = $fallback_template_path . $template_dir_prefix;
|
||||
|
||||
$ext_template_paths[] = array(
|
||||
'name' => 'en_email',
|
||||
'ext_path' => 'language/en/email' . $template_dir_prefix,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$this->set_template_paths(array(
|
||||
array(
|
||||
'name' => $template_lang . '_email',
|
||||
'ext_path' => 'language/' . $template_lang . '/email' . $template_dir_prefix,
|
||||
),
|
||||
), $template_paths);
|
||||
$this->set_template_paths($ext_template_paths, $template_paths);
|
||||
|
||||
$this->template->set_filenames(array(
|
||||
'body' => $template_file . '.txt',
|
||||
@@ -290,10 +312,16 @@ class messenger
|
||||
|
||||
/**
|
||||
* Send the mail out to the recipients set previously in var $this->addresses
|
||||
*
|
||||
* @param int $method User notification method NOTIFY_EMAIL|NOTIFY_IM|NOTIFY_BOTH
|
||||
* @param bool $break Flag indicating if the function only formats the subject
|
||||
* and the message without sending it
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function send($method = NOTIFY_EMAIL, $break = false)
|
||||
{
|
||||
global $config, $user;
|
||||
global $config, $user, $phpbb_dispatcher;
|
||||
|
||||
// We add some standard variables we always use, no need to specify them always
|
||||
$this->assign_vars(array(
|
||||
@@ -302,6 +330,30 @@ class messenger
|
||||
'SITENAME' => htmlspecialchars_decode($config['sitename']),
|
||||
));
|
||||
|
||||
$subject = $this->subject;
|
||||
$message = $this->msg;
|
||||
/**
|
||||
* Event to modify notification message text before parsing
|
||||
*
|
||||
* @event core.modify_notification_message
|
||||
* @var int method User notification method NOTIFY_EMAIL|NOTIFY_IM|NOTIFY_BOTH
|
||||
* @var bool break Flag indicating if the function only formats the subject
|
||||
* and the message without sending it
|
||||
* @var string subject The message subject
|
||||
* @var string message The message text
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'method',
|
||||
'break',
|
||||
'subject',
|
||||
'message',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.modify_notification_message', compact($vars)));
|
||||
$this->subject = $subject;
|
||||
$this->msg = $message;
|
||||
unset($subject, $message);
|
||||
|
||||
// Parse message through template
|
||||
$this->msg = trim($this->template->assign_display('body'));
|
||||
|
||||
@@ -416,7 +468,7 @@ class messenger
|
||||
*/
|
||||
function build_header($to, $cc, $bcc)
|
||||
{
|
||||
global $config;
|
||||
global $config, $phpbb_dispatcher;
|
||||
|
||||
// We could use keys here, but we won't do this for 3.0.x to retain backwards compatibility
|
||||
$headers = array();
|
||||
@@ -448,6 +500,16 @@ class messenger
|
||||
$headers[] = 'X-MimeOLE: phpBB3';
|
||||
$headers[] = 'X-phpBB-Origin: phpbb://' . str_replace(array('http://', 'https://'), array('', ''), generate_board_url());
|
||||
|
||||
/**
|
||||
* Event to modify email header entries
|
||||
*
|
||||
* @event core.modify_email_headers
|
||||
* @var array headers Array containing email header entries
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array('headers');
|
||||
extract($phpbb_dispatcher->trigger_event('core.modify_email_headers', compact($vars)));
|
||||
|
||||
if (sizeof($this->extra_headers))
|
||||
{
|
||||
$headers = array_merge($headers, $this->extra_headers);
|
||||
@@ -593,7 +655,7 @@ class messenger
|
||||
if (!$use_queue)
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/functions_jabber.' . $phpEx);
|
||||
$this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], htmlspecialchars_decode($config['jab_password']), $config['jab_use_ssl']);
|
||||
$this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], htmlspecialchars_decode($config['jab_password']), $config['jab_use_ssl'], $config['jab_verify_peer'], $config['jab_verify_peer_name'], $config['jab_allow_self_signed']);
|
||||
|
||||
if (!$this->jabber->connect())
|
||||
{
|
||||
@@ -768,7 +830,7 @@ class queue
|
||||
}
|
||||
|
||||
include_once($phpbb_root_path . 'includes/functions_jabber.' . $phpEx);
|
||||
$this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], htmlspecialchars_decode($config['jab_password']), $config['jab_use_ssl']);
|
||||
$this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], htmlspecialchars_decode($config['jab_password']), $config['jab_use_ssl'], $config['jab_verify_peer'], $config['jab_verify_peer_name'], $config['jab_allow_self_signed']);
|
||||
|
||||
if (!$this->jabber->connect())
|
||||
{
|
||||
@@ -1014,7 +1076,18 @@ function smtpmail($addresses, $subject, $message, &$err_msg, $headers = false)
|
||||
}
|
||||
$collector = new \phpbb\error_collector;
|
||||
$collector->install();
|
||||
$smtp->socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 20);
|
||||
|
||||
$options = array();
|
||||
$verify_peer = (bool) $config['smtp_verify_peer'];
|
||||
$verify_peer_name = (bool) $config['smtp_verify_peer_name'];
|
||||
$allow_self_signed = (bool) $config['smtp_allow_self_signed'];
|
||||
$remote_socket = $config['smtp_host'] . ':' . $config['smtp_port'];
|
||||
|
||||
// Set ssl context options, see http://php.net/manual/en/context.ssl.php
|
||||
$options['ssl'] = array('verify_peer' => $verify_peer, 'verify_peer_name' => $verify_peer_name, 'allow_self_signed' => $allow_self_signed);
|
||||
$socket_context = stream_context_create($options);
|
||||
|
||||
$smtp->socket = @stream_socket_client($remote_socket, $errno, $errstr, 20, STREAM_CLIENT_CONNECT, $socket_context);
|
||||
$collector->uninstall();
|
||||
$error_contents = $collector->format_errors();
|
||||
|
||||
|
@@ -119,6 +119,15 @@ function generate_smilies($mode, $forum_id)
|
||||
|
||||
foreach ($smilies as $row)
|
||||
{
|
||||
/**
|
||||
* Modify smiley root path before populating smiley list
|
||||
*
|
||||
* @event core.generate_smilies_before
|
||||
* @var string root_path root_path for smilies
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array('root_path');
|
||||
extract($phpbb_dispatcher->trigger_event('core.generate_smilies_before', compact($vars)));
|
||||
$template->assign_block_vars('smiley', array(
|
||||
'SMILEY_CODE' => $row['code'],
|
||||
'A_SMILEY_CODE' => addslashes($row['code']),
|
||||
@@ -702,7 +711,7 @@ function create_thumbnail($source, $destination, $mimetype)
|
||||
|
||||
$used_imagick = false;
|
||||
|
||||
// Only use imagemagick if defined and the passthru function not disabled
|
||||
// Only use ImageMagick if defined and the passthru function not disabled
|
||||
if ($config['img_imagick'] && function_exists('passthru'))
|
||||
{
|
||||
if (substr($config['img_imagick'], -1) !== '/')
|
||||
@@ -1074,7 +1083,7 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
|
||||
}
|
||||
|
||||
$sql_ary = array(
|
||||
'SELECT' => 'u.username, u.user_id, u.user_colour, p.*, z.friend, z.foe',
|
||||
'SELECT' => 'u.username, u.user_id, u.user_colour, p.*, z.friend, z.foe, uu.username as post_delete_username, uu.user_colour as post_delete_user_colour',
|
||||
|
||||
'FROM' => array(
|
||||
USERS_TABLE => 'u',
|
||||
@@ -1086,6 +1095,10 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
|
||||
'FROM' => array(ZEBRA_TABLE => 'z'),
|
||||
'ON' => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id',
|
||||
),
|
||||
array(
|
||||
'FROM' => array(USERS_TABLE => 'uu'),
|
||||
'ON' => 'uu.user_id = p.post_delete_user',
|
||||
),
|
||||
),
|
||||
|
||||
'WHERE' => $db->sql_in_set('p.post_id', $post_list) . '
|
||||
@@ -1194,6 +1207,31 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
|
||||
$post_anchor = ($mode == 'post_review') ? 'ppr' . $row['post_id'] : 'pr' . $row['post_id'];
|
||||
$u_show_post = append_sid($phpbb_root_path . 'viewtopic.' . $phpEx, "f=$forum_id&t=$topic_id&p={$row['post_id']}&view=show#p{$row['post_id']}");
|
||||
|
||||
$l_deleted_message = '';
|
||||
if ($row['post_visibility'] == ITEM_DELETED)
|
||||
{
|
||||
$display_postername = get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']);
|
||||
|
||||
// User having deleted the post also being the post author?
|
||||
if (!$row['post_delete_user'] || $row['post_delete_user'] == $poster_id)
|
||||
{
|
||||
$display_username = $display_postername;
|
||||
}
|
||||
else
|
||||
{
|
||||
$display_username = get_username_string('full', $row['post_delete_user'], $row['post_delete_username'], $row['post_delete_user_colour']);
|
||||
}
|
||||
|
||||
if ($row['post_delete_reason'])
|
||||
{
|
||||
$l_deleted_message = $user->lang('POST_DELETED_BY_REASON', $display_postername, $display_username, $user->format_date($row['post_delete_time'], false, true), $row['post_delete_reason']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$l_deleted_message = $user->lang('POST_DELETED_BY', $display_postername, $display_username, $user->format_date($row['post_delete_time'], false, true));
|
||||
}
|
||||
}
|
||||
|
||||
$post_row = array(
|
||||
'POST_AUTHOR_FULL' => get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
|
||||
'POST_AUTHOR_COLOUR' => get_username_string('colour', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
|
||||
@@ -1204,6 +1242,8 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
|
||||
'S_FRIEND' => ($row['friend']) ? true : false,
|
||||
'S_IGNORE_POST' => ($row['foe']) ? true : false,
|
||||
'L_IGNORE_POST' => ($row['foe']) ? sprintf($user->lang['POST_BY_FOE'], get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']), "<a href=\"{$u_show_post}\" onclick=\"phpbb.toggleDisplay('{$post_anchor}', 1); return false;\">", '</a>') : '',
|
||||
'S_POST_DELETED' => ($row['post_visibility'] == ITEM_DELETED) ? true : false,
|
||||
'L_DELETE_POST' => $l_deleted_message,
|
||||
|
||||
'POST_SUBJECT' => $post_subject,
|
||||
'MINI_POST_IMG' => $user->img('icon_post_target', $user->lang['POST']),
|
||||
@@ -1275,7 +1315,7 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
|
||||
*/
|
||||
function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $softdelete_reason = '')
|
||||
{
|
||||
global $db, $user, $auth, $phpbb_container;
|
||||
global $db, $user, $auth, $phpbb_container, $phpbb_dispatcher;
|
||||
global $config, $phpEx, $phpbb_root_path;
|
||||
|
||||
// Specify our post mode
|
||||
@@ -1526,6 +1566,34 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
|
||||
sync('topic_reported', 'topic_id', array($topic_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* This event is used for performing actions directly after a post or topic
|
||||
* has been deleted.
|
||||
*
|
||||
* @event core.delete_post_after
|
||||
* @var int forum_id Post forum ID
|
||||
* @var int topic_id Post topic ID
|
||||
* @var int post_id Post ID
|
||||
* @var array data Post data
|
||||
* @var bool is_soft Soft delete flag
|
||||
* @var string softdelete_reason Soft delete reason
|
||||
* @var string post_mode delete_topic, delete_first_post, delete_last_post or delete
|
||||
* @var mixed next_post_id Next post ID in the topic (post ID or false)
|
||||
*
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'forum_id',
|
||||
'topic_id',
|
||||
'post_id',
|
||||
'data',
|
||||
'is_soft',
|
||||
'softdelete_reason',
|
||||
'post_mode',
|
||||
'next_post_id',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.delete_post_after', compact($vars)));
|
||||
|
||||
return $next_post_id;
|
||||
}
|
||||
|
||||
@@ -2474,7 +2542,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
* @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,
|
||||
* @changed 3.1.0-RC3 Added vars mode, subject, username, topic_type,
|
||||
* poll, update_message, update_search_index
|
||||
*/
|
||||
$vars = array(
|
||||
@@ -2623,16 +2691,54 @@ function phpbb_upload_popup($forum_style = 0)
|
||||
|
||||
/**
|
||||
* Do the various checks required for removing posts as well as removing it
|
||||
*
|
||||
* @param int $forum_id The id of the forum
|
||||
* @param int $topic_id The id of the topic
|
||||
* @param int $post_id The id of the post
|
||||
* @param array $post_data Array with the post data
|
||||
* @param bool $is_soft The flag indicating whether it is the soft delete mode
|
||||
* @param string $delete_reason Description for the post deletion reason
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
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;
|
||||
global $phpbb_root_path, $phpEx, $phpbb_dispatcher;
|
||||
|
||||
$force_delete_allowed = $force_softdelete_allowed = false;
|
||||
$perm_check = ($is_soft) ? 'softdelete' : 'delete';
|
||||
|
||||
/**
|
||||
* This event allows to modify the conditions for the post deletion
|
||||
*
|
||||
* @event core.handle_post_delete_conditions
|
||||
* @var int forum_id The id of the forum
|
||||
* @var int topic_id The id of the topic
|
||||
* @var int post_id The id of the post
|
||||
* @var array post_data Array with the post data
|
||||
* @var bool is_soft The flag indicating whether it is the soft delete mode
|
||||
* @var string delete_reason Description for the post deletion reason
|
||||
* @var bool force_delete_allowed Allow the user to delete the post (all permissions and conditions are ignored)
|
||||
* @var bool force_softdelete_allowed Allow the user to softdelete the post (all permissions and conditions are ignored)
|
||||
* @var string perm_check The deletion mode softdelete|delete
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'forum_id',
|
||||
'topic_id',
|
||||
'post_id',
|
||||
'post_data',
|
||||
'is_soft',
|
||||
'delete_reason',
|
||||
'force_delete_allowed',
|
||||
'force_softdelete_allowed',
|
||||
'perm_check',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.handle_post_delete_conditions', compact($vars)));
|
||||
|
||||
// If moderator removing post or user itself removing post, present a confirmation screen
|
||||
if ($auth->acl_get("m_$perm_check", $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get("f_$perm_check", $forum_id) && $post_id == $post_data['topic_last_post_id'] && !$post_data['post_edit_locked'] && ($post_data['post_time'] > time() - ($config['delete_time'] * 60) || !$config['delete_time'])))
|
||||
if ($force_delete_allowed || ($is_soft && $force_softdelete_allowed) || $auth->acl_get("m_$perm_check", $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get("f_$perm_check", $forum_id) && $post_id == $post_data['topic_last_post_id'] && !$post_data['post_edit_locked'] && ($post_data['post_time'] > time() - ($config['delete_time'] * 60) || !$config['delete_time'])))
|
||||
{
|
||||
$s_hidden_fields = array(
|
||||
'p' => $post_id,
|
||||
@@ -2689,10 +2795,10 @@ function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $
|
||||
}
|
||||
else
|
||||
{
|
||||
global $user, $template, $request;
|
||||
global $template;
|
||||
|
||||
$can_delete = $auth->acl_get('m_delete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_delete', $forum_id));
|
||||
$can_softdelete = $auth->acl_get('m_softdelete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_softdelete', $forum_id));
|
||||
$can_delete = $force_delete_allowed || ($auth->acl_get('m_delete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_delete', $forum_id)));
|
||||
$can_softdelete = $force_softdelete_allowed || ($auth->acl_get('m_softdelete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_softdelete', $forum_id)));
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_SOFTDELETED' => $post_data['post_visibility'] == ITEM_DELETED,
|
||||
|
@@ -889,9 +889,16 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id)
|
||||
SET pm_unread = 0
|
||||
WHERE msg_id = $msg_id
|
||||
AND user_id = $user_id
|
||||
AND folder_id = $folder_id";
|
||||
AND folder_id = $folder_id
|
||||
AND pm_unread = 1";
|
||||
$db->sql_query($sql);
|
||||
|
||||
// If the message is already marked as read, we just skip the rest to avoid negative PM count
|
||||
if (!$db->sql_affectedrows())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . "
|
||||
SET user_unread_privmsg = user_unread_privmsg - 1
|
||||
WHERE user_id = $user_id";
|
||||
|
@@ -119,19 +119,29 @@ function user_update_name($old_name, $new_name)
|
||||
global $config, $db, $cache, $phpbb_dispatcher;
|
||||
|
||||
$update_ary = array(
|
||||
FORUMS_TABLE => array('forum_last_poster_name'),
|
||||
MODERATOR_CACHE_TABLE => array('username'),
|
||||
POSTS_TABLE => array('post_username'),
|
||||
TOPICS_TABLE => array('topic_first_poster_name', 'topic_last_poster_name'),
|
||||
FORUMS_TABLE => array(
|
||||
'forum_last_poster_id' => 'forum_last_poster_name',
|
||||
),
|
||||
MODERATOR_CACHE_TABLE => array(
|
||||
'user_id' => 'username',
|
||||
),
|
||||
POSTS_TABLE => array(
|
||||
'poster_id' => 'post_username',
|
||||
),
|
||||
TOPICS_TABLE => array(
|
||||
'topic_poster' => 'topic_first_poster_name',
|
||||
'topic_last_poster_id' => 'topic_last_poster_name',
|
||||
),
|
||||
);
|
||||
|
||||
foreach ($update_ary as $table => $field_ary)
|
||||
{
|
||||
foreach ($field_ary as $field)
|
||||
foreach ($field_ary as $id_field => $name_field)
|
||||
{
|
||||
$sql = "UPDATE $table
|
||||
SET $field = '" . $db->sql_escape($new_name) . "'
|
||||
WHERE $field = '" . $db->sql_escape($old_name) . "'";
|
||||
SET $name_field = '" . $db->sql_escape($new_name) . "'
|
||||
WHERE $name_field = '" . $db->sql_escape($old_name) . "'
|
||||
AND $id_field <> " . ANONYMOUS;
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
@@ -262,13 +272,15 @@ function user_add($user_row, $cp_data = false, $notifications_data = null)
|
||||
* Use this event to modify the values to be inserted when a user is added
|
||||
*
|
||||
* @event core.user_add_modify_data
|
||||
* @var array user_row Array of user details submited to user_add
|
||||
* @var array cp_data Array of Custom profile fields submited to user_add
|
||||
* @var array sql_ary Array of data to be inserted when a user is added
|
||||
* @var array user_row Array of user details submited to user_add
|
||||
* @var array cp_data Array of Custom profile fields submited to user_add
|
||||
* @var array sql_ary Array of data to be inserted when a user is added
|
||||
* @var array notifications_data Array of notification data to be inserted when a user is added
|
||||
* @since 3.1.0-a1
|
||||
* @change 3.1.0-b5
|
||||
* @changed 3.1.0-b5 Added user_row and cp_data
|
||||
* @changed 3.1.11-RC1 Added notifications_data
|
||||
*/
|
||||
$vars = array('user_row', 'cp_data', 'sql_ary');
|
||||
$vars = array('user_row', 'cp_data', 'sql_ary', 'notifications_data');
|
||||
extract($phpbb_dispatcher->trigger_event('core.user_add_modify_data', compact($vars)));
|
||||
|
||||
$sql = 'INSERT INTO ' . USERS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
|
||||
@@ -1281,7 +1293,7 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas
|
||||
*/
|
||||
function user_unban($mode, $ban)
|
||||
{
|
||||
global $db, $user, $auth, $cache;
|
||||
global $db, $user, $auth, $cache, $phpbb_dispatcher;
|
||||
|
||||
// Delete stale bans
|
||||
$sql = 'DELETE FROM ' . BANLIST_TABLE . '
|
||||
@@ -1348,6 +1360,20 @@ function user_unban($mode, $ban)
|
||||
add_log('user', $user_id, 'LOG_UNBAN_' . strtoupper($mode), $l_unban_list);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this event to perform actions after the unban has been performed
|
||||
*
|
||||
* @event core.user_unban
|
||||
* @var string mode One of the following: user, ip, email
|
||||
* @var array user_ids_ary Array with user_ids
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'mode',
|
||||
'user_ids_ary',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.user_unban', compact($vars)));
|
||||
}
|
||||
|
||||
$cache->destroy('sql', BANLIST_TABLE);
|
||||
@@ -2269,7 +2295,7 @@ function phpbb_avatar_explanation_string()
|
||||
{
|
||||
global $config, $user;
|
||||
|
||||
return $user->lang('AVATAR_EXPLAIN',
|
||||
return $user->lang(($config['avatar_filesize'] == 0) ? 'AVATAR_EXPLAIN_NO_FILESIZE' : 'AVATAR_EXPLAIN',
|
||||
$user->lang('PIXELS', (int) $config['avatar_max_width']),
|
||||
$user->lang('PIXELS', (int) $config['avatar_max_height']),
|
||||
round($config['avatar_filesize'] / 1024));
|
||||
@@ -3076,7 +3102,7 @@ function remove_default_rank($group_id, $user_ids)
|
||||
*/
|
||||
function group_user_attributes($action, $group_id, $user_id_ary = false, $username_ary = false, $group_name = false, $group_attributes = false)
|
||||
{
|
||||
global $db, $auth, $phpbb_root_path, $phpEx, $config, $phpbb_container;
|
||||
global $db, $auth, $phpbb_root_path, $phpEx, $config, $phpbb_container, $phpbb_dispatcher;
|
||||
|
||||
// We need both username and user_id info
|
||||
$result = user_get_id_name($user_id_ary, $username_ary);
|
||||
@@ -3207,6 +3233,28 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna
|
||||
break;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event to perform additional actions on setting user group attributes
|
||||
*
|
||||
* @event core.user_set_group_attributes
|
||||
* @var int group_id ID of the group
|
||||
* @var string group_name Name of the group
|
||||
* @var array user_id_ary IDs of the users to set group attributes
|
||||
* @var array username_ary Names of the users to set group attributes
|
||||
* @var array group_attributes Group attributes which were changed
|
||||
* @var string action Action to perform over the group members
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'group_id',
|
||||
'group_name',
|
||||
'user_id_ary',
|
||||
'username_ary',
|
||||
'group_attributes',
|
||||
'action',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.user_set_group_attributes', compact($vars)));
|
||||
|
||||
// Clear permissions cache of relevant users
|
||||
$auth->acl_clear_prefetch($user_id_ary);
|
||||
|
||||
|
@@ -28,7 +28,10 @@ class mcp_ban
|
||||
global $db, $user, $auth, $template, $request, $phpbb_dispatcher;
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
if (!function_exists('user_ban'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
}
|
||||
|
||||
// Include the admin banning interface...
|
||||
include($phpbb_root_path . 'includes/acp/acp_ban.' . $phpEx);
|
||||
|
@@ -273,7 +273,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)
|
||||
'TOPIC_ICON_IMG_WIDTH' => (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['width'] : '',
|
||||
'TOPIC_ICON_IMG_HEIGHT' => (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['height'] : '',
|
||||
'UNAPPROVED_IMG' => ($topic_unapproved || $posts_unapproved) ? $user->img('icon_topic_unapproved', ($topic_unapproved) ? 'TOPIC_UNAPPROVED' : 'POSTS_UNAPPROVED') : '',
|
||||
'DELETED_IMG' => ($topic_deleted) ? $user->img('icon_topic_deleted', 'POSTS_DELETED') : '',
|
||||
'DELETED_IMG' => ($topic_deleted) ? $user->img('icon_topic_deleted', 'TOPIC_DELETED') : '',
|
||||
|
||||
'TOPIC_AUTHOR' => get_username_string('username', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
|
||||
'TOPIC_AUTHOR_COLOUR' => get_username_string('colour', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
|
||||
@@ -396,7 +396,7 @@ function mcp_resync_topics($topic_ids)
|
||||
*/
|
||||
function merge_topics($forum_id, $topic_ids, $to_topic_id)
|
||||
{
|
||||
global $db, $template, $user, $phpEx, $phpbb_root_path, $auth;
|
||||
global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $phpbb_dispatcher;
|
||||
|
||||
if (!sizeof($topic_ids))
|
||||
{
|
||||
@@ -411,21 +411,23 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
|
||||
|
||||
$sync_topics = array_merge($topic_ids, array($to_topic_id));
|
||||
|
||||
$topic_data = phpbb_get_topic_data($sync_topics, 'm_merge');
|
||||
$all_topic_data = phpbb_get_topic_data($sync_topics, 'm_merge');
|
||||
|
||||
if (!sizeof($topic_data) || empty($topic_data[$to_topic_id]))
|
||||
if (!sizeof($all_topic_data) || empty($all_topic_data[$to_topic_id]))
|
||||
{
|
||||
$template->assign_var('MESSAGE', $user->lang['NO_FINAL_TOPIC_SELECTED']);
|
||||
return;
|
||||
}
|
||||
|
||||
$sync_forums = array();
|
||||
foreach ($topic_data as $data)
|
||||
$topic_views = 0;
|
||||
foreach ($all_topic_data as $data)
|
||||
{
|
||||
$sync_forums[$data['forum_id']] = $data['forum_id'];
|
||||
$topic_views = max($topic_views, $data['topic_views']);
|
||||
}
|
||||
|
||||
$topic_data = $topic_data[$to_topic_id];
|
||||
$to_topic_data = $all_topic_data[$to_topic_id];
|
||||
|
||||
$post_id_list = request_var('post_id_list', array(0));
|
||||
$start = request_var('start', 0);
|
||||
@@ -456,7 +458,7 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
|
||||
return;
|
||||
}
|
||||
|
||||
$redirect = request_var('redirect', build_url(array('quickmod')));
|
||||
$redirect = request_var('redirect', "{$phpbb_root_path}mcp.$phpEx?f=$forum_id&i=main&mode=forum_view");
|
||||
|
||||
$s_hidden_fields = build_hidden_fields(array(
|
||||
'i' => 'main',
|
||||
@@ -473,10 +475,16 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
|
||||
|
||||
if (confirm_box(true))
|
||||
{
|
||||
$to_forum_id = $topic_data['forum_id'];
|
||||
$to_forum_id = $to_topic_data['forum_id'];
|
||||
|
||||
move_posts($post_id_list, $to_topic_id, false);
|
||||
add_log('mod', $to_forum_id, $to_topic_id, 'LOG_MERGE', $topic_data['topic_title']);
|
||||
add_log('mod', $to_forum_id, $to_topic_id, 'LOG_MERGE', $to_topic_data['topic_title']);
|
||||
|
||||
// Update topic views count
|
||||
$sql = 'UPDATE ' . TOPICS_TABLE . '
|
||||
SET topic_views = ' . $topic_views . '
|
||||
WHERE topic_id = ' . $to_topic_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Message and return links
|
||||
$success_msg = 'POSTS_MERGED_SUCCESS';
|
||||
@@ -503,6 +511,20 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
|
||||
$redirect = request_var('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id");
|
||||
$redirect = reapply_sid($redirect);
|
||||
|
||||
/**
|
||||
* Perform additional actions after merging topics.
|
||||
*
|
||||
* @event core.mcp_forum_merge_topics_after
|
||||
* @var array all_topic_data The data from all topics involved in the merge
|
||||
* @var int to_topic_id The ID of the topic into which the rest are merged
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'all_topic_data',
|
||||
'to_topic_id',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_forum_merge_topics_after', compact($vars)));
|
||||
|
||||
meta_refresh(3, $redirect);
|
||||
trigger_error($user->lang[$success_msg] . '<br /><br />' . $return_link);
|
||||
}
|
||||
|
@@ -164,7 +164,7 @@ class mcp_main
|
||||
* @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
|
||||
* @changed 3.1.0-RC4 Added variables: action, quickmod
|
||||
*/
|
||||
$vars = array('action', 'quickmod');
|
||||
extract($phpbb_dispatcher->trigger_event('core.modify_quickmod_actions', compact($vars)));
|
||||
@@ -463,7 +463,7 @@ function change_topic_type($action, $topic_ids)
|
||||
*/
|
||||
function mcp_move_topic($topic_ids)
|
||||
{
|
||||
global $auth, $user, $db, $template, $phpbb_log, $request;
|
||||
global $auth, $user, $db, $template, $phpbb_log, $request, $phpbb_dispatcher;
|
||||
global $phpEx, $phpbb_root_path;
|
||||
|
||||
// Here we limit the operation to one forum only
|
||||
@@ -625,6 +625,21 @@ function mcp_move_topic($topic_ids)
|
||||
'poll_last_vote' => (int) $row['poll_last_vote']
|
||||
);
|
||||
|
||||
/**
|
||||
* Perform actions before shadow topic is created.
|
||||
*
|
||||
* @event core.mcp_main_modify_shadow_sql
|
||||
* @var array shadow SQL array to be used by $db->sql_build_array
|
||||
* @var array row Topic data
|
||||
* @since 3.1.11-RC1
|
||||
* @changed 3.1.11-RC1 Added variable: row
|
||||
*/
|
||||
$vars = array(
|
||||
'shadow',
|
||||
'row',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_main_modify_shadow_sql', compact($vars)));
|
||||
|
||||
$db->sql_query('INSERT INTO ' . TOPICS_TABLE . $db->sql_build_array('INSERT', $shadow));
|
||||
|
||||
// Shadow topics only count on new "topics" and not posts... a shadow topic alone has 0 posts
|
||||
@@ -877,11 +892,12 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_SHADOW_TOPICS' => $only_shadow,
|
||||
'S_SOFTDELETED' => $only_softdeleted,
|
||||
'S_TOPIC_MODE' => true,
|
||||
'S_ALLOWED_DELETE' => $auth->acl_get('m_delete', $forum_id),
|
||||
'S_ALLOWED_SOFTDELETE' => $auth->acl_get('m_softdelete', $forum_id),
|
||||
'S_SHADOW_TOPICS' => $only_shadow,
|
||||
'S_SOFTDELETED' => $only_softdeleted,
|
||||
'S_TOPIC_MODE' => true,
|
||||
'S_ALLOWED_DELETE' => $auth->acl_get('m_delete', $forum_id),
|
||||
'S_ALLOWED_SOFTDELETE' => $auth->acl_get('m_softdelete', $forum_id),
|
||||
'DELETE_TOPIC_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_TOPIC_PERMANENTLY', sizeof($topic_ids)),
|
||||
));
|
||||
|
||||
$l_confirm = (sizeof($topic_ids) == 1) ? 'DELETE_TOPIC' : 'DELETE_TOPICS';
|
||||
@@ -1116,9 +1132,10 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_SOFTDELETED' => $only_softdeleted,
|
||||
'S_ALLOWED_DELETE' => $auth->acl_get('m_delete', $forum_id),
|
||||
'S_ALLOWED_SOFTDELETE' => $auth->acl_get('m_softdelete', $forum_id),
|
||||
'S_SOFTDELETED' => $only_softdeleted,
|
||||
'S_ALLOWED_DELETE' => $auth->acl_get('m_delete', $forum_id),
|
||||
'S_ALLOWED_SOFTDELETE' => $auth->acl_get('m_softdelete', $forum_id),
|
||||
'DELETE_POST_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_POST_PERMANENTLY', sizeof($post_ids)),
|
||||
));
|
||||
|
||||
$l_confirm = (sizeof($post_ids) == 1) ? 'DELETE_POST' : 'DELETE_POSTS';
|
||||
@@ -1279,6 +1296,21 @@ function mcp_fork_topic($topic_ids)
|
||||
'poll_vote_change' => (int) $topic_row['poll_vote_change'],
|
||||
);
|
||||
|
||||
/**
|
||||
* Perform actions before forked topic is created.
|
||||
*
|
||||
* @event core.mcp_main_modify_fork_sql
|
||||
* @var array sql_ary SQL array to be used by $db->sql_build_array
|
||||
* @var array topic_row Topic data
|
||||
* @since 3.1.11-RC1
|
||||
* @changed 3.1.11-RC1 Added variable: topic_row
|
||||
*/
|
||||
$vars = array(
|
||||
'sql_ary',
|
||||
'topic_row',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_main_modify_fork_sql', compact($vars)));
|
||||
|
||||
$db->sql_query('INSERT INTO ' . TOPICS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
|
||||
$new_topic_id = $db->sql_nextid();
|
||||
$new_topic_id_list[$topic_id] = $new_topic_id;
|
||||
|
@@ -24,8 +24,8 @@ if (!defined('IN_PHPBB'))
|
||||
*/
|
||||
function mcp_post_details($id, $mode, $action)
|
||||
{
|
||||
global $phpEx, $phpbb_root_path, $config;
|
||||
global $template, $db, $user, $auth, $cache;
|
||||
global $phpEx, $phpbb_root_path, $config, $request;
|
||||
global $template, $db, $user, $auth, $cache, $phpbb_container;
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
$user->add_lang('posting');
|
||||
@@ -53,7 +53,10 @@ function mcp_post_details($id, $mode, $action)
|
||||
if ($auth->acl_get('m_info', $post_info['forum_id']))
|
||||
{
|
||||
$ip = request_var('ip', '');
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
if (!function_exists('user_ipwhois'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
'RETURN_POST' => sprintf($user->lang['RETURN_POST'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&p=$post_id") . '">', '</a>'),
|
||||
@@ -355,7 +358,11 @@ function mcp_post_details($id, $mode, $action)
|
||||
// Get IP
|
||||
if ($auth->acl_get('m_info', $post_info['forum_id']))
|
||||
{
|
||||
$rdns_ip_num = request_var('rdns', '');
|
||||
/** @var \phpbb\pagination $pagination */
|
||||
$pagination = $phpbb_container->get('pagination');
|
||||
|
||||
$rdns_ip_num = $request->variable('rdns', '');
|
||||
$start_users = $request->variable('start_users', 0);
|
||||
|
||||
if ($rdns_ip_num != 'all')
|
||||
{
|
||||
@@ -364,24 +371,47 @@ function mcp_post_details($id, $mode, $action)
|
||||
);
|
||||
}
|
||||
|
||||
$num_users = false;
|
||||
if ($start_users)
|
||||
{
|
||||
$num_users = phpbb_get_num_posters_for_ip($db, $post_info['poster_ip']);
|
||||
$start_users = $pagination->validate_start($start_users, $config['posts_per_page'], $num_users);
|
||||
}
|
||||
|
||||
// Get other users who've posted under this IP
|
||||
$sql = 'SELECT poster_id, COUNT(poster_id) as postings
|
||||
FROM ' . POSTS_TABLE . "
|
||||
WHERE poster_ip = '" . $db->sql_escape($post_info['poster_ip']) . "'
|
||||
AND poster_id <> " . (int) $post_info['poster_id'] . "
|
||||
GROUP BY poster_id
|
||||
ORDER BY postings DESC";
|
||||
$result = $db->sql_query($sql);
|
||||
ORDER BY postings DESC, poster_id ASC";
|
||||
$result = $db->sql_query_limit($sql, $config['posts_per_page'], $start_users);
|
||||
|
||||
$page_users = 0;
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
// Fill the user select list with users who have posted under this IP
|
||||
if ($row['poster_id'] != $post_info['poster_id'])
|
||||
{
|
||||
$users_ary[$row['poster_id']] = $row;
|
||||
}
|
||||
$page_users++;
|
||||
$users_ary[$row['poster_id']] = $row;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if ($page_users == $config['posts_per_page'] || $start_users)
|
||||
{
|
||||
if ($num_users === false)
|
||||
{
|
||||
$num_users = phpbb_get_num_posters_for_ip($db, $post_info['poster_ip']);
|
||||
}
|
||||
|
||||
$pagination->generate_template_pagination(
|
||||
$url . '&i=main&mode=post_details',
|
||||
'pagination',
|
||||
'start_users',
|
||||
$num_users,
|
||||
$config['posts_per_page'],
|
||||
$start_users
|
||||
);
|
||||
}
|
||||
|
||||
if (sizeof($users_ary))
|
||||
{
|
||||
// Get the usernames
|
||||
@@ -415,16 +445,26 @@ function mcp_post_details($id, $mode, $action)
|
||||
// A compound index on poster_id, poster_ip (posts table) would help speed up this query a lot,
|
||||
// but the extra size is only valuable if there are persons having more than a thousands posts.
|
||||
// This is better left to the really really big forums.
|
||||
$start_ips = $request->variable('start_ips', 0);
|
||||
|
||||
$num_ips = false;
|
||||
if ($start_ips)
|
||||
{
|
||||
$num_ips = phpbb_get_num_ips_for_poster($db, $post_info['poster_id']);
|
||||
$start_ips = $pagination->validate_start($start_ips, $config['posts_per_page'], $num_ips);
|
||||
}
|
||||
|
||||
$sql = 'SELECT poster_ip, COUNT(poster_ip) AS postings
|
||||
FROM ' . POSTS_TABLE . '
|
||||
WHERE poster_id = ' . $post_info['poster_id'] . "
|
||||
GROUP BY poster_ip
|
||||
ORDER BY postings DESC";
|
||||
$result = $db->sql_query($sql);
|
||||
ORDER BY postings DESC, poster_ip ASC";
|
||||
$result = $db->sql_query_limit($sql, $config['posts_per_page'], $start_ips);
|
||||
|
||||
$page_ips = 0;
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$page_ips++;
|
||||
$hostname = (($rdns_ip_num == $row['poster_ip'] || $rdns_ip_num == 'all') && $row['poster_ip']) ? @gethostbyaddr($row['poster_ip']) : '';
|
||||
|
||||
$template->assign_block_vars('iprow', array(
|
||||
@@ -439,6 +479,23 @@ function mcp_post_details($id, $mode, $action)
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if ($page_ips == $config['posts_per_page'] || $start_ips)
|
||||
{
|
||||
if ($num_ips === false)
|
||||
{
|
||||
$num_ips = phpbb_get_num_ips_for_poster($db, $post_info['poster_id']);
|
||||
}
|
||||
|
||||
$pagination->generate_template_pagination(
|
||||
$url . '&i=main&mode=post_details',
|
||||
'pagination_ips',
|
||||
'start_ips',
|
||||
$num_ips,
|
||||
$config['posts_per_page'],
|
||||
$start_ips
|
||||
);
|
||||
}
|
||||
|
||||
$user_select = '';
|
||||
|
||||
if (sizeof($usernames_ary))
|
||||
@@ -456,6 +513,44 @@ function mcp_post_details($id, $mode, $action)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of posters for a given ip
|
||||
*
|
||||
* @param \phpbb\db\driver\driver_interface $db DBAL interface
|
||||
* @param string $poster_ip IP
|
||||
* @return int Number of posters
|
||||
*/
|
||||
function phpbb_get_num_posters_for_ip(\phpbb\db\driver\driver_interface $db, $poster_ip)
|
||||
{
|
||||
$sql = 'SELECT COUNT(DISTINCT poster_id) as num_users
|
||||
FROM ' . POSTS_TABLE . "
|
||||
WHERE poster_ip = '" . $db->sql_escape($poster_ip) . "'";
|
||||
$result = $db->sql_query($sql);
|
||||
$num_users = (int) $db->sql_fetchfield('num_users');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
return $num_users;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of ips for a given poster
|
||||
*
|
||||
* @param \phpbb\db\driver\driver_interface $db
|
||||
* @param int $poster_id Poster user ID
|
||||
* @return int Number of IPs for given poster
|
||||
*/
|
||||
function phpbb_get_num_ips_for_poster(\phpbb\db\driver\driver_interface $db, $poster_id)
|
||||
{
|
||||
$sql = 'SELECT COUNT(DISTINCT poster_ip) as num_ips
|
||||
FROM ' . POSTS_TABLE . '
|
||||
WHERE poster_id = ' . (int) $poster_id;
|
||||
$result = $db->sql_query($sql);
|
||||
$num_ips = (int) $db->sql_fetchfield('num_ips');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
return $num_ips;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a post's poster
|
||||
*/
|
||||
|
@@ -407,6 +407,7 @@ function mcp_topic_view($id, $mode, $action)
|
||||
function split_topic($action, $topic_id, $to_forum_id, $subject)
|
||||
{
|
||||
global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $config;
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
$post_id_list = request_var('post_id_list', array(0));
|
||||
$forum_id = request_var('forum_id', 0);
|
||||
@@ -567,6 +568,47 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
|
||||
WHERE post_id = {$post_id_list[0]}";
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Grab data for first post in split topic
|
||||
$sql_array = array(
|
||||
'SELECT' => 'p.post_id, p.forum_id, p.poster_id, p.post_text, f.enable_indexing',
|
||||
'FROM' => array(
|
||||
POSTS_TABLE => 'p',
|
||||
),
|
||||
'LEFT_JOIN' => array(
|
||||
array(
|
||||
'FROM' => array(FORUMS_TABLE => 'f'),
|
||||
'ON' => 'p.forum_id = f.forum_id',
|
||||
)
|
||||
),
|
||||
'WHERE' => "post_id = {$post_id_list[0]}",
|
||||
);
|
||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||
$result = $db->sql_query($sql);
|
||||
$first_post_data = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Index first post as if it were edited
|
||||
if ($first_post_data['enable_indexing'])
|
||||
{
|
||||
// Select the search method and do some additional checks to ensure it can actually be utilised
|
||||
$search_type = $config['search_type'];
|
||||
|
||||
if (!class_exists($search_type))
|
||||
{
|
||||
trigger_error('NO_SUCH_SEARCH_MODULE');
|
||||
}
|
||||
|
||||
$error = false;
|
||||
$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
|
||||
|
||||
if ($error)
|
||||
{
|
||||
trigger_error($error);
|
||||
}
|
||||
|
||||
$search->index('edit', $first_post_data['post_id'], $first_post_data['post_text'], $subject, $first_post_data['poster_id'], $first_post_data['forum_id']);
|
||||
}
|
||||
|
||||
// Copy topic subscriptions to new topic
|
||||
$sql = 'SELECT user_id, notify_status
|
||||
FROM ' . TOPICS_WATCH_TABLE . '
|
||||
@@ -634,7 +676,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
|
||||
*/
|
||||
function merge_posts($topic_id, $to_topic_id)
|
||||
{
|
||||
global $db, $template, $user, $phpEx, $phpbb_root_path, $auth;
|
||||
global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $phpbb_dispatcher;
|
||||
|
||||
if (!$to_topic_id)
|
||||
{
|
||||
@@ -735,6 +777,20 @@ function merge_posts($topic_id, $to_topic_id)
|
||||
$redirect = request_var('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id");
|
||||
$redirect = reapply_sid($redirect);
|
||||
|
||||
/**
|
||||
* Perform additional actions after merging posts.
|
||||
*
|
||||
* @event core.mcp_topics_merge_posts_after
|
||||
* @var int topic_id The topic ID from which posts are being moved
|
||||
* @var int to_topic_id The topic ID to which posts are being moved
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'topic_id',
|
||||
'to_topic_id',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.mcp_topics_merge_posts_after', compact($vars)));
|
||||
|
||||
meta_refresh(3, $redirect);
|
||||
trigger_error($user->lang[$success_msg] . '<br /><br />' . $return_link);
|
||||
}
|
||||
|
@@ -1171,7 +1171,7 @@ class parse_message extends bbcode_firstpass
|
||||
* @var bool return Do we return after the event is triggered if $warn_msg is not empty
|
||||
* @var array warn_msg Array of the warning messages
|
||||
* @since 3.1.2-RC1
|
||||
* @change 3.1.3-RC1 Added vars $bbcode_bitfield and $bbcode_uid
|
||||
* @changed 3.1.3-RC1 Added vars $bbcode_bitfield and $bbcode_uid
|
||||
*/
|
||||
$message = $this->message;
|
||||
$warn_msg = $this->warn_msg;
|
||||
@@ -1822,7 +1822,7 @@ class parse_message extends bbcode_firstpass
|
||||
$this->message = $poll['poll_title'];
|
||||
$this->bbcode_bitfield = $bbcode_bitfield;
|
||||
|
||||
$poll['poll_options'] = explode("\n", trim($poll['poll_option_text']));
|
||||
$poll['poll_options'] = preg_split('/\s*?\n\s*/', trim($poll['poll_option_text']));
|
||||
$poll['poll_options_size'] = sizeof($poll['poll_options']);
|
||||
|
||||
if (!$poll['poll_title'] && $poll['poll_options_size'])
|
||||
|
@@ -35,7 +35,7 @@ class ucp_main
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx;
|
||||
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx, $phpbb_dispatcher;
|
||||
global $request;
|
||||
|
||||
switch ($mode)
|
||||
@@ -215,6 +215,14 @@ class ucp_main
|
||||
|
||||
$unwatch = (isset($_POST['unwatch'])) ? true : false;
|
||||
|
||||
/**
|
||||
* Read and potentially modify the post data used to remove subscriptions to forums/topics
|
||||
*
|
||||
* @event core.ucp_main_subscribed_post_data
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$phpbb_dispatcher->dispatch('core.ucp_main_subscribed_post_data');
|
||||
|
||||
if ($unwatch)
|
||||
{
|
||||
if (check_form_key('ucp_front_subscribed'))
|
||||
@@ -300,6 +308,20 @@ class ucp_main
|
||||
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify the query used to retrieve a list of subscribed forums
|
||||
*
|
||||
* @event core.ucp_main_subscribed_forums_modify_query
|
||||
* @var array sql_array The subscribed forums query
|
||||
* @var array forbidden_forums The list of forbidden forums
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'sql_array',
|
||||
'forbidden_forums',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_main_subscribed_forums_modify_query', compact($vars)));
|
||||
|
||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
@@ -341,7 +363,7 @@ class ucp_main
|
||||
$last_post_time = $last_post_url = '';
|
||||
}
|
||||
|
||||
$template->assign_block_vars('forumrow', array(
|
||||
$template_vars = array(
|
||||
'FORUM_ID' => $forum_id,
|
||||
'FORUM_IMG_STYLE' => $folder_image,
|
||||
'FORUM_FOLDER_IMG' => $user->img($folder_image, $folder_alt),
|
||||
@@ -360,8 +382,36 @@ class ucp_main
|
||||
'S_UNREAD_FORUM' => $unread_forum,
|
||||
|
||||
'U_LAST_POST' => $last_post_url,
|
||||
'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'])
|
||||
);
|
||||
|
||||
/**
|
||||
* Add template variables to a subscribed forum row.
|
||||
*
|
||||
* @event core.ucp_main_subscribed_forum_modify_template_vars
|
||||
* @var array template_vars Array containing the template variables for the row
|
||||
* @var array row Array containing the subscribed forum row data
|
||||
* @var int forum_id Forum ID
|
||||
* @var string folder_image Folder image
|
||||
* @var string folder_alt Alt text for the folder image
|
||||
* @var bool unread_forum Whether the forum has unread content or not
|
||||
* @var string last_post_time The time of the most recent post, expressed as a formatted date string
|
||||
* @var string last_post_url The URL of the most recent post in the forum
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'template_vars',
|
||||
'row',
|
||||
'forum_id',
|
||||
'folder_image',
|
||||
'folder_alt',
|
||||
'unread_forum',
|
||||
'last_post_time',
|
||||
'last_post_url',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_main_subscribed_forum_modify_template_vars', compact($vars)));
|
||||
|
||||
$template->assign_block_vars('forumrow', $template_vars);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
@@ -643,7 +693,7 @@ class ucp_main
|
||||
*/
|
||||
function assign_topiclist($mode = 'subscribed', $forbidden_forum_ary = array())
|
||||
{
|
||||
global $user, $db, $template, $config, $cache, $auth, $phpbb_root_path, $phpEx, $phpbb_container;
|
||||
global $user, $db, $template, $config, $cache, $auth, $phpbb_root_path, $phpEx, $phpbb_container, $request, $phpbb_dispatcher;
|
||||
|
||||
$table = ($mode == 'subscribed') ? TOPICS_WATCH_TABLE : BOOKMARKS_TABLE;
|
||||
$start = request_var('start', 0);
|
||||
@@ -664,6 +714,23 @@ class ucp_main
|
||||
AND i.user_id = ' . $user->data['user_id'] . '
|
||||
AND ' . $db->sql_in_set('t.forum_id', $forbidden_forum_ary, true, true),
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify the query used to retrieve the count of subscribed/bookmarked topics
|
||||
*
|
||||
* @event core.ucp_main_topiclist_count_modify_query
|
||||
* @var array sql_array The subscribed/bookmarked topics query
|
||||
* @var array forbidden_forum_ary The list of forbidden forums
|
||||
* @var string mode The type of topic list ('subscribed' or 'bookmarks')
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'sql_array',
|
||||
'forbidden_forum_ary',
|
||||
'mode',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_main_topiclist_count_modify_query', compact($vars)));
|
||||
|
||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||
$result = $db->sql_query($sql);
|
||||
$topics_count = (int) $db->sql_fetchfield('topics_count');
|
||||
@@ -732,6 +799,22 @@ class ucp_main
|
||||
$sql_array['SELECT'] .= ', tp.topic_posted';
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify the query used to retrieve the list of subscribed/bookmarked topics
|
||||
*
|
||||
* @event core.ucp_main_topiclist_modify_query
|
||||
* @var array sql_array The subscribed/bookmarked topics query
|
||||
* @var array forbidden_forum_ary The list of forbidden forums
|
||||
* @var string mode The type of topic list ('subscribed' or 'bookmarks')
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'sql_array',
|
||||
'forbidden_forum_ary',
|
||||
'mode',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_main_topiclist_modify_query', compact($vars)));
|
||||
|
||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
|
||||
|
||||
@@ -796,7 +879,7 @@ class ucp_main
|
||||
$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params);
|
||||
|
||||
// Send vars to template
|
||||
$template->assign_block_vars('topicrow', array(
|
||||
$template_vars = array(
|
||||
'FORUM_ID' => $forum_id,
|
||||
'TOPIC_ID' => $topic_id,
|
||||
'FIRST_POST_TIME' => $user->format_date($row['topic_time']),
|
||||
@@ -838,7 +921,41 @@ class ucp_main
|
||||
'U_LAST_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params . '&p=' . $row['topic_last_post_id']) . '#p' . $row['topic_last_post_id'],
|
||||
'U_VIEW_TOPIC' => $view_topic_url,
|
||||
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id),
|
||||
));
|
||||
);
|
||||
|
||||
/**
|
||||
* Add template variables to a subscribed/bookmarked topic row.
|
||||
*
|
||||
* @event core.ucp_main_topiclist_topic_modify_template_vars
|
||||
* @var array template_vars Array containing the template variables for the row
|
||||
* @var array row Array containing the subscribed/bookmarked topic row data
|
||||
* @var int forum_id ID of the forum containing the topic
|
||||
* @var int topic_id Topic ID
|
||||
* @var int replies Number of replies in the topic
|
||||
* @var string topic_type Topic type
|
||||
* @var string folder_img Folder image
|
||||
* @var string folder_alt Alt text for the folder image
|
||||
* @var array icons Array containing topic icons
|
||||
* @var bool unread_topic Whether the topic has unread content or not
|
||||
* @var string view_topic_url The URL of the topic
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'template_vars',
|
||||
'row',
|
||||
'forum_id',
|
||||
'topic_id',
|
||||
'replies',
|
||||
'topic_type',
|
||||
'folder_img',
|
||||
'folder_alt',
|
||||
'icons',
|
||||
'unread_topic',
|
||||
'view_topic_url',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_main_topiclist_topic_modify_template_vars', compact($vars)));
|
||||
|
||||
$template->assign_block_vars('topicrow', $template_vars);
|
||||
|
||||
$pagination->generate_template_pagination(append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . "&t=$topic_id"), 'topicrow.pagination', 'start', $replies + 1, $config['posts_per_page'], 1, true, true);
|
||||
}
|
||||
|
@@ -450,6 +450,17 @@ function compose_pm($id, $mode, $action, $user_folders = array())
|
||||
$message_attachment = 0;
|
||||
$message_text = $message_subject = '';
|
||||
|
||||
/**
|
||||
* Predefine message text and subject
|
||||
*
|
||||
* @event core.ucp_pm_compose_predefined_message
|
||||
* @var string message_text Message text
|
||||
* @var string message_subject Messate subject
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array('message_text', 'message_subject');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_predefined_message', compact($vars)));
|
||||
|
||||
if ($to_user_id && $to_user_id != ANONYMOUS && $action == 'post')
|
||||
{
|
||||
$address_list['u'][$to_user_id] = 'to';
|
||||
@@ -751,6 +762,34 @@ function compose_pm($id, $mode, $action, $user_folders = array())
|
||||
$enable_urls = (isset($_POST['disable_magic_url'])) ? 0 : 1;
|
||||
$enable_sig = (!$config['allow_sig'] ||!$config['allow_sig_pm']) ? false : ((isset($_POST['attach_sig'])) ? true : false);
|
||||
|
||||
/**
|
||||
* Modify private message
|
||||
*
|
||||
* @event core.ucp_pm_compose_modify_parse_before
|
||||
* @var bool enable_bbcode Whether or not bbcode is enabled
|
||||
* @var bool enable_smilies Whether or not smilies are enabled
|
||||
* @var bool enable_urls Whether or not urls are enabled
|
||||
* @var bool enable_sig Whether or not signature is enabled
|
||||
* @var string subject PM subject text
|
||||
* @var object message_parser The message parser object
|
||||
* @var bool submit Whether or not the form has been sumitted
|
||||
* @var bool preview Whether or not the signature is being previewed
|
||||
* @var array error Any error strings
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'enable_bbcode',
|
||||
'enable_smilies',
|
||||
'enable_urls',
|
||||
'enable_sig',
|
||||
'subject',
|
||||
'message_parser',
|
||||
'submit',
|
||||
'preview',
|
||||
'error',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_modify_parse_before', compact($vars)));
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
$status_switch = (($enable_bbcode+1) << 8) + (($enable_smilies+1) << 4) + (($enable_urls+1) << 2) + (($enable_sig+1) << 1);
|
||||
|
@@ -397,7 +397,7 @@ function view_folder($id, $mode, $folder_id, $folder)
|
||||
*/
|
||||
function get_pm_from($folder_id, $folder, $user_id)
|
||||
{
|
||||
global $user, $db, $template, $config, $auth, $phpbb_container, $phpbb_root_path, $phpEx;
|
||||
global $user, $db, $template, $config, $auth, $phpbb_container, $phpbb_root_path, $phpEx, $phpbb_dispatcher;
|
||||
|
||||
$start = request_var('start', 0);
|
||||
|
||||
@@ -461,7 +461,7 @@ function get_pm_from($folder_id, $folder, $user_id)
|
||||
$start = $pagination->validate_start($start, $config['topics_per_page'], $pm_count);
|
||||
$pagination->generate_template_pagination($base_url, 'pagination', 'start', $pm_count, $config['topics_per_page'], $start);
|
||||
|
||||
$template->assign_vars(array(
|
||||
$template_vars = array(
|
||||
'TOTAL_MESSAGES' => $user->lang('VIEW_PM_MESSAGES', (int) $pm_count),
|
||||
|
||||
'POST_IMG' => (!$auth->acl_get('u_sendpm')) ? $user->img('button_topic_locked', 'POST_PM_LOCKED') : $user->img('button_pm_new', 'POST_NEW_PM'),
|
||||
@@ -475,7 +475,33 @@ function get_pm_from($folder_id, $folder, $user_id)
|
||||
|
||||
'U_POST_NEW_TOPIC' => ($auth->acl_get('u_sendpm')) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=compose') : '',
|
||||
'S_PM_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=view&action=view_folder&f=$folder_id" . (($start !== 0) ? "&start=$start" : '')),
|
||||
));
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify template variables before they are assigned
|
||||
*
|
||||
* @event core.ucp_pm_view_folder_get_pm_from_template
|
||||
* @var int folder_id Folder ID
|
||||
* @var array folder Folder data
|
||||
* @var int user_id User ID
|
||||
* @var string base_url Pagination base URL
|
||||
* @var int start Pagination start
|
||||
* @var int pm_count Count of PMs
|
||||
* @var array template_vars Template variables to be assigned
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'folder_id',
|
||||
'folder',
|
||||
'user_id',
|
||||
'base_url',
|
||||
'start',
|
||||
'pm_count',
|
||||
'template_vars',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_view_folder_get_pm_from_template', compact($vars)));
|
||||
|
||||
$template->assign_vars($template_vars);
|
||||
|
||||
// Grab all pm data
|
||||
$rowset = $pm_list = array();
|
||||
@@ -509,15 +535,38 @@ function get_pm_from($folder_id, $folder, $user_id)
|
||||
$sql_sort_order = $sort_by_sql[$sort_key] . ' ' . $direction;
|
||||
}
|
||||
|
||||
$sql = 'SELECT t.*, p.root_level, p.message_time, p.message_subject, p.icon_id, p.to_address, p.message_attachment, p.bcc_address, u.username, u.username_clean, u.user_colour, p.message_reported
|
||||
FROM ' . PRIVMSGS_TO_TABLE . ' t, ' . PRIVMSGS_TABLE . ' p, ' . USERS_TABLE . " u
|
||||
WHERE t.user_id = $user_id
|
||||
$sql_ary = array(
|
||||
'SELECT' => 't.*, p.root_level, p.message_time, p.message_subject, p.icon_id, p.to_address, p.message_attachment, p.bcc_address, u.username, u.username_clean, u.user_colour, p.message_reported',
|
||||
'FROM' => array(
|
||||
PRIVMSGS_TO_TABLE => 't',
|
||||
PRIVMSGS_TABLE => 'p',
|
||||
USERS_TABLE => 'u',
|
||||
),
|
||||
'WHERE' => "t.user_id = $user_id
|
||||
AND p.author_id = u.user_id
|
||||
AND $folder_sql
|
||||
AND t.msg_id = p.msg_id
|
||||
$sql_limit_time
|
||||
ORDER BY $sql_sort_order";
|
||||
$result = $db->sql_query_limit($sql, $sql_limit, $sql_start);
|
||||
$sql_limit_time",
|
||||
'ORDER_BY' => $sql_sort_order,
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify SQL before it is executed
|
||||
*
|
||||
* @event core.ucp_pm_view_folder_get_pm_from_sql
|
||||
* @var array sql_ary SQL array
|
||||
* @var int sql_limit SQL limit
|
||||
* @var int sql_start SQL start
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'sql_ary',
|
||||
'sql_limit',
|
||||
'sql_start',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_view_folder_get_pm_from_sql', compact($vars)));
|
||||
|
||||
$result = $db->sql_query_limit($db->sql_build_query('SELECT', $sql_ary), $sql_limit, $sql_start);
|
||||
|
||||
$pm_reported = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
|
@@ -479,6 +479,32 @@ class ucp_profile
|
||||
{
|
||||
$message_parser = new parse_message($signature);
|
||||
|
||||
/**
|
||||
* Modify user signature on editing profile in UCP
|
||||
*
|
||||
* @event core.ucp_profile_modify_signature
|
||||
* @var bool enable_bbcode Whether or not bbcode is enabled
|
||||
* @var bool enable_smilies Whether or not smilies are enabled
|
||||
* @var bool enable_urls Whether or not urls are enabled
|
||||
* @var string signature Users signature text
|
||||
* @var object message_parser The message parser object
|
||||
* @var array error Any error strings
|
||||
* @var bool submit Whether or not the form has been sumitted
|
||||
* @var bool preview Whether or not the signature is being previewed
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'enable_bbcode',
|
||||
'enable_smilies',
|
||||
'enable_urls',
|
||||
'signature',
|
||||
'message_parser',
|
||||
'error',
|
||||
'submit',
|
||||
'preview',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_profile_modify_signature', compact($vars)));
|
||||
|
||||
// Allowing Quote BBCode
|
||||
$message_parser->parse($enable_bbcode, $enable_urls, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig');
|
||||
|
||||
@@ -505,6 +531,16 @@ class ucp_profile
|
||||
'user_sig_bbcode_bitfield' => $message_parser->bbcode_bitfield
|
||||
);
|
||||
|
||||
/**
|
||||
* Modify user registration data before submitting it to the database
|
||||
*
|
||||
* @event core.ucp_profile_modify_signature_sql_ary
|
||||
* @var array sql_ary Array with user signature data to submit to the database
|
||||
* @since 3.1.10-RC1
|
||||
*/
|
||||
$vars = array('sql_ary');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_profile_modify_signature_sql_ary', compact($vars)));
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
|
||||
WHERE user_id = ' . $user->data['user_id'];
|
||||
@@ -597,10 +633,19 @@ class ucp_profile
|
||||
'user_avatar_height' => $result['avatar_height'],
|
||||
);
|
||||
|
||||
/**
|
||||
* Trigger events on successfull avatar change
|
||||
*
|
||||
* @event core.ucp_profile_avatar_sql
|
||||
* @var array result Array with data to be stored in DB
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array('result');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_profile_avatar_sql', compact($vars)));
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
||||
WHERE user_id = ' . (int) $user->data['user_id'];
|
||||
|
||||
$db->sql_query($sql);
|
||||
|
||||
meta_refresh(3, $this->u_action);
|
||||
|
@@ -45,6 +45,28 @@ class ucp_register
|
||||
$change_lang = request_var('change_lang', '');
|
||||
$user_lang = request_var('lang', $user->lang_name);
|
||||
|
||||
/**
|
||||
* Add UCP register data before they are assigned to the template or submitted
|
||||
*
|
||||
* To assign data to the template, use $template->assign_vars()
|
||||
*
|
||||
* @event core.ucp_register_requests_after
|
||||
* @var bool coppa Is set coppa
|
||||
* @var bool agreed Did user agree to coppa?
|
||||
* @var bool submit Is set post submit?
|
||||
* @var string change_lang Change language request
|
||||
* @var string user_lang User language request
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'coppa',
|
||||
'agreed',
|
||||
'submit',
|
||||
'change_lang',
|
||||
'user_lang',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_register_requests_after', compact($vars)));
|
||||
|
||||
if ($agreed)
|
||||
{
|
||||
add_form_key('ucp_register');
|
||||
|
@@ -30,7 +30,7 @@ class ucp_remind
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $phpbb_root_path, $phpEx;
|
||||
global $db, $user, $auth, $template, $phpbb_container;
|
||||
global $db, $user, $auth, $template, $phpbb_container, $phpbb_dispatcher;
|
||||
|
||||
if (!$config['allow_password_reset'])
|
||||
{
|
||||
@@ -43,10 +43,30 @@ class ucp_remind
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
$sql = 'SELECT user_id, username, user_permissions, user_email, user_jabber, user_notify_type, user_type, user_lang, user_inactive_reason
|
||||
FROM ' . USERS_TABLE . "
|
||||
WHERE user_email_hash = '" . $db->sql_escape(phpbb_email_hash($email)) . "'
|
||||
AND username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
|
||||
$sql_array = array(
|
||||
'SELECT' => 'user_id, username, user_permissions, user_email, user_jabber, user_notify_type, user_type, user_lang, user_inactive_reason',
|
||||
'FROM' => array(USERS_TABLE => 'u'),
|
||||
'WHERE' => "user_email_hash = '" . $db->sql_escape(phpbb_email_hash($email)) . "'
|
||||
AND username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'"
|
||||
);
|
||||
|
||||
/**
|
||||
* Change SQL query for fetching user data
|
||||
*
|
||||
* @event core.ucp_remind_modify_select_sql
|
||||
* @var string email User's email from the form
|
||||
* @var string username User's username from the form
|
||||
* @var array sql_array Fully assembled SQL query with keys SELECT, FROM, WHERE
|
||||
* @since 3.1.11-RC1
|
||||
*/
|
||||
$vars = array(
|
||||
'email',
|
||||
'username',
|
||||
'sql_array',
|
||||
);
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_remind_modify_select_sql', compact($vars)));
|
||||
|
||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||
$result = $db->sql_query($sql);
|
||||
$user_row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
@@ -184,8 +184,8 @@ if ($config['load_birthdays'] && $config['allow_birthdays'] && $auth->acl_gets('
|
||||
* Event to modify the birthdays list
|
||||
*
|
||||
* @event core.index_modify_birthdays_list
|
||||
* @var array birthdays Array with the users birhtdays data
|
||||
* @var array rows Array with the birhtdays SQL query result
|
||||
* @var array birthdays Array with the users birthdays data
|
||||
* @var array rows Array with the birthdays SQL query result
|
||||
* @since 3.1.7-RC1
|
||||
*/
|
||||
$vars = array('birthdays', 'rows');
|
||||
|
@@ -38,7 +38,7 @@ $dbms = $phpbb_config_php_file->convert_30_dbms_to_31($dbms);
|
||||
$convertor_data = array(
|
||||
'forum_name' => 'phpBB 2.0.x',
|
||||
'version' => '1.0.3',
|
||||
'phpbb_version' => '3.1.9',
|
||||
'phpbb_version' => '3.1.11',
|
||||
'author' => '<a href="https://www.phpbb.com/">phpBB Limited</a>',
|
||||
'dbms' => $dbms,
|
||||
'dbhost' => $dbhost,
|
||||
|
@@ -211,13 +211,6 @@ while (!$migrator->finished())
|
||||
phpbb_end_update($cache, $config);
|
||||
}
|
||||
|
||||
$state = array_merge(array(
|
||||
'migration_schema_done' => false,
|
||||
'migration_data_done' => false,
|
||||
),
|
||||
$migrator->last_run_migration['state']
|
||||
);
|
||||
|
||||
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||
if ((time() - $update_start_time) >= $safe_time_limit)
|
||||
{
|
||||
|
@@ -151,10 +151,10 @@ class install_install extends module
|
||||
'LEGEND_EXPLAIN' => $lang['PHP_SETTINGS_EXPLAIN'],
|
||||
));
|
||||
|
||||
// Test the minimum PHP version
|
||||
// Test the minimum and maximum version of PHP
|
||||
$php_version = PHP_VERSION;
|
||||
|
||||
if (version_compare($php_version, '5.3.3') < 0)
|
||||
if ((version_compare($php_version, '5.3.3') < 0) || (version_compare($php_version, '7.0.0-dev', '>=')))
|
||||
{
|
||||
$result = '<strong style="color:red">' . $lang['NO'] . '</strong>';
|
||||
}
|
||||
@@ -404,7 +404,7 @@ class install_install extends module
|
||||
));
|
||||
}
|
||||
|
||||
// Can we find Imagemagick anywhere on the system?
|
||||
// Can we find ImageMagick anywhere on the system?
|
||||
$exe = (DIRECTORY_SEPARATOR == '\\') ? '.exe' : '';
|
||||
|
||||
$magic_home = getenv('MAGICK_HOME');
|
||||
|
@@ -273,7 +273,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('tpl_allow_php', '0
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.9-RC1');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.11-RC1');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400');
|
||||
|
||||
|
@@ -117,7 +117,7 @@ $lang = array_merge($lang, array(
|
||||
|
||||
'IMAGE_LINK_SIZE' => 'Image link dimensions',
|
||||
'IMAGE_LINK_SIZE_EXPLAIN' => 'Display image attachment as an inline text link if image is larger than this. To disable this behaviour, set the values to 0px by 0px.',
|
||||
'IMAGICK_PATH' => 'Imagemagick path',
|
||||
'IMAGICK_PATH' => 'ImageMagick path',
|
||||
'IMAGICK_PATH_EXPLAIN' => 'Full path to the imagemagick convert application, e.g. <samp>/usr/bin/</samp>.',
|
||||
|
||||
'MAX_ATTACHMENTS' => 'Maximum number of attachments per post',
|
||||
@@ -125,7 +125,7 @@ $lang = array_merge($lang, array(
|
||||
'MAX_EXTGROUP_FILESIZE' => 'Maximum file size',
|
||||
'MAX_IMAGE_SIZE' => 'Maximum image dimensions',
|
||||
'MAX_IMAGE_SIZE_EXPLAIN' => 'Maximum size of image attachments. Set both values to 0px by 0px to disable dimension checking.',
|
||||
'MAX_THUMB_WIDTH' => 'Maximum thumbnail width in pixel',
|
||||
'MAX_THUMB_WIDTH' => 'Maximum thumbnail width/height in pixel',
|
||||
'MAX_THUMB_WIDTH_EXPLAIN' => 'A generated thumbnail will not exceed the width set here.',
|
||||
'MIN_THUMB_FILESIZE' => 'Minimum thumbnail file size',
|
||||
'MIN_THUMB_FILESIZE_EXPLAIN' => 'Do not create a thumbnail for images smaller than this.',
|
||||
@@ -153,7 +153,7 @@ $lang = array_merge($lang, array(
|
||||
'REMOVE_DISALLOWED_IPS' => 'Remove or un-exclude <em>disallowed</em> IPs/hostnames',
|
||||
'RESYNC_FILES_STATS_CONFIRM' => 'Are you sure you wish to resynchronise file statistics?',
|
||||
|
||||
'SEARCH_IMAGICK' => 'Search for Imagemagick',
|
||||
'SEARCH_IMAGICK' => 'Search for ImageMagick',
|
||||
'SECURE_ALLOW_DENY' => 'Allow/Deny list',
|
||||
'SECURE_ALLOW_DENY_EXPLAIN' => 'Change the default behaviour when secure downloads are enabled of the Allow/Deny list to that of a <strong>whitelist</strong> (Allow) or a <strong>blacklist</strong> (Deny).',
|
||||
'SECURE_DOWNLOADS' => 'Enable secure downloads',
|
||||
|
@@ -345,11 +345,14 @@ $lang = array_merge($lang, array(
|
||||
|
||||
// Cookie Settings
|
||||
$lang = array_merge($lang, array(
|
||||
'ACP_COOKIE_SETTINGS_EXPLAIN' => 'These details define the data used to send cookies to your users browsers. In most cases the default values for the cookie settings should be sufficient. If you do need to change any do so with care, incorrect settings can prevent users logging in.',
|
||||
'ACP_COOKIE_SETTINGS_EXPLAIN' => 'These details define the data used to send cookies to your users browsers. In most cases the default values for the cookie settings should be sufficient. If you do need to change any do so with care, incorrect settings can prevent users logging in. If you have problems with users staying logging in to your board, visit the <b><a href="https://www.phpbb.com/support/go/cookie-settings/">phpBB.com Knowledge Base - Fixing incorrect cookie settings</a></b>.',
|
||||
|
||||
'COOKIE_DOMAIN' => 'Cookie domain',
|
||||
'COOKIE_DOMAIN_EXPLAIN' => 'In most cases the cookie domain is optional. Leave it blank if you are unsure.<br /><br /> In the case where you have a board integrated with other software or have multiple domains, then to determine the cookie domain you need to do the following. If you have something like <i>example.com</i> and <i>forums.example.com</i>, or perhaps <i>forums.example.com</i> and <i>blog.example.com</i>. Remove the subdomains until you find the common domain, <i>example.com</i>. Now add a dot in front of the common domain and you would enter .example.com (note the dot at the beginning).',
|
||||
'COOKIE_NAME' => 'Cookie name',
|
||||
'COOKIE_NAME_EXPLAIN' => 'This can be anything what you want, make it original. Whenever the cookie settings are changed the name of the cookie should be changed.',
|
||||
'COOKIE_PATH' => 'Cookie path',
|
||||
'COOKIE_PATH_EXPLAIN' => 'Note that this is always a slash, it does not matter what your board URL is.',
|
||||
'COOKIE_SECURE' => 'Cookie secure',
|
||||
'COOKIE_SECURE_EXPLAIN' => 'If your server is running via SSL set this to enabled else leave as disabled. Having this enabled and not running via SSL will result in server errors during redirects.',
|
||||
'ONLINE_LENGTH' => 'View online time span',
|
||||
@@ -558,6 +561,8 @@ $lang = array_merge($lang, array(
|
||||
'EMAIL_SIG_EXPLAIN' => 'This text will be attached to all emails the board sends.',
|
||||
'ENABLE_EMAIL' => 'Enable board-wide emails',
|
||||
'ENABLE_EMAIL_EXPLAIN' => 'If this is set to disabled no emails will be sent by the board at all. <em>Note the user and admin account activation settings require this setting to be enabled. If currently using “user” or “admin” activation in the activation settings, disabling this setting will disable registration.</em>',
|
||||
'SMTP_ALLOW_SELF_SIGNED' => 'Allow self-signed SSL certificates',
|
||||
'SMTP_ALLOW_SELF_SIGNED_EXPLAIN'=> 'Allow connections to SMTP server with self-signed SSL certificate.<em><strong>Warning:</strong> Allowing self-signed SSL certificates may cause security implications.</em>',
|
||||
'SMTP_AUTH_METHOD' => 'Authentication method for SMTP',
|
||||
'SMTP_AUTH_METHOD_EXPLAIN' => 'Only used if a username/password is set, ask your provider if you are unsure which method to use.',
|
||||
'SMTP_CRAM_MD5' => 'CRAM-MD5',
|
||||
@@ -570,9 +575,15 @@ $lang = array_merge($lang, array(
|
||||
'SMTP_PORT' => 'SMTP server port',
|
||||
'SMTP_PORT_EXPLAIN' => 'Only change this if you know your SMTP server is on a different port.',
|
||||
'SMTP_SERVER' => 'SMTP server address',
|
||||
'SMTP_SERVER_EXPLAIN' => 'Note that you have to provide the protocol that your server uses. If you are using SSL, this has to be "ssl://your.mailserver.com"',
|
||||
'SMTP_SETTINGS' => 'SMTP settings',
|
||||
'SMTP_USERNAME' => 'SMTP username',
|
||||
'SMTP_USERNAME_EXPLAIN' => 'Only enter a username if your SMTP server requires it.',
|
||||
'SMTP_VERIFY_PEER' => 'Verify SSL certificate',
|
||||
'SMTP_VERIFY_PEER_EXPLAIN' => 'Require verification of SSL certificate used by SMTP server.<em><strong>Warning:</strong> Connecting peers with unverified SSL certificates may cause security implications.</em>',
|
||||
'SMTP_VERIFY_PEER_NAME' => 'Verify SMTP peer name',
|
||||
'SMTP_VERIFY_PEER_NAME_EXPLAIN' => 'Require verification of peer name for SMTP servers using SSL / TLS connections.<em><strong>Warning:</strong> Connecting to unverified peers may cause security implications.</em>',
|
||||
|
||||
'USE_SMTP' => 'Use SMTP server for email',
|
||||
'USE_SMTP_EXPLAIN' => 'Select “Yes” if you want or have to send email via a named server instead of the local mail function.',
|
||||
));
|
||||
@@ -581,20 +592,26 @@ $lang = array_merge($lang, array(
|
||||
$lang = array_merge($lang, array(
|
||||
'ACP_JABBER_SETTINGS_EXPLAIN' => 'Here you can enable and control the use of Jabber for instant messaging and board notifications. Jabber is an open source protocol and therefore available for use by anyone. Some Jabber servers include gateways or transports which allow you to contact users on other networks. Not all servers offer all transports and changes in protocols can prevent transports from operating. Please be sure to enter already registered account details - phpBB will use the details you enter here as is.',
|
||||
|
||||
'JAB_ENABLE' => 'Enable Jabber',
|
||||
'JAB_ENABLE_EXPLAIN' => 'Enables use of Jabber messaging and notifications.',
|
||||
'JAB_GTALK_NOTE' => 'Please note that GTalk will not work because the <samp>dns_get_record</samp> function could not be found. This function is not available in PHP4, and is not implemented on Windows platforms. It currently does not work on BSD-based systems, including Mac OS.',
|
||||
'JAB_PACKAGE_SIZE' => 'Jabber package size',
|
||||
'JAB_PACKAGE_SIZE_EXPLAIN' => 'This is the number of messages sent in one package. If set to 0 the message is sent immediately and will not be queued for later sending.',
|
||||
'JAB_PASSWORD' => 'Jabber password',
|
||||
'JAB_PASSWORD_EXPLAIN' => '<em><strong>Warning:</strong> This password will be stored as plain text in the database, visible to everybody who can access your database or who can view this configuration page.</em>',
|
||||
'JAB_PORT' => 'Jabber port',
|
||||
'JAB_PORT_EXPLAIN' => 'Leave blank unless you know it is not port 5222.',
|
||||
'JAB_SERVER' => 'Jabber server',
|
||||
'JAB_SERVER_EXPLAIN' => 'See %sjabber.org%s for a list of servers.',
|
||||
'JAB_SETTINGS_CHANGED' => 'Jabber settings changed successfully.',
|
||||
'JAB_USE_SSL' => 'Use SSL to connect',
|
||||
'JAB_USE_SSL_EXPLAIN' => 'If enabled a secure connection is tried to be established. The Jabber port will be modified to 5223 if port 5222 is specified.',
|
||||
'JAB_USERNAME' => 'Jabber username or JID',
|
||||
'JAB_USERNAME_EXPLAIN' => 'Specify a registered username or a valid JID. The username will not be checked for validity. If you only specify a username, then your JID will be the username and the server you specified above. Else, specify a valid JID, for example user@jabber.org.',
|
||||
'JAB_ALLOW_SELF_SIGNED' => 'Allow self-signed SSL certificates',
|
||||
'JAB_ALLOW_SELF_SIGNED_EXPLAIN' => 'Allow connections to Jabber server with self-signed SSL certificate.<em><strong>Warning:</strong> Allowing self-signed SSL certificates may cause security implications.</em>',
|
||||
'JAB_ENABLE' => 'Enable Jabber',
|
||||
'JAB_ENABLE_EXPLAIN' => 'Enables use of Jabber messaging and notifications.',
|
||||
'JAB_GTALK_NOTE' => 'Please note that GTalk will not work because the <samp>dns_get_record</samp> function could not be found. This function is not available in PHP4, and is not implemented on Windows platforms. It currently does not work on BSD-based systems, including Mac OS.',
|
||||
'JAB_PACKAGE_SIZE' => 'Jabber package size',
|
||||
'JAB_PACKAGE_SIZE_EXPLAIN' => 'This is the number of messages sent in one package. If set to 0 the message is sent immediately and will not be queued for later sending.',
|
||||
'JAB_PASSWORD' => 'Jabber password',
|
||||
'JAB_PASSWORD_EXPLAIN' => '<em><strong>Warning:</strong> This password will be stored as plain text in the database, visible to everybody who can access your database or who can view this configuration page.</em>',
|
||||
'JAB_PORT' => 'Jabber port',
|
||||
'JAB_PORT_EXPLAIN' => 'Leave blank unless you know it is not port 5222.',
|
||||
'JAB_SERVER' => 'Jabber server',
|
||||
'JAB_SERVER_EXPLAIN' => 'See %sjabber.org%s for a list of servers.',
|
||||
'JAB_SETTINGS_CHANGED' => 'Jabber settings changed successfully.',
|
||||
'JAB_USE_SSL' => 'Use SSL to connect',
|
||||
'JAB_USE_SSL_EXPLAIN' => 'If enabled a secure connection is tried to be established. The Jabber port will be modified to 5223 if port 5222 is specified.',
|
||||
'JAB_USERNAME' => 'Jabber username or JID',
|
||||
'JAB_USERNAME_EXPLAIN' => 'Specify a registered username or a valid JID. The username will not be checked for validity. If you only specify a username, then your JID will be the username and the server you specified above. Else, specify a valid JID, for example user@jabber.org.',
|
||||
'JAB_VERIFY_PEER' => 'Verify SSL certificate',
|
||||
'JAB_VERIFY_PEER_EXPLAIN' => 'Require verification of SSL certificate used by Jabber server.<em><strong>Warning:</strong> Connecting peers with unverified SSL certificates may cause security implications.</em>',
|
||||
'JAB_VERIFY_PEER_NAME' => 'Verify Jabber peer name',
|
||||
'JAB_VERIFY_PEER_NAME_EXPLAIN' => 'Require verification of peer name for Jabber servers using SSL / TLS connections.<em><strong>Warning:</strong> Connecting to unverified peers may cause security implications.</em>',
|
||||
));
|
||||
|
@@ -373,7 +373,7 @@ $lang = array_merge($lang, array(
|
||||
'NUMBER_USERS' => 'Number of users',
|
||||
'NUMBER_ORPHAN' => 'Orphan attachments',
|
||||
|
||||
'PHP_VERSION_OLD' => 'The version of PHP on this server will no longer be supported by future versions of phpBB. %sDetails%s',
|
||||
'PHP_VERSION_OLD' => 'The version of PHP on this server (%1$s) will no longer be supported by future versions of phpBB. The minimum required version will be PHP %2$s. %3$sDetails%4$s',
|
||||
|
||||
'POSTS_PER_DAY' => 'Posts per day',
|
||||
|
||||
|
@@ -54,7 +54,7 @@ $lang = array_merge($lang, array(
|
||||
'DELETING_INDEX_IN_PROGRESS_EXPLAIN' => 'The search backend is currently cleaning its index. This can take a few minutes.',
|
||||
|
||||
'FULLTEXT_MYSQL_INCOMPATIBLE_DATABASE' => 'The MySQL fulltext backend can only be used with MySQL4 and above.',
|
||||
'FULLTEXT_MYSQL_NOT_SUPPORTED' => 'MySQL fulltext indexes can only be used with MyISAM or InnoDB tables. MySQL 5.6.4 or later is required for fulltext indexes on InnoDB tables.',
|
||||
'FULLTEXT_MYSQL_NOT_SUPPORTED' => 'MySQL fulltext indexes can only be used with MyISAM or InnoDB tables. MySQL 5.6.8 or later is required for fulltext indexes on InnoDB tables.',
|
||||
'FULLTEXT_MYSQL_TOTAL_POSTS' => 'Total number of indexed posts',
|
||||
'FULLTEXT_MYSQL_MIN_SEARCH_CHARS_EXPLAIN' => 'Words with at least this many characters will be indexed for searching. You or your host can only change this setting by changing the mysql configuration.',
|
||||
'FULLTEXT_MYSQL_MAX_SEARCH_CHARS_EXPLAIN' => 'Words with no more than this many characters will be indexed for searching. You or your host can only change this setting by changing the mysql configuration.',
|
||||
|
@@ -81,6 +81,7 @@ $lang = array_merge($lang, array(
|
||||
'STYLE_UNINSTALL_DEPENDENT' => 'Style "%s" cannot be uninstalled because it has one or more child styles.',
|
||||
'STYLE_UNINSTALLED' => 'Style "%s" uninstalled successfully.',
|
||||
'STYLE_USED_BY' => 'Used by (including robots)',
|
||||
'STYLE_VERSION' => 'Style version',
|
||||
|
||||
'UNINSTALL_DEFAULT' => 'You cannot uninstall the default style.',
|
||||
|
||||
|
@@ -55,6 +55,7 @@ $lang = array_merge($lang, array(
|
||||
'CLI_DESCRIPTION_DISABLE_EXTENSION' => 'Disables the specified extension.',
|
||||
'CLI_DESCRIPTION_ENABLE_EXTENSION' => 'Enables the specified extension.',
|
||||
'CLI_DESCRIPTION_FIND_MIGRATIONS' => 'Finds migrations that are not depended upon.',
|
||||
'CLI_DESCRIPTION_FIX_LEFT_RIGHT_IDS' => 'Repairs the tree structure of the forums and modules.',
|
||||
'CLI_DESCRIPTION_GET_CONFIG' => 'Gets a configuration option’s value',
|
||||
'CLI_DESCRIPTION_INCREMENT_CONFIG' => 'Increments a configuration option’s integer value',
|
||||
'CLI_DESCRIPTION_LIST_EXTENSIONS' => 'Lists all extensions in the database and on the filesystem.',
|
||||
@@ -64,6 +65,7 @@ $lang = array_merge($lang, array(
|
||||
'CLI_DESCRIPTION_RECALCULATE_EMAIL_HASH' => 'Recalculates the user_email_hash column of the users table.',
|
||||
'CLI_DESCRIPTION_SET_ATOMIC_CONFIG' => 'Sets a configuration option’s value only if the old matches the current value',
|
||||
'CLI_DESCRIPTION_SET_CONFIG' => 'Sets a configuration option’s value',
|
||||
'CLI_DESCRIPTION_UPDATE_HASH_BCRYPT' => 'Updates outdated password hashes to be hashed with bcrypt.',
|
||||
|
||||
'CLI_EXTENSION_DISABLE_FAILURE' => 'Could not disable extension %s',
|
||||
'CLI_EXTENSION_DISABLE_SUCCESS' => 'Successfully disabled extension %s',
|
||||
@@ -77,7 +79,9 @@ $lang = array_merge($lang, array(
|
||||
'CLI_EXTENSIONS_DISABLED' => 'Disabled',
|
||||
'CLI_EXTENSIONS_ENABLED' => 'Enabled',
|
||||
|
||||
'CLI_FIXUP_FIX_LEFT_RIGHT_IDS_SUCCESS' => 'Successfully repaired the tree structure of the forums and modules.',
|
||||
'CLI_FIXUP_RECALCULATE_EMAIL_HASH_SUCCESS' => 'Successfully recalculated all email hashes.',
|
||||
'CLI_FIXUP_UPDATE_HASH_BCRYPT_SUCCESS' => 'Successfully updated outdated password hashes to bcrypt.'
|
||||
));
|
||||
|
||||
// Additional help for commands.
|
||||
|
@@ -336,6 +336,7 @@ $lang = array_merge($lang, array(
|
||||
'INTERESTS' => 'Interests',
|
||||
'INVALID_DIGEST_CHALLENGE' => 'Invalid digest challenge.',
|
||||
'INVALID_EMAIL_LOG' => '<strong>%s</strong> possibly an invalid email address?',
|
||||
'INVALID_FEED_ATTACHMENTS' => 'The selected feed tried fetching attachments with invalid constraints.',
|
||||
'INVALID_PLURAL_RULE' => 'The chosen plural rule is invalid. Valid values are integers between 0 and 15.',
|
||||
'IP' => 'IP',
|
||||
'IP_BLACKLISTED' => 'Your IP %1$s has been blocked because it is blacklisted. For details please see <a href="%2$s">%2$s</a>.',
|
||||
|
@@ -2,7 +2,7 @@ Subject: Forum post notification - "{FORUM_NAME}"
|
||||
|
||||
Hello {USERNAME},
|
||||
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new reply to the topic "{TOPIC_TITLE}"<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the last unread reply, no more notifications will be sent until you visit the topic.
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new reply to the topic "{TOPIC_TITLE}"<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the last unread reply, no more notifications will be sent until you visit the topic.
|
||||
|
||||
{U_NEWEST_POST}
|
||||
|
||||
|
@@ -2,7 +2,7 @@ Subject: New topic notification - "{FORUM_NAME}"
|
||||
|
||||
Hello {USERNAME},
|
||||
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
|
||||
|
||||
{U_FORUM}
|
||||
|
||||
|
@@ -2,7 +2,7 @@ Subject: New topic notification - "{FORUM_NAME}"
|
||||
|
||||
Hello {USERNAME},
|
||||
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
|
||||
|
||||
{U_FORUM}
|
||||
|
||||
|
@@ -2,7 +2,7 @@ Subject: Topic reply notification - "{TOPIC_TITLE}"
|
||||
|
||||
Hello {USERNAME},
|
||||
|
||||
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic.
|
||||
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic.
|
||||
|
||||
If you want to view the newest post made since your last visit, click the following link:
|
||||
{U_NEWEST_POST}
|
||||
|
@@ -2,7 +2,7 @@ Subject: Topic reply notification - "{TOPIC_TITLE}"
|
||||
|
||||
Hello {USERNAME},
|
||||
|
||||
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. No more notifications will be sent until you visit the topic.
|
||||
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. No more notifications will be sent until you visit the topic.
|
||||
|
||||
If you want to view the newest post made since your last visit, click the following link:
|
||||
{U_NEWEST_POST}
|
||||
|
@@ -44,7 +44,7 @@ $lang = array_merge($lang, array(
|
||||
'ADMIN_TEST' => 'Check administrator settings',
|
||||
'ADMIN_USERNAME' => 'Administrator username',
|
||||
'ADMIN_USERNAME_EXPLAIN' => 'Please enter a username between 3 and 20 characters in length.',
|
||||
'APP_MAGICK' => 'Imagemagick support [ Attachments ]',
|
||||
'APP_MAGICK' => 'ImageMagick support [ Attachments ]',
|
||||
'AUTHOR_NOTES' => 'Author notes<br />» %s',
|
||||
'AVAILABLE' => 'Available',
|
||||
'AVAILABLE_CONVERTORS' => 'Available convertors',
|
||||
@@ -282,7 +282,7 @@ $lang = array_merge($lang, array(
|
||||
'NOT_UNDERSTAND' => 'Could not understand %s #%d, table %s (“%s”)',
|
||||
'NO_CONVERTORS' => 'No convertors are available for use.',
|
||||
'NO_CONVERT_SPECIFIED' => 'No convertor specified.',
|
||||
'NO_LOCATION' => 'Cannot determine location. If you know Imagemagick is installed, you may specify the location later within your administration control panel',
|
||||
'NO_LOCATION' => 'Cannot determine location. If you know ImageMagick is installed, you may specify the location later within your administration control panel',
|
||||
'NO_TABLES_FOUND' => 'No tables found.',
|
||||
|
||||
'OVERVIEW_BODY' => 'Welcome to phpBB3!<br /><br />phpBB® is the most widely used open source bulletin board solution in the world. phpBB3 is the latest installment in a package line started in 2000. Like its predecessors, phpBB3 is feature-rich, user-friendly, and fully supported by the phpBB Team. phpBB3 greatly improves on what made phpBB2 popular, and adds commonly requested features that were not present in previous versions. We hope it exceeds your expectations.<br /><br />This installation system will guide you through installing phpBB3, updating to the latest version of phpBB3 from past releases, as well as converting to phpBB3 from a different discussion board system (including phpBB2). For more information, we encourage you to read <a href="../docs/INSTALL.html">the installation guide</a>.<br /><br />To read the phpBB3 license or learn about obtaining support and our stance on it, please select the respective options from the side menu. To continue, please select the appropriate tab above.',
|
||||
@@ -301,10 +301,10 @@ $lang = array_merge($lang, array(
|
||||
'PHP_REGISTER_GLOBALS_EXPLAIN' => 'phpBB will still run if this setting is enabled, but if possible, it is recommended that register_globals is disabled on your PHP install for security reasons.',
|
||||
'PHP_SAFE_MODE' => 'Safe mode',
|
||||
'PHP_SETTINGS' => 'PHP version and settings',
|
||||
'PHP_SETTINGS_EXPLAIN' => '<strong>Required</strong> - You must be running at least version 5.3.3 of PHP in order to install phpBB. If <var>safe mode</var> is displayed below your PHP installation is running in that mode. This will impose limitations on remote administration and similar features.',
|
||||
'PHP_SETTINGS_EXPLAIN' => '<strong>Required</strong> - You must be running at least version 5.3.3 of PHP (PHP 7 is not supported) in order to install phpBB. If <var>safe mode</var> is displayed below your PHP installation is running in that mode. This will impose limitations on remote administration and similar features.',
|
||||
'PHP_URL_FOPEN_SUPPORT' => 'PHP setting <var>allow_url_fopen</var> is enabled',
|
||||
'PHP_URL_FOPEN_SUPPORT_EXPLAIN' => '<strong>Optional</strong> - This setting is optional, however certain phpBB functions like off-site avatars will not work properly without it.',
|
||||
'PHP_VERSION_REQD' => 'PHP version >= 5.3.3',
|
||||
'PHP_VERSION_REQD' => 'PHP version: >= 5.3.3, < 7.0.0-dev',
|
||||
'POST_ID' => 'Post ID',
|
||||
'PREFIX_FOUND' => 'A scan of your tables has shown a valid installation using <strong>%s</strong> as table prefix.',
|
||||
'PREPROCESS_STEP' => 'Executing pre-processing functions/queries',
|
||||
@@ -400,6 +400,7 @@ $lang = array_merge($lang, array(
|
||||
'DATABASE_UPDATE_CONTINUE' => 'Continue database update',
|
||||
'DATABASE_UPDATE_INFO_OLD' => 'The database update file within the install directory is outdated. Please make sure you uploaded the correct version of the file.',
|
||||
'DATABASE_UPDATE_NOT_COMPLETED' => 'The database update has not yet completed.',
|
||||
'DATABASE_VERSION' => 'Database version',
|
||||
'DELETE_USER_REMOVE' => 'Delete user and remove posts',
|
||||
'DELETE_USER_RETAIN' => 'Delete user but keep posts',
|
||||
'DESTINATION' => 'Destination file',
|
||||
@@ -439,6 +440,7 @@ $lang = array_merge($lang, array(
|
||||
'FILES_NOT_MODIFIED_EXPLAIN' => 'The following files are not modified and represent the original phpBB files from the version you want to update from.',
|
||||
'FILES_UP_TO_DATE' => 'Already updated files',
|
||||
'FILES_UP_TO_DATE_EXPLAIN' => 'The following files are already up to date and do not need to be updated.',
|
||||
'FILES_VERSION' => 'Files Version',
|
||||
'FTP_SETTINGS' => 'FTP settings',
|
||||
'FTP_UPDATE_METHOD' => 'FTP upload',
|
||||
|
||||
@@ -486,6 +488,7 @@ $lang = array_merge($lang, array(
|
||||
'OLD_UPDATE_FILES' => 'Update files are out of date. The update files found are for updating from phpBB %1$s to phpBB %2$s but the latest version of phpBB is %3$s.',
|
||||
|
||||
'PACKAGE_UPDATES_TO' => 'Current package updates to version',
|
||||
'PACKAGE_VERSION' => 'Package version installed',
|
||||
'PERFORM_DATABASE_UPDATE' => 'Perform database update',
|
||||
'PERFORM_DATABASE_UPDATE_EXPLAIN' => 'Below you will find a button to the database update script. The database update can take a while, so please do not stop the execution if it seems to hang. After the database update has been performed just follow the instructions to continue the update process.',
|
||||
'PREVIOUS_VERSION' => 'Previous version',
|
||||
@@ -530,6 +533,12 @@ $lang = array_merge($lang, array(
|
||||
'UPDATE_DATABASE_SCHEMA' => 'Updating database schema',
|
||||
'UPDATE_FILES' => 'Update files',
|
||||
'UPDATE_FILES_NOTICE' => 'Please make sure you have updated your board files too, this file is only updating your database.',
|
||||
'UPDATE_INCOMPLETE' => 'Your phpBB installation has not been correctly updated.',
|
||||
'UPDATE_INCOMPLETE_MORE' => 'Please read the information below in order to fix this error.',
|
||||
'UPDATE_INCOMPLETE_EXPLAIN' => '<h1>Incomplete update</h1>
|
||||
|
||||
<p>We noticed that the last update of your phpBB installation hasn’t been completed. Visit the <a href="%1$s" title="%1$s">database_update script</a> and run it. If it is missing, please <a href="https://www.phpbb.com/downloads/" title="phpBB downloads">download your package version</a>, upload the "install" folder to your phpBB root directory (where your config.php file is) and <a href="%1$s" title="%1$s">run the database update script</a>.</p>',
|
||||
|
||||
'UPDATE_INSTALLATION' => 'Update phpBB installation',
|
||||
'UPDATE_INSTALLATION_EXPLAIN' => 'With this option, it is possible to update your phpBB installation to the latest version.<br />During the process all of your files will be checked for their integrity. You are able to review all differences and files before the update.<br /><br />The file update itself can be done in two different ways.</p><h2>Manual Update</h2><p>With this update you only download your personal set of changed files to make sure you do not lose your file modifications you may have done. After you downloaded this package you need to manually upload the files to their correct position under your phpBB root directory. Once done, you are able to do the file check stage again to see if you moved the files to their correct location.</p><h2>Automatic Update with FTP</h2><p>This method is similar to the first one but without the need to download the changed files and uploading them on your own. This will be done for you. In order to use this method you need to know your FTP login details since you will be asked for them. Once finished you will be redirected to the file check again to make sure everything got updated correctly.<br /><br />',
|
||||
'UPDATE_INSTRUCTIONS' => '
|
||||
@@ -565,6 +574,7 @@ $lang = array_merge($lang, array(
|
||||
'UPDATING_DATA' => 'Updating data',
|
||||
'UPDATING_TO_LATEST_STABLE' => 'Updating database to latest stable release',
|
||||
'UPDATED_VERSION' => 'Updated version',
|
||||
'UPGRADE_INSTRUCTIONS' => 'A new feature release <strong>%1$s</strong> is available. Please read <a href="%2$s" title="%2$s"><strong>the release announcement</strong></a> to learn about what it has to offer, and how to upgrade.',
|
||||
'UPLOAD_METHOD' => 'Upload method',
|
||||
|
||||
'UPDATE_DB_SUCCESS' => 'Database update was successful.',
|
||||
|
@@ -50,6 +50,7 @@ $lang = array_merge($lang, array(
|
||||
'MIGRATION_NOT_FULFILLABLE' => 'The migration "%1$s" is not fulfillable, missing migration "%2$s".',
|
||||
'MIGRATION_NOT_VALID' => '%s is not a valid migration.',
|
||||
'MIGRATION_SCHEMA_DONE' => 'Installed Schema: %1$s; Time: %2$.2f seconds',
|
||||
'MIGRATION_SCHEMA_IN_PROGRESS' => 'Installing Schema: %1$s; Time: %2$.2f seconds',
|
||||
'MIGRATION_SCHEMA_RUNNING' => 'Installing Schema: %s.',
|
||||
|
||||
'MIGRATION_INVALID_DATA_MISSING_CONDITION' => 'A migration is invalid. An if statement helper is missing a condition.',
|
||||
@@ -60,9 +61,12 @@ $lang = array_merge($lang, array(
|
||||
'MIGRATION_INVALID_DATA_UNDEFINED_METHOD' => 'A migration is invalid. An undefined migration tool method was encountered.',
|
||||
|
||||
'MODULE_ERROR' => 'An error occurred while creating a module: %s',
|
||||
'MODULE_EXISTS' => 'A module already exists: %s',
|
||||
'MODULE_EXIST_MULTIPLE' => 'Several modules with the given parent module langname already exist: %s. Try using before/after keys to clarify the module placement.',
|
||||
'MODULE_INFO_FILE_NOT_EXIST' => 'A required module info file is missing: %2$s',
|
||||
'MODULE_NOT_EXIST' => 'A required module does not exist: %s',
|
||||
|
||||
'PARENT_MODULE_FIND_ERROR' => 'Unable to determine the parent module identifier: %s',
|
||||
'PERMISSION_NOT_EXIST' => 'The permission setting "%s" unexpectedly does not exist.',
|
||||
|
||||
'ROLE_NOT_EXIST' => 'The permission role "%s" unexpectedly does not exist.',
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user