mirror of
https://github.com/phpbb/phpbb.git
synced 2025-09-07 06:40:46 +02:00
Compare commits
1080 Commits
release-3.
...
release-3.
Author | SHA1 | Date | |
---|---|---|---|
|
21e55ea6d2 | ||
|
446ea9928d | ||
|
426994a7f8 | ||
|
c6aefcf555 | ||
|
cba28c39ad | ||
|
d18bded3ac | ||
|
38afdd792f | ||
|
50818a342b | ||
|
ed0d7e9ea0 | ||
|
5ab378f1ee | ||
|
cd9711b7c9 | ||
|
42b9c3c479 | ||
|
2ce83fce1e | ||
|
d717203af1 | ||
|
2845b153d8 | ||
|
ba9d303d52 | ||
|
aa3d2ef7a9 | ||
|
b08928ee1c | ||
|
c30d4025d2 | ||
|
4b0adfcff5 | ||
|
63535b196d | ||
|
a9b5e77e68 | ||
|
a6e69f377b | ||
|
91eccc708b | ||
|
acc7cb5e23 | ||
|
0a73d64b97 | ||
|
ea8f584de9 | ||
|
fc89fa2fec | ||
|
ddea90c802 | ||
|
a3de463b30 | ||
|
404f288113 | ||
|
8a6f3a5800 | ||
|
6ab4c9a702 | ||
|
18164e63e2 | ||
|
469d9ee171 | ||
|
c5de4dd51d | ||
|
148df3607b | ||
|
865bf0db3d | ||
|
56df3fd8ca | ||
|
9e789c4e9f | ||
|
2aff3b19df | ||
|
9a486539c3 | ||
|
9d57c9635c | ||
|
598ab05807 | ||
|
e0aef4b320 | ||
|
678cccfb04 | ||
|
93e4b4450d | ||
|
ee3d4199bb | ||
|
97f633bced | ||
|
07eadac2f6 | ||
|
036a4188f3 | ||
|
f1dd35387c | ||
|
6f14c8375e | ||
|
72b06c711a | ||
|
a1a5a636b1 | ||
|
67c10ca622 | ||
|
da8e35ac77 | ||
|
16aeaed7bd | ||
|
f4b7cbd976 | ||
|
a7edbf9258 | ||
|
2667c3a527 | ||
|
dc4687501a | ||
|
94e5bfaada | ||
|
335d48775f | ||
|
599f83395f | ||
|
406c48c655 | ||
|
900525a0e4 | ||
|
20d59c49e2 | ||
|
ece01f0a1f | ||
|
13c087d4f1 | ||
|
9210d735a5 | ||
|
300867ab1a | ||
|
7c84a12f39 | ||
|
9e845d4641 | ||
|
950a3a7d95 | ||
|
44de24f1b8 | ||
|
5ef4987ffe | ||
|
fba3a9d600 | ||
|
d4531c9cea | ||
|
1a292750f2 | ||
|
440986dc3f | ||
|
89393e11e8 | ||
|
9c9f09d640 | ||
|
5ed4dbb5b7 | ||
|
045e04fb6f | ||
|
d4645575fd | ||
|
84ec1f5423 | ||
|
ea8a4abe66 | ||
|
4ad1d9aa65 | ||
|
88b5180aa1 | ||
|
434d14e1d5 | ||
|
1abc3d91d0 | ||
|
43053c541a | ||
|
c4fbed251d | ||
|
2c240f8a7b | ||
|
7c9a1cbca9 | ||
|
eafd0ae29f | ||
|
7a2e3b4354 | ||
|
960b20e45b | ||
|
8e575487ff | ||
|
e0c572d1d8 | ||
|
fe4bfd02a3 | ||
|
7ba81a293f | ||
|
4c432fecc7 | ||
|
c29cca1a75 | ||
|
a105a6d7a7 | ||
|
4828cb21cf | ||
|
6cbb2d6136 | ||
|
116888f567 | ||
|
b9afc6f1a5 | ||
|
47241878d0 | ||
|
f365c99f14 | ||
|
b362fb44d2 | ||
|
5f4daba160 | ||
|
e47e36266d | ||
|
1af6dc22e2 | ||
|
99e486dc82 | ||
|
1516ae7e7e | ||
|
21f839494d | ||
|
516581c41e | ||
|
50828e6d39 | ||
|
e19ed7d8b9 | ||
|
de150cb4ad | ||
|
a7af0134c0 | ||
|
92c55ab111 | ||
|
48f764437f | ||
|
e4ccc5e6ea | ||
|
bcc98ae3e7 | ||
|
e633ace072 | ||
|
e0b9cdf708 | ||
|
11cd9f901e | ||
|
6b5780b753 | ||
|
8f733cc658 | ||
|
5ebebbd719 | ||
|
ea7ece5d25 | ||
|
687b04bcfc | ||
|
364828de24 | ||
|
07c62dd64f | ||
|
8759147674 | ||
|
9236f12577 | ||
|
80d164b121 | ||
|
fbebc2874f | ||
|
30801e1f0a | ||
|
949a443bfe | ||
|
33bce3fac6 | ||
|
5e8054f045 | ||
|
2dcf703493 | ||
|
d39ed5afc1 | ||
|
a7e3a1b376 | ||
|
228c1075b7 | ||
|
6b6a07560e | ||
|
ba665412ea | ||
|
766be31f95 | ||
|
3301b01f4c | ||
|
6b3758edd0 | ||
|
057bbfa240 | ||
|
deaa263e0a | ||
|
55f7281f61 | ||
|
c6ba894acd | ||
|
6a77ee1f30 | ||
|
ad8386a64a | ||
|
b288bd4414 | ||
|
11678678b8 | ||
|
c2bc82ebfd | ||
|
3487b70cc0 | ||
|
a3d1593804 | ||
|
1cd6bb88a6 | ||
|
d925c8d0da | ||
|
6abe225f6c | ||
|
6206d4aa4e | ||
|
24bfaa1327 | ||
|
c0e0c13cf1 | ||
|
81140ec887 | ||
|
323bfbc78f | ||
|
cb62b37bce | ||
|
0eae9eb75d | ||
|
d0e45e17dd | ||
|
6af5262fcc | ||
|
09a3877ae4 | ||
|
b2be82cd57 | ||
|
b7b81f6431 | ||
|
33a0859f4a | ||
|
6d5da402ec | ||
|
3f657bc63e | ||
|
b4d23fa551 | ||
|
45c91be970 | ||
|
3d625ab0cf | ||
|
e84fb0c6ca | ||
|
0dd1bbf084 | ||
|
3d6620f0db | ||
|
a997768627 | ||
|
65307f1382 | ||
|
2d0fb52eaa | ||
|
9be57ec076 | ||
|
da98866c24 | ||
|
e77c8ee4ef | ||
|
135139aca9 | ||
|
f25389f94a | ||
|
a3e5efc634 | ||
|
5dcf028cf0 | ||
|
96b4066368 | ||
|
b75f67231f | ||
|
cc68ea5f6f | ||
|
49149c0d41 | ||
|
38022a6999 | ||
|
8a13fff2aa | ||
|
f77111fe0e | ||
|
3faae5c98c | ||
|
401e9466bf | ||
|
e84f5db4f5 | ||
|
2b356e766f | ||
|
8191755cca | ||
|
4a93560870 | ||
|
901955e452 | ||
|
cd1da92d85 | ||
|
4fc180ade5 | ||
|
e49b4543de | ||
|
7898dd9459 | ||
|
8aea2b382d | ||
|
373e26ca74 | ||
|
b49ce5eb3a | ||
|
0a5988ec1f | ||
|
30e0b694e6 | ||
|
37a334c187 | ||
|
2c3e831128 | ||
|
1ee2543309 | ||
|
555e89755e | ||
|
225aba976e | ||
|
f2fd0031f4 | ||
|
92e1e86e5c | ||
|
be71701af7 | ||
|
8e3c2ebf8e | ||
|
38dbfc17a7 | ||
|
1715619fda | ||
|
1ea1247cd5 | ||
|
56ac97e819 | ||
|
14ab0ba594 | ||
|
63f11a8024 | ||
|
c6de880cdb | ||
|
5c23ed57fe | ||
|
06edf15ac3 | ||
|
f2bc62ba75 | ||
|
204cdb2164 | ||
|
ac8e8a156a | ||
|
cbe4a3c3b6 | ||
|
deefe5c0e4 | ||
|
1fae7720e4 | ||
|
6900e8dae0 | ||
|
25be16748d | ||
|
a547ba3f9d | ||
|
3f75534258 | ||
|
b7b0b0ccc3 | ||
|
84cfacf1f2 | ||
|
45e014d35d | ||
|
d680aac7c5 | ||
|
170333a6fc | ||
|
b347986923 | ||
|
d1415676c5 | ||
|
f9325bfdeb | ||
|
ab3b0df244 | ||
|
1c9d36615a | ||
|
3fb536d7b7 | ||
|
c31123e8a4 | ||
|
f2f97dd5e0 | ||
|
b5b1e88915 | ||
|
a42514105d | ||
|
585f0bc827 | ||
|
4e3c5aefa8 | ||
|
176ac6e691 | ||
|
5ea75ddf09 | ||
|
b3d16f21a8 | ||
|
d26da01fa0 | ||
|
051c2ec251 | ||
|
841f1e4922 | ||
|
eefcdfa54a | ||
|
828d3b6b68 | ||
|
92e0613324 | ||
|
6d4a75b3cb | ||
|
a33cc92fc8 | ||
|
802fbbb444 | ||
|
453f98f6d3 | ||
|
14071e6085 | ||
|
82a630cd64 | ||
|
0ce94fde77 | ||
|
7d8bbcd596 | ||
|
00b45fa4dc | ||
|
fb371d6bbe | ||
|
d5617f046c | ||
|
acabe6f5ca | ||
|
5b2d272137 | ||
|
8586ce8906 | ||
|
4615698807 | ||
|
fe219e4bbe | ||
|
1b39d6d65e | ||
|
c0a39537e3 | ||
|
538b09ba61 | ||
|
880786d686 | ||
|
373c9a3f4e | ||
|
65118218c7 | ||
|
ab530a999e | ||
|
f8e184c54e | ||
|
639110766c | ||
|
678ec7b545 | ||
|
f29bebc7ce | ||
|
d5d412e827 | ||
|
6bf64d5620 | ||
|
a9037a68c1 | ||
|
e8b3e8498d | ||
|
c69b1c2ef2 | ||
|
c4f8c64a23 | ||
|
ae3a22bd0c | ||
|
42b211a4a1 | ||
|
8ec55b062d | ||
|
5aec7600a6 | ||
|
293b65e3ef | ||
|
996f1abee3 | ||
|
cf3edb2c6e | ||
|
a0b141b673 | ||
|
5154c6960d | ||
|
36b7d7560e | ||
|
ba5d84ba1d | ||
|
5a146df07f | ||
|
8421aa0b0e | ||
|
305b2b8f48 | ||
|
80283646e2 | ||
|
229d1092f8 | ||
|
4b9c163969 | ||
|
9860cf6b16 | ||
|
ea1c8ee85a | ||
|
d2f09a9e65 | ||
|
dee1b38ebc | ||
|
9a0992f6a0 | ||
|
a83c766ebd | ||
|
317964174e | ||
|
e9a3f09074 | ||
|
227f7f46df | ||
|
4c50a35b62 | ||
|
90235754b3 | ||
|
0b0b5e15c3 | ||
|
4001410c8c | ||
|
8b4e661904 | ||
|
41a07eedeb | ||
|
24befac7b4 | ||
|
c8dd12e5f4 | ||
|
cbe91e5b50 | ||
|
51138d3f3a | ||
|
6951356a87 | ||
|
b36050983d | ||
|
1fc103e3f3 | ||
|
46a752ee62 | ||
|
370e3c31e8 | ||
|
316bfc20c0 | ||
|
357feeac2e | ||
|
e775e7fc91 | ||
|
c9cc5a00dc | ||
|
f6315dafb7 | ||
|
cd890132bb | ||
|
bc797c7da2 | ||
|
02a1777fcb | ||
|
c0b3151f0d | ||
|
989c4c3e64 | ||
|
5056f16235 | ||
|
c701de695f | ||
|
68710bb55a | ||
|
86f0c0a6d5 | ||
|
68ffb106fb | ||
|
e53f4e5eac | ||
|
00d8f944da | ||
|
dabe88bb3a | ||
|
917a2fa9a6 | ||
|
f0c780a453 | ||
|
a288c4b66b | ||
|
649e009f7b | ||
|
175b6deb6d | ||
|
d739745ea4 | ||
|
9eb9fa2b9d | ||
|
2469225a72 | ||
|
a50907250e | ||
|
5c614ff624 | ||
|
71bcc58fee | ||
|
5a88bd1bf1 | ||
|
05d7decdd3 | ||
|
8dd2a151cc | ||
|
abcc59fca6 | ||
|
f4df152b4b | ||
|
73e7fa8e8e | ||
|
7611e11608 | ||
|
845bf6a638 | ||
|
789c04b900 | ||
|
a4e4841082 | ||
|
a686910958 | ||
|
1441b70ae8 | ||
|
e2c67a8e42 | ||
|
2bc2cb1f6f | ||
|
3c542b852a | ||
|
b5f94a14f1 | ||
|
a8deb7f87b | ||
|
ff993ba9d3 | ||
|
fb5c4440e5 | ||
|
1285bdff00 | ||
|
771bb957ab | ||
|
ebdd96592a | ||
|
d33accb687 | ||
|
cafc7feca1 | ||
|
7005002069 | ||
|
18bcb9f804 | ||
|
dbb54b217b | ||
|
dc649ad3cd | ||
|
0f7cdfe9f4 | ||
|
a8e74f5292 | ||
|
0793f8e2e6 | ||
|
120accb9d4 | ||
|
f7508c3f04 | ||
|
dd6983b14b | ||
|
af064cdaad | ||
|
f5de11438c | ||
|
fe87d441ee | ||
|
16966f52d3 | ||
|
94ebc57078 | ||
|
819206a336 | ||
|
1e50116c54 | ||
|
03f819862f | ||
|
1a411c5658 | ||
|
6872104aa9 | ||
|
efe122b032 | ||
|
58951ef105 | ||
|
abca64b1df | ||
|
0f96b1aad3 | ||
|
5120f36a25 | ||
|
597dea1e04 | ||
|
89c9c9d4b0 | ||
|
58a7050fac | ||
|
29c4da6162 | ||
|
fb261e19ff | ||
|
8ea52b5619 | ||
|
38d2868ba8 | ||
|
bdc3ddf2bc | ||
|
8897efe087 | ||
|
2d3882c412 | ||
|
f3c043a569 | ||
|
dc521692f3 | ||
|
de2fe1a308 | ||
|
40db60e45f | ||
|
4133fae99e | ||
|
9f549e8249 | ||
|
1a7e2211c3 | ||
|
025a95ea90 | ||
|
af2887f3a7 | ||
|
e64c5117b9 | ||
|
e845e2ed89 | ||
|
cf64007ab6 | ||
|
6f7e39996c | ||
|
720ef233b1 | ||
|
2fc43e6ed7 | ||
|
05053dacd3 | ||
|
69225bd0a6 | ||
|
c2c105df9f | ||
|
2e947334e5 | ||
|
d0338531cb | ||
|
ae14ac7ba9 | ||
|
ad2d560f3f | ||
|
314462d835 | ||
|
b2a252d274 | ||
|
65253a3023 | ||
|
1dff6d1bf9 | ||
|
a7404409a8 | ||
|
41a95d2c64 | ||
|
af5d8b502e | ||
|
8851f9589a | ||
|
efd6f1df63 | ||
|
7cbd440e7a | ||
|
4e3a42f59f | ||
|
09c8c58a5c | ||
|
b7ec639945 | ||
|
c15b98999e | ||
|
17a7c4821a | ||
|
14a42a97a8 | ||
|
27594130b0 | ||
|
af7ab2d3ac | ||
|
dc61fd1091 | ||
|
4ab178f3ef | ||
|
8b156c3d83 | ||
|
170967c48a | ||
|
ac9c4d7d59 | ||
|
7d0cc15b92 | ||
|
b0812c43fa | ||
|
c699b88bc5 | ||
|
e3b0e1a8a2 | ||
|
f7f21fa692 | ||
|
3ebabc8da2 | ||
|
7c4318c033 | ||
|
6e6cc28b76 | ||
|
0209431e4f | ||
|
923137cf31 | ||
|
a16b9d17da | ||
|
100acddf55 | ||
|
ed74c9c487 | ||
|
60ea1c10ef | ||
|
54700f5ba2 | ||
|
520ffdf368 | ||
|
c054757f3c | ||
|
63c64694bc | ||
|
935bc33268 | ||
|
de6d741d96 | ||
|
b2183c9b70 | ||
|
07e7c475d5 | ||
|
53e9bab237 | ||
|
399662d2af | ||
|
02df59f1fe | ||
|
c08b7385c2 | ||
|
87a80e70da | ||
|
875adc4247 | ||
|
a7babc211c | ||
|
fea118cf0d | ||
|
0dbd569385 | ||
|
fd6ee50e06 | ||
|
88b100d818 | ||
|
5f5d395c62 | ||
|
88bd7292f1 | ||
|
c84268d2f9 | ||
|
b283df8241 | ||
|
bd44088757 | ||
|
bb09cd9c8e | ||
|
c630480ca1 | ||
|
f0544c884f | ||
|
bef3f9c7e7 | ||
|
0348950ff1 | ||
|
d376348acf | ||
|
d434672dde | ||
|
68641aab93 | ||
|
a7893ab299 | ||
|
281afb8bd6 | ||
|
95d02d74ac | ||
|
8428b53087 | ||
|
dbeace22c8 | ||
|
1f89fc9cb6 | ||
|
27bef015d6 | ||
|
f7a6169184 | ||
|
888aa47b0e | ||
|
ce7cffcf9e | ||
|
3bd19077dc | ||
|
4dd1bbc587 | ||
|
7dfe26dd78 | ||
|
7cffebbd49 | ||
|
0ba2bfffe2 | ||
|
1520130b27 | ||
|
94c9d70298 | ||
|
83a5326077 | ||
|
570502e4a3 | ||
|
012c281743 | ||
|
c83ca457a0 | ||
|
4db4731fff | ||
|
a3d87a1443 | ||
|
5407f9b00d | ||
|
73cd044f5c | ||
|
92761e1f2b | ||
|
7eb16cbbd5 | ||
|
446607ef53 | ||
|
6da03913bf | ||
|
ac81611b90 | ||
|
97020399fa | ||
|
0ae4b20160 | ||
|
2ba1cef5b0 | ||
|
83a4d9abb5 | ||
|
72eef2af5c | ||
|
d0a1c7bf0a | ||
|
cb007acc76 | ||
|
647d395908 | ||
|
49a53755e6 | ||
|
ece4a2edb7 | ||
|
9f073e4c75 | ||
|
60acd63c70 | ||
|
9279c8f5ee | ||
|
296fadfca4 | ||
|
27d9e3133b | ||
|
3c64cccecc | ||
|
2f5692d4bb | ||
|
7b98e75ec3 | ||
|
3da72e9864 | ||
|
19237f5613 | ||
|
10172887fd | ||
|
da8d610011 | ||
|
55aaa596d7 | ||
|
6ed63088fe | ||
|
29bee5b01a | ||
|
3dfcb212dc | ||
|
1e87e0dab8 | ||
|
be44f32008 | ||
|
3036db481a | ||
|
a3517232f9 | ||
|
a9c091fad4 | ||
|
9d099eebab | ||
|
a65b432165 | ||
|
3bbb882fe8 | ||
|
eeef82ecc5 | ||
|
d157c3b3f4 | ||
|
aa2f7bcc2c | ||
|
74074994ba | ||
|
7a412f846a | ||
|
4a87bc2aa9 | ||
|
0f70c930df | ||
|
ae07e80a65 | ||
|
3a70bc2c75 | ||
|
d88411e10d | ||
|
797ee16eaf | ||
|
d9a32ce614 | ||
|
8f5182bf84 | ||
|
35e18a49a9 | ||
|
d883535b10 | ||
|
e68c1fb9e4 | ||
|
dd6955f833 | ||
|
088dbc0b54 | ||
|
cde5411e8a | ||
|
a7da376004 | ||
|
36a568fd56 | ||
|
338d29072f | ||
|
5c8c7b1352 | ||
|
7988045bda | ||
|
5d0aa8e516 | ||
|
2c12f31cdf | ||
|
81d5327e44 | ||
|
3ecc43d48c | ||
|
e5364088c3 | ||
|
625333ea2e | ||
|
6203ef0c61 | ||
|
c9f9e66328 | ||
|
2b89186294 | ||
|
7fba5a0f38 | ||
|
3baeb4276d | ||
|
d30dc11f3e | ||
|
49afc1f2dc | ||
|
30475856c4 | ||
|
fce385e5bc | ||
|
9c2930178f | ||
|
a50d1a3576 | ||
|
2a76b7e869 | ||
|
35b18676cd | ||
|
ac8ebfabc7 | ||
|
08e319198c | ||
|
80180a6a20 | ||
|
f1414386d7 | ||
|
80fafdeb1a | ||
|
3e80268249 | ||
|
155c93d71a | ||
|
08763ac99e | ||
|
5bc2219bbe | ||
|
bbd3204a9c | ||
|
fd2ab22556 | ||
|
d26606f986 | ||
|
4ebcb5319e | ||
|
118c5d90da | ||
|
19a47dfbbc | ||
|
2011085c29 | ||
|
d8ddda5121 | ||
|
791c4136f7 | ||
|
d22e7ce9df | ||
|
f616c4e7a0 | ||
|
7eaedcc8de | ||
|
b10757ef14 | ||
|
f6f300d3f9 | ||
|
b789758f1b | ||
|
9ab5ad2986 | ||
|
643a86504a | ||
|
0261a9acff | ||
|
037b95eccc | ||
|
de4dff8bb0 | ||
|
9240ddbfa7 | ||
|
515c27270f | ||
|
6036b948ff | ||
|
275dabbc4f | ||
|
9ead56acb3 | ||
|
c494abc8c7 | ||
|
701bf571df | ||
|
42dd60edad | ||
|
13f30e8d9d | ||
|
efa96e1817 | ||
|
8cb9004ab3 | ||
|
af3a730d91 | ||
|
440e699bc5 | ||
|
bad91d8e74 | ||
|
5d5049710c | ||
|
09d15db1fa | ||
|
819accedc8 | ||
|
b96c050695 | ||
|
8bfe1b2f54 | ||
|
9fa7ab62ad | ||
|
a97ebe78bf | ||
|
3503d7f47b | ||
|
d0b9864563 | ||
|
1c7b568771 | ||
|
ea1e2ed362 | ||
|
896b43aa5b | ||
|
efbf14f029 | ||
|
ee875c0a43 | ||
|
7ec6254078 | ||
|
70be7e109f | ||
|
86fa185a1b | ||
|
95e1d4e9db | ||
|
f71a9d369c | ||
|
29b36b214a | ||
|
92d17cbff3 | ||
|
f81e8e9901 | ||
|
725db1ba29 | ||
|
2592fbf8e9 | ||
|
44b509b2b2 | ||
|
07fb16edb5 | ||
|
3a60414592 | ||
|
8861e26034 | ||
|
1960629240 | ||
|
b0e273b95f | ||
|
e5afe39987 | ||
|
e6791e376d | ||
|
b5b65c214d | ||
|
1fcb269616 | ||
|
74e9245df3 | ||
|
1019226dfa | ||
|
041b7be77e | ||
|
4b3d807293 | ||
|
8393b8e755 | ||
|
12bf9b42fa | ||
|
cf556f92c9 | ||
|
23ea588880 | ||
|
164054f067 | ||
|
cf303c3478 | ||
|
faf232219e | ||
|
59177a86c4 | ||
|
8f7e85604b | ||
|
239e6016a3 | ||
|
643970dce4 | ||
|
226743d10b | ||
|
0488d70062 | ||
|
12dbcc7f1e | ||
|
09d49fb7b2 | ||
|
afbaa6979b | ||
|
e52d23848a | ||
|
1496a4198a | ||
|
711d09633a | ||
|
3cdcd44c4b | ||
|
ceacb63abf | ||
|
9bb2785da0 | ||
|
0a596c4b8c | ||
|
5cbe919256 | ||
|
d578eff712 | ||
|
8d15f1b02e | ||
|
c0718fae96 | ||
|
a960bd6790 | ||
|
9d542aec1e | ||
|
5ccbe06911 | ||
|
c34ee343ba | ||
|
58842b5ca8 | ||
|
8cb0e30afc | ||
|
2dd71f6520 | ||
|
665f38d42f | ||
|
a9cf558af7 | ||
|
8d45901657 | ||
|
3a67604900 | ||
|
1a8db76a20 | ||
|
b82c77b38f | ||
|
8cf0b79a47 | ||
|
a21b367b21 | ||
|
cdf7ff1797 | ||
|
6293bbf099 | ||
|
2aa994b5ad | ||
|
de70b17b1d | ||
|
29a6aec9ad | ||
|
4788705a9a | ||
|
31fbc40a09 | ||
|
bc0453c93a | ||
|
edf60bcd55 | ||
|
6e77ca7c99 | ||
|
57547c7e20 | ||
|
90fc8fe59f | ||
|
00c54f8a7c | ||
|
aceca2566b | ||
|
45b910f9b4 | ||
|
1ce8a1d7ee | ||
|
bdf21e45ca | ||
|
09621342a5 | ||
|
7a6d3ec61b | ||
|
249d8ede12 | ||
|
7a4b4c7599 | ||
|
4b6b41a1e5 | ||
|
8a2063090c | ||
|
f1f2ab92b1 | ||
|
f394fd250e | ||
|
534d966957 | ||
|
421fc8d94d | ||
|
ef297ec63e | ||
|
ef8160e8a2 | ||
|
41ef41ac63 | ||
|
156ae40d6f | ||
|
2a48284fc9 | ||
|
8442b19e59 | ||
|
9bce716081 | ||
|
4e630ef160 | ||
|
3ec941937a | ||
|
a14d00b8e9 | ||
|
03a35581c4 | ||
|
1808a61fe3 | ||
|
ea5ae09c7d | ||
|
04bb44ce33 | ||
|
293f66d4ed | ||
|
328d4f1820 | ||
|
2b2286a46c | ||
|
de1e343c5b | ||
|
03e382f99c | ||
|
be9eb57785 | ||
|
30093d6e86 | ||
|
018419b36c | ||
|
444fa29beb | ||
|
21639d5d54 | ||
|
dc63db1860 | ||
|
efdd1e623e | ||
|
6536a36208 | ||
|
f2967b6669 | ||
|
0ceb77fb99 | ||
|
a0da2408e7 | ||
|
b803fc4351 | ||
|
786fcbf212 | ||
|
57209a1e68 | ||
|
14e727b834 | ||
|
0df3f1c5d0 | ||
|
a84b97f58e | ||
|
c5481371b9 | ||
|
b81a5afc25 | ||
|
084e1ae560 | ||
|
51bc9540cf | ||
|
17e050e109 | ||
|
42101fe8d4 | ||
|
b1b530f92c | ||
|
3477b5e5a8 | ||
|
b8b342be2d | ||
|
313cf7297c | ||
|
9391d423c0 | ||
|
dc4d0677b9 | ||
|
10d4f8c35e | ||
|
ccf83dd69b | ||
|
fff9f6611e | ||
|
2516b1e8f1 | ||
|
a820ff1ebc | ||
|
1789e0948b | ||
|
b9324577ac | ||
|
0397b46217 | ||
|
9c8aab4d32 | ||
|
ad073d22b9 | ||
|
dd53d0576d | ||
|
9040f18d7c | ||
|
dbc7a69ad2 | ||
|
2203bc204e | ||
|
e8830f605f | ||
|
a618e22fca | ||
|
2768db44f5 | ||
|
9c85c6c318 | ||
|
5bcdfe94dd | ||
|
57eb50812f | ||
|
1337f86123 | ||
|
841d11c6cd | ||
|
992b58d468 | ||
|
0ed66ad0e8 | ||
|
6f809416ba | ||
|
115ee7f3b8 | ||
|
c7f65fba62 | ||
|
d1980f6ad6 | ||
|
5a9dd1994f | ||
|
99a271f34b | ||
|
e5205ba2f8 | ||
|
4325bbf4c6 | ||
|
9120c7691e | ||
|
4dafcc2525 | ||
|
c2169f6899 | ||
|
2005c339ff | ||
|
70d88965c7 | ||
|
97d4f168f5 | ||
|
dad37a4329 | ||
|
c551b46115 | ||
|
81eeafbb8d | ||
|
95e011ccbe | ||
|
5efdbfa5e4 | ||
|
71afba0ded | ||
|
9915ed5255 | ||
|
ba6943a6a0 | ||
|
3b7a6a3efa | ||
|
ff8d523768 | ||
|
da395edbca | ||
|
321d0d9b56 | ||
|
b652e1a1bb | ||
|
24f1896b3c | ||
|
a79b3490c2 | ||
|
668c61686b | ||
|
aee79c6cdb | ||
|
89a6cb2886 | ||
|
fbe8086697 | ||
|
f563647e4b | ||
|
bd1fb91dd2 | ||
|
0ec8e9dbff | ||
|
cd61de4bfd | ||
|
ee6783109a | ||
|
025de9ee19 | ||
|
bb7e86c2b1 | ||
|
d380a1a36f | ||
|
c11607bdd1 | ||
|
01d90e59a8 | ||
|
89a0cbc57e | ||
|
785c75254e | ||
|
f3af5945e3 | ||
|
6df721b215 | ||
|
f9953fc339 | ||
|
97cf433dea | ||
|
efe25a0b49 | ||
|
d67fae0f09 | ||
|
b74530259f | ||
|
470b79c9e3 | ||
|
2f95a67765 | ||
|
f6cf8782c8 | ||
|
17dc8c6c5c | ||
|
d3091da5ea | ||
|
45f39c6d1f | ||
|
b2d589634a | ||
|
d3d8793c1f | ||
|
8910ec98d7 | ||
|
7a061cfc6e | ||
|
6548a3094f | ||
|
459e8dc095 | ||
|
8f3fba8858 | ||
|
20d3d279ce | ||
|
825aef72e8 | ||
|
8cb95b3b84 | ||
|
8e1e48a7b6 | ||
|
340a8f19d6 | ||
|
cd5c01ac2d | ||
|
ef154b78a1 | ||
|
afcf9cbc86 | ||
|
c3265c9138 | ||
|
11c5a66213 | ||
|
17f5c6bf71 | ||
|
4b2690f792 | ||
|
e047b286d8 | ||
|
ed6bd50ab8 | ||
|
9c2d73c3f9 | ||
|
345e8e084f | ||
|
a962e78854 | ||
|
35d5d527db | ||
|
f894da0d25 | ||
|
62288b3c05 | ||
|
3feeb382c5 | ||
|
f832f5a4ee | ||
|
c0b3239bf3 | ||
|
508b06063f | ||
|
225892f506 | ||
|
326ff46ef7 | ||
|
4aef6ea979 | ||
|
d2a3496149 | ||
|
879c92e8a2 | ||
|
2ae6b8a5ed | ||
|
2cf586a372 | ||
|
99164cd20b | ||
|
1628a28e0c | ||
|
aa21bc2a73 | ||
|
cb7bb31129 | ||
|
c9733ad719 | ||
|
d7aa3aab5e | ||
|
95a74c7472 | ||
|
23363efaaa | ||
|
3e7a0a3746 | ||
|
24cf7f1d29 | ||
|
2345be38b6 | ||
|
fd55d64996 | ||
|
5e52734c24 | ||
|
0fc37fb397 | ||
|
17991823ea | ||
|
3f91405acb | ||
|
e14c3f3b77 | ||
|
d5dc70cbe3 | ||
|
5cc1eb27c7 | ||
|
a45f03a5af | ||
|
b0fd3b2bf0 | ||
|
10453b6752 | ||
|
99c102344e | ||
|
16ae99eec8 | ||
|
38c2d4da35 | ||
|
ccd2ca55d4 | ||
|
fa003bb5fd | ||
|
b6999237f4 | ||
|
d9fef488af | ||
|
519db8e3b2 | ||
|
02f7baa0a5 | ||
|
b8ddd32922 | ||
|
7779dae2cc | ||
|
fa2edf5187 | ||
|
37fa5e56f3 | ||
|
82fff947c6 | ||
|
51f8f642de | ||
|
ba576f823b | ||
|
74c4b92760 | ||
|
6bfca76f1c | ||
|
8f690d3475 | ||
|
56c3a66c28 | ||
|
f4bdfda69d | ||
|
1d9fb6b4ec | ||
|
0cfa843677 | ||
|
2bf4e8d3d0 | ||
|
730d2d5d19 | ||
|
80149d0c87 | ||
|
cd4958f72c | ||
|
2c7495e1c7 | ||
|
57ba746f51 | ||
|
dfb7cc625a | ||
|
8af9a0054c | ||
|
e3d81812fa | ||
|
1a09f9005c | ||
|
7ae12df3d2 | ||
|
48d767a36e | ||
|
1842323ca9 | ||
|
1ce0c76e14 | ||
|
bf6d501ab1 | ||
|
138f123bd8 | ||
|
69cbb4ac1d | ||
|
9b9f30bbb9 | ||
|
6f81a2f5b8 | ||
|
74bc2d130d | ||
|
5b9c835127 | ||
|
0ad81a4cdc | ||
|
8e59699424 | ||
|
88cad5523e | ||
|
cafe74a88d | ||
|
7f8968595b | ||
|
29723c97c6 | ||
|
74ae7d0339 | ||
|
050fb83dfe | ||
|
e596d2ca7e | ||
|
f351914137 | ||
|
4cf059e38f | ||
|
8f1f42cc6c | ||
|
895501743d | ||
|
593ac9ed43 | ||
|
cb4e72298b | ||
|
f88e89900f | ||
|
fc47fa06a3 | ||
|
799be4469a | ||
|
ede3963951 | ||
|
b89320ad39 | ||
|
77e00d14a1 | ||
|
92cdf08d48 | ||
|
6a3ee0996e | ||
|
26d01d4408 | ||
|
0cb83f99ab | ||
|
7520b27639 | ||
|
007457f182 | ||
|
f856cc2ef6 | ||
|
3ce5b1d386 | ||
|
372698218a | ||
|
e08e22ca12 | ||
|
58e35759d9 | ||
|
b531e02871 | ||
|
a29a9266e3 | ||
|
39c62cd175 | ||
|
6f41f96444 | ||
|
3eda9cfc07 | ||
|
d13ce7f560 | ||
|
74bca1d97b | ||
|
cd60073a52 | ||
|
4cd88199c9 | ||
|
a72ea2bc98 | ||
|
6f40960071 | ||
|
43818289fe | ||
|
0d3697e40c | ||
|
c67633577f | ||
|
aef3652d7a | ||
|
a9d7b1f9a1 | ||
|
c4d3c5320e | ||
|
c0ffc8386c | ||
|
65921ae67a | ||
|
bb40789552 | ||
|
baac9e5d15 | ||
|
b4dcd4193e | ||
|
26e84b12e8 | ||
|
4bc11db0ff | ||
|
bcaf65d7cd | ||
|
c8da5ad9f4 | ||
|
7f21a5f461 |
8
.gitignore
vendored
8
.gitignore
vendored
@@ -1,12 +1,18 @@
|
||||
*~
|
||||
/phpunit.xml
|
||||
/phpBB/cache/*.html
|
||||
/phpBB/cache/*.php
|
||||
/phpBB/cache/queue.php.lock
|
||||
/phpBB/cache/*.lock
|
||||
/phpBB/composer.phar
|
||||
/phpBB/config.php
|
||||
/phpBB/config_dev.php
|
||||
/phpBB/config_test.php
|
||||
/phpBB/ext/*
|
||||
/phpBB/files/*
|
||||
/phpBB/images/avatars/gallery/*
|
||||
/phpBB/images/avatars/upload/*
|
||||
/phpBB/store/*
|
||||
/phpBB/vendor
|
||||
/tests/phpbb_unit_tests.sqlite2
|
||||
/tests/test_config.php
|
||||
/tests/tmp/*
|
||||
|
31
.travis.yml
Normal file
31
.travis.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
language: php
|
||||
php:
|
||||
- 5.2
|
||||
- 5.3.3
|
||||
- 5.3
|
||||
- 5.4
|
||||
- 5.5
|
||||
|
||||
env:
|
||||
- DB=mysql
|
||||
- DB=postgres
|
||||
|
||||
before_script:
|
||||
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'DROP DATABASE IF EXISTS phpbb_tests;' -U postgres; fi"
|
||||
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database phpbb_tests;' -U postgres; fi"
|
||||
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'create database IF NOT EXISTS phpbb_tests;'; fi"
|
||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.2' ]; then pear install --force phpunit/DbUnit; phpenv rehash; fi"
|
||||
- cd phpBB
|
||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' != '5.2' ]; then php ../composer.phar install --dev --no-interaction --prefer-source; fi"
|
||||
- cd ..
|
||||
- sh -c "if [ `php -r "echo (int) version_compare(PHP_VERSION, '5.3.19', '>=');"` = "1" ]; then travis/setup-webserver.sh; fi"
|
||||
|
||||
script:
|
||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.2' ]; then phpunit --configuration travis/phpunit-$DB-travis.xml; else phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml; fi"
|
||||
|
||||
notifications:
|
||||
email:
|
||||
recipients:
|
||||
- dev-team@phpbb.com
|
||||
on_success: change
|
||||
on_failure: change
|
@@ -1,4 +1,4 @@
|
||||
[](http://www.phpbb.com)
|
||||
[](http://www.phpbb.com)
|
||||
|
||||
## ABOUT
|
||||
|
||||
@@ -15,6 +15,12 @@ Find support and lots more on [phpBB.com](http://www.phpbb.com)! Discuss the dev
|
||||
3. [Read our Git Contribution Guidelines](http://wiki.phpbb.com/Git); if you're new to git, also read [the introduction guide](http://wiki.phpbb.com/display/DEV/Working+with+Git)
|
||||
4. Send us a pull request
|
||||
|
||||
## AUTOMATED TESTING
|
||||
|
||||
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](http://bamboo.phpbb.com) or check our travis build below.
|
||||
develop - [](http://travis-ci.org/phpbb/phpbb3)
|
||||
develop-olympus - [](http://travis-ci.org/phpbb/phpbb3)
|
||||
|
||||
## LICENSE
|
||||
|
||||
[GNU General Public License v2](http://opensource.org/licenses/gpl-2.0.php)
|
||||
|
@@ -2,18 +2,17 @@
|
||||
|
||||
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
||||
<!-- a few settings for the build -->
|
||||
<property name="newversion" value="3.0.10-RC1" />
|
||||
<property name="prevversion" value="3.0.9" />
|
||||
<property name="olderversions" value="3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7, 3.0.7-PL1, 3.0.8" />
|
||||
<property name="newversion" value="3.0.12" />
|
||||
<property name="prevversion" value="3.0.11" />
|
||||
<property name="olderversions" value="3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7, 3.0.7-PL1, 3.0.8, 3.0.9, 3.0.10, 3.0.12-RC1, 3.0.12-RC2, 3.0.12-RC3" />
|
||||
<!-- no configuration should be needed beyond this point -->
|
||||
|
||||
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
||||
<property name="versions" value="${oldversions}, ${newversion}" />
|
||||
|
||||
<!-- These are the main targets which you will probably want to use -->
|
||||
<target name="package" depends="clean,prepare,create-package" />
|
||||
<target name="all" depends="clean,prepare,test,docs,create-package" />
|
||||
<target name="build" depends="clean,prepare,test,docs" />
|
||||
<target name="all" depends="clean,prepare,composer,test,docs,package" />
|
||||
<target name="build" depends="clean,prepare,composer,test,docs" />
|
||||
|
||||
<target name="prepare">
|
||||
<mkdir dir="build/logs" />
|
||||
@@ -43,17 +42,31 @@
|
||||
<delete dir="build/save" />
|
||||
</target>
|
||||
|
||||
<target name="test" depends="clean,prepare">
|
||||
<!--
|
||||
This target basically just runs composer in the phpBB tree to ensure
|
||||
all dependencies are loaded. Additional development dependencies are
|
||||
loaded because testing framework may depend on them.
|
||||
-->
|
||||
<target name="composer">
|
||||
<exec dir="phpBB"
|
||||
command="php ../composer.phar install --dev"
|
||||
checkreturn="true"
|
||||
passthru="true" />
|
||||
</target>
|
||||
|
||||
<target name="test" depends="clean,prepare,composer">
|
||||
<exec dir="."
|
||||
command="phpunit --log-junit build/logs/phpunit.xml
|
||||
command="phpBB/vendor/bin/phpunit
|
||||
--log-junit build/logs/phpunit.xml
|
||||
--coverage-clover build/logs/clover.xml
|
||||
--coverage-html build/coverage"
|
||||
passthru="true" />
|
||||
</target>
|
||||
|
||||
<target name="test-slow" depends="clean,prepare">
|
||||
<target name="test-slow" depends="clean,prepare,composer">
|
||||
<exec dir="."
|
||||
command="phpunit --log-junit build/logs/phpunit.xml
|
||||
command="phpBB/vendor/bin/phpunit
|
||||
--log-junit build/logs/phpunit.xml
|
||||
--configuration phpunit.xml.all
|
||||
--group slow
|
||||
--coverage-clover build/logs/clover-slow.xml
|
||||
@@ -116,9 +129,10 @@
|
||||
|
||||
</target>
|
||||
|
||||
<target name="create-package" depends="prepare-new-version,old-version-diffs">
|
||||
<target name="package" depends="clean,prepare,prepare-new-version,old-version-diffs">
|
||||
<exec dir="build" command="php -f package.php '${versions}' > logs/package.log" escape="false" />
|
||||
<exec dir="build" command="php -f build_diff.php '${prevversion}' '${newversion}' > logs/build_diff.log" escape="false" />
|
||||
|
||||
<exec dir="build" escape="false"
|
||||
command="diff -crNEBwd old_versions/release-${prevversion}/language new_version/phpBB3/language >
|
||||
save/save_${prevversion}_to_${newversion}/language/phpbb-${prevversion}_to_${newversion}_language.patch" />
|
||||
@@ -128,6 +142,19 @@
|
||||
<exec dir="build" escape="false"
|
||||
command="diff -crNEBwd old_versions/release-${prevversion}/styles/subsilver2 new_version/phpBB3/styles/subsilver2 >
|
||||
save/save_${prevversion}_to_${newversion}/subsilver2/phpbb-${prevversion}_to_${newversion}_subsilver2.patch" />
|
||||
|
||||
<exec dir="build" escape="false"
|
||||
command="git shortlog --summary --numbered release-${prevversion}...HEAD >
|
||||
save/save_${prevversion}_to_${newversion}/phpbb-${prevversion}_to_${newversion}_git_shortlog.txt" />
|
||||
<exec dir="build" escape="false"
|
||||
command="git diff --stat release-${prevversion}...HEAD >
|
||||
save/save_${prevversion}_to_${newversion}/phpbb-${prevversion}_to_${newversion}_git_diffstat.txt" />
|
||||
</target>
|
||||
|
||||
<target name="changelog" depends="prepare">
|
||||
<exec dir="build" escape="false"
|
||||
command="php -f build_changelog.php '${newversion}' >
|
||||
save/changelog_${newversion}.html" />
|
||||
</target>
|
||||
|
||||
<!--
|
||||
@@ -141,6 +168,45 @@
|
||||
<exec dir="phpBB"
|
||||
command="git archive ${revision} | tar -xf - -C ../${dir}"
|
||||
checkreturn="true" />
|
||||
|
||||
<!-- Install composer dependencies, if there are any. -->
|
||||
<exec dir="."
|
||||
command='php -r "\$j = json_decode(file_get_contents("composer.json")); echo isset(\$j->require);"'
|
||||
checkreturn="true"
|
||||
outputProperty='composer-has-dependencies' />
|
||||
<if>
|
||||
<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" />
|
||||
<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"
|
||||
checkreturn="true"
|
||||
passthru="true" />
|
||||
<delete file="${dir}/composer.phar" />
|
||||
</else>
|
||||
</if>
|
||||
</then>
|
||||
<else>
|
||||
<!-- We do not have composer dependencies, do not ship composer files -->
|
||||
<delete file="${dir}/composer.json" />
|
||||
<delete file="${dir}/composer.lock" />
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<delete file="${dir}/config.php" />
|
||||
<delete dir="${dir}/develop" />
|
||||
<delete dir="${dir}/install/data" />
|
||||
@@ -162,6 +228,7 @@
|
||||
<delete dir="${dir}/files" />
|
||||
<delete dir="${dir}/install" />
|
||||
<delete dir="${dir}/store" />
|
||||
<delete dir="${dir}/vendor" />
|
||||
</target>
|
||||
|
||||
</project>
|
||||
|
53
build/build_changelog.php
Executable file
53
build/build_changelog.php
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package build
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
if ($_SERVER['argc'] != 2)
|
||||
{
|
||||
echo "Please specify the new version as argument (e.g. build_changelog.php '1.0.2').\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$fixVersion = $_SERVER['argv'][1];
|
||||
|
||||
$query = 'project = PHPBB3
|
||||
AND resolution = Fixed
|
||||
AND fixVersion = "' . $fixVersion . '"
|
||||
AND status IN ("Unverified Fix", Closed)';
|
||||
|
||||
$url = 'http://tracker.phpbb.com/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=' . urlencode($query) . '&tempMax=1000';
|
||||
$xml = simplexml_load_string(file_get_contents($url));
|
||||
|
||||
foreach ($xml->xpath('//item') as $item)
|
||||
{
|
||||
$key = (string) $item->key;
|
||||
|
||||
$keyUrl = 'http://tracker.phpbb.com/browse/' . $key;
|
||||
$keyLink = '<a href="' . $keyUrl . '">' . $key . '</a>';
|
||||
|
||||
$value = str_replace($key, $keyLink, htmlspecialchars($item->title));
|
||||
$value = str_replace(']', '] -', $value);
|
||||
|
||||
$types[(string) $item->type][$key] = $value;
|
||||
}
|
||||
|
||||
ksort($types);
|
||||
foreach ($types as $type => $tickets)
|
||||
{
|
||||
echo "<h4>$type</h4>\n";
|
||||
echo "<ul>\n";
|
||||
|
||||
uksort($tickets, 'strnatcasecmp');
|
||||
|
||||
foreach ($tickets as $ticket)
|
||||
{
|
||||
echo "<li>$ticket</li>\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
}
|
@@ -3,9 +3,8 @@
|
||||
/**
|
||||
*
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -388,7 +387,7 @@ function build_header($mode, $filenames, $header)
|
||||
$html .= "## {$filename['phpbb_filename']}\n";
|
||||
}
|
||||
}
|
||||
$html .= "## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2 \n";
|
||||
$html .= "## License: http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 \n";
|
||||
$html .= "############################################################## \n";
|
||||
$html .= "\n";
|
||||
|
||||
|
@@ -2,9 +2,8 @@
|
||||
/**
|
||||
*
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
|
@@ -2,10 +2,9 @@
|
||||
/**
|
||||
*
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @copyright (c) 2000 Geoffrey T. Dairiki <dairiki@dairiki.org>
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
|
@@ -3,9 +3,8 @@
|
||||
/**
|
||||
*
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
|
BIN
composer.phar
Executable file
BIN
composer.phar
Executable file
Binary file not shown.
@@ -11,14 +11,30 @@
|
||||
#
|
||||
# ln -s ../../git-tools/hooks/commit-msg \\
|
||||
# .git/hooks/commit-msg
|
||||
#
|
||||
# You can configure whether invalid commit messages abort commits:
|
||||
#
|
||||
# git config phpbb.hooks.commit-msg.fatal true (abort)
|
||||
# git config phpbb.hooks.commit-msg.fatal false (warn only, do not abort)
|
||||
#
|
||||
# The default is to warn only.
|
||||
#
|
||||
# Warning/error messages use color by default if the output is a terminal
|
||||
# ("output" here is normally standard error when you run git commit).
|
||||
# To force or disable the use of color:
|
||||
#
|
||||
# git config phpbb.hooks.commit-msg.color true (force color output)
|
||||
# git config phpbb.hooks.commit-msg.color false (disable color output)
|
||||
|
||||
config_ns="phpbb.hooks.commit-msg";
|
||||
|
||||
if [ "$(git config --bool $config_ns.fatal)" = "false" ]
|
||||
if [ "$(git config --bool $config_ns.fatal)" = "true" ]
|
||||
then
|
||||
fatal=0;
|
||||
else
|
||||
fatal=1;
|
||||
severity=Error;
|
||||
else
|
||||
fatal=0;
|
||||
severity=Warning;
|
||||
fi
|
||||
|
||||
debug_level=$(git config --int $config_ns.debug || echo 0);
|
||||
@@ -47,14 +63,68 @@ debug()
|
||||
|
||||
quit()
|
||||
{
|
||||
if [ $1 -gt 0 ] && [ $1 -ne $ERR_UNKNOWN ] && [ $fatal -eq 0 ]
|
||||
if [ $1 -eq 0 ] || [ $1 -eq $ERR_UNKNOWN ]
|
||||
then
|
||||
# success
|
||||
exit 0;
|
||||
elif [ $fatal -eq 0 ]
|
||||
then
|
||||
# problems found but fatal is false
|
||||
complain 'Please run `git commit --amend` and fix the problems mentioned.' 1>&2
|
||||
exit 0;
|
||||
else
|
||||
complain "Aborting commit." 1>&2
|
||||
exit $1;
|
||||
fi
|
||||
}
|
||||
|
||||
use_color()
|
||||
{
|
||||
if [ -z "$use_color_cached" ]
|
||||
then
|
||||
case $(git config --bool $config_ns.color)
|
||||
in
|
||||
false)
|
||||
use_color_cached=1
|
||||
;;
|
||||
true)
|
||||
use_color_cached=0
|
||||
;;
|
||||
*)
|
||||
# tty detection in shell:
|
||||
# http://hwi.ath.cx/jsh/list/shext/isatty.sh.html
|
||||
tty 0>/dev/stdout >/dev/null 2>&1
|
||||
use_color_cached=$?
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
# return value is the flag inverted -
|
||||
# if return value is 0, this means use color
|
||||
return $use_color_cached
|
||||
}
|
||||
|
||||
complain()
|
||||
{
|
||||
if use_color
|
||||
then
|
||||
# Careful: our argument may include arguments to echo like -n
|
||||
# ANSI color codes:
|
||||
# http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
|
||||
printf "\033[31m\033[1m"
|
||||
if [ "$1" = "-n" ]
|
||||
then
|
||||
echo "$@"
|
||||
printf "\033[0m"
|
||||
else
|
||||
# This will print one trailing space.
|
||||
# Not sure how to avoid this at the moment.
|
||||
echo "$@" $(printf "\033[0m")
|
||||
fi
|
||||
else
|
||||
echo "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check for empty commit message
|
||||
if ! grep -qv '^#' "$1"
|
||||
then
|
||||
@@ -70,9 +140,9 @@ msg=$(grep -v '^#' "$1" |grep -nE '.{81,}')
|
||||
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "The following lines are greater than 80 characters long:" >&2;
|
||||
echo >&2
|
||||
echo "$msg" >&2;
|
||||
complain "The following lines are greater than 80 characters long:" >&2;
|
||||
complain >&2
|
||||
complain "$msg" >&2;
|
||||
|
||||
quit $ERR_LENGTH;
|
||||
fi
|
||||
@@ -126,9 +196,9 @@ do
|
||||
# Don't be too strict.
|
||||
# Commits may be temporary, intended to be squashed later.
|
||||
# Just issue a warning here.
|
||||
echo "Warning: heading should be a sentence beginning with a capital letter." 1>&2
|
||||
echo "You entered:" 1>&2
|
||||
echo "$line" 1>&2
|
||||
complain "$severity: heading should be a sentence beginning with a capital letter." 1>&2
|
||||
complain "You entered:" 1>&2
|
||||
complain "$line" 1>&2
|
||||
fi
|
||||
# restore exit code
|
||||
(exit $result)
|
||||
@@ -160,7 +230,7 @@ do
|
||||
echo "$line" | grep -Eq "^#";
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognised token $expect" >&2;
|
||||
complain "Unrecognised token $expect" >&2;
|
||||
quit $err;
|
||||
;;
|
||||
esac
|
||||
@@ -231,7 +301,7 @@ do
|
||||
expecting="eof";
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognised token $expect" >&2;
|
||||
complain "Unrecognised token $expect" >&2;
|
||||
quit 254;
|
||||
;;
|
||||
esac
|
||||
@@ -245,11 +315,11 @@ do
|
||||
else
|
||||
# None of the expected line formats matched
|
||||
# Guess we'll call it a day here then
|
||||
echo "Syntax error on line $i:" >&2;
|
||||
echo ">> $line" >&2;
|
||||
echo -n "Expecting: " >&2;
|
||||
echo "$expecting" | sed 's/ /, /g' >&2;
|
||||
exit $err;
|
||||
complain "Syntax error on line $i:" >&2;
|
||||
complain ">> $line" >&2;
|
||||
complain -n "Expecting: " >&2;
|
||||
complain "$expecting" | sed 's/ /, /g' >&2;
|
||||
quit $err;
|
||||
fi
|
||||
|
||||
i=$(( $i + 1 ));
|
||||
@@ -258,7 +328,7 @@ done
|
||||
# If EOF is expected exit cleanly
|
||||
echo "$expecting" | grep -q "eof" || (
|
||||
# Unexpected EOF, error
|
||||
echo "Unexpected EOF encountered" >&2;
|
||||
complain "Unexpected EOF encountered" >&2;
|
||||
quit $ERR_EOF;
|
||||
) && (
|
||||
# Do post scan checks
|
||||
@@ -269,8 +339,8 @@ echo "$expecting" | grep -q "eof" || (
|
||||
|
||||
if [ ! -z "$dupes" ]
|
||||
then
|
||||
echo "The following tickets are repeated:" >&2;
|
||||
echo "$dupes" | sed 's/ /\n/g;s/^/* /g' >&2;
|
||||
complain "The following tickets are repeated:" >&2;
|
||||
complain "$dupes" | sed 's/ /\n/g;s/^/* /g' >&2;
|
||||
quit $ERR_FOOTER;
|
||||
fi
|
||||
fi
|
||||
@@ -278,8 +348,8 @@ echo "$expecting" | grep -q "eof" || (
|
||||
if [ $ticket -gt 0 ]
|
||||
then
|
||||
echo "$tickets" | grep -Eq "\bPHPBB3-$ticket\b" || (
|
||||
echo "Ticket ID [$ticket] of branch missing from list of tickets:" >&2;
|
||||
echo "$tickets" | sed 's/ /\n/g;s/^/* /g' >&2;
|
||||
complain "Ticket ID [$ticket] of branch missing from list of tickets:" >&2;
|
||||
complain "$tickets" | sed 's/ /\n/g;s/^/* /g' >&2;
|
||||
quit $ERR_FOOTER;
|
||||
) || exit $?;
|
||||
fi
|
||||
|
@@ -12,8 +12,17 @@
|
||||
# ln -s ../../git-tools/hooks/pre-commit \\
|
||||
# .git/hooks/pre-commit
|
||||
|
||||
# NOTE: this is run through /usr/bin/env
|
||||
PHP_BIN=php
|
||||
if [ -z "$PHP_BIN" ]
|
||||
then
|
||||
PHP_BIN=php
|
||||
fi
|
||||
|
||||
if [ "$(echo -e test)" = test ]
|
||||
then
|
||||
echo_e="echo -e"
|
||||
else
|
||||
echo_e="echo"
|
||||
fi
|
||||
|
||||
# necessary check for initial commit
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
@@ -24,10 +33,8 @@ else
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
fi
|
||||
|
||||
error=0
|
||||
errors=""
|
||||
|
||||
if ! which $PHP_BIN >/dev/null 2>&1
|
||||
if ! which "$PHP_BIN" >/dev/null 2>&1
|
||||
then
|
||||
echo "PHP Syntax check failed:"
|
||||
echo "PHP binary does not exist or is not in path: $PHP_BIN"
|
||||
@@ -64,19 +71,18 @@ do
|
||||
|
||||
# check the staged file content for syntax errors
|
||||
# using php -l (lint)
|
||||
result=$(git cat-file -p $sha | /usr/bin/env $PHP_BIN -l 2>/dev/null)
|
||||
result=$(git cat-file -p $sha | "$PHP_BIN" -n -l -ddisplay_errors\=1 -derror_reporting\=E_ALL -dlog_errrors\=0 2>&1)
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
error=1
|
||||
# Swap back in correct filenames
|
||||
errors=$(echo "$errors"; echo "$result" |sed -e "s@in - on@in $filename on@g")
|
||||
errors=$(echo "$errors"; echo "$result" | grep ':' | sed -e "s@in - on@in $filename on@g")
|
||||
fi
|
||||
done
|
||||
unset IFS
|
||||
|
||||
if [ $error -eq 1 ]
|
||||
if [ -n "$errors" ]
|
||||
then
|
||||
echo -e "PHP Syntax check failed:";
|
||||
echo -e "$errors" | grep "^Parse error:"
|
||||
echo "PHP Syntax check failed: "
|
||||
$echo_e "$errors"
|
||||
exit 1
|
||||
fi
|
||||
|
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -78,12 +78,12 @@ function work($pull_id, $remote)
|
||||
add_remote($pull_user, 'phpbb3');
|
||||
run("git fetch $pull_user");
|
||||
run("git merge --no-ff $pull_user/$pull_branch");
|
||||
run("phpunit");
|
||||
run("phpBB/vendor/bin/phpunit");
|
||||
|
||||
run("git checkout develop");
|
||||
run("git pull $remote develop");
|
||||
run("git merge --no-ff develop-olympus");
|
||||
run("phpunit");
|
||||
run("phpBB/vendor/bin/phpunit");
|
||||
break;
|
||||
|
||||
case 'develop':
|
||||
@@ -93,7 +93,7 @@ function work($pull_id, $remote)
|
||||
add_remote($pull_user, 'phpbb3');
|
||||
run("git fetch $pull_user");
|
||||
run("git merge --no-ff $pull_user/$pull_branch");
|
||||
run("phpunit");
|
||||
run("phpBB/vendor/bin/phpunit");
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -124,19 +124,34 @@ function get_repository_url($username, $repository, $ssh = false)
|
||||
|
||||
function api_request($query)
|
||||
{
|
||||
$contents = file_get_contents("http://github.com/api/v2/json/$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",
|
||||
),
|
||||
)));
|
||||
|
||||
if ($contents === false)
|
||||
{
|
||||
throw new RuntimeException("Error: failed to retrieve pull request data\n", 4);
|
||||
}
|
||||
$contents = json_decode($contents);
|
||||
|
||||
return 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 $contents;
|
||||
}
|
||||
|
||||
function get_pull($username, $repository, $pull_id)
|
||||
{
|
||||
$request = api_request("pulls/$username/$repository/$pull_id");
|
||||
$request = api_request("repos/$username/$repository/pulls/$pull_id");
|
||||
|
||||
$pull = $request->pull;
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -15,14 +15,14 @@ function show_usage()
|
||||
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|network [OPTIONS]\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 " network All repositories of the whole github network\n";
|
||||
echo " forks All repositories of the whole github network\n";
|
||||
echo "\n";
|
||||
|
||||
echo "Options:\n";
|
||||
@@ -55,31 +55,31 @@ exit(work($scope, $username, $repository, $developer));
|
||||
function work($scope, $username, $repository, $developer)
|
||||
{
|
||||
// Get some basic data
|
||||
$network = get_network($username, $repository);
|
||||
$forks = get_forks($username, $repository);
|
||||
$collaborators = get_collaborators($username, $repository);
|
||||
|
||||
if ($network === false || $collaborators === false)
|
||||
if ($forks === false || $collaborators === false)
|
||||
{
|
||||
echo "Error: failed to retrieve network or collaborators\n";
|
||||
echo "Error: failed to retrieve forks or collaborators\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
switch ($scope)
|
||||
{
|
||||
case 'collaborators':
|
||||
$remotes = array_intersect_key($network, $collaborators);
|
||||
$remotes = array_intersect_key($forks, $collaborators);
|
||||
break;
|
||||
|
||||
case 'organisation':
|
||||
$remotes = array_intersect_key($network, get_organisation_members($username));
|
||||
$remotes = array_intersect_key($forks, get_organisation_members($username));
|
||||
break;
|
||||
|
||||
case 'contributors':
|
||||
$remotes = array_intersect_key($network, get_contributors($username, $repository));
|
||||
$remotes = array_intersect_key($forks, get_contributors($username, $repository));
|
||||
break;
|
||||
|
||||
case 'network':
|
||||
$remotes = $network;
|
||||
case 'forks':
|
||||
$remotes = $forks;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -145,26 +145,66 @@ function get_repository_url($username, $repository, $ssh = false)
|
||||
|
||||
function api_request($query)
|
||||
{
|
||||
$contents = file_get_contents("http://github.com/api/v2/json/$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;
|
||||
}
|
||||
return json_decode($contents);
|
||||
$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/show/$username/$repository/contributors");
|
||||
$request = api_request("repos/$username/$repository/stats/contributors");
|
||||
if ($request === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$usernames = array();
|
||||
foreach ($request->contributors as $contributor)
|
||||
foreach ($request as $contribution)
|
||||
{
|
||||
$usernames[$contributor->login] = $contributor->login;
|
||||
$usernames[$contribution->author->login] = $contribution->author->login;
|
||||
}
|
||||
|
||||
return $usernames;
|
||||
@@ -172,14 +212,14 @@ function get_contributors($username, $repository)
|
||||
|
||||
function get_organisation_members($username)
|
||||
{
|
||||
$request = api_request("organizations/$username/public_members");
|
||||
$request = api_request("orgs/$username/public_members");
|
||||
if ($request === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$usernames = array();
|
||||
foreach ($request->users as $member)
|
||||
foreach ($request as $member)
|
||||
{
|
||||
$usernames[$member->login] = $member->login;
|
||||
}
|
||||
@@ -189,35 +229,35 @@ function get_organisation_members($username)
|
||||
|
||||
function get_collaborators($username, $repository)
|
||||
{
|
||||
$request = api_request("repos/show/$username/$repository/collaborators");
|
||||
$request = api_request("repos/$username/$repository/collaborators");
|
||||
if ($request === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$usernames = array();
|
||||
foreach ($request->collaborators as $collaborator)
|
||||
foreach ($request as $collaborator)
|
||||
{
|
||||
$usernames[$collaborator] = $collaborator;
|
||||
$usernames[$collaborator->login] = $collaborator->login;
|
||||
}
|
||||
|
||||
return $usernames;
|
||||
}
|
||||
|
||||
function get_network($username, $repository)
|
||||
function get_forks($username, $repository)
|
||||
{
|
||||
$request = api_request("repos/show/$username/$repository/network");
|
||||
$request = api_request("repos/$username/$repository/forks");
|
||||
if ($request === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$usernames = array();
|
||||
foreach ($request->network as $network)
|
||||
foreach ($request as $fork)
|
||||
{
|
||||
$usernames[$network->owner] = array(
|
||||
'username' => $network->owner,
|
||||
'repository' => $network->name,
|
||||
$usernames[$fork->owner->login] = array(
|
||||
'username' => $fork->owner->login,
|
||||
'repository' => $fork->name,
|
||||
);
|
||||
}
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.8 KiB |
BIN
phpBB/adm/images/phpbb_logo.png
Normal file
BIN
phpBB/adm/images/phpbb_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.1 KiB |
@@ -199,6 +199,7 @@ function adm_page_footer($copyright_html = true)
|
||||
'DEBUG_OUTPUT' => (defined('DEBUG')) ? $debug_output : '',
|
||||
'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
|
||||
'S_COPYRIGHT_HTML' => $copyright_html,
|
||||
'CREDIT_LINE' => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group'),
|
||||
'VERSION' => $config['version'])
|
||||
);
|
||||
|
||||
@@ -448,6 +449,13 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
|
||||
}
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
if (!preg_match('/^' . get_preg_expression('email') . '$/i', $cfg_array[$config_name]))
|
||||
{
|
||||
$error[] = $user->lang['EMAIL_INVALID_EMAIL'];
|
||||
}
|
||||
break;
|
||||
|
||||
// Absolute path
|
||||
case 'script_path':
|
||||
if (!$cfg_array[$config_name])
|
||||
|
@@ -63,6 +63,10 @@
|
||||
<dt><label for="field_required">{L_REQUIRED_FIELD}:</label><br /><span>{L_REQUIRED_FIELD_EXPLAIN}</span></dt>
|
||||
<dd><input type="checkbox" class="radio" id="field_required" name="field_required" value="1"<!-- IF S_FIELD_REQUIRED --> checked="checked"<!-- ENDIF --> /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="field_show_novalue">{L_SHOW_NOVALUE_FIELD}:</label><br /><span>{L_SHOW_NOVALUE_FIELD_EXPLAIN}</span></dt>
|
||||
<dd><input type="checkbox" class="radio" id="field_show_novalue" name="field_show_novalue" value="1"<!-- IF S_FIELD_SHOW_NOVALUE --> checked="checked"<!-- ENDIF --> /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="field_hide">{L_HIDE_PROFILE_FIELD}:</label><br /><span>{L_HIDE_PROFILE_FIELD_EXPLAIN}</span></dt>
|
||||
<dd><input type="checkbox" class="radio" id="field_hide" name="field_hide" value="1"<!-- IF S_FIELD_HIDE --> checked="checked"<!-- ENDIF --> /></dd>
|
||||
|
@@ -402,6 +402,12 @@
|
||||
<td class="row3" colspan="{$COLSPAN}"><strong>{L_INSTALLED}</strong></td>
|
||||
</tr>
|
||||
<!-- BEGIN installed -->
|
||||
<!-- IF installed.S_INACTIVE and not $INACTIVE_STYLES -->
|
||||
<!-- DEFINE $INACTIVE_STYLES = 1 -->
|
||||
<tr>
|
||||
<td class="row3" colspan="{$COLSPAN}"><strong>{L_INACTIVE_STYLES}</strong></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<tr>
|
||||
<td><strong>{installed.NAME}</strong><!-- IF installed.S_DEFAULT_STYLE --> *<!-- ENDIF --></td>
|
||||
<!-- IF S_STYLE -->
|
||||
|
@@ -135,19 +135,25 @@
|
||||
</form>
|
||||
|
||||
<!-- IF not S_OWN_ACCOUNT -->
|
||||
<form id="user_delete" method="post" action="{U_ACTION}">
|
||||
<fieldset>
|
||||
<legend>{L_DELETE_USER}</legend>
|
||||
<dl>
|
||||
<dt><label for="delete_type">{L_DELETE_USER}:</label><br /><span>{L_DELETE_USER_EXPLAIN}</span></dt>
|
||||
<dd><select id="delete_type" name="delete_type"><option class="sep" value="">{L_SELECT_OPTION}</option><option value="retain">{L_RETAIN_POSTS}</option><option value="remove">{L_DELETE_POSTS}</option></select></dd>
|
||||
</dl>
|
||||
<p class="quick">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input type="hidden" name="delete" value="1" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form id="user_delete" method="post" action="{U_ACTION}">
|
||||
<fieldset>
|
||||
<legend>{L_DELETE_USER}</legend>
|
||||
<dl>
|
||||
<dt><label for="delete_type">{L_DELETE_USER}:</label><br /><span>{L_DELETE_USER_EXPLAIN}</span></dt>
|
||||
<dd>
|
||||
<!-- IF USER_HAS_POSTS -->
|
||||
<select id="delete_type" name="delete_type"><option class="sep" value="">{L_SELECT_OPTION}</option><option value="retain">{L_RETAIN_POSTS}</option><option value="remove">{L_DELETE_POSTS}</option></select>
|
||||
<!-- ELSE -->
|
||||
{L_USER_NO_POSTS_TO_DELETE}<input type="hidden" id="delete_type" name="delete_type" value="retain" />
|
||||
<!-- ENDIF -->
|
||||
</dd>
|
||||
</dl>
|
||||
<p class="quick">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input type="hidden" name="delete" value="1" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
@@ -142,15 +142,15 @@ li {
|
||||
#page-header {
|
||||
clear: both;
|
||||
text-align: right;
|
||||
background: url("../images/phpbb_logo.gif") top left no-repeat;
|
||||
height: 49px;
|
||||
background: url("../images/phpbb_logo.png") top left no-repeat;
|
||||
height: 54px;
|
||||
font-size: 0.85em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.rtl #page-header {
|
||||
text-align: left;
|
||||
background: url("../images/phpbb_logo.gif") top right no-repeat;
|
||||
background: url("../images/phpbb_logo.png") top right no-repeat;
|
||||
}
|
||||
|
||||
#page-header h1 {
|
||||
|
@@ -28,8 +28,8 @@ function helpline(help)
|
||||
/**
|
||||
* Fix a bug involving the TextRange object. From
|
||||
* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
|
||||
*/
|
||||
function initInsertions()
|
||||
*/
|
||||
function initInsertions()
|
||||
{
|
||||
var doc;
|
||||
if(document.forms[form_name])
|
||||
@@ -66,7 +66,7 @@ function bbstyle(bbnumber)
|
||||
else
|
||||
{
|
||||
insert_text('[*]');
|
||||
document.forms[form_name].elements[text_name].focus();
|
||||
document.forms[form_name].elements[text_name].focus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ function bbstyle(bbnumber)
|
||||
function bbfontstyle(bbopen, bbclose)
|
||||
{
|
||||
theSelection = false;
|
||||
|
||||
|
||||
var textarea = document.forms[form_name].elements[text_name];
|
||||
|
||||
textarea.focus();
|
||||
@@ -84,10 +84,14 @@ function bbfontstyle(bbopen, bbclose)
|
||||
if ((clientVer >= 4) && is_ie && is_win)
|
||||
{
|
||||
// Get text selection
|
||||
if (textarea.createTextRange && textarea.caretPos)
|
||||
theSelection = document.selection.createRange().text;
|
||||
|
||||
if (theSelection)
|
||||
{
|
||||
textarea.caretPos.text = bbopen + textarea.caretPos.text + bbclose;
|
||||
textarea.focus();
|
||||
// Add tags around selection
|
||||
document.selection.createRange().text = bbopen + theSelection + bbclose;
|
||||
document.forms[form_name].elements[text_name].focus();
|
||||
theSelection = '';
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -98,10 +102,10 @@ function bbfontstyle(bbopen, bbclose)
|
||||
theSelection = '';
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//The new position for the cursor after adding the bbcode
|
||||
var caret_pos = getCaretPosition(textarea).start;
|
||||
var new_pos = caret_pos + bbopen.length;
|
||||
var new_pos = caret_pos + bbopen.length;
|
||||
|
||||
// Open tag
|
||||
insert_text(bbopen + bbclose);
|
||||
@@ -112,12 +116,12 @@ function bbfontstyle(bbopen, bbclose)
|
||||
{
|
||||
textarea.selectionStart = new_pos;
|
||||
textarea.selectionEnd = new_pos;
|
||||
}
|
||||
}
|
||||
// IE
|
||||
else if (document.selection)
|
||||
{
|
||||
var range = textarea.createTextRange();
|
||||
range.move("character", bbopen.length);
|
||||
var range = textarea.createTextRange();
|
||||
range.move("character", new_pos);
|
||||
range.select();
|
||||
storeCaret(textarea);
|
||||
}
|
||||
@@ -132,7 +136,7 @@ function bbfontstyle(bbopen, bbclose)
|
||||
function insert_text(text, spaces, popup)
|
||||
{
|
||||
var textarea;
|
||||
|
||||
|
||||
if (!popup)
|
||||
{
|
||||
textarea = document.forms[form_name].elements[text_name];
|
||||
@@ -155,18 +159,18 @@ function insert_text(text, spaces, popup)
|
||||
mozWrap(textarea, text, '');
|
||||
textarea.selectionStart = sel_start + text.length;
|
||||
textarea.selectionEnd = sel_end + text.length;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else if (textarea.createTextRange && textarea.caretPos)
|
||||
{
|
||||
if (baseHeight != textarea.caretPos.boundingHeight)
|
||||
if (baseHeight != textarea.caretPos.boundingHeight)
|
||||
{
|
||||
textarea.focus();
|
||||
storeCaret(textarea);
|
||||
}
|
||||
var caret_pos = textarea.caretPos;
|
||||
caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -229,7 +233,7 @@ function addquote(post_id, username)
|
||||
theSelection = theSelection.replace(/<br\/>/ig, '\n');
|
||||
theSelection = theSelection.replace(/<\;/ig, '<');
|
||||
theSelection = theSelection.replace(/>\;/ig, '>');
|
||||
theSelection = theSelection.replace(/&\;/ig, '&');
|
||||
theSelection = theSelection.replace(/&\;/ig, '&');
|
||||
theSelection = theSelection.replace(/ \;/ig, ' ');
|
||||
}
|
||||
else if (document.all)
|
||||
@@ -264,7 +268,7 @@ function mozWrap(txtarea, open, close)
|
||||
var selEnd = txtarea.selectionEnd;
|
||||
var scrollTop = txtarea.scrollTop;
|
||||
|
||||
if (selEnd == 1 || selEnd == 2)
|
||||
if (selEnd == 1 || selEnd == 2)
|
||||
{
|
||||
selEnd = selLength;
|
||||
}
|
||||
@@ -288,17 +292,7 @@ function mozWrap(txtarea, open, close)
|
||||
*/
|
||||
function storeCaret(textEl)
|
||||
{
|
||||
var keyCode = false;
|
||||
if (is_ie)
|
||||
{
|
||||
keyCode = (event.keyCode) ? event.keyCode : event.charCode;
|
||||
}
|
||||
|
||||
// Did the user press Shift (16), Ctrl (17) or Alt (18)?
|
||||
// If so, we do not update the caretPos, so BBCodes can still be applied correctly.
|
||||
var is_control_key = (keyCode == 16 || keyCode == 17 || keyCode == 18);
|
||||
|
||||
if ((!is_ie || !is_control_key) && (textEl.createTextRange))
|
||||
if (textEl.createTextRange)
|
||||
{
|
||||
textEl.caretPos = document.selection.createRange().duplicate();
|
||||
}
|
||||
@@ -334,7 +328,7 @@ function colorPalette(dir, width, height)
|
||||
{
|
||||
document.writeln('<tr>');
|
||||
}
|
||||
|
||||
|
||||
for (b = 0; b < 5; b++)
|
||||
{
|
||||
color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
|
||||
@@ -374,9 +368,9 @@ function caretPosition()
|
||||
function getCaretPosition(txtarea)
|
||||
{
|
||||
var caretPos = new caretPosition();
|
||||
|
||||
|
||||
// simple Gecko/Opera way
|
||||
if (!is_ie && (txtarea.selectionStart || txtarea.selectionStart == 0))
|
||||
if (txtarea.selectionStart || txtarea.selectionStart == 0)
|
||||
{
|
||||
caretPos.start = txtarea.selectionStart;
|
||||
caretPos.end = txtarea.selectionEnd;
|
||||
@@ -390,19 +384,19 @@ function getCaretPosition(txtarea)
|
||||
// a new selection of the whole textarea
|
||||
var range_all = document.body.createTextRange();
|
||||
range_all.moveToElementText(txtarea);
|
||||
|
||||
|
||||
// calculate selection start point by moving beginning of range_all to beginning of range
|
||||
var sel_start;
|
||||
for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
|
||||
{
|
||||
range_all.moveStart('character', 1);
|
||||
}
|
||||
|
||||
|
||||
txtarea.sel_start = sel_start;
|
||||
|
||||
|
||||
// we ignore the end value for IE, this is already dirty enough and we don't need it
|
||||
caretPos.start = txtarea.sel_start;
|
||||
caretPos.end = txtarea.sel_start;
|
||||
caretPos.end = txtarea.sel_start;
|
||||
}
|
||||
|
||||
return caretPos;
|
||||
|
@@ -8,7 +8,7 @@
|
||||
</div>
|
||||
|
||||
<div id="page-footer">
|
||||
Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group
|
||||
Powered by <a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@@ -43,6 +43,11 @@
|
||||
<p>{WARNING_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<div class="errorbox" style="margin-top: 0;">
|
||||
<h3>{L_NOTICE}</h3>
|
||||
<p>{L_BACKUP_NOTICE}</p>
|
||||
</div>
|
||||
|
||||
<form id="install_update" method="post" action="{U_ACTION}">
|
||||
|
||||
|
@@ -15,12 +15,12 @@
|
||||
// <![CDATA[
|
||||
function resize_panel()
|
||||
{
|
||||
var block = document.getElementById('codepanel');
|
||||
var block = document.getElementById('diff_content');
|
||||
var height;
|
||||
|
||||
if (window.innerHeight)
|
||||
{
|
||||
height = window.innerHeight - 150;
|
||||
height = window.innerHeight - 200;
|
||||
block.style.height = height + 'px';
|
||||
}
|
||||
else
|
||||
@@ -119,6 +119,7 @@ table.hrdiff {
|
||||
overflow: hidden;
|
||||
border-bottom: 1px solid #999;
|
||||
table-layout: fixed;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
table.hrdiff th {
|
||||
@@ -128,7 +129,8 @@ table.hrdiff th {
|
||||
font-family: Verdana,Helvetica,sans-serif;
|
||||
font-size: 11px;
|
||||
border-bottom: 1px solid #999;
|
||||
background: transparent;
|
||||
border-right: 1px solid #999;
|
||||
background: #D9D9D9;
|
||||
}
|
||||
|
||||
table.hrdiff thead th {
|
||||
@@ -142,29 +144,23 @@ table.hrdiff tr:first-child th {
|
||||
}
|
||||
|
||||
table.hrdiff tbody th {
|
||||
padding: 2em 1px 1px 1px;
|
||||
font-size: 80%;
|
||||
border-top: 1px solid #999;
|
||||
}
|
||||
|
||||
table.hrdiff tbody td.old {
|
||||
border-left: 1px solid #999;
|
||||
border-right: 1px solid #999;
|
||||
}
|
||||
table.hrdiff tbody td.new {
|
||||
table.hrdiff tbody td {
|
||||
border-right: 1px solid #999;
|
||||
}
|
||||
|
||||
table.hrdiff td pre {
|
||||
overflow: auto;
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
display: block;
|
||||
font-family: "Consolas", monospace;
|
||||
font-size: 1.1em;
|
||||
white-space: pre-wrap; /* css-3 */
|
||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||
}
|
||||
|
||||
table.hrdiff .unmodified {
|
||||
background: #fff;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
table.hrdiff .added {
|
||||
|
@@ -9,7 +9,7 @@
|
||||
|
||||
<div id="page-footer">
|
||||
<!-- IF S_COPYRIGHT_HTML -->
|
||||
Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group
|
||||
{CREDIT_LINE}
|
||||
<!-- IF TRANSLATION_INFO --><br />{TRANSLATION_INFO}<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
<div id="page-footer">
|
||||
|
||||
<!-- IF S_COPYRIGHT_HTML -->
|
||||
<br />Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group
|
||||
<br />{CREDIT_LINE}
|
||||
<!-- IF TRANSLATION_INFO --><br />{TRANSLATION_INFO}<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
|
@@ -26,6 +26,8 @@ if (file_exists($phpbb_root_path . 'config.' . $phpEx))
|
||||
if (!defined('PHPBB_INSTALLED'))
|
||||
{
|
||||
// Redirect the user to the installer
|
||||
require($phpbb_root_path . 'includes/functions.' . $phpEx);
|
||||
|
||||
// We have to generate a full HTTP/1.1 header here since we can't guarantee to have any of the information
|
||||
// available as used by the redirect function
|
||||
$server_name = (!empty($_SERVER['HTTP_HOST'])) ? strtolower($_SERVER['HTTP_HOST']) : ((!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : getenv('SERVER_NAME'));
|
||||
@@ -38,10 +40,13 @@ if (!defined('PHPBB_INSTALLED'))
|
||||
$script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI');
|
||||
}
|
||||
|
||||
// $phpbb_root_path accounts for redirects from e.g. /adm
|
||||
$script_path = trim(dirname($script_name)) . '/' . $phpbb_root_path . 'install/index.' . $phpEx;
|
||||
// Replace any number of consecutive backslashes and/or slashes with a single slash
|
||||
// (could happen on some proxy setups and/or Windows servers)
|
||||
$script_path = trim(dirname($script_name)) . '/install/index.' . $phpEx;
|
||||
$script_path = preg_replace('#[\\\\/]{2,}#', '/', $script_path);
|
||||
// Eliminate . and .. from the path
|
||||
$script_path = phpbb_clean_path($script_path);
|
||||
|
||||
$url = (($secure) ? 'https://' : 'http://') . $server_name;
|
||||
|
||||
|
8
phpBB/composer.json
Normal file
8
phpBB/composer.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"require-dev": {
|
||||
"fabpot/goutte": "v0.1.0",
|
||||
"phpunit/dbunit": "1.2.*",
|
||||
"phpunit/phpunit": "3.7.*",
|
||||
"phing/phing": "2.4.*"
|
||||
}
|
||||
}
|
966
phpBB/composer.lock
generated
Normal file
966
phpBB/composer.lock
generated
Normal file
@@ -0,0 +1,966 @@
|
||||
{
|
||||
"_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"
|
||||
],
|
||||
"hash": "ef6d05965cca4e390fff7ce63e9d2d49",
|
||||
"packages": [
|
||||
|
||||
],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "fabpot/goutte",
|
||||
"version": "v0.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fabpot/Goutte",
|
||||
"reference": "v0.1.0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/fabpot/Goutte/archive/v0.1.0.zip",
|
||||
"reference": "v0.1.0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-curl": "*",
|
||||
"guzzle/guzzle": "3.0.*",
|
||||
"php": ">=5.3.0",
|
||||
"symfony/browser-kit": "2.1.*",
|
||||
"symfony/css-selector": "2.1.*",
|
||||
"symfony/dom-crawler": "2.1.*",
|
||||
"symfony/finder": "2.1.*",
|
||||
"symfony/process": "2.1.*"
|
||||
},
|
||||
"type": "application",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Goutte": "."
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
}
|
||||
],
|
||||
"description": "A simple PHP Web Scraper",
|
||||
"homepage": "https://github.com/fabpot/Goutte",
|
||||
"keywords": [
|
||||
"scraper"
|
||||
],
|
||||
"time": "2012-12-02 13:44:35"
|
||||
},
|
||||
{
|
||||
"name": "guzzle/guzzle",
|
||||
"version": "v3.0.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/guzzle",
|
||||
"reference": "v3.0.7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/guzzle/guzzle/archive/v3.0.7.zip",
|
||||
"reference": "v3.0.7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-curl": "*",
|
||||
"php": ">=5.3.2",
|
||||
"symfony/event-dispatcher": ">=2.1"
|
||||
},
|
||||
"replace": {
|
||||
"guzzle/batch": "self.version",
|
||||
"guzzle/cache": "self.version",
|
||||
"guzzle/common": "self.version",
|
||||
"guzzle/http": "self.version",
|
||||
"guzzle/inflection": "self.version",
|
||||
"guzzle/iterator": "self.version",
|
||||
"guzzle/log": "self.version",
|
||||
"guzzle/parser": "self.version",
|
||||
"guzzle/plugin": "self.version",
|
||||
"guzzle/plugin-async": "self.version",
|
||||
"guzzle/plugin-backoff": "self.version",
|
||||
"guzzle/plugin-cache": "self.version",
|
||||
"guzzle/plugin-cookie": "self.version",
|
||||
"guzzle/plugin-curlauth": "self.version",
|
||||
"guzzle/plugin-history": "self.version",
|
||||
"guzzle/plugin-log": "self.version",
|
||||
"guzzle/plugin-md5": "self.version",
|
||||
"guzzle/plugin-mock": "self.version",
|
||||
"guzzle/plugin-oauth": "self.version",
|
||||
"guzzle/service": "self.version",
|
||||
"guzzle/stream": "self.version"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/common": "*",
|
||||
"monolog/monolog": "1.*",
|
||||
"phpunit/phpunit": "3.7.*",
|
||||
"symfony/class-loader": "*",
|
||||
"zend/zend-cache1": "1.12",
|
||||
"zend/zend-log1": "1.12",
|
||||
"zendframework/zend-cache": "2.0.*",
|
||||
"zendframework/zend-log": "2.0.*"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Guzzle\\Tests": "tests/",
|
||||
"Guzzle": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "Guzzle Community",
|
||||
"homepage": "https://github.com/guzzle/guzzle/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
|
||||
"homepage": "http://guzzlephp.org/",
|
||||
"keywords": [
|
||||
"client",
|
||||
"curl",
|
||||
"framework",
|
||||
"http",
|
||||
"http client",
|
||||
"rest",
|
||||
"web service"
|
||||
],
|
||||
"time": "2012-12-19 23:06:35"
|
||||
},
|
||||
{
|
||||
"name": "phing/phing",
|
||||
"version": "2.4.14",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phingofficial/phing",
|
||||
"reference": "2.4.14"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/phingofficial/phing/archive/2.4.14.zip",
|
||||
"reference": "2.4.14",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.2.0"
|
||||
},
|
||||
"bin": [
|
||||
"bin/phing"
|
||||
],
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"classes/phing/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
"classes"
|
||||
],
|
||||
"license": [
|
||||
"LGPL3"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michiel Rook",
|
||||
"email": "mrook@php.net"
|
||||
},
|
||||
{
|
||||
"name": "Phing Community",
|
||||
"homepage": "http://www.phing.info/trac/wiki/Development/Contributors"
|
||||
}
|
||||
],
|
||||
"description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.",
|
||||
"homepage": "http://www.phing.info/",
|
||||
"keywords": [
|
||||
"build",
|
||||
"task",
|
||||
"tool"
|
||||
],
|
||||
"time": "2012-11-29 21:23:47"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/dbunit",
|
||||
"version": "1.2.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/dbunit.git",
|
||||
"reference": "1.2.3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/1.2.3",
|
||||
"reference": "1.2.3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-pdo": "*",
|
||||
"ext-simplexml": "*",
|
||||
"php": ">=5.3.3",
|
||||
"phpunit/phpunit": ">=3.7.0@stable"
|
||||
},
|
||||
"bin": [
|
||||
"dbunit.php"
|
||||
],
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"PHPUnit/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
"",
|
||||
"../../symfony/yaml/"
|
||||
],
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"email": "sb@sebastian-bergmann.de",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "DbUnit port for PHP/PHPUnit to support database interaction testing.",
|
||||
"homepage": "https://github.com/sebastianbergmann/dbunit/",
|
||||
"keywords": [
|
||||
"database",
|
||||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2013-03-01 11:50:46"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
"version": "1.2.12",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||
"reference": "1.2.12"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1.2.12",
|
||||
"reference": "1.2.12",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"phpunit/php-file-iterator": ">=1.3.0@stable",
|
||||
"phpunit/php-text-template": ">=1.1.1@stable",
|
||||
"phpunit/php-token-stream": ">=1.1.3@stable"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "3.7.*@dev"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-dom": "*",
|
||||
"ext-xdebug": ">=2.0.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"PHP/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
""
|
||||
],
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"email": "sb@sebastian-bergmann.de",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
|
||||
"homepage": "https://github.com/sebastianbergmann/php-code-coverage",
|
||||
"keywords": [
|
||||
"coverage",
|
||||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2013-07-06 06:26:16"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-file-iterator",
|
||||
"version": "1.3.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/php-file-iterator.git",
|
||||
"reference": "1.3.3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/php-file-iterator/zipball/1.3.3",
|
||||
"reference": "1.3.3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"File/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
""
|
||||
],
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"email": "sb@sebastian-bergmann.de",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "FilterIterator implementation that filters files based on a list of suffixes.",
|
||||
"homepage": "http://www.phpunit.de/",
|
||||
"keywords": [
|
||||
"filesystem",
|
||||
"iterator"
|
||||
],
|
||||
"time": "2012-10-11 04:44:38"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-text-template",
|
||||
"version": "1.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/php-text-template.git",
|
||||
"reference": "1.1.4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4",
|
||||
"reference": "1.1.4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"Text/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
""
|
||||
],
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"email": "sb@sebastian-bergmann.de",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "Simple template engine.",
|
||||
"homepage": "https://github.com/sebastianbergmann/php-text-template/",
|
||||
"keywords": [
|
||||
"template"
|
||||
],
|
||||
"time": "2012-10-31 11:15:28"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-timer",
|
||||
"version": "1.0.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/php-timer.git",
|
||||
"reference": "1.0.4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/php-timer/zipball/1.0.4",
|
||||
"reference": "1.0.4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"PHP/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
""
|
||||
],
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"email": "sb@sebastian-bergmann.de",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "Utility class for timing",
|
||||
"homepage": "http://www.phpunit.de/",
|
||||
"keywords": [
|
||||
"timer"
|
||||
],
|
||||
"time": "2012-10-11 04:45:58"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-token-stream",
|
||||
"version": "1.1.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/php-token-stream.git",
|
||||
"reference": "1.1.5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/php-token-stream/zipball/1.1.5",
|
||||
"reference": "1.1.5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-tokenizer": "*",
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"PHP/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
""
|
||||
],
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"email": "sb@sebastian-bergmann.de",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "Wrapper around PHP's tokenizer extension.",
|
||||
"homepage": "http://www.phpunit.de/",
|
||||
"keywords": [
|
||||
"tokenizer"
|
||||
],
|
||||
"time": "2012-10-11 04:47:14"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "3.7.22",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "3.7.22"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3.7.22",
|
||||
"reference": "3.7.22",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-pcre": "*",
|
||||
"ext-reflection": "*",
|
||||
"ext-spl": "*",
|
||||
"php": ">=5.3.3",
|
||||
"phpunit/php-code-coverage": "~1.2.1",
|
||||
"phpunit/php-file-iterator": ">=1.3.1",
|
||||
"phpunit/php-text-template": ">=1.1.1",
|
||||
"phpunit/php-timer": "~1.0.2",
|
||||
"phpunit/phpunit-mock-objects": "~1.2.0",
|
||||
"symfony/yaml": "~2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"pear-pear/pear": "1.9.4"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-json": "*",
|
||||
"ext-simplexml": "*",
|
||||
"ext-tokenizer": "*",
|
||||
"phpunit/php-invoker": ">=1.1.0,<1.2.0"
|
||||
},
|
||||
"bin": [
|
||||
"composer/bin/phpunit"
|
||||
],
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.7.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"PHPUnit/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
"",
|
||||
"../../symfony/yaml/"
|
||||
],
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"email": "sebastian@phpunit.de",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "The PHP Unit Testing framework.",
|
||||
"homepage": "http://www.phpunit.de/",
|
||||
"keywords": [
|
||||
"phpunit",
|
||||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2013-07-06 06:29:15"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit-mock-objects",
|
||||
"version": "1.2.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/phpunit-mock-objects.git",
|
||||
"reference": "1.2.3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects/archive/1.2.3.zip",
|
||||
"reference": "1.2.3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"phpunit/php-text-template": ">=1.1.1@stable"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-soap": "*"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"PHPUnit/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"include-path": [
|
||||
""
|
||||
],
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"email": "sb@sebastian-bergmann.de",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "Mock Object library for PHPUnit",
|
||||
"homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
|
||||
"keywords": [
|
||||
"mock",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2013-01-13 10:24:48"
|
||||
},
|
||||
{
|
||||
"name": "symfony/browser-kit",
|
||||
"version": "v2.1.11",
|
||||
"target-dir": "Symfony/Component/BrowserKit",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/BrowserKit.git",
|
||||
"reference": "v2.1.11"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/BrowserKit/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"symfony/dom-crawler": "2.1.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/css-selector": "2.1.*",
|
||||
"symfony/process": "2.1.*"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/process": "2.1.*"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\BrowserKit": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony BrowserKit Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-04-29 20:22:06"
|
||||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
"version": "v2.1.11",
|
||||
"target-dir": "Symfony/Component/CssSelector",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/CssSelector.git",
|
||||
"reference": "v2.1.11"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/CssSelector/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\CssSelector": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony CssSelector Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-17 00:31:34"
|
||||
},
|
||||
{
|
||||
"name": "symfony/dom-crawler",
|
||||
"version": "v2.1.11",
|
||||
"target-dir": "Symfony/Component/DomCrawler",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/DomCrawler.git",
|
||||
"reference": "v2.1.11"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/DomCrawler/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/css-selector": "2.1.*"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/css-selector": "2.1.*"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\DomCrawler": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony DomCrawler Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-16 00:06:15"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v2.3.1",
|
||||
"target-dir": "Symfony/Component/EventDispatcher",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/EventDispatcher.git",
|
||||
"reference": "v2.3.1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.3.1",
|
||||
"reference": "v2.3.1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/dependency-injection": ">=2.0,<3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/dependency-injection": "",
|
||||
"symfony/http-kernel": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\EventDispatcher\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony EventDispatcher Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-13 14:36:40"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v2.1.11",
|
||||
"target-dir": "Symfony/Component/Finder",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Finder.git",
|
||||
"reference": "v2.1.11"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Finder/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\Finder": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Finder Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-25 15:47:15"
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v2.1.11",
|
||||
"target-dir": "Symfony/Component/Process",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Process.git",
|
||||
"reference": "v2.1.11"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Process/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\Process": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Process Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-06 10:21:56"
|
||||
},
|
||||
{
|
||||
"name": "symfony/yaml",
|
||||
"version": "v2.3.1",
|
||||
"target-dir": "Symfony/Component/Yaml",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Yaml.git",
|
||||
"reference": "v2.3.1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Yaml/zipball/v2.3.1",
|
||||
"reference": "v2.3.1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\Yaml\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Yaml Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-10 18:12:13"
|
||||
}
|
||||
],
|
||||
"aliases": [
|
||||
|
||||
],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [
|
||||
|
||||
],
|
||||
"platform": [
|
||||
|
||||
],
|
||||
"platform-dev": [
|
||||
|
||||
]
|
||||
}
|
@@ -1,15 +1,11 @@
|
||||
<?php
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : add_permissions.php
|
||||
// STARTED : Sat Nov 06, 2004
|
||||
// COPYRIGHT : <20> 2004 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2004 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
|
@@ -1,15 +1,11 @@
|
||||
<?php
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : calc_email_hash.php
|
||||
// STARTED : Tue Feb 03, 2004
|
||||
// COPYRIGHT : <20> 2004 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2004 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
|
@@ -1,23 +1,11 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* merge_clean_posts.php
|
||||
* -------------------
|
||||
* begin : Tuesday, February 25, 2003
|
||||
* copyright : (C) 2003 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2003 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
|
@@ -2,14 +2,11 @@
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2009, 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This script will check your database for potentially dangerous flash BBCode tags
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
|
@@ -2,9 +2,8 @@
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2006 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
* This file creates new schema files for every database.
|
||||
* The filenames will be prefixed with an underscore to not overwrite the current schema files.
|
||||
@@ -238,7 +237,7 @@ $supported_dbms = array('firebird', 'mssql', 'mysql_40', 'mysql_41', 'oracle', '
|
||||
|
||||
foreach ($supported_dbms as $dbms)
|
||||
{
|
||||
$fp = fopen($schema_path . $dbms . '_schema.sql', 'wt');
|
||||
$fp = fopen($schema_path . $dbms . '_schema.sql', 'wb');
|
||||
|
||||
$line = '';
|
||||
|
||||
@@ -1449,6 +1448,7 @@ function get_schema_struct()
|
||||
'field_default_value' => array('VCHAR_UNI', ''),
|
||||
'field_validation' => array('VCHAR_UNI:20', ''),
|
||||
'field_required' => array('BOOL', 0),
|
||||
'field_show_novalue' => array('BOOL', 0),
|
||||
'field_show_on_reg' => array('BOOL', 0),
|
||||
'field_show_on_vt' => array('BOOL', 0),
|
||||
'field_show_profile' => array('BOOL', 0),
|
||||
|
137
phpBB/develop/create_search_index.php
Normal file
137
phpBB/develop/create_search_index.php
Normal file
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
if (php_sapi_name() != 'cli')
|
||||
{
|
||||
die("This program must be run from the command line.\n");
|
||||
}
|
||||
|
||||
if ($argc < 2)
|
||||
{
|
||||
echo 'Usage: php ' . basename(__FILE__) . " index_type [batch_size]\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$class_name = basename($argv[1]);
|
||||
|
||||
define('IN_PHPBB', true);
|
||||
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
require($phpbb_root_path . 'common.' . $phpEx);
|
||||
require($phpbb_root_path . 'includes/acp/acp_search.' . $phpEx);
|
||||
require($phpbb_root_path . 'includes/search/' . $class_name . '.' . $phpEx);
|
||||
|
||||
$user->session_begin();
|
||||
$auth->acl($user->data);
|
||||
$user->setup('acp/search');
|
||||
|
||||
$search_name = ucfirst(strtolower(str_replace('_', ' ', $class_name)));
|
||||
$search_errors = array();
|
||||
$search = new $class_name($search_errors);
|
||||
|
||||
$batch_size = isset($argv[2]) ? $argv[2] : 2000;
|
||||
|
||||
if (method_exists($search, 'create_index'))
|
||||
{
|
||||
if ($error = $search->create_index(null, ''))
|
||||
{
|
||||
var_dump($error);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT forum_id, enable_indexing
|
||||
FROM ' . FORUMS_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$forums[$row['forum_id']] = (bool) $row['enable_indexing'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = 'SELECT post_id
|
||||
FROM ' . POSTS_TABLE . '
|
||||
ORDER BY post_id DESC';
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$max_post_id = (int) $db->sql_fetchfield('post_id');
|
||||
|
||||
$post_counter = 0;
|
||||
while ($post_counter <= $max_post_id)
|
||||
{
|
||||
$row_count = 0;
|
||||
$time = time();
|
||||
|
||||
printf("Processing posts with %d <= post_id <= %d\n",
|
||||
$post_counter + 1,
|
||||
$post_counter + $batch_size
|
||||
);
|
||||
|
||||
$sql = 'SELECT post_id, post_subject, post_text, poster_id, forum_id
|
||||
FROM ' . POSTS_TABLE . '
|
||||
WHERE post_id >= ' . (int) ($post_counter + 1) . '
|
||||
AND post_id <= ' . (int) ($post_counter + $batch_size);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$buffer = $db->sql_buffer_nested_transactions();
|
||||
|
||||
if ($buffer)
|
||||
{
|
||||
$rows = $db->sql_fetchrowset($result);
|
||||
$rows[] = false; // indicate end of array for while loop below
|
||||
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while ($row = ($buffer ? $rows[$i++] : $db->sql_fetchrow($result)))
|
||||
{
|
||||
// Indexing enabled for this forum or global announcement?
|
||||
// Global announcements get indexed by default.
|
||||
if (!$row['forum_id'] || !empty($forums[$row['forum_id']]))
|
||||
{
|
||||
++$row_count;
|
||||
|
||||
$search->index('post',
|
||||
$row['post_id'],
|
||||
$row['post_text'],
|
||||
$row['post_subject'],
|
||||
$row['poster_id'],
|
||||
$row['forum_id']
|
||||
);
|
||||
|
||||
if ($row_count % 10 == 0)
|
||||
{
|
||||
echo '.';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$delta = (time() - $time);
|
||||
$delta = $delta <= 0 ? 1 : $delta;
|
||||
printf(" %d posts/sec\n", $row_count / $delta);
|
||||
|
||||
if (!$buffer)
|
||||
{
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
$post_counter += $batch_size;
|
||||
}
|
||||
}
|
||||
|
||||
$search->tidy();
|
||||
|
||||
add_log('admin', 'LOG_SEARCH_INDEX_CREATED', $search_name);
|
||||
|
||||
echo $user->lang['SEARCH_INDEX_CREATED'] . "\n";
|
||||
echo 'Peak Memory Usage: ' . get_formatted_filesize(memory_get_peak_usage()) . "\n";
|
||||
|
||||
exit(0);
|
@@ -1,19 +1,13 @@
|
||||
<?php
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : create_variable_overview.php
|
||||
// STARTED : Fri Aug 15 2003
|
||||
// COPYRIGHT : <20> 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
/*
|
||||
This script generates an index of some template vars and their use within the templates.
|
||||
It writes down all language variables used by various templates.
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2003 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
* This script generates an index of some template vars and their use within the templates.
|
||||
* It writes down all language variables used by various templates.
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
|
@@ -1,15 +1,12 @@
|
||||
<?php
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : fill.php
|
||||
// STARTED : Mon Sep 15, 2003
|
||||
// COPYRIGHT : <20> 2001, 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2001, 2003 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
//
|
||||
|
@@ -2,9 +2,8 @@
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2005 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ function my_var_export($var)
|
||||
* Download a file to the develop/ dir
|
||||
*
|
||||
* @param string $url URL of the file to download
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function download($url)
|
||||
{
|
||||
|
@@ -2,9 +2,8 @@
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2005 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -200,7 +199,7 @@ function my_var_export($var)
|
||||
* Download a file to the develop/ dir
|
||||
*
|
||||
* @param string $url URL of the file to download
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function download($url)
|
||||
{
|
||||
|
@@ -2,9 +2,8 @@
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2005 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -482,7 +481,7 @@ function my_var_export($var)
|
||||
* Download a file to the develop/ dir
|
||||
*
|
||||
* @param string $url URL of the file to download
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function download($url)
|
||||
{
|
||||
|
@@ -1,15 +1,11 @@
|
||||
<?php
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : merge_attachment_tables.php
|
||||
// STARTED : Tue Nov 04, 2003
|
||||
// COPYRIGHT : <20> 2001, 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2001, 2003 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
|
@@ -1,23 +1,11 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* merge_clean_posts.php
|
||||
* -------------------
|
||||
* begin : Tuesday, February 25, 2003
|
||||
* copyright : (C) 2003 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2003 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
|
@@ -2,15 +2,13 @@
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2006 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
* This file creates SQL statements to upgrade phpBB on MySQL 3.x/4.0.x to 4.1.x/5.x
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Security message:
|
||||
//
|
||||
@@ -151,7 +149,8 @@ foreach ($schema_data as $table_name => $table_data)
|
||||
list($orig_column_type, $column_length) = explode(':', $column_data[0]);
|
||||
$column_type = sprintf($dbms_type_map['mysql_41'][$orig_column_type . ':'], $column_length);
|
||||
|
||||
if (isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0]))
|
||||
if (isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit']) &&
|
||||
isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0]))
|
||||
{
|
||||
switch ($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0])
|
||||
{
|
||||
@@ -696,6 +695,24 @@ function get_schema_struct()
|
||||
),
|
||||
);
|
||||
|
||||
$schema_data['phpbb_login_attempts'] = array(
|
||||
'COLUMNS' => array(
|
||||
'attempt_ip' => array('VCHAR:40', ''),
|
||||
'attempt_browser' => array('VCHAR:150', ''),
|
||||
'attempt_forwarded_for' => array('VCHAR:255', ''),
|
||||
'attempt_time' => array('TIMESTAMP', 0),
|
||||
'user_id' => array('UINT', 0),
|
||||
'username' => array('VCHAR_UNI:255', 0),
|
||||
'username_clean' => array('VCHAR_CI', 0),
|
||||
),
|
||||
'KEYS' => array(
|
||||
'att_ip' => array('INDEX', array('attempt_ip', 'attempt_time')),
|
||||
'att_for' => array('INDEX', array('attempt_forwarded_for', 'attempt_time')),
|
||||
'att_time' => array('INDEX', array('attempt_time')),
|
||||
'user_id' => array('INDEX', 'user_id'),
|
||||
),
|
||||
);
|
||||
|
||||
$schema_data['phpbb_moderator_cache'] = array(
|
||||
'COLUMNS' => array(
|
||||
'forum_id' => array('UINT', 0),
|
||||
@@ -899,6 +916,7 @@ function get_schema_struct()
|
||||
'field_default_value' => array('VCHAR_UNI', ''),
|
||||
'field_validation' => array('VCHAR_UNI:20', ''),
|
||||
'field_required' => array('BOOL', 0),
|
||||
'field_show_novalue' => array('BOOL', 0),
|
||||
'field_show_on_reg' => array('BOOL', 0),
|
||||
'field_show_on_vt' => array('BOOL', 0),
|
||||
'field_show_profile' => array('BOOL', 0),
|
||||
@@ -1398,5 +1416,3 @@ function get_schema_struct()
|
||||
|
||||
return $schema_data;
|
||||
}
|
||||
|
||||
?>
|
@@ -2,9 +2,8 @@
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2005 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -223,7 +222,7 @@ die("\n\nALL TESTS PASSED SUCCESSFULLY\n");
|
||||
* Download a file to the develop/ dir
|
||||
*
|
||||
* @param string $url URL of the file to download
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function download($url)
|
||||
{
|
||||
|
@@ -13,7 +13,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://opensource.org/licenses/gpl-license.php>.
|
||||
* along with this program. If not, see <http://opensource.org/licenses/gpl-2.0.php>
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -22,15 +22,11 @@ involved in phpBB.
|
||||
|
||||
phpBB Lead Developer: naderman (Nils Adermann)
|
||||
|
||||
phpBB Developers: Acyd Burn (Meik Sievertsen) [Lead 09/2005 - 01/2010]
|
||||
bantu (Andreas Fischer)
|
||||
ckwalsh (Cullen Walsh)
|
||||
igorw (Igor Wiedler)
|
||||
kellanved (Henry Sudhof)
|
||||
phpBB Developers: bantu (Andreas Fischer)
|
||||
EXreaction (Nathan Guse)
|
||||
dhruv.goel92 (Dhruv Goel)
|
||||
imkingdavid (David King)
|
||||
nickvergessen (Joas Schilling)
|
||||
Oleg (Oleg Pudeyev)
|
||||
rxu (Ruslan Uzdenov)
|
||||
ToonArmy (Chris Smith)
|
||||
|
||||
Contributions by: leviatan21 (Gabriel Vazquez)
|
||||
Raimon (Raimon Meuldijk)
|
||||
@@ -39,19 +35,28 @@ Contributions by: leviatan21 (Gabriel Vazquez)
|
||||
|
||||
-- Former Contributors --
|
||||
|
||||
phpBB Project Manager: theFinn (James Atkinson) [Founder - 04/2007]
|
||||
phpBB Project Manager: theFinn (James Atkinson) [Founder - 04/2007]
|
||||
SHS` (Jonathan Stanley)
|
||||
|
||||
phpBB Lead Developer: psoTFX (Paul S. Owen) [2001 - 09/2005]
|
||||
phpBB Lead Developer: Acyd Burn (Meik Sievertsen) [09/2005 - 01/2010]
|
||||
psoTFX (Paul S. Owen) [2001 - 09/2005]
|
||||
|
||||
phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
|
||||
Acyd Burn (Meik Sievertsen) [02/2003 - 09/2005]
|
||||
APTX (Marek A. Ruszczyński) [12/2007 - 04/2011]
|
||||
Arty (Vjacheslav Trushkin) [02/2012 - 07/2012]
|
||||
Ashe (Ludovic Arnaud) [10/2002 - 11/2003, 06/2006 - 10/2006]
|
||||
BartVB (Bart van Bragt) [11/2000 - 03/2006]
|
||||
ckwalsh (Cullen Walsh) [01/2010 - 07/2011]
|
||||
DavidMJ (David M.) [12/2005 - 08/2009]
|
||||
dhn (Dominik Dröscher) [05/2007 - 01/2011]
|
||||
GrahamJE (Graham Eames) [09/2005 - 11/2006]
|
||||
kellanved (Henry Sudhof) [04/2007 - 03/2011]
|
||||
igorw (Igor Wiedler) [08/2010 - 02/2013]
|
||||
Oleg (Oleg Pudeyev) [01/2011 - 05/2013]
|
||||
rxu (Ruslan Uzdenov) [04/2010 - 12/2012]
|
||||
TerraFrost (Jim Wigginton) [04/2009 - 01/2011]
|
||||
ToonArmy (Chris Smith) [06/2008 - 11/2011]
|
||||
Vic D'Elfant (Vic D'Elfant) [04/2007 - 04/2009]
|
||||
|
||||
-- Copyrights --
|
||||
|
@@ -53,6 +53,8 @@
|
||||
<ol>
|
||||
<li><a href="#changelog">Changelog</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#v3011">Changes since 3.0.11</a></li>
|
||||
<li><a href="#v3010">Changes since 3.0.10</a></li>
|
||||
<li><a href="#v309">Changes since 3.0.9</a></li>
|
||||
<li><a href="#v308">Changes since 3.0.8</a></li>
|
||||
<li><a href="#v307-PL1">Changes since 3.0.7-PL1</a></li>
|
||||
@@ -91,132 +93,423 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<a name="v309"></a><h3>1.i. Changes since 3.0.9</h3>
|
||||
<a name="v3011"></a><h3>1.i. Changes since 3.0.11</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-5506">PHPBB3-5506</a>] - Deleting all items from last page results in empty list display</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-6458">PHPBB3-6458</a>] - Width of Topics and Posts columns in Board Index is causing problems with language packs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-6632">PHPBB3-6632</a>] - Better viewing of topics for wide screen displays</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7138">PHPBB3-7138</a>] - Cannot display simple header/footer with trigger_error()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7291">PHPBB3-7291</a>] - Broken links of char selection in memberlist</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7932">PHPBB3-7932</a>] - Fix font size in select boxes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8094">PHPBB3-8094</a>] - Text in the forums.php and install.php not matching</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8173">PHPBB3-8173</a>] - Redundant BBCode helpline in JS</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8177">PHPBB3-8177</a>] - February 29th birthdays not shown in non-leap year</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8571">PHPBB3-8571</a>] - Users can make their age a negative number on memberlist</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8691">PHPBB3-8691</a>] - Error creating log_time index</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8937">PHPBB3-8937</a>] - Code tags - single space indent</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8996">PHPBB3-8996</a>] - Wrong position when adding BBCodes with accesskey in IE</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9008">PHPBB3-9008</a>] - Incorrect unread topic tracking for unapproved topics</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9066">PHPBB3-9066</a>] - Invalid Prefix Names Allowed</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9416">PHPBB3-9416</a>] - HTML entities in poll titles and options incorrectly re-encoded</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9525">PHPBB3-9525</a>] - Minimum characters per post/message should never be '0'</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9645">PHPBB3-9645</a>] - XHTML error on phpinfo page in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9776">PHPBB3-9776</a>] - When deleting and recreating a poll, old options aren't deleted and reappear with the new ones</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9956">PHPBB3-9956</a>] - No error message displayed when disapprove reason is invalid or empty</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9976">PHPBB3-9976</a>] - Direct post links open the wrong page of viewtopic when multiple posts are posted in the same second</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9978">PHPBB3-9978</a>] - Missing semicolons in // <![CDATA[ part of overall_header.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10087">PHPBB3-10087</a>] - Limited browser support for ban exclusion emphasis</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10157">PHPBB3-10157</a>] - Missing error handling when a custom profile field is not defined for current language</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10166">PHPBB3-10166</a>] - Post-admin activation email confusingly refers to username</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10187">PHPBB3-10187</a>] - XHTML error in ucp_groups_manage.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10190">PHPBB3-10190</a>] - Misleading information about permissions displayed after editing forum settings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10212">PHPBB3-10212</a>] - Captcha not displayed when username not exists</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10216">PHPBB3-10216</a>] - Updater's failed query language grammatically incorrect</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10226">PHPBB3-10226</a>] - Mysqli dbal extension does not allow connection via pipes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10227">PHPBB3-10227</a>] - Mysqli dbal extension does not allow persistent connection for PHP >= 5.3.0</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10237">PHPBB3-10237</a>] - Unwatching a forum/topic does not check for correct hash parameter</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10240">PHPBB3-10240</a>] - Word filter evasion</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10253">PHPBB3-10253</a>] - IE9 Quote problem</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10255">PHPBB3-10255</a>] - gitignore ignores too much</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10257">PHPBB3-10257</a>] - AAAA record parsing fails on older versions of Windows</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10259">PHPBB3-10259</a>] - Incorrect email on joining Open group</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10265">PHPBB3-10265</a>] - Unit test tests/random/mt_rand.php is not run because of missing _test suffix.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10266">PHPBB3-10266</a>] - Poor navigation links after reporting a post</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10267">PHPBB3-10267</a>] - Missing strlen() on $table_prefix in db tools index name length check</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10274">PHPBB3-10274</a>] - Hardcoded module ID in "Re-check version" link on ACP front page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10275">PHPBB3-10275</a>] - Wrong information about sent passwords in FAQ</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10292">PHPBB3-10292</a>] - Whitespace inconsistency in acp_ranks</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10293">PHPBB3-10293</a>] - Jumpbox allows jumping to invalid forums in prosilver</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10294">PHPBB3-10294</a>] - sqlsrv_rows_affected non-functional in MSSQLNative.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10296">PHPBB3-10296</a>] - incorrect cross join in SQL Server</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10298">PHPBB3-10298</a>] - EMBED Tag Not Closed Properly In subSilver2 attachment.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10299">PHPBB3-10299</a>] - Typo in comment about $max_store_length in truncate_string() (in functions_content.php)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10303">PHPBB3-10303</a>] - send_status_line() doesn't validate user input</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10304">PHPBB3-10304</a>] - Bad url in U_ICQ on /ucp_mp_viewmessage.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10307">PHPBB3-10307</a>] - Return value of $db->sql_fetchrow() on empty tables is not consistent</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10309">PHPBB3-10309</a>] - Utf tests download data into temporary locations deep in source tree</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10320">PHPBB3-10320</a>] - "Most active topic" can leak topic title of topics in password-protected forums</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10321">PHPBB3-10321</a>] - Link to page 1 of the Memberlist has a useless question mark at the end</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10324">PHPBB3-10324</a>] - XHTML error in Prosilver - MCP - User Notes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10339">PHPBB3-10339</a>] - Typo in prosilver's mcp_front.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10341">PHPBB3-10341</a>] - Topic title of "0" does not show as "Most active topic"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10351">PHPBB3-10351</a>] - Invalid syntax for Oracle's sql_column_remove()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10352">PHPBB3-10352</a>] - Missing break for Oracle's sql_table_drop()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10365">PHPBB3-10365</a>] - Moderators can view forbidden information</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10377">PHPBB3-10377</a>] - All moderators can change topic type</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10394">PHPBB3-10394</a>] - Tests use call-time pass by reference which results in Fatal error on PHP 5.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10397">PHPBB3-10397</a>] - Pagination code inconsistency </li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10400">PHPBB3-10400</a>] - '0' (zero) not allowed as forum name</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10408">PHPBB3-10408</a>] - Layout of topics/attachments list is broken in UCP and MCP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10413">PHPBB3-10413</a>] - Make create_schema_files usable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10416">PHPBB3-10416</a>] - Use dbport in phpbb_database_test_connection_manager::connect()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10420">PHPBB3-10420</a>] - Update startup to account for PHP 5.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10421">PHPBB3-10421</a>] - Interchanged parameters in includes/acp/acp_users.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10422">PHPBB3-10422</a>] - Unnecessary <!-- IF --> statement in viewtopic_body.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10435">PHPBB3-10435</a>] - Topic count mismatch on viewforum</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10437">PHPBB3-10437</a>] - Announcements on moderation queue are not hidden</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10446">PHPBB3-10446</a>] - Unencoded 8bit characters in email headers</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10452">PHPBB3-10452</a>] - XHTML error when printing a PM</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-6723">PHPBB3-6723</a>] - Empty message in deleted messages in PM history</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7262">PHPBB3-7262</a>] - Clarify docs about is_dynamic not being updated by set_config()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8319">PHPBB3-8319</a>] - LOCAL_URL not enforced in bbcodes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9551">PHPBB3-9551</a>] - Mysql fulltext index creation fails due to partial collation change</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9975">PHPBB3-9975</a>] - Hard coded language in sessions.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10184">PHPBB3-10184</a>] - Bots can be sent private messages</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10491">PHPBB3-10491</a>] - Fatal error in functional tests when server returns 404</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10568">PHPBB3-10568</a>] - Modify the trigger language when you edit a PM</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10602">PHPBB3-10602</a>] - A bug in mail queue processing</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10661">PHPBB3-10661</a>] - UCP > PM > Compose > enumerated recipients > BCC group misses a &nbsp; (prosilver)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10678">PHPBB3-10678</a>] - Provide Firebird, Oracle, and increased MSSQL support in unit tests</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10772">PHPBB3-10772</a>] - trigger_error is using the default style</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10789">PHPBB3-10789</a>] - PM print template (prosilver) with unnecessary variables</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10820">PHPBB3-10820</a>] - Display images directly in IE9 and 10 instead of download</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10828">PHPBB3-10828</a>] - PostgreSQL dbal tests try to connect to the database named as user specified in configuration</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10838">PHPBB3-10838</a>] - Functional tests are not mentioned in RUNNING_TESTS.txt</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10840">PHPBB3-10840</a>] - If you add a member to a group, the form_token can be set to 0 if the creation_time is 0 too. Maybe even if creation_time is unchanged.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10848">PHPBB3-10848</a>] - Wrong redirect to installer from acp</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10850">PHPBB3-10850</a>] - create_schema_files.php is not creating the oracle or postgres' schema file properly</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10879">PHPBB3-10879</a>] - prosilver: attachment-link will be displayed wrong, when filename is too long </li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10880">PHPBB3-10880</a>] - m_approve should not imply f_noapprove</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10896">PHPBB3-10896</a>] - board_email & board_contact are not validated as email addresses in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10897">PHPBB3-10897</a>] - Bot Definitions are outdated</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10918">PHPBB3-10918</a>] - docs/INSTALL.html claims there are tar.gz packages</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10943">PHPBB3-10943</a>] - Search Box should display keywords entered by the user</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10967">PHPBB3-10967</a>] - PHPBB_USE_BOARD_URL_PATH not implemented in posting_gen_topic_icons</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10986">PHPBB3-10986</a>] - Invalid email message ids because config variable server_name is used even when force server URL settings is disabled</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10995">PHPBB3-10995</a>] - Return value of $db->sql_fetchrow() on empty tables is not consistent on mssqlnative</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10996">PHPBB3-10996</a>] - Travis tests fail on Postgres because database does not exist</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11034">PHPBB3-11034</a>] - The functional test case framework does not install a full board each time</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11066">PHPBB3-11066</a>] - MSSQLnative driver contains debug code error_reporting(E_ALL)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11069">PHPBB3-11069</a>] - missing closing span in subsilver2 simple_footer.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11081">PHPBB3-11081</a>] - Duplicated /TD in styles/subsilver2/template/catpcha_qa.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11093">PHPBB3-11093</a>] - acp_users_overview.html has a wrongly placed </dd></li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11094">PHPBB3-11094</a>] - prosilver: searching for users: no textbox for Jabber</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11105">PHPBB3-11105</a>] - Missing mandatory space in meta http-equiv=refresh</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11112">PHPBB3-11112</a>] - phpBB Footer Link should be SSL</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11122">PHPBB3-11122</a>] - Update docs/AUTHORS for 3.0.12-RC1</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11144">PHPBB3-11144</a>] - {FORUM_NAME} is not filled in login mask when logging into a password protected forum</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11145">PHPBB3-11145</a>] - ATTACHED_IMAGE_NOT_IMAGE thrown because of file limit in php.ini</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11158">PHPBB3-11158</a>] - modules table lacks acl_u_sig for signature module</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11159">PHPBB3-11159</a>] - Coding guidelines: static public</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11164">PHPBB3-11164</a>] - Composer not finding symfony/config in PHP 5.3.3</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11178">PHPBB3-11178</a>] - database_update.php should not set error_reporting to E_ALL</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11186">PHPBB3-11186</a>] - Database unit tests fail on windows using sqlite2</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11190">PHPBB3-11190</a>] - Functional tests do not clear the cache between each test</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11196">PHPBB3-11196</a>] - /includes/session.php sends 401 HTTP status with "Not authorized" instead of "Unauthorized"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11219">PHPBB3-11219</a>] - Database sequences are not updated for tests using fixtures with auto_incremented columns</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11227">PHPBB3-11227</a>] - @return void -> @return null</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11233">PHPBB3-11233</a>] - Anonymous can be selected as a PM recipient</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11248">PHPBB3-11248</a>] - CRLF line endings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11262">PHPBB3-11262</a>] - .lock files are not in .gitignore</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11265">PHPBB3-11265</a>] - Functional tests do not assert that board installation succeeded</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11269">PHPBB3-11269</a>] - Travis functional test case errors</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11278">PHPBB3-11278</a>] - Firebird tables are not removed correctly on 3.0.9-rc1 update</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11291">PHPBB3-11291</a>] - "Could not open input file: ../composer.phar" error during phing's create-package</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11292">PHPBB3-11292</a>] - Newlines removed in display of PM reports, no clickable links in PM reports</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11301">PHPBB3-11301</a>] - "String offset cast occured" error on PHP 5.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11304">PHPBB3-11304</a>] - check_form_key breaks in tests when form is submitted in the same second it is retrieved</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11343">PHPBB3-11343</a>] - Loose string comparison during new password activation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11355">PHPBB3-11355</a>] - Incorrect error message when no user selected for action on group membership management page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11358">PHPBB3-11358</a>] - Success message even withot selecting a user and performing a group operation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11361">PHPBB3-11361</a>] - "Array to string conversion" error in $user->format_date()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11493">PHPBB3-11493</a>] - Functional tests should fail if any debug output is made</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11517">PHPBB3-11517</a>] - Numbering is wrong in coding guidelines</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11536">PHPBB3-11536</a>] - Installer incorrectly removes /install from script_path</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11537">PHPBB3-11537</a>] - UCP group manage page's error box differs heavily from the rest of the UCP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11538">PHPBB3-11538</a>] - SQL error on UCP groups manage page caused by setting color to 7 characters long string</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11544">PHPBB3-11544</a>] - Add admin_login() to 3.0 functional test case</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11545">PHPBB3-11545</a>] - is_absolute() should not depend on DIRECTORY_SEPARATOR</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11546">PHPBB3-11546</a>] - is_absolute() throws E_NOTICE for empty string</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11547">PHPBB3-11547</a>] - Test fixtures do not support utf8 characters</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11548">PHPBB3-11548</a>] - Untranslated TOO_SHORT in UCP "Manage Groups"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11566">PHPBB3-11566</a>] - Reporting a post should require a captcha to be solved by guests</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11568">PHPBB3-11568</a>] - Functional tests fail with retrieving install pages using file_get_contents</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11575">PHPBB3-11575</a>] - phpbb_dbal_order_lower_test::test_cross_join should be called test_order_lower</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11578">PHPBB3-11578</a>] - Missing underscore after function prefix in validate_data()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11579">PHPBB3-11579</a>] - Add unit tests for validate_data()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11580">PHPBB3-11580</a>] - Avoid API Limit from composer downloads on github</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11588">PHPBB3-11588</a>] - install/install_update.php should use version.phpbb.com instead of www</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11590">PHPBB3-11590</a>] - Close database connections from tests whenever possible</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11601">PHPBB3-11601</a>] - Allow manual resync of database columns in unit tests not only on fixture load</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11603">PHPBB3-11603</a>] - git-tools use invalid api urls</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11604">PHPBB3-11604</a>] - Functional tests fail when phpBB can not create the config file</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11617">PHPBB3-11617</a>] - Missing U_ACTION in acp_captcha.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11618">PHPBB3-11618</a>] - Template tests fail on some systems due to a PHP error in glob()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11619">PHPBB3-11619</a>] - get_remote_file() should use HTTP 1.0</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11630">PHPBB3-11630</a>] - Improvements to the PHP lint pre-commit hook</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11644">PHPBB3-11644</a>] - Skip phpbb_dbal_order_lower_test on MySQL 5.6</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11662">PHPBB3-11662</a>] - "occured" should be "occurred"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11670">PHPBB3-11670</a>] - Replace trademark ™ with ® on "Welcome to phpBB" install page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11674">PHPBB3-11674</a>] - Do not include vendor folder if there are no dependencies.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11524">PHPBB3-11524</a>] - MySQL Upgrader throws warnings on PHP 5.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11720">PHPBB3-11720</a>] - Reporting posts leads to white page error</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11769">PHPBB3-11769</a>] - Wrong poster in subscription email when poster is using the Quote button</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11775">PHPBB3-11775</a>] - Error while moving posts to a new topic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11802">PHPBB3-11802</a>] - Undefined variable $browser in /download/file.php</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8616">PHPBB3-8616</a>] - Add direct link to PM to notification message</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9036">PHPBB3-9036</a>] - Forums that can be listed but not red expose forum information</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9297">PHPBB3-9297</a>] - Add support for Extended Passive Mode (EPSV) in class ftp_fsock to better support IPv6 connections.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9307">PHPBB3-9307</a>] - Mass email $max_chunk_size</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9361">PHPBB3-9361</a>] - Edit account settings - Improved clarification needed</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9778">PHPBB3-9778</a>] - Member Search from the Admin Control Panel is not Intuitive</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9898">PHPBB3-9898</a>] - Readme needs updating to reflect more opening for patches</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9995">PHPBB3-9995</a>] - Unnecessary coding in display_forums() in functions_display.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10032">PHPBB3-10032</a>] - BBCode Add List Item Control Name Contains Typo</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10074">PHPBB3-10074</a>] - Change default value of 'Set as special rank' to No for Add new rank</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10185">PHPBB3-10185</a>] - Board startdate not being set</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10189">PHPBB3-10189</a>] - Add "automatically generated" comment into schema-files.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10199">PHPBB3-10199</a>] - Performance: viewtopic has a useless join</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10222">PHPBB3-10222</a>] - Also build language and styles changes in diff/patch format</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10239">PHPBB3-10239</a>] - Add "Are you sure" confirmation to backup restore in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10243">PHPBB3-10243</a>] - Add gmgetdate() wrapper for getdate() which returns dates in UTC.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10245">PHPBB3-10245</a>] - Messenger uses output buffering for error collection, should use error collector instead</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10246">PHPBB3-10246</a>] - Remove VCS section from docs/coding-guidelines.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10254">PHPBB3-10254</a>] - Remove style names from themes and fix some information on it</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10263">PHPBB3-10263</a>] - Add phpbb_version_compare() wrapper for version_compare()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10278">PHPBB3-10278</a>] - Improve timeout handling in get_remote_file()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10315">PHPBB3-10315</a>] - Radio Buttons in ACP are clipped in Safari - Fix suggested</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10327">PHPBB3-10327</a>] - Use "ALTER TABLE ... ADD INDEX" instead of "CREATE INDEX"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10334">PHPBB3-10334</a>] - Birthday List display not dependent on user privileges</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10335">PHPBB3-10335</a>] - Responses to bots should have extra header to be used by reverse proxies</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10346">PHPBB3-10346</a>] - Add drop_tables key for database updater</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10354">PHPBB3-10354</a>] - When template tests are skipped because cache is not writable, print cache directory path</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10369">PHPBB3-10369</a>] - Change error collector to always report errfile and errline</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10370">PHPBB3-10370</a>] - Various improvements for get_backtrace()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10402">PHPBB3-10402</a>] - Displaying report texts with linebreaks and clickable links</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10419">PHPBB3-10419</a>] - Add mbstring PHP ini parameters checks to ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10430">PHPBB3-10430</a>] - Some typos and the like in docs/coding-guidelines.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8743">PHPBB3-8743</a>] - New topic / reply notifications do not contain author's name.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10050">PHPBB3-10050</a>] - subsilver2: Do not show "Mark topics as read" when there are no topics</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10205">PHPBB3-10205</a>] - More informative reporting of errors when database connection fails (MySQL and others)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10716">PHPBB3-10716</a>] - PHP-parse all php files as part of the test suite</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10841">PHPBB3-10841</a>] - Disable style and language selectors if there's only one installed.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10854">PHPBB3-10854</a>] - sql server drop default constraint when dropping column </li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10865">PHPBB3-10865</a>] - Updated and Added to docs/INSTALL.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10873">PHPBB3-10873</a>] - Change language entry for deleted PMs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10981">PHPBB3-10981</a>] - Upgrade Goutte and use Composer for Installation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11131">PHPBB3-11131</a>] - Phrasing & semantics of Board settings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11162">PHPBB3-11162</a>] - Get rid of $db->sql_return_on_error(true) trickery when splitting/merging topics</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11192">PHPBB3-11192</a>] - Add Tebibyte to get_formatted_filesize()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11202">PHPBB3-11202</a>] - Add response status checks to functional tests</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11220">PHPBB3-11220</a>] - Improve tooltip explaining the [list=] - BBcode</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11238">PHPBB3-11238</a>] - Specify goutte version</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11285">PHPBB3-11285</a>] - Use more granularity in dependency checks in compress test</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11293">PHPBB3-11293</a>] - Prefer mysqli over mysql due to php 5.5 alpha 2 deprecating mysql</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11294">PHPBB3-11294</a>] - Update extension list in running tests doc</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11368">PHPBB3-11368</a>] - Latest pm reports row count</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11583">PHPBB3-11583</a>] - InnoDB supports FULLTEXT index since MySQL 5.6.4.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11740">PHPBB3-11740</a>] - Update link in FAQ to Ideas Centre</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11873">PHPBB3-11873</a>] - Prevent expensive hash computation in phpbb_check_hash() by rejecting very long passwords</li>
|
||||
</ul>
|
||||
<h4>New Feature</h4>
|
||||
<h4>Sub-task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8240">PHPBB3-8240</a>] - Request: db_tools to have two additional functions, table list and column list</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10974">PHPBB3-10974</a>] - Move tests/mock_user.php to tests/mock/user.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11009">PHPBB3-11009</a>] - Backport phing build.xml from develop to develop-olympus so it uses composer.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11540">PHPBB3-11540</a>] - Add unit tests for (phpbb_)is_absolute()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11541">PHPBB3-11541</a>] - Add unit tests for style_select() in functions.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11542">PHPBB3-11542</a>] - Add unit tests for language_select() in functions.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11543">PHPBB3-11543</a>] - Add unit tests for obtain online functions in functions.php</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9689">PHPBB3-9689</a>] - Scripts and utilities</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10003">PHPBB3-10003</a>] - Resolve db_tools proliferation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10313">PHPBB3-10313</a>] - Include slow unit tests when running build script</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10877">PHPBB3-10877</a>] - Have bamboo generate and publish a phpBB package for every build.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11045">PHPBB3-11045</a>] - Add unit tests for the compress class</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11059">PHPBB3-11059</a>] - Fix README logo</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11060">PHPBB3-11060</a>] - Fix travis.yml pyrus config</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11240">PHPBB3-11240</a>] - Turn on PHPUnit's verbose mode on Travis</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11324">PHPBB3-11324</a>] - Add PHP 5.5 environment on Travis-CI</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11337">PHPBB3-11337</a>] - Run functional tests on Travis CI</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11513">PHPBB3-11513</a>] - Install PHPUnit via Composer's require-dev to simplify test running (no need for pear)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11526">PHPBB3-11526</a>] - Increase composer minimum-stability from beta to stable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11527">PHPBB3-11527</a>] - Upgrade composer.phar to 1.0.0-alpha7</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11529">PHPBB3-11529</a>] - Rename RUNNING_TESTS file to .md file to render it on GitHub</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11576">PHPBB3-11576</a>] - Make phpBB Test Suite MySQL behave at least as strict as phpBB MySQL driver</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11671">PHPBB3-11671</a>] - Add phing/phing to composer.json</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11752">PHPBB3-11752</a>] - Update phpBB.com URLs to https in email templates</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11753">PHPBB3-11753</a>] - Upgrade mysql_upgrader.php schema data.</li>
|
||||
</ul>
|
||||
|
||||
<a name="v308"></a><h3>1.ii. Changes since 3.0.8</h3>
|
||||
<a name="v3010"></a><h3>1.ii. Changes since 3.0.10</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7432">PHPBB3-7432</a>] - Unclear language for Inactive Users on ACP main page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8652">PHPBB3-8652</a>] - Duplicate Emails Sent When Subscribed to Forum and Topic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9079">PHPBB3-9079</a>] - Display backtrace on all E_USER_ERROR errors, not only SQL errors (when DEBUG_EXTRA is enabled)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9084">PHPBB3-9084</a>] - Unable to display 'option equal to non entered value' if dropdown CPF is not required</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9089">PHPBB3-9089</a>] - PM message title box not accessible via Tab key</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9220">PHPBB3-9220</a>] - Blue border width when table in a div</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9681">PHPBB3-9681</a>] - Password length not in security settings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9813">PHPBB3-9813</a>] - fulltext_native.php on innodb loading deadly slow for big indexes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9831">PHPBB3-9831</a>] - Cannot change default of Boolean checkbox custom profile field</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10094">PHPBB3-10094</a>] - Clear cache before phpBB installation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10129">PHPBB3-10129</a>] - Missing apostrophes in ACP user management -> permissions</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10349">PHPBB3-10349</a>] - Unit tests do not remove comments from schemas</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10399">PHPBB3-10399</a>] - Special characters aren't parsed in style component variables</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10401">PHPBB3-10401</a>] - auth_ldap has an incorrect return value in login_ldap()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10407">PHPBB3-10407</a>] - Incorrect check for empty image file paths during conversion</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10428">PHPBB3-10428</a>] - optionget/optionset functions in session.php and acp_users.php incorrectly check whether $data is at its default value</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10456">PHPBB3-10456</a>] - Subsilver2 does not define $CAPTCHA_TAB_INDEX</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10508">PHPBB3-10508</a>] - Marking forums as read displays misleading language</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10511">PHPBB3-10511</a>] - Grammar defect in permissions language</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10512">PHPBB3-10512</a>] - Test failure when no default timezone is set in php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10532">PHPBB3-10532</a>] - Out of range $start causes a page with no search results but with pagination</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10538">PHPBB3-10538</a>] - Special character are not correctly parsed for SMTP protocol</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10542">PHPBB3-10542</a>] - Incorrect class="postlink" in styles/subsilver2/template/faq_body.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10546">PHPBB3-10546</a>] - Argument missing for adm_back_link() in acp_captcha.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10561">PHPBB3-10561</a>] - All users can choose deactivated styles.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10569">PHPBB3-10569</a>] - template/ucp_main_front.html does not correctly handle active topic with the name "0"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10580">PHPBB3-10580</a>] - Default tz in registration dropdown not the same as the board default tz</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10589">PHPBB3-10589</a>] - user_birthday does not use table alias in $leap_year_birthdays variable definition</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10605">PHPBB3-10605</a>] - Orpahned privmsgs are left in the prvmsgs table, with no ties in privmsgs_to table</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10606">PHPBB3-10606</a>] - $s_hidden_fields -> incorrect array name (3 files affected)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10611">PHPBB3-10611</a>] - Add a check for selected tables existence for ACP database backup tool</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10615">PHPBB3-10615</a>] - Static calls in utf normalizer yield E_STRICT spam on php 5.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10630">PHPBB3-10630</a>] - Prune Users produced unnecessarily long query; Got a packet bigger than 'max_allowed_packet' bytes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10633">PHPBB3-10633</a>] - Users are able to get the real filename of attachment</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10639">PHPBB3-10639</a>] - negative value of ranks message</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10658">PHPBB3-10658</a>] - Rank-item is not shown on team-list</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10675">PHPBB3-10675</a>] - Use more descriptive message when disk is out of space</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10684">PHPBB3-10684</a>] - Function user_notification() prevents notifications for users with stale bans</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10689">PHPBB3-10689</a>] - Bug in the popup " Find a member" when select by letter.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10691">PHPBB3-10691</a>] - Search index creation CLI script incorrectly calculates indexing speed</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10699">PHPBB3-10699</a>] - Long h2 title breaks div.minitabs in MCP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10708">PHPBB3-10708</a>] - After a conversion, passwords with UTF8 characters do not work when user_pass_convert is set.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10717">PHPBB3-10717</a>] - memberlist_view.html: including admin defined profile fields doesnt work</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10723">PHPBB3-10723</a>] - Do not use SQLite on PHP 5.4 in Tests on Travis</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10731">PHPBB3-10731</a>] - JS function addquote() works incorrectly in Opera</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10751">PHPBB3-10751</a>] - MS SQL Error when searching Admin Log</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10760">PHPBB3-10760</a>] - In pre-commit git hook, syntax error is thrown, but is not specifically described</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10767">PHPBB3-10767</a>] - Git hooks do not work properly with git GUIs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10774">PHPBB3-10774</a>] - db_tools::create_unique_index does not use specified index names on MySQL</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10790">PHPBB3-10790</a>] - Strict comparison on user_id for sending pms</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10797">PHPBB3-10797</a>] - Template var for user rank not filled</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10835">PHPBB3-10835</a>] - Misleading message in UCP when no permission to change password</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10846">PHPBB3-10846</a>] - Missing alias for MAX(post_id) in SQL query in acp_main.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10849">PHPBB3-10849</a>] - Missing BBCode Help Text in subsilver2</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10858">PHPBB3-10858</a>] - $db->sql_fetchfield returns false with mssqlnative</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10860">PHPBB3-10860</a>] - Side-by-side diff styling javascript bug</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10881">PHPBB3-10881</a>] - Some files use 0xA9 as the copyright symbol which is neither ASCII nor the UTF8 copyright symbol.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10887">PHPBB3-10887</a>] - Auto increment tests depend on varbinary handling</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10889">PHPBB3-10889</a>] - Default value for c_char_size in database unit tests is an empty string instead of a char(4)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10890">PHPBB3-10890</a>] - test_sql_fetchrow_returns_false_when_empty() fails on MSSQL and Oracle</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10908">PHPBB3-10908</a>] - No remote avatar size limit results in files limited only by PHP memory limit</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10913">PHPBB3-10913</a>] - Admin is logged out when accessing any url under adm/ without session id</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10441">PHPBB3-10441</a>] - Update to docs/README.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10773">PHPBB3-10773</a>] - ACP phpBB logo needs registered trademark symbol</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10935">PHPBB3-10935</a>] - Limit number of PM rules per user</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10937">PHPBB3-10937</a>] - Comment removal functions: Backward compatibility broken</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10950">PHPBB3-10950</a>] - Deleting user with undelivered PMs causes SQL error</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10952">PHPBB3-10952</a>] - includes/constants.php version number incorrect</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10965">PHPBB3-10965</a>] - Dropdown CPF now shows in profile when no value is selected</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10978">PHPBB3-10978</a>] - Typo in prosilvers ucp_groups_membership.html</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8599">PHPBB3-8599</a>] - Add "Select All" to "Add multiple smilies" screen</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8636">PHPBB3-8636</a>] - Add resync option to topic_view moderation page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9876">PHPBB3-9876</a>] - Names and descriptions for roles "Newly registered User" in "User roles" and "Forum roles" must be different</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9914">PHPBB3-9914</a>] - Add backup warning to Automatic DB Updater</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9916">PHPBB3-9916</a>] - License in header not linking to version 2 of GNU GPL</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10093">PHPBB3-10093</a>] - Make commit-msg hook always not fatal</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10162">PHPBB3-10162</a>] - Allow TLDs over 6 characters in email addresses</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10280">PHPBB3-10280</a>] - Change the ACP user activation display</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10308">PHPBB3-10308</a>] - Disable Retain/Delete Posts selection if the user has no posts.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10453">PHPBB3-10453</a>] - PM viewmessage page is misplacing the online icon</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10492">PHPBB3-10492</a>] - Port functional tests to develop-olympus</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10507">PHPBB3-10507</a>] - Sort installed styles list in admin control panel - styles</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10550">PHPBB3-10550</a>] - Sort not installed styles list in admin control panel - styles</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10563">PHPBB3-10563</a>] - ACP usability improvement: show deactivated styles below active styles in styles list</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10565">PHPBB3-10565</a>] - Performance: Unneeded GROUP BY in update_forum_tracking_info</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10607">PHPBB3-10607</a>] - phpBB Credit Line Hardcoded</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10653">PHPBB3-10653</a>] - Add ability to count table rows to database abstraction layer</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10730">PHPBB3-10730</a>] - Add label tags around "select" text in post splitting UI in MCP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10764">PHPBB3-10764</a>] - FAQ mentions SourceForge</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10812">PHPBB3-10812</a>] - Installer should not display register globals UI for php 5.4+</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10815">PHPBB3-10815</a>] - Enable Feeds by default</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10819">PHPBB3-10819</a>] - Improve side-by-side diff styling</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10834">PHPBB3-10834</a>] - Backport general development language changes in readme files</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10836">PHPBB3-10836</a>] - Enable Avatars by default</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10891">PHPBB3-10891</a>] - Allow specifying test config file name via environment variable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10892">PHPBB3-10892</a>] - Cosmetic improvements to RUNNING_TESTS.txt</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10898">PHPBB3-10898</a>] - Do not write ?> into config.php to avoid whitespace output</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10925">PHPBB3-10925</a>] - Clarify that SQLite3 is not supported for phpBB 3.0.x</li>
|
||||
</ul>
|
||||
<h4>New Feature</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10616">PHPBB3-10616</a>] - Add template inheritance by default</li>
|
||||
</ul>
|
||||
<h4>Sub-task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10907">PHPBB3-10907</a>] - Mark (var)binary tests as incomplete on non-MySQL DBMSes</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9896">PHPBB3-9896</a>] - Update links in docs/readme.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10434">PHPBB3-10434</a>] - Add a script that allows creating a search index from CLI</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10455">PHPBB3-10455</a>] - Remove NOTE from header files</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10694">PHPBB3-10694</a>] - Update notification in ACP (Olympus) for increase of minimum PHP version to 5.3.2</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10718">PHPBB3-10718</a>] - Add Travis CI</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10788">PHPBB3-10788</a>] - Update docs/AUTHORS for 3.0.11-RC1</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10909">PHPBB3-10909</a>] - Update Travis Test Configuration: Travis no longer supports PHP 5.3.2</li>
|
||||
</ul>
|
||||
|
||||
<a name="v309"></a><h3>1.iii. Changes since 3.0.9</h3>
|
||||
|
||||
<h4>Bug</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-5506">PHPBB3-5506</a>] - Deleting all items from last page results in empty list display</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-6458">PHPBB3-6458</a>] - Width of Topics and Posts columns in Board Index is causing problems with language packs</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7138">PHPBB3-7138</a>] - Cannot display simple header/footer with trigger_error()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7291">PHPBB3-7291</a>] - Broken links of char selection in memberlist</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7932">PHPBB3-7932</a>] - Fix font size in select boxes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8094">PHPBB3-8094</a>] - Text in the forums.php and install.php not matching</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8173">PHPBB3-8173</a>] - Redundant BBCode helpline in JS</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8177">PHPBB3-8177</a>] - February 29th birthdays not shown in non-leap year</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8571">PHPBB3-8571</a>] - Users can make their age a negative number on memberlist</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8691">PHPBB3-8691</a>] - Error creating log_time index</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8937">PHPBB3-8937</a>] - Code tags - single space indent</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9008">PHPBB3-9008</a>] - Incorrect unread topic tracking for unapproved topics</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9066">PHPBB3-9066</a>] - Invalid Prefix Names Allowed</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9416">PHPBB3-9416</a>] - HTML entities in poll titles and options incorrectly re-encoded</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9525">PHPBB3-9525</a>] - Minimum characters per post/message should never be '0'</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9645">PHPBB3-9645</a>] - XHTML error on phpinfo page in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9776">PHPBB3-9776</a>] - When deleting and recreating a poll, old options aren't deleted and reappear with the new ones</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9956">PHPBB3-9956</a>] - No error message displayed when disapprove reason is invalid or empty</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9976">PHPBB3-9976</a>] - Direct post links open the wrong page of viewtopic when multiple posts are posted in the same second</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9978">PHPBB3-9978</a>] - Missing semicolons in // <![CDATA[ part of overall_header.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10087">PHPBB3-10087</a>] - Limited browser support for ban exclusion emphasis</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10157">PHPBB3-10157</a>] - Missing error handling when a custom profile field is not defined for current language</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10166">PHPBB3-10166</a>] - Post-admin activation email confusingly refers to username</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10187">PHPBB3-10187</a>] - XHTML error in ucp_groups_manage.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10190">PHPBB3-10190</a>] - Misleading information about permissions displayed after editing forum settings</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10212">PHPBB3-10212</a>] - Captcha not displayed when username not exists</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10216">PHPBB3-10216</a>] - Updater's failed query language grammatically incorrect</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10226">PHPBB3-10226</a>] - Mysqli dbal extension does not allow connection via pipes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10227">PHPBB3-10227</a>] - Mysqli dbal extension does not allow persistent connection for PHP >= 5.3.0</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10237">PHPBB3-10237</a>] - Unwatching a forum/topic does not check for correct hash parameter</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10240">PHPBB3-10240</a>] - Word filter evasion</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10253">PHPBB3-10253</a>] - IE9 Quote problem</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10255">PHPBB3-10255</a>] - gitignore ignores too much</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10257">PHPBB3-10257</a>] - AAAA record parsing fails on older versions of Windows</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10259">PHPBB3-10259</a>] - Incorrect email on joining Open group</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10265">PHPBB3-10265</a>] - Unit test tests/random/mt_rand.php is not run because of missing _test suffix.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10266">PHPBB3-10266</a>] - Poor navigation links after reporting a post</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10267">PHPBB3-10267</a>] - Missing strlen() on $table_prefix in db tools index name length check</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10274">PHPBB3-10274</a>] - Hardcoded module ID in "Re-check version" link on ACP front page</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10275">PHPBB3-10275</a>] - Wrong information about sent passwords in FAQ</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10292">PHPBB3-10292</a>] - Whitespace inconsistency in acp_ranks</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10293">PHPBB3-10293</a>] - Jumpbox allows jumping to invalid forums in prosilver</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10294">PHPBB3-10294</a>] - sqlsrv_rows_affected non-functional in MSSQLNative.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10296">PHPBB3-10296</a>] - incorrect cross join in SQL Server</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10298">PHPBB3-10298</a>] - EMBED Tag Not Closed Properly In subSilver2 attachment.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10299">PHPBB3-10299</a>] - Typo in comment about $max_store_length in truncate_string() (in functions_content.php)</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10303">PHPBB3-10303</a>] - send_status_line() doesn't validate user input</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10304">PHPBB3-10304</a>] - Bad url in U_ICQ on /ucp_mp_viewmessage.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10307">PHPBB3-10307</a>] - Return value of $db->sql_fetchrow() on empty tables is not consistent</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10309">PHPBB3-10309</a>] - Utf tests download data into temporary locations deep in source tree</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10320">PHPBB3-10320</a>] - "Most active topic" can leak topic title of topics in password-protected forums</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10321">PHPBB3-10321</a>] - Link to page 1 of the Memberlist has a useless question mark at the end</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10324">PHPBB3-10324</a>] - XHTML error in Prosilver - MCP - User Notes</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10339">PHPBB3-10339</a>] - Typo in prosilver's mcp_front.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10341">PHPBB3-10341</a>] - Topic title of "0" does not show as "Most active topic"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10351">PHPBB3-10351</a>] - Invalid syntax for Oracle's sql_column_remove()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10352">PHPBB3-10352</a>] - Missing break for Oracle's sql_table_drop()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10365">PHPBB3-10365</a>] - Moderators can view forbidden information</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10377">PHPBB3-10377</a>] - All moderators can change topic type</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10394">PHPBB3-10394</a>] - Tests use call-time pass by reference which results in Fatal error on PHP 5.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10397">PHPBB3-10397</a>] - Pagination code inconsistency </li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10400">PHPBB3-10400</a>] - '0' (zero) not allowed as forum name</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10413">PHPBB3-10413</a>] - Make create_schema_files usable</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10416">PHPBB3-10416</a>] - Use dbport in phpbb_database_test_connection_manager::connect()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10420">PHPBB3-10420</a>] - Update startup to account for PHP 5.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10421">PHPBB3-10421</a>] - Interchanged parameters in includes/acp/acp_users.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10422">PHPBB3-10422</a>] - Unnecessary <!-- IF --> statement in viewtopic_body.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10435">PHPBB3-10435</a>] - Topic count mismatch on viewforum</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10437">PHPBB3-10437</a>] - Announcements on moderation queue are not hidden</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10446">PHPBB3-10446</a>] - Unencoded 8bit characters in email headers</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10452">PHPBB3-10452</a>] - XHTML error when printing a PM</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10461">PHPBB3-10461</a>] - MCP's recent actions list is empty</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10479">PHPBB3-10479</a>] - Remove PostgreSQL version numbers from driver's language string</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10485">PHPBB3-10485</a>] - XHTML error in Prosilver - index and viewforum</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10488">PHPBB3-10488</a>] - Database updater for 3.0.10-RC1 overwrites config variable email_max_chunk_size without checking for custom value</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10497">PHPBB3-10497</a>] - SQL error when guest visits forum with unread topic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10319">PHPBB3-10319</a>] - Missing hidden fields in search form</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10501">PHPBB3-10501</a>] - Description of table prefix is wrong</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10502">PHPBB3-10502</a>] - CHANGELOG.html has a typo: 'red' should be 'read'.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10503">PHPBB3-10503</a>] - Debug error when previewing edits</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10504">PHPBB3-10504</a>] - MCP Layout STILL broken in ProSilver when screen is resized to less 1200 pixels</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10531">PHPBB3-10531</a>] - Last remaining style can be uninstalled</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8616">PHPBB3-8616</a>] - Add direct link to PM to notification message</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9036">PHPBB3-9036</a>] - Forums that can be listed but not read expose forum information</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9297">PHPBB3-9297</a>] - Add support for Extended Passive Mode (EPSV) in class ftp_fsock to better support IPv6 connections.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9307">PHPBB3-9307</a>] - Mass email $max_chunk_size</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9361">PHPBB3-9361</a>] - Edit account settings - Improved clarification needed</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9778">PHPBB3-9778</a>] - Member Search from the Admin Control Panel is not Intuitive</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9898">PHPBB3-9898</a>] - Readme needs updating to reflect more opening for patches</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9995">PHPBB3-9995</a>] - Unnecessary coding in display_forums() in functions_display.php</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10032">PHPBB3-10032</a>] - BBCode Add List Item Control Name Contains Typo</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10074">PHPBB3-10074</a>] - Change default value of 'Set as special rank' to No for Add new rank</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10185">PHPBB3-10185</a>] - Board startdate not being set</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10189">PHPBB3-10189</a>] - Add "automatically generated" comment into schema-files.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10199">PHPBB3-10199</a>] - Performance: viewtopic has a useless join</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10222">PHPBB3-10222</a>] - Also build language and styles changes in diff/patch format</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10239">PHPBB3-10239</a>] - Add "Are you sure" confirmation to backup restore in ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10243">PHPBB3-10243</a>] - Add gmgetdate() wrapper for getdate() which returns dates in UTC.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10245">PHPBB3-10245</a>] - Messenger uses output buffering for error collection, should use error collector instead</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10246">PHPBB3-10246</a>] - Remove VCS section from docs/coding-guidelines.html</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10254">PHPBB3-10254</a>] - Remove style names from themes and fix some information on it</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10263">PHPBB3-10263</a>] - Add phpbb_version_compare() wrapper for version_compare()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10278">PHPBB3-10278</a>] - Improve timeout handling in get_remote_file()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10315">PHPBB3-10315</a>] - Radio Buttons in ACP are clipped in Safari - Fix suggested</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10327">PHPBB3-10327</a>] - Use "ALTER TABLE ... ADD INDEX" instead of "CREATE INDEX"</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10334">PHPBB3-10334</a>] - Birthday List display not dependent on user privileges</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10335">PHPBB3-10335</a>] - Responses to bots should have extra header to be used by reverse proxies</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10346">PHPBB3-10346</a>] - Add drop_tables key for database updater</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10354">PHPBB3-10354</a>] - When template tests are skipped because cache is not writable, print cache directory path</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10369">PHPBB3-10369</a>] - Change error collector to always report errfile and errline</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10370">PHPBB3-10370</a>] - Various improvements for get_backtrace()</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10402">PHPBB3-10402</a>] - Displaying report texts with linebreaks and clickable links</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10419">PHPBB3-10419</a>] - Add mbstring PHP ini parameters checks to ACP</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10430">PHPBB3-10430</a>] - Some typos and the like in docs/coding-guidelines.html</li>
|
||||
</ul>
|
||||
<h4>New Feature</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8240">PHPBB3-8240</a>] - Request: db_tools to have two additional functions, table list and column list</li>
|
||||
</ul>
|
||||
<h4>Task</h4>
|
||||
<ul>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9689">PHPBB3-9689</a>] - Scripts and utilities</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10003">PHPBB3-10003</a>] - Resolve db_tools proliferation</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10313">PHPBB3-10313</a>] - Include slow unit tests when running build script</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10483">PHPBB3-10483</a>] - Test suite does not run with MySQL strict mode</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10486">PHPBB3-10486</a>] - Create git shortlog and git diff --stat in build script</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10480">PHPBB3-10480</a>] - Automate changelog building</li>
|
||||
</ul>
|
||||
|
||||
<a name="v308"></a><h3>1.iv. Changes since 3.0.8</h3>
|
||||
|
||||
<h4> Bug
|
||||
</h4>
|
||||
@@ -584,7 +877,7 @@
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v307-PL1"></a><h3>1.iii. Changes since 3.0.7-PL1</h3>
|
||||
<a name="v307-PL1"></a><h3>1.v. Changes since 3.0.7-PL1</h3>
|
||||
<h4> Security
|
||||
</h4>
|
||||
<ul>
|
||||
@@ -1042,13 +1335,13 @@
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="v307"></a><h3>1.iiv. Changes since 3.0.7</h3>
|
||||
<a name="v307"></a><h3>1.vi. Changes since 3.0.7</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Sec] Do not expose forum content of forums with ACL entries but no actual permission in ATOM Feeds. (Bug #58595)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v306"></a><h3>1.v. Changes since 3.0.6</h3>
|
||||
<a name="v306"></a><h3>1.vii. Changes since 3.0.6</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Allow ban reason and length to be selected and copied in ACP and subsilver2 MCP. (Bug #51095)</li>
|
||||
@@ -1152,7 +1445,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
<a name="v305"></a><h3>1.vi. Changes since 3.0.5</h3>
|
||||
<a name="v305"></a><h3>1.viii. Changes since 3.0.5</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Allow whitespaces in avatar gallery names. (Bug #44955)</li>
|
||||
@@ -1374,7 +1667,7 @@
|
||||
<li>[Feature] Send anonymous statistical information to phpBB on installation and update (optional).</li>
|
||||
</ul>
|
||||
|
||||
<a name="v304"></a><h3>1.vii. Changes since 3.0.4</h3>
|
||||
<a name="v304"></a><h3>1.ix. Changes since 3.0.4</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Delete user entry from ban list table upon user deletion (Bug #40015 - Patch by TerraFrost)</li>
|
||||
@@ -1463,7 +1756,7 @@
|
||||
<li>[Sec] Only use forum id supplied for posting if global announcement detected. (Reported by nickvergessen)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v303"></a><h3>1.viii. Changes since 3.0.3</h3>
|
||||
<a name="v303"></a><h3>1.x. Changes since 3.0.3</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Allow mixed-case template directories to be inherited (Bug #36725)</li>
|
||||
@@ -1495,7 +1788,7 @@
|
||||
<li>[Sec] Ask for forum password if post within passworded forum quoted in private message. (Reported by nickvergessen)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v302"></a><h3>1.ix. Changes since 3.0.2</h3>
|
||||
<a name="v302"></a><h3>1.xi. Changes since 3.0.2</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Correctly set topic starter if first post in topic removed (Bug #30575 - Patch by blueray2048)</li>
|
||||
@@ -1594,7 +1887,7 @@
|
||||
<li>[Sec Precaution] Stricter validation of the HTTP_HOST header (Thanks to Techie-Micheal et al for pointing out possible issues in derived code)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v301"></a><h3>1.x. Changes since 3.0.1</h3>
|
||||
<a name="v301"></a><h3>1.xii. Changes since 3.0.1</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Ability to set permissions on non-mysql dbms (Bug #24955)</li>
|
||||
@@ -1642,7 +1935,7 @@
|
||||
<li>[Sec] Only allow urls gone through redirect() being used within login_box(). (thanks nookieman)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v300"></a><h3>1.xi Changes since 3.0.0</h3>
|
||||
<a name="v300"></a><h3>1.xiii Changes since 3.0.0</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Change] Validate birthdays (Bug #15004)</li>
|
||||
@@ -1713,7 +2006,7 @@
|
||||
<li>[Fix] Find and display colliding usernames correctly when converting from one database to another (Bug #23925)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc8"></a><h3>1.xii. Changes since 3.0.RC8</h3>
|
||||
<a name="v30rc8"></a><h3>1.xiv. Changes since 3.0.RC8</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Cleaned usernames contain only single spaces, so "a_name" and "a__name" are treated as the same name (Bug #15634)</li>
|
||||
@@ -1722,7 +2015,7 @@
|
||||
<li>[Fix] Call garbage_collection() within database updater to correctly close connections (affects Oracle for example)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc7"></a><h3>1.xiii. Changes since 3.0.RC7</h3>
|
||||
<a name="v30rc7"></a><h3>1.xv. Changes since 3.0.RC7</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Fixed MSSQL related bug in the update system</li>
|
||||
@@ -1757,7 +2050,7 @@
|
||||
<li>[Fix] No duplication of active topics (Bug #15474)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc6"></a><h3>1.xiv. Changes since 3.0.RC6</h3>
|
||||
<a name="v30rc6"></a><h3>1.xvi. Changes since 3.0.RC6</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Submitting language changes using acp_language (Bug #14736)</li>
|
||||
@@ -1767,7 +2060,7 @@
|
||||
<li>[Fix] Able to request new password (Bug #14743)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc5"></a><h3>1.xv. Changes since 3.0.RC5</h3>
|
||||
<a name="v30rc5"></a><h3>1.xvii. Changes since 3.0.RC5</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Feature] Removing constant PHPBB_EMBEDDED in favor of using an exit_handler(); the constant was meant to achive this more or less.</li>
|
||||
@@ -1830,7 +2123,7 @@
|
||||
<li>[Sec] New password hashing mechanism for storing passwords (#i42)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc4"></a><h3>1.xvi. Changes since 3.0.RC4</h3>
|
||||
<a name="v30rc4"></a><h3>1.xviii. Changes since 3.0.RC4</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] MySQL, PostgreSQL and SQLite related database fixes (Bug #13862)</li>
|
||||
@@ -1881,7 +2174,7 @@
|
||||
<li>[Fix] odbc_autocommit causing existing result sets to be dropped (Bug #14182)</li>
|
||||
</ul>
|
||||
|
||||
<a name="v30rc3"></a><h3>1.xvii. Changes since 3.0.RC3</h3>
|
||||
<a name="v30rc3"></a><h3>1.xix. Changes since 3.0.RC3</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Fixing some subsilver2 and prosilver style issues</li>
|
||||
@@ -1990,7 +2283,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
<a name="v30rc2"></a><h3>1.xviii. Changes since 3.0.RC2</h3>
|
||||
<a name="v30rc2"></a><h3>1.xx. Changes since 3.0.RC2</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] Re-allow searching within the memberlist</li>
|
||||
@@ -2036,7 +2329,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
<a name="v30rc1"></a><h3>1.xix. Changes since 3.0.RC1</h3>
|
||||
<a name="v30rc1"></a><h3>1.xxi. Changes since 3.0.RC1</h3>
|
||||
|
||||
<ul>
|
||||
<li>[Fix] (X)HTML issues within the templates (Bug #11255, #11255)</li>
|
||||
@@ -2171,7 +2464,7 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-license.php">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@@ -89,7 +89,7 @@
|
||||
|
||||
<p>There are people, companies (unrelated to your hosting provider), etc. that will install your forum, either for free or for a payment. We do not recommend you make use of these offers. Unless the service is provided by your hosting company you will have to divulge passwords and other sensitive details. If you did not know how to use an ATM would you give a passer-by your bank card and PIN and ask them to show you what to do? No, probably not! The same applies to your hosting account details!</p>
|
||||
|
||||
<p>We think a better solution is for you to carefully read the enclosed documentation, read through our knowledge base at <a href="http://www.phpbb.com/">www.phpbb.com</a> and if necessary ask for help on any thing you get stuck on. However, the decision is yours but please note we may not offer support if we believe you have had the board installed by a third party. In such cases you should direct your questions to that company or person/s.</p>
|
||||
<p>We think a better solution is for you to carefully read the enclosed documentation, read through our knowledge base at <a href="https://www.phpbb.com/">www.phpbb.com</a> and if necessary ask for help on any thing you get stuck on. However, the decision is yours but please note we may not offer support if we believe you have had the board installed by a third party. In such cases you should direct your questions to that company or person/s.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -110,7 +110,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>We provide the software, we have absolutely nothing to do with any board that runs it (beyond phpbb.com of course!) and we also do not host any site. The GPL grants the user an unlimited right of use subject to their adherence of that licence. Therefore we cannot prevent, dictate, control or otherwise limit the use of phpBB software. So please do not contact us for such matters.</p>
|
||||
<p>We provide the software, we have absolutely nothing to do with any board that runs it (beyond phpbb.com of course!) and we also do not host any site. The GPL grants the user an unlimited right of use subject to their adherence of that license. Therefore we cannot prevent, dictate, control or otherwise limit the use of phpBB software. So please do not contact us for such matters.</p>
|
||||
|
||||
<p>If you have a problem with a given board please take it up with them, not us. We are not and cannot be held legally responsible for any third party use of this software (much like Microsoft et al cannot be held responsible for the use of Windows in illegal activities, etc.). Additionally we do <strong>not</strong> track the use of phpBB software in any way. So please do not ask us for details on a "given" board we will not be able to help you. If any law firms or lawyers out there send us writs, cease and desist orders, etc. for third party website use of this software we reserve the right to charge for time wasted dealing with such issues...</p>
|
||||
|
||||
@@ -150,7 +150,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This error will occur if phpBB cannot send mail. phpBB can send email two ways; using the PHP <code>mail()</code> function or directly via SMTP. Some hosting providers limit the <code>mail()</code> function to prevent its use in spamming, others may rename it or limit its functionality. If the <code>mail()</code> function got renamed, you are able to enter the correct name within the administration control panel. In either case you may need to make use of SMTP. This requires that you have access to such a facility, e.g. your hosting provider may provide one (perhaps requiring specific written authorisation), etc. Please see <a href="http://www.phpbb.com/">www.phpbb.com</a> for additional help on this matter.</p>
|
||||
<p>This error will occur if phpBB cannot send mail. phpBB can send email two ways; using the PHP <code>mail()</code> function or directly via SMTP. Some hosting providers limit the <code>mail()</code> function to prevent its use in spamming, others may rename it or limit its functionality. If the <code>mail()</code> function got renamed, you are able to enter the correct name within the administration control panel. In either case you may need to make use of SMTP. This requires that you have access to such a facility, e.g. your hosting provider may provide one (perhaps requiring specific written authorisation), etc. Please see <a href="https://www.phpbb.com/">www.phpbb.com</a> for additional help on this matter.</p>
|
||||
|
||||
<p>If you do require SMTP services please do not ask (on our forums or elsewhere) for someone to provide you with one. Open relays are now things of the past thanks to the unthinking spammers out there. Therefore you are unlikely to find someone willing to offer you (free) services.</p>
|
||||
|
||||
@@ -250,7 +250,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Please read the paragraph about permissions in our extensive <a href="http://www.phpbb.com/support/documentation/3.0/">online documentation</a>.</p>
|
||||
<p>Please read the paragraph about permissions in our extensive <a href="https://www.phpbb.com/support/documentation/3.0/">online documentation</a>.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -306,11 +306,11 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Please read our <a href="http://www.phpbb.com/support/documentation/3.0/">extensive user documentation</a> first, it may just explain what you want to know.</p>
|
||||
<p>Please read our <a href="https://www.phpbb.com/support/documentation/3.0/">extensive user documentation</a> first, it may just explain what you want to know.</p>
|
||||
|
||||
<p>Feel free to search our community forum for the information you require. <strong>PLEASE DO NOT</strong> post your question without having first used search, chances are someone has already asked and answered your question. You can find our board here:</p>
|
||||
|
||||
<p><a href="http://www.phpbb.com">www.phpbb.com</a></p>
|
||||
<p><a href="https://www.phpbb.com">www.phpbb.com</a></p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -328,7 +328,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-license.php">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@@ -46,7 +46,7 @@
|
||||
|
||||
<p>This document will walk you through the basics on installing, updating and converting the forum software.</p>
|
||||
|
||||
<p>A basic overview of running phpBB3 can be found in the accompanying <a href="README.html">README</a> file. Please ensure you read that document in addition to this! For more detailed information on using, installing, updating and converting phpBB3 you should read <a href="http://www.phpbb.com/support/documentation/3.0/">the documentation</a> available online.</p>
|
||||
<p>A basic overview of running phpBB3 can be found in the accompanying <a href="README.html">README</a> file. Please ensure you read that document in addition to this! For more detailed information on using, installing, updating and converting phpBB3 you should read <a href="https://www.phpbb.com/support/documentation/3.0/">the documentation</a> available online.</p>
|
||||
|
||||
<h1>Install</h1>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<li><a href="#update">Updating from stable releases of phpBB 3.0.x</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#update_full">Full package</a></li>
|
||||
<li><a href="#update_files">Changed files only</a></li>
|
||||
<li><a href="#update_files">Changed files</a></li>
|
||||
<li><a href="#update_patch">Patch file</a></li>
|
||||
<li><a href="#update_auto">Automatic update package</a></li>
|
||||
<li><a href="#update_all">All package types</a></li>
|
||||
@@ -82,7 +82,8 @@
|
||||
<li><a href="#webserver_configuration">Webserver configuration</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><a href="#disclaimer">Disclaimer</a></li>
|
||||
<li><a href="#anti_spam">Anti-Spam Measures</a></li>
|
||||
<li><a href="#disclaimer">Copyright and disclaimer</a></li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
@@ -107,10 +108,10 @@
|
||||
<li>Change the permissions on config.php to be writable by all (666 or -rw-rw-rw- within your FTP Client)</li>
|
||||
<li>Change the permissions on the following directories to be writable by all (777 or -rwxrwxrwx within your FTP Client):<br />
|
||||
<code>store/</code>, <code>cache/</code>, <code>files/</code> and <code>images/avatars/upload/</code>.</li>
|
||||
<li>Using your web browser visit the location you placed phpBB3 with the addition of install/index.php or pointing directly to install/, e.g. http://www.mydomain.com/phpBB3/install/, http://www.mydomain.com/forum/install/ etc.</li>
|
||||
<li>Click the <em>INSTALL</em> tab, follow the steps and fill out all the requested information.</li>
|
||||
<li>Point your web browser to the location where you uploaded the phpBB3 files with the addition of <code>install/index.php</code> or simply <code>install/</code>, e.g. <code>http://www.example.com/phpBB3/install/index.php</code>, <code>http://www.example.com/forum/install/</code>.</li>
|
||||
<li>Click the <strong><em>INSTALL</em></strong> tab, follow the steps and fill out all the requested information.</li>
|
||||
<li>Change the permissions on config.php to be writable only by yourself (644 or -rw-r--r-- within your FTP Client)</li>
|
||||
<li>phpBB3 should now be available, please <strong>MAKE SURE</strong> you read at least <a href="#postinstall">Section 6</a> below for important, security related post-installation instructions.</li>
|
||||
<li>phpBB3 should now be available, please <strong>MAKE SURE</strong> you read at least <a href="#postinstall">Section 6</a> below for important, security related post-installation instructions, and also take note of <a href="#anti_spam">Section 7</a> regarding anti-spam measures.</li>
|
||||
</ol>
|
||||
|
||||
<p>If you experienced problems or do not know how to proceed with any of the steps above please read the rest of this document.</p>
|
||||
@@ -131,7 +132,7 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>phpBB3 has a few requirements which must be met before you are able to install and use it.</p>
|
||||
<p>phpBB 3.0.x has a few requirements which must be met before you are able to install and use it.</p>
|
||||
|
||||
<ul>
|
||||
<li>A webserver or web hosting account running on any major Operating System with support for PHP</li>
|
||||
@@ -139,15 +140,15 @@
|
||||
<ul>
|
||||
<li>MySQL 3.23 or above (MySQLi supported)</li>
|
||||
<li>PostgreSQL 7.3+</li>
|
||||
<li>SQLite 2.8.2+</li>
|
||||
<li>SQLite 2.8.2+ (SQLite 3 is not supported)</li>
|
||||
<li>Firebird 2.1+</li>
|
||||
<li>MS SQL Server 2000 or above (directly or via ODBC)</li>
|
||||
<li>MS SQL Server 2000 or above (directly or via ODBC or the native adapter)</li>
|
||||
<li>Oracle</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>PHP 4.3.3+ (>=4.3.3, >4.4.x, >5.x.x, >6.0-dev (compatible))</strong> with support for the database you intend to use.</li>
|
||||
<li>getimagesize() function need to be enabled.</li>
|
||||
<li>These optional presence of the following modules within PHP will provide access to additional features, but they are not required.
|
||||
<li><strong>PHP (>=4.3.3, >=4.4.0, >=5.0.0)</strong> with support for the database you intend to use.</li>
|
||||
<li>getimagesize() function must be enabled.</li>
|
||||
<li>Presence of the following modules within PHP will provide access to additional features, but they are not required:
|
||||
<ul>
|
||||
<li>zlib Compression support</li>
|
||||
<li>Remote FTP support</li>
|
||||
@@ -158,7 +159,7 @@
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>If your server or hosting account does not meet the requirements above we are afraid phpBB3 is not for you.</p>
|
||||
<p>If your server or hosting account does not meet the requirements above then you will be unable to install phpBB 3.0.x.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -178,21 +179,21 @@
|
||||
|
||||
<p>Installation of phpBB3 will vary according to your server and database. If you have <em>shell access</em> to your account (via telnet or ssh for example) you may want to upload the entire phpBB3 archive (in binary mode!) to a directory on your host and unarchive it there.</p>
|
||||
|
||||
<p>If you do not have shell access or do not wish to use it you will need to decompress the phpBB3 archive to a local directory on your system using your favourite compression program, e.g. winzip, rar, zip, etc. From there you must FTP <strong>ALL</strong> the files it contains (being sure to retain the directory structure and filenames) to your host. Please ensure that the cases of filenames are retained, do <strong>NOT</strong> force filenames to all lower or upper case doing so will cause errors later.</p>
|
||||
<p>If you do not have shell access or do not wish to use it, you will need to decompress the phpBB3 archive to a local directory on your system using your favourite compression program, e.g. winzip, rar, zip, etc. From there you must FTP <strong>ALL</strong> the files it contains (being sure to retain the directory structure and filenames) to your host. Please ensure that the cases of filenames are retained, do <strong>NOT</strong> force filenames to all lower or upper case as doing so will cause errors later.</p>
|
||||
|
||||
<p>All .php, .inc, .sql, .cfg, .html and .txt files should be uploaded in <strong>ASCII</strong> mode, while all graphics should be uploaded in <strong>BINARY</strong> mode. If you are unfamiliar with what this means please refer to your FTP client documentation. In most cases this is all handled transparantly by your ftp client but if you encounter problems later you should be sure the files where uploaded correctly as described here.</p>
|
||||
<p>All .php, .sql, .cfg, .css, .js, .html, .htaccess and .txt files should be uploaded in <strong>ASCII</strong> mode, while all graphics should be uploaded in <strong>BINARY</strong> mode. If you are unfamiliar with what this means please refer to your FTP client documentation. In most cases this is all handled transparantly by your ftp client, but if you encounter problems later you should be sure the files were uploaded correctly as described here.</p>
|
||||
|
||||
<p>phpBB3 comes supplied with english as its standard language. However a number of separate packs for different languages are available. If you are not a native english speaker you may wish to install one or more of these packages before continuing. The installation process below will allow you to select a default language from those available (you can of course change this default at a later stage). For more details of language packs, where to obtain them and how to install them please see the <a href="README.html#i18n">README</a>.</p>
|
||||
<p>phpBB3 comes supplied with British English as its standard language. However, a number of separate packs for different languages are available. If you are not a native English speaker you may wish to install one or more of these packages before continuing. The installation process below will allow you to select a default language from those available (you can, of course, change this default at a later stage). For more details on language packs, where to obtain them and how to install them please see the <a href="README.html#i18n">README</a>.</p>
|
||||
|
||||
<p>Once all the files have been uploaded to your site you should point your browser at this location with the addition of <code>install/</code>. For example if your domain name is <em>www.mydomain.tld</em> and you placed phpBB3 in a directory /phpBB3 off your web root you would enter <em>http://www.mydomain.tld/phpBB3/install/</em> or (alternatively) <em>http://www.mydomain.tld/phpBB3/install/index.php</em> into your browser. When you have done this you should see the phpBB3 Installation screen appear.</p>
|
||||
<p>Once all the files have been uploaded to your site, you should point your browser at this location with the addition of <code>/install/</code>. For example, if your domain name is <code>www.example.com</code> and you placed the phpBB3 files in the directory <code>/phpBB3</code> off your web root you would enter <code>http://www.example.com/phpBB3/install/</code> or (alternatively) <code>http://www.example.com/phpBB3/install/index.php</code> into your browser. When you have done this, you should see the <strong><em>phpBB3 Introduction</em></strong> screen appear.</p>
|
||||
|
||||
<h4>Introduction:</h4>
|
||||
|
||||
<p>The installation screen gives you a short introduction into phpBB. It allows you to read the license phpBB3 is released under (General Public License) and provides information about how you can receive support. To start the installation, use the <em>Install</em> button.</p>
|
||||
<p>The initial screen gives you a short introduction into phpBB. It allows you to read the license phpBB3 is released under (General Public License v2) and provides information about how you can receive support. To start the installation, use the <strong><em>INSTALL</em></strong> tab.</p>
|
||||
|
||||
<h4>Requirements</h4>
|
||||
|
||||
<p>The first page you will see after starting the installation is the Requirements list. phpBB3 checks automatically whether everything that it needs to run properly is installed on your server. You need to have at least the minimum PHP version installed, and at least one database available to continue the installation. Also important, is that all shown folders are available and do have the correct permissions. Please see the description of each section to find out whether they are optional or required for phpBB3 to run. If everything is in order, you can continue the installation with <em>Start Install</em>.</p>
|
||||
<p>The first page you will see after starting the installation is the Requirements list. phpBB3 automatically checks whether everything that it needs to run properly is installed on your server. You need to have at least the minimum PHP version installed, and at least one database available to continue the installation. Also important, is that all shown folders are available and have the correct permissions. Please see the description of each section to find out whether they are optional or required for phpBB3 to run. If everything is in order, you can continue the installation with <em>Start Install</em>.</p>
|
||||
|
||||
<h4>Database settings</h4>
|
||||
|
||||
@@ -210,33 +211,33 @@
|
||||
<p><strong>Note:</strong> if you are installing using SQLite, you should enter the full path to your database file in the DSN field and leave the username and password fields blank. For security reasons, you should make sure that the database file is not stored in a location accessible from the web.</p>
|
||||
</div>
|
||||
|
||||
<p>You don't need to change the Prefix for tables in database setting, unless you plan on using multipe phpBB installations on one database. In this case you can use a different prefix for each installation to make it work.</p>
|
||||
<p>You don't need to change the Prefix for tables in database setting, unless you plan on using multipe phpBB installations on one database. In this case, you can use a different prefix for each installation to make it work.</p>
|
||||
|
||||
<p>After you entered your details, you can continue with the Proceed to next step button. Now phpBB3 will check whether the data you entered will lead to a successful database connection and whether tables with the same prefix already exist.</p>
|
||||
<p>After you entered your details, you can continue with the <em>Proceed to next step</em> button. Now phpBB3 will check whether the data you entered will lead to a successful database connection and whether tables with the same prefix already exist.</p>
|
||||
|
||||
<p>A <em>Could not connect to the database</em> error means that you didn't enter the database data correctly and it is not possible for phpBB to connect. Make sure that everything you entered is in order and try again. Again, if you are unsure about your database settings, please contact your host.</p>
|
||||
|
||||
<p>If you installed another version of phpBB before on the same database with the same prefix, phpBB will inform you and you just need to enter a different database prefix.</p>
|
||||
|
||||
<p>If you see the Successful Connection message, you can continue to the next step.</p>
|
||||
<p>If you see the <em>Successful Connection</em> message, you can continue to the next step.</p>
|
||||
|
||||
<h4>Administrator details</h4>
|
||||
|
||||
<p>Now you have to create your administration user. This user will have full administration access and he/she will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB3 installation we only include English. You can download further languages from <a href="http://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p>
|
||||
<p>Now you have to create your administration user. This user will have full administration access and he/she will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB3 installation, we only include British English. You can download further languages from <a href="https://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p>
|
||||
|
||||
<h4>Configuration file</h4>
|
||||
|
||||
<p>In this step, phpBB will try to write the configuration file automatically. The forum needs the configuration to run properly. It contains all database settings, so without it, phpBB will not be able to access the database.</p>
|
||||
<p>In this step, phpBB will try to write the configuration file automatically. The forum needs the configuration file in order to operate. It contains all the database settings, so without it, phpBB will not be able to access the database.</p>
|
||||
|
||||
<p>Usually writing the configuration file automatically works fine. But in some cases it can fail due to wrong file permissions, for instance. In this case, you need to upload the file manually. phpBB asks you to download the config.php file and tells you what to do with it. Please read the instructions carefully. After you have uploaded the file, use <em>Done</em> to get to the last step. If <em>Done</em> returns you to the same page as before, and does not return a success message, you did not upload the file correctly.</p>
|
||||
<p>Usually, writing the configuration file automatically works fine. If the file permissions are not set correctly, this process can fail. In this case, you need to upload the file manually. phpBB asks you to download the <code>config.php</code> file and tells you what to do with it. Please read the instructions carefully. After you have uploaded the file, use <em>Done</em> to get to the last step. If <em>Done</em> returns you to the same page as before, and does not return a success message, you did not upload the file correctly.</p>
|
||||
|
||||
<h4>Advanced settings</h4>
|
||||
|
||||
<p>The Advanced settings allow you to set some parameters of the board configuration. They are optional, and you can always change them later. So if you are not sure what these settings mean, proceed to the final step and finish the installation.</p>
|
||||
<p>The Advanced settings allow you to set additional parameters of the board configuration. They are optional and you can always change them later. So, even if you are not sure what these settings mean, you can still proceed to the final step and finish the installation.</p>
|
||||
|
||||
<p>If the installation was successful, you can now use the Login button to visit the Administration Control Panel. Congratulations, you have installed phpBB3 successfully. But there is still work ahead!</p>
|
||||
<p>If the installation was successful, you can now use the <em>Login</em> button to visit the Administration Control Panel. Congratulations, you have installed phpBB successfully. But there is still work ahead!</p>
|
||||
|
||||
<p>If you are unable to get phpBB3 installed even after reading this guide, please look at the support section to find out where you can ask for further assistance.</p>
|
||||
<p>If you are unable to get phpBB3 installed even after reading this guide, please look at the support section of the installer's introduction page to find out where you can ask for further assistance.</p>
|
||||
|
||||
<p>At this point if you are converting from phpBB 2.0.x, you should refer to the <a href="#convert">conversion steps</a> for further information. If not, you should remove the install directory from your server as you will only be able to access the Administration Control Panel whilst it is present.</p>
|
||||
|
||||
@@ -256,55 +257,55 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>If you are currently using a stable release of phpBB3 updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Please Note</strong>: That before updating we heavily recommend you do a <em>full backup of your database and existing phpBB3 files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p>
|
||||
<p>If you are currently using a stable release of phpBB3, updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Note</strong>: Before updating, we heavily recommend you do a <em>full backup of your database and existing phpBB3 files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p>
|
||||
|
||||
<p><strong>Please make sure you update your phpBB3 source files too, even if you run the <code>database_update.php</code> file.</strong></p>
|
||||
|
||||
<a name="update_full"></a><h3>4.i. Full package</h3>
|
||||
|
||||
<p>The full package is normally meant for new installations only, but if you want to replace all source files this package comes in handy.</p>
|
||||
<p>The full package is normally meant for new installations only, but if you want to replace all source files, this package comes in handy.</p>
|
||||
|
||||
<p>First you should make a copy of your existing <em>config.php</em> file, keep it in a safe place! Next delete all the existing phpBB3 files, you may want to leave your <code>files/</code> and <code>images/</code> directory in place. You can leave alternative styles in-place too. With this complete you can upload the new phpBB3 files (see <a href="#install">New installation</a> for details if necessary). Once complete copy back your saved <em>config.php</em>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
|
||||
<p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB3 files, you may want to leave your <code>files/</code> and <code>images/</code> directorie in place. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <a href="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
|
||||
|
||||
<p>You should now run <code>install/database_update.php</code> which, depending on your previous version, will make a number of database changes. You may receive <em>FAILURES</em> during this procedure, they should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker).</p>
|
||||
<p>You should now run <code>install/database_update.php</code> which, depending on your previous version, will make a number of database changes. You may receive <em>FAILURES</em> during this procedure. They should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker).</p>
|
||||
|
||||
<p>Once the install/database_update.php has completed you may proceed to the Administration Control Panel and check remove the install directory as advised.</p>
|
||||
<p>Once <code>install/database_update.php</code> has completed, you may proceed to the Administration Control Panel and then remove the install directory as advised.</p>
|
||||
|
||||
<a name="update_files"></a><h3>4.ii. Changed files only</h3>
|
||||
<a name="update_files"></a><h3>4.ii. Changed files</h3>
|
||||
|
||||
<p>This package is meant for those wanting to only replace changed files from a previous version to the latest version. This package normally contains the changed files from up to five previous versions.</p>
|
||||
<p>This package is meant for those wanting to only replace the files that were changed between a previous version and the latest version.</p>
|
||||
|
||||
<p>This package contains a number of archives, each contains the files changed from a given release to the latest version. You should select the appropriate archive for your current version, e.g. if you currently have <samp>3.0.9</samp> you should select the phpBB-3.0.9_to_3.0.10.zip/tar.gz file.</p>
|
||||
<p>This package contains a number of archives, each contains the files changed from a given release to the latest version. You should select the appropriate archive for your current version, e.g. if you currently have <strong>3.0.11</strong> you should select the appropriate <code>phpBB-3.0.12-files.zip/tar.bz2</code> file.</p>
|
||||
|
||||
<p>The directory structure has been preserved enabling you (if you wish) to simply upload the contents of the archive to the appropriate location on your server, i.e. simply overwrite the existing files with the new versions. Do not forget that if you have installed any MODs these files will overwrite the originals possibly destroying them in the process. You will need to re-add MODs to any affected file before uploading.</p>
|
||||
<p>The directory structure has been preserved, enabling you (if you wish) to simply upload the uncompressed contents of the archive to the appropriate location on your server, i.e. simply overwrite the existing files with the new versions. Do not forget that if you have installed any modifications (MODs) these files will overwrite the originals, possibly destroying them in the process. You will need to re-add MODs to any affected file before uploading.</p>
|
||||
|
||||
<p>As for the other update procedures you should run <b>install/database_update.php</b> after you have finished updating the files. This will update your database schema and increment the version number.</p>
|
||||
<p>As for the other update procedures, you should run <code>install/database_update.php</code> after you have finished updating the files. This will update your database schema and increment the version number.</p>
|
||||
|
||||
<a name="update_patch"></a><h3>4.iii. Patch file</h3>
|
||||
|
||||
<p>The patch file package is for those wanting to update through the patch application, and being comfortable with it.</p>
|
||||
<p>The patch file package is for those wanting to update through the patch application, and should only be used by those who are comfortable with it.</p>
|
||||
|
||||
<p>The patch file is one solution for those with many Modifications (MODs) or other changes who do not want to re-add them back to all the changed files if they use the method explained above. To use this you will need command line access to a standard UNIX type <strong>patch</strong> application. If you do not have access to such an application but still want to use this update approach, we strongly recommend the <a href="#update_auto">Automatic update package</a> explained below. It is also the recommended update method.</p>
|
||||
<p>The patch file is one solution for those with many Modifications (MODs) or other changes and do not want to re-add them back to all the changed files. To use this you will need command line access to a standard UNIX type <strong>patch</strong> application. If you do not have access to such an application, but still want to use this update approach, we strongly recommend the <a href="#update_auto">Automatic update package</a> explained below. It is also the recommended update method.</p>
|
||||
|
||||
<p>A number of patch files are provided to allow you to update from previous stable releases. Select the correct patch, e.g. if your current version is <samp>3.0.9</samp> you need the phpBB-3.0.9_to_3.0.10.patch file. Place the correct patch in the parent directory containing the phpBB3 core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <strong>patch -cl -d [PHPBB DIRECTORY] -p1 < [PATCH NAME]</strong> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB3, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</p>
|
||||
<p>A number of patch files are provided to allow you to update from previous stable releases. Select the correct patch, e.g. if your current version is <strong>3.0.11</strong>, you need the <code>phpBB-3.0.12-patch.zip/tar.bz2</code> file. Place the correct patch in the parent directory containing the phpBB core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <code>patch -cl -d [PHPBB DIRECTORY] -p1 < [PATCH NAME]</code> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</p>
|
||||
|
||||
<p>If you do get failures you should look at using the <a href="#update_files">Changed files only</a> package to replace the files which failed to patch, please note that you will need to manually re-add any Modifications (MODs) to these particular files. Alternatively if you know how you can examine the .rej files to determine what failed where and make manual adjustments to the relevant source.</p>
|
||||
<p>If you do get failures, you should look at using the <a href="#update_files">Changed Files</a> package to replace the files which failed to patch. Please note that you will need to manually re-add any MODs to these particular files. Alternatively, if you know how, you can examine the .rej files to determine what failed where and make manual adjustments to the relevant source.</p>
|
||||
|
||||
<p>You should of course delete the patch file (or files) after use. As for the other update procedures you should run <code>install/database_update.php</code> after you have finished updating the files. This will update your database schema and data (if appropriate) and increment the version number.</p>
|
||||
<p>You should, of course, delete the patch file (or files) after use. As for the other update procedures, you should run <code>install/database_update.php</code> after you have finished updating the files. This will update your database schema and data (if appropriate) and increment the version number.</p>
|
||||
|
||||
<a name="update_auto"></a><h3>4.iv. Automatic update package</h3>
|
||||
|
||||
<p>This update method is the recommended method for updating. This package allows detecting changed files automatically and merges changes if needed.</p>
|
||||
<p>This update method is the recommended method for updating. This package detects changed files automatically and merges in changes if needed.</p>
|
||||
|
||||
<p>The automatic update package contains - contrary to the others - only the information required to update the previous release version to the latest available version. These packages are meant for use with the automatic update tool.</p>
|
||||
<p>The automatic update package will update the board from a given version to the latest version. A number of automatic update files are available, and you should choose the one that corresponds to the version of the board that you are currently running. For example, if your current version is <strong>3.0.11</strong>, you need the <code>phpBB-3.0.11_to_3.0.12.zip/tar.bz2</code> file.</p>
|
||||
|
||||
<p>To perform the update, either follow the instructions from the <code>Administration Control Panel->System</code> Tab - this should point out that you are running an outdated version and will guide you through the update - or follow the instructions listed below.</p>
|
||||
<p>To perform the update, either follow the instructions from the <strong>Administration Control Panel->System</strong> Tab - this should point out that you are running an outdated version and will guide you through the update - or follow the instructions listed below.</p>
|
||||
|
||||
<ul>
|
||||
<li>Go to the <a href="http://www.phpbb.com/downloads/">downloads page</a> and download the latest update package listed there, matching your current version.</li>
|
||||
<li>Upload the archives contents to your phpBB installation - only the install folder is required. Upload the whole install folder, retaining the file structure.</li>
|
||||
<li>Go to the <a href="https://www.phpbb.com/downloads/">downloads page</a> and download the latest update package listed there, matching your current version.</li>
|
||||
<li>Upload the uncompressed archive contents to your phpBB installation - only the install folder is required. Upload the whole install folder, retaining the file structure.</li>
|
||||
<li>After the install folder is present, phpBB3 will go offline automatically.</li>
|
||||
<li>Point your browser to the install directory, for example <samp>http://www.example.com/phpBB3/install/</samp></li>
|
||||
<li>Point your browser to the install directory, for example <code>http://www.example.com/phpBB3/install/</code></li>
|
||||
<li>Choose the "Update" Tab and follow the instructions</li>
|
||||
</ul>
|
||||
|
||||
@@ -312,7 +313,9 @@
|
||||
|
||||
<a name="update_all"></a><h3>4.v. All package types</h3>
|
||||
|
||||
<p>If you have non-English language packs installed you may want to see if a new version has been made available. A number of missing strings may have been added which, though not essential, may be beneficial to users. Please note that at this time not all language packs have been updated so you should be prepared to periodically check for updates.</p>
|
||||
<p>If you have non-English language packs installed, you may want to see if a new version has been made available. A number of missing strings may have been added which, though not essential, may be beneficial to users. Please note that at this time not all language packs have been updated so you should be prepared to periodically check for updates.</p>
|
||||
|
||||
<p>These update methods will only update the standard styles, <code>prosilver</code> and <code>subsilver2</code>, any other styles you have installed for your board will usually also need to be updated.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -334,47 +337,47 @@
|
||||
|
||||
<a name="prereq"></a><h3>5.i. Requirements before converting</h3>
|
||||
|
||||
<p>Before converting we heavily recommend you do a <em>full backup of your database and files</em>! If you are unsure how to achieve this please ask your hosting provider for advice. You basically need to follow the basic instructions given for <a href="#install">New installations</a>. Please <strong>do not</strong> overwrite any old files - install phpBB3 at a different location.</p>
|
||||
<p>Before converting, we heavily recommend you do a <em>full backup of your database and files</em>! If you are unsure how to achieve this, please ask your hosting provider for advice. You basically need to follow the instructions given for <a href="#install">New installations</a>. Please <strong>do not</strong> overwrite any old files - install phpBB3 at a different location.</p>
|
||||
|
||||
<p>Once you made a backup of everything and also have a brand new phpBB3 installation, you can now begin the conversion.</p>
|
||||
|
||||
<p>Note that the conversion requires CREATE and DROP privileges for the phpBB3's database user account.</p>
|
||||
<p>Note that the conversion requires <code>CREATE</code> and <code>DROP</code> privileges for the phpBB3 database user account.</p>
|
||||
|
||||
<a name="conversion"></a><h3>5.ii. Converting</h3>
|
||||
|
||||
<p>To begin the conversion visit the install folder of your phpBB3 installation (the same as you have done for installing). Now you will see a new tab <em>Convert</em>. Click this tab.</p>
|
||||
<p>To begin the conversion, visit the <code>install/</code> folder of your phpBB3 installation (the same as you have done for installing). Now you will see a new tab <em>Convert</em>. Click this tab.</p>
|
||||
|
||||
<p>As with install the conversion is automated. Your previous 2.0.x database tables will not be changed as well as the original 2.0.x files remaining unaltered. The conversion is actually only filling your phpBB3 database tables and copying additional data over to your phpBB3 installation. This has the benefit that if something goes wrong you are able to either re-run the conversion or continue a conversion, while your old board is still accessible. We really recommend you disable your old installation while converting, else you may have inconsistent data after the conversion.</p>
|
||||
<p>As with install, the conversion is automated. Your previous 2.0.x database tables will not be changed and the original 2.0.x files will remain unaltered. The conversion is actually only filling your phpBB3 database tables and copying additional data over to your phpBB3 installation. This has the benefit that if something goes wrong, you are able to either re-run the conversion or continue a conversion, while your old board is still accessible. We really recommend that you disable your old installation while converting, else you may have inconsistent data after the conversion.</p>
|
||||
|
||||
<p>Please note that this conversion process may take quite some time and depending on your hosting provider this may result in it failing (due to web server or other timeout issues). If this is the case you should ask your provider if they are willing to allow the convert script to temporarily exceed their limits (be nice and they will probably be quite helpful).</p>
|
||||
<p>Please note that this conversion process may take quite some time and depending on your hosting provider this may result in it failing (due to web server resource limits or other timeout issues). If this is the case, you should ask your provider if they are willing to allow the convert script to temporarily exceed their limits (be nice and they will probably be quite helpful). If your host is unwilling to increase the limits to run the convertor, please see this article for performing the conversion on your local machine: <a href="https://www.phpbb.com/kb/article/offline-conversions/">Knowledge Base - Offline Conversions</a></p>
|
||||
|
||||
<p>Once completed your board should be immediately available. If you encountered errors you should report the problems to our bug tracker or seek help via our forums (see <a href="README.html">README</a> for details).</p>
|
||||
<p>Once completed, your board should be immediately available. If you encountered errors, you should report the problems to our bug tracker or seek help via our forums (see <a href="README.html">README</a> for details).</p>
|
||||
|
||||
<a name="postreq"></a><h3>5.iii. Things to do after conversion</h3>
|
||||
|
||||
<p>After successful conversion there may be a few items you need to do - apart from checking if the installation is accessible and everything displayed correctly.</p>
|
||||
<p>After a successful conversion, there may be a few items you need to do - apart from checking if the installation is accessible and everything displayed correctly.</p>
|
||||
|
||||
<p>The first thing you may want to do is going to the administration control panel and checking every configuration item within the general tab. Thereafter you may want to adjust the forum descriptions/names if you entered HTML there. You also may want to access the other administrative sections, e.g. adjusting permissions, smilies, icons, ranks, etc.</p>
|
||||
<p>The first thing you may want to do is to go to the administration control panel and check every configuration item within the general tab. Thereafter, you may want to adjust the forum descriptions/names if you entered HTML there. You also may want to access the other administrative sections, e.g. adjusting permissions, smilies, icons, ranks, etc.</p>
|
||||
|
||||
<p>Within the conversion the search index has not been created or transferred. This means after conversion you are not able to find any matches if you want to search for something. We recommend you rebuild your search index within <code>Admin -> Maintenance -> Database -> Search Index</code>.</p>
|
||||
<p>During the conversion, the search index is not created or transferred. This means after conversion you are not able to find any matches if you want to search for something. We recommend you rebuild your search index within <strong>Administration Control Panel -> Maintenance -> Database -> Search Index</strong>.</p>
|
||||
|
||||
<p>After verifying the settings in the ACP, you can delete the install directory to enable the board. The board will stay disabled until you do so.</p>
|
||||
|
||||
<p>Once you are pleased with your new installation you may want to give it the name of your old installation, changing the directory name. With phpBB3 this is possible without any problems - but you may still want to check your cookie settings within the administration panel, if the cookie path need to be adjusted prior to renaming.</p>
|
||||
<p>Once you are pleased with your new installation, you may want to give it the name of your old installation, changing the directory name. With phpBB3 this is possible without any problems, but you may still want to check your cookie settings within the administration panel; in case your cookie path needs to be adjusted prior to renaming.</p>
|
||||
|
||||
<a name="convprob"></a><h3>5.iv. Common conversion problems</h3>
|
||||
|
||||
<p><strong>Broken non-latin characters</strong> The conversion script assumes that the database encoding in the source phpBB2 matches the encoding defined in the <code>lang_main.php</code> file of the default language pack of the source installation. Edit that file to match the database's encoding and re-start the conversion procedure.</p>
|
||||
|
||||
<p><strong>http 500 / white pages</strong> The conversion is a load-heavy procedure. Restrictions imposed by some server hosting providers can cause problems. The most common causes are: too low values for the php settings <code>memory_limit</code> and <code>max_execution_time</code>. Limits on the allowed CPU time are also a frequent cause for such errors, as are caps on the number of database queries allowed. If you cannot change such settings, then contact your hosting provider or run the conversion procedure on a different computer. The phpBB.com forums are also an excellent location to ask for support.</p>
|
||||
<p><strong>http 500 / white pages</strong> The conversion is a load-heavy procedure. Restrictions imposed by some server hosting providers can cause problems. The most common causes are: values too low for the PHP settings <code>memory_limit</code> and <code>max_execution_time</code>. Limits on the allowed CPU time are also a frequent cause for such errors, as are limits on the number of database queries allowed. If you cannot change such settings, then contact your hosting provider or run the conversion procedure on a different computer. The phpBB.com forums are also an excellent location to ask for support.</p>
|
||||
|
||||
<p><strong>Password conversion</strong> Due to the utf-8 based handling of passwords in phpBB3, it is not always possible to transfer all passwords. For passwords "lost in translation" the easiest workaround is to use the "forgotten password" function.</p>
|
||||
<p><strong>Password conversion</strong> Due to the utf-8 based handling of passwords in phpBB3, it is not always possible to transfer all passwords. For passwords "lost in translation" the easiest workaround is to use the <em>I forgot my password</em> link on the login page.</p>
|
||||
|
||||
<p><strong>Path to your former board</strong> The converter expects the relative path to your old board's files. So, - for instance - if the old board is located at <code>http://www.yourdomain.com/forum</code> and the phpBB3 installation is located at <code>http://www.yourdomain.com/phpBB3</code>, then the correct value would be <code>../forum</code>. Note that the webserver user must be able to access the source installation's files.</p>
|
||||
<p><strong>Path to your former board</strong> The convertor expects the relative path to your old board's files. So, for instance, if the old board is located at <code>http://www.yourdomain.com/forum</code> and the phpBB3 installation is located at <code>http://www.yourdomain.com/phpBB3</code>, then the correct value would be <code>../forum</code>. Note that the webserver user must be able to access the source installation's files.</p>
|
||||
|
||||
<p><strong>Missing images</strong> If your default board language's language pack does not include all images, then some images might be missing in your installation. Always use a complete language pack as default language.</p>
|
||||
|
||||
<p><strong>Smilies</strong> During the conversion you might see warnings about image files where the copying failed. That can happen if the old board's smilies have the same file names as those on the new board. Copy those files manually after the conversion, if you want to continue using the old smilies.</p>
|
||||
<p><strong>Smilies</strong> During the conversion you might see warnings about image files where the copying failed. This can happen if the old board's smilies have the same file names as those on the new board. Copy those files manually after the conversion, if you want to continue using the old smilies.</p>
|
||||
|
||||
|
||||
</div>
|
||||
@@ -393,27 +396,27 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Once you have successfully installed phpBB3 you <strong>MUST</strong> ensure you remove the entire install/ directory. Leaving the install directory in place is a <em>very serious potential security issue</em> which may lead to deletion or alteration of files, etc. Please note that until this directory is removed, phpBB3 will not operate and a warning message will be displayed. Beyond this <strong>essential</strong> deletion, you may also wish to delete the docs/ directories if you wish.</p>
|
||||
<p>Once you have successfully installed phpBB3 you <strong>MUST</strong> ensure you remove the entire <code>install/</code> directory. Leaving the install directory in place is a <em>very serious potential security issue</em> which may lead to deletion or alteration of files, etc. Please note that until this directory is removed, phpBB will not operate and a warning message will be displayed. Beyond this <strong>essential</strong> deletion, you may also wish to delete the docs/ directory if you wish.</p>
|
||||
|
||||
<p>With these directories deleted you should proceed to the administration panel. Depending on how the installation completed you may have been directed there automatically. If not, login as the administrator you specified during install/conversion and click the <strong>Administration Panel</strong> link at the bottom of any page. Ensure that details specified in <code>Admin -> General</code> are correct!</p>
|
||||
<p>With these directories deleted, you should proceed to the administration panel. Depending on how the installation completed, you may have been directed there automatically. If not, login as the administrator you specified during install/conversion and click the <strong>Administration Control Panel</strong> link at the bottom of any page. Ensure that details specified on the <strong>General</strong> tab are correct!</p>
|
||||
|
||||
<a name="avatars"></a><h3>6.i. Uploadable avatars</h3>
|
||||
|
||||
<p>phpBB3 supports several methods for allowing users to select their own <em>avatar</em> (an avatar is a small image generally unique to a user and displayed just below their username in posts).</p>
|
||||
|
||||
<p>Two of these options allow users to upload an avatar from their machine or a remote location (via a URL). If you wish to enable this function you should first ensure the correct paths for uploadeable avatars is set in <code>Admin -> General -> Board Configuration -> Avatar settings</code>. By default this is <em>images/avatars/uploads</em> but you can set it to whatever you like, just ensure the configuration setting is updated. You must also ensure this directory can be written to by the webserver. Usually this means you have to alter its permissions to allow anyone to read and write to. Exactly how you should do this depends on your ftp client or server operating system.</p>
|
||||
<p>Two of these options allow users to upload an avatar from their machine or a remote location (via a URL). If you wish to enable this function you should first ensure the correct path for uploadable avatars is set in <strong>Administration Control Panel -> General -> Board Configuration -> Avatar settings</strong>. By default this is <code>images/avatars/uploads</code>, but you can set it to whatever you like, just ensure the configuration setting is updated. You must also ensure this directory can be written to by the webserver. Usually this means you have to alter its permissions to allow anyone to read and write to it. Exactly how you should do this depends on your FTP client or server operating system.</p>
|
||||
|
||||
<p>On UNIX systems for example you set the directory to a+rwx (or ugo+rwx or even 777). This can be done from a command line on your server using chmod or via your FTP client (using the Change Permissions, chmod or other Permissions dialoge box, see your FTP clients documentation for help). Most FTP clients list permissions in the form of User (Read, Write, Execute), Group (Read, Write, Execute) and Other (Read, Write, Execute). You need to tick all of these boxes to set correct permissions.</p>
|
||||
<p>On UNIX systems, for example, you set the directory to a+rwx (or ugo+rwx or even 777). This can be done from a command line on your server using chmod or via your FTP client (using the Change Permissions, chmod or other Permissions dialog box, see your FTP client's documentation for help). Most FTP clients list permissions in the form of User (Read, Write, Execute), Group (Read, Write, Execute) and Other (Read, Write, Execute). You need to tick all of these boxes to set correct permissions.</p>
|
||||
|
||||
<p>On Windows system you need to ensure the directory is not write-protected and that it has global write permissions (see your servers documentation or contact your hosting provider if you are unsure on how to achieve this).</p>
|
||||
<p>On Windows systems, you need to ensure the directory is not write-protected and that it has global write permissions (see your server's documentation or contact your hosting provider if you are unsure on how to achieve this).</p>
|
||||
|
||||
<p>Please be aware that setting a directories permissions to global write access is a potential security issue. While it is unlikely that anything nasty will occur (such as all the avatars being deleted) there are always people out there to cause trouble. Therefore you should monitor this directory and if possible make regular backups.</p>
|
||||
<p>Please be aware that setting a directory's permissions to global write access is a potential security issue. While it is unlikely that anything nasty will occur (such as all the avatars being deleted) there are always people out there to cause trouble. Therefore you should monitor this directory and if possible make regular backups.</p>
|
||||
|
||||
<a name="webserver_configuration"></a><h3>6.ii. Webserver configuration</h3>
|
||||
|
||||
<p>Depending on your web server you may have to configure your server to deny web access to the <code>cache/</code>, <code>files/</code>, <code>store/</code> and other directories. This is to prevent users from accessing sensitive files.</p>
|
||||
<p>Depending on your web server, you may have to configure your server to deny web access to the <code>cache/</code>, <code>files/</code>, <code>store/</code> and other directories. This is to prevent users from accessing sensitive files.</p>
|
||||
|
||||
<p>For <strong>apache</strong> there are <code>.htaccess</code> files already in place to do this for you. For other webservers you will have to adjust the configuration yourself. Sample files for <strong>nginx</strong> and <strong>lighttpd</strong> to help you get started may be found in docs directory.</p>
|
||||
<p>For <strong>Apache</strong> there are <code>.htaccess</code> files already in place to do this for you. Similarly, for <strong>Windows</strong> based servers using <strong>IIS</strong> there are <code>web.config</code> files already in place to do this for you. For other webservers, you will have to adjust the configuration yourself. Sample files for <strong>nginx</strong> and <strong>lighttpd</strong> to help you get started may be found in <code>docs/</code> directory.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -424,14 +427,30 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="disclaimer"></a><h2>7. Copyright and disclaimer</h2>
|
||||
<a name="anti_spam"></a><h2>7. Anti-Spam Measures</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
||||
<div class="content">
|
||||
<p>Like any online site that allows user input, your board could be subject to unwanted posts; often referred to as <a href="http://en.wikipedia.org/wiki/Forum_spam">forum spam</a>. The vast majority of these attacks will be from automated computer programs known as <a href="http://en.wikipedia.org/wiki/Spambot">spambots</a>. The attacks, generally, are not personal as the spammers are just trying to find accessible targets. phpBB has a number of anti-spam measures built in, including a range of CAPTCHAs. However, administrators are strongly urged to read and follow the advice for <a href="https://www.phpbb.com/support/spam/">Preventing Spam in phpBB</a> as soon as possible after completing the installation of your board.</p>
|
||||
</div>
|
||||
|
||||
<div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
|
||||
|
||||
<span class="corners-bottom"><span></span></span></div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="disclaimer"></a><h2>8. Copyright and disclaimer</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-license.php">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see the source code and <code>docs/</code> directory for more details. This package and its contents are Copyright © <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@@ -41,7 +41,7 @@
|
||||
|
||||
<!-- BEGIN DOCUMENT -->
|
||||
|
||||
<p>Thank you for downloading phpBB3. This README will guide through the basics of installation and operation of phpBB3. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p>
|
||||
<p>Thank you for downloading phpBB3. This README will guide you through the basics of installation and operation of phpBB3. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p>
|
||||
|
||||
<h1>Readme</h1>
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<li><a href="#install">Installing phpBB3</a></li>
|
||||
<li><a href="#run">Running phpBB3</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#i18n">Internationalisation (i18n)</a></li>
|
||||
<li><a href="#i18n">Languages (Internationalisation - i18n)</a></li>
|
||||
<li><a href="#styles">Styles</a></li>
|
||||
<li><a href="#mods">Modifications</a></li>
|
||||
</ol>
|
||||
@@ -62,12 +62,13 @@
|
||||
<li><a href="#help">Getting help with phpBB3</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#docs">Documentation</a></li>
|
||||
<li><a href="#kb">Knowledge Base</a></li>
|
||||
<li><a href="#website">Community Forums</a></li>
|
||||
<li><a href="#irc">Internet Relay Chat</a></li>
|
||||
<li><a href="#irc">Internet Relay Chat (IRC)</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><a href="#status">Status of this version</a></li>
|
||||
<li><a href="#bugs">Reporting Bugs</a>
|
||||
<li><a href="#bugs">Reporting bugs</a>
|
||||
<ol style="list-style-type: lower-roman;">
|
||||
<li><a href="#securitybugs">Security related bugs</a></li>
|
||||
</ol>
|
||||
@@ -91,11 +92,11 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Installation, update and conversion instructions can be found in the <a href="INSTALL.html">INSTALL</a> document contained in this distribution. If you are intending to convert from a previous phpBB 2.0.x installation we highly recommend you backup any existing data before proceeding!</p>
|
||||
<p>Installation, update and conversion instructions can be found in the <a href="INSTALL.html">INSTALL</a> document in this directory. If you are intending on converting from a phpBB 2.0.x installation we highly recommend that you backup any existing data before proceeding!</p>
|
||||
|
||||
<p>Users of phpBB3 Beta versions cannot directly update.</p>
|
||||
|
||||
<p>Please note that we won't support the following installation types:</p>
|
||||
<p>Please note that we don't support the following installation types:</p>
|
||||
<ul>
|
||||
<li>Updates from phpBB3 Beta versions to phpBB3 RC1 and higher</li>
|
||||
<li>Conversions from phpBB 2.0.x to phpBB3 Beta versions</li>
|
||||
@@ -106,8 +107,9 @@
|
||||
|
||||
<ul>
|
||||
<li>Updates from phpBB3 RC1 to the latest version</li>
|
||||
<li>Note: if using the <em>Automatic Update Package</em>, updates are supported from phpBB 3.0.2 onward. To update a pre-3.0.2 installation, first update to 3.0.2 and then update to the current version.</li>
|
||||
<li>Conversions from phpBB 2.0.x to the latest version</li>
|
||||
<li>New installations of phpBB3 - always only the latest released version</li>
|
||||
<li>New installations of phpBB3 - only the latest released version</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@@ -126,41 +128,41 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>Once installed phpBB is easily managed by both admin and moderator control panels. If you need help or advice with phpBB please see <a href="#help">Section 3</a> below.</p>
|
||||
<p>Once installed, phpBB is easily managed via the Administration and Moderator Control Panels. If you need help or advice with phpBB, please see <a href="#help">Section 3</a> below.</p>
|
||||
|
||||
<a name="i18n"></a><h3>2.i. Internationalisation (i18n)</h3>
|
||||
<a name="i18n"></a><h3>2.i. Languages (Internationalisation - i18n)</h3>
|
||||
|
||||
<p>A number of language packs and style localisations are available. You can find them on our official download page:</p>
|
||||
<p>A number of language packs with included style localisations are available. You can find them listed in the <a href="https://www.phpbb.com/languages/">Language Packs</a> pages of our downloads section or from the <a href="https://www.phpbb.com/customise/db/language_packs-25/">Language Packs</a> section of the <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||
|
||||
<p><a href="http://www.phpbb.com/downloads/">http://www.phpbb.com/downloads/</a></p>
|
||||
<p>For more information about language packs, please see: <a href="https://www.phpbb.com/languages/">https://www.phpbb.com/languages/</a></p>
|
||||
|
||||
<p>This is the <em>official</em> location for all supported language sets. If you download a package from a 3rd party site you do so with the understanding that we cannot offer support. So please, do not ask for help in these cases!</p>
|
||||
<p>This is the <em>official</em> location for all supported language sets. If you download a package from a 3rd party site you do so with the understanding that we cannot offer support. Please do not ask for support if you download a language pack from a 3rd party site.</p>
|
||||
|
||||
<p>Installation of these packages is straightforward, simply download the required language pack and unarchive it into the <samp>languages/</samp> folder. Please ensure you retain the directory structure when doing this! Once uploaded go to the <code>Admin->System->Language Packs</code> and install the now appeared new language pack. To install the style imageset you should download the imageset for your language and unarchive the file/s into the relevant imageset directory (styles/prosilver/imageset or styles/subsilver2/imageset), again you must retain the directory structure. Once installed the imageset will become immediately available.</p>
|
||||
<p>Installation of these packages is straightforward: simply download the required language pack, uncompress (unzip) it and via FTP transfer the included <code>language</code> and <code>styles</code> folders to the root of your board installation. The language can then be installed via the Administration Control Panel of your board: <code>System tab -> General Tasks -> Language packs</code>. A more detailed description of the process is in the Knowledge Base article, <a href="https://www.phpbb.com/kb/article/how-to-install-a-language-pack/">How to Install a Language Pack</a>.</p>
|
||||
|
||||
<p>If your language is not available please visit our forums where you will find a topic listing translations currently available or in preparation. This topic also gives you information should you wish to volunteer to translate a language not currently listed.</p>
|
||||
<p>If your language is not available, please visit our <a href="https://www.phpbb.com/community/viewforum.php?f=66">[3.0.x] Translations</a> forum where you will find topics on translations in progress. Should you wish to volunteer to translate a language not currently available or assist in maintaining an existing language pack, you can <a href="https://www.phpbb.com/languages/apply.php">Apply to become a translator</a>.</p>
|
||||
|
||||
<a name="styles"></a><h3>2.ii. Styles</h3>
|
||||
|
||||
<p>Although phpBB Group are rather proud of the included styles we realise that it may not be to everyones tastes. Therefore phpBB3 allows styles to be switched with relative ease. Firstly you need to locate and download a style you like. We maintain such a site at</p>
|
||||
<p>Although the phpBB Group is rather proud of the included styles, we realise that they may not be to everyone's taste. Therefore, phpBB3 allows styles to be switched with relative ease. First, you need to locate and download a style you like. You can find them listed in the <a href="https://www.phpbb.com/customise/db/styles-2/">Styles</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||
|
||||
<p><a href="http://www.phpbb.com/styles/">http://www.phpbb.com/styles/</a></p>
|
||||
<p>For more information about styles, please see: <a href="https://www.phpbb.com/styles/">https://www.phpbb.com/styles/</a></p>
|
||||
|
||||
<p><strong>Please note</strong> that 3rd party styles downloaded for versions of phpBB2 will <strong>not</strong> work in phpBB3.</p>
|
||||
<p><strong>Please note</strong> that 3rd party styles downloaded for versions of phpBB2 will <strong>not</strong> work in phpBB3. It is also important to ensure that the style is updated to match the current version of the phpBB software you are using.</p>
|
||||
|
||||
<p>Once you have downloaded a style the usual next step is to unarchive (or upload the unarchived contents of) the package into your <samp>styles/</samp> directory. You then need to visit <code>Administration -> Styles</code>, you should see the new style available, click install and it will become available for all your users.</p>
|
||||
<p>Once you have downloaded a style, the usual next step is to unarchive (or upload the unarchived contents of) the package into your <code>styles/</code> directory. You then need to visit <code>Administration Control Panel -> Styles tab</code> where you should see the new style available. Click "Install" to install the style.</p>
|
||||
|
||||
<p><strong>Please note</strong> that if you create your own style or modify existing ones, please remember to enable the "Recompile stale style components" setting within the <code>Admin->General->Load Settings</code> screen. This setting allows the cache to detect changes made to the style and automatically refresh it. If this setting is disabled, you will not see your changes taking effect.</p>
|
||||
<p><strong>Please note</strong> that to improve efficiency, the software caches certain data. For this reason, if you create your own style or modify existing ones, please remember to "Refresh" the appropriate style components <code>Administration Control Panel -> Styles tab -> Style Components</code> screen. You may also need to reload the page you have changed in your web browser to overcome browser caching. If the changed components are not refreshed you will not see your changes taking effect.</p>
|
||||
|
||||
<a name="mods"></a><h3>2.iii. Modifications</h3>
|
||||
|
||||
<p>Although not officially supported by phpBB Group, phpBB has a thriving modification scene. These third party modifications to the standard phpBB extend its capabilities still further and can be found at:</p>
|
||||
<p>Although not officially supported by the phpBB Group, phpBB has a thriving modification scene. These third party modifications to the standard phpBB software, known as <strong>MODs</strong>, extend its capabilities still further. You can browse through many of the MODs in the <a href="https://www.phpbb.com/customise/db/modifications-1/">Modifications</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||
|
||||
<p><a href="http://www.phpbb.com/mods/">http://www.phpbb.com/mods/</a></p>
|
||||
<p>For more information about MODs, please see: <a href="https://www.phpbb.com/mods/">https://www.phpbb.com/mods/</a></p>
|
||||
|
||||
<p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any modification should <strong>NOT</strong> be reported to the bug tracker (see below). First remove the modification and see if the problem is resolved.</p>
|
||||
<p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any modification should <strong>NOT</strong> be reported to the bug tracker (see below). First remove the MOD and see if the problem is resolved. Any support for a MOD should only be sought in the "Discussion/Support" forum for that MOD.</p>
|
||||
|
||||
<p>Also remember that any modifications which modify the database in any way may render upgrading your forum to future versions more difficult unless we state otherwise. With all this said many users have and continue to utilise many of the mods already available with great success.</p>
|
||||
<p>Also remember that any modifications, particularly those which modify the database in any way, may render upgrading your forum to future versions more difficult. With all this said, many users have and continue to utilise many of the MODs already available with great success.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -178,27 +180,35 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>phpBB3 can seem a little daunting to new users in places, particularly with regard the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a> which covers a few basic getting started questions. If you need additional help there are several places you should look.</p>
|
||||
<p>phpBB3 can sometimes seem a little daunting to new users, particularly with regards to the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a>, which covers a few basic getting started questions. If you need additional help there are several places you can find it.</p>
|
||||
|
||||
<a name="docs"></a><h3>3.i. phpBB3 Documentation</h3>
|
||||
|
||||
<p>A comprehensive documentation is now available online and can be accessed from the following location:</p>
|
||||
<p>Comprehensive documentation is now available on the phpBB website:</p>
|
||||
|
||||
<p><a href="http://www.phpbb.com/support/documentation/3.0/">http://www.phpbb.com/support/documentation/3.0/</a></p>
|
||||
<p><a href="https://www.phpbb.com/support/documentation/3.0/">https://www.phpbb.com/support/documentation/3.0/</a></p>
|
||||
|
||||
<p>This covers everything from installation through setting permissions and managing users.</p>
|
||||
<p>This covers everything from installation to setting permissions and managing users.</p>
|
||||
|
||||
<a name="website"></a><h3>3.ii. Community Forums</h3>
|
||||
<a name="kb"></a><h3>3.ii. Knowledge Base</h3>
|
||||
|
||||
<p>phpBB Group maintains a thriving community where a number of people have generously decided to donate their time to help support users. This site can be found at:</p>
|
||||
<p>The Knowledge Base consists of a number of detailed articles on some common issues phpBB users may encounter while using the product. The Knowledge Base can be found at:</p>
|
||||
|
||||
<p><a href="http://www.phpbb.com/">http://www.phpbb.com/</a></p>
|
||||
<p><a href="https://www.phpbb.com/kb/">https://www.phpbb.com/kb/</a></p>
|
||||
|
||||
<p>If you do seek help via our forums please be sure to do a Search before posting. This may well save both you and us time and allow the developer, moderator and support groups to spend more time responding to people with unknown issues and problems. Please also remember that phpBB is an entirely volunteer effort, no one receives any compensation for the time they give, this includes moderators as well as developers. So please be respectful and mindful when awaiting responses.</p>
|
||||
<a name="website"></a><h3>3.iii. Community Forums</h3>
|
||||
|
||||
<a name="irc"></a><h3>3.iii Internet Relay Chat</h3>
|
||||
<p>The phpBB Group maintains a thriving community where a number of people have generously decided to donate their time to help support users. This site can be found at:</p>
|
||||
|
||||
<p>Another place you may find help is our IRC channel. This operates on the Freenode IRC network, <em>irc.freenode.net</em> and the channel is <em>#phpbb</em> and can be accessed by any good IRC client such as mIRC, XChat, etc. Again, please do not abuse this service and be respectful of other users.</p>
|
||||
<p><a href="https://www.phpbb.com/community/">https://www.phpbb.com/community/</a></p>
|
||||
|
||||
<p>If you do seek help via our forums please be sure to do a search before posting; if someone has experienced the issue before, then you may find that your question has already been answered. Please remember that phpBB is entirely staffed by volunteers, no one receives any compensation for the time they give, including moderators as well as developers; please be respectful and mindful when awaiting responses and receiving support.</p>
|
||||
|
||||
<a name="irc"></a><h3>3.iv Internet Relay Chat</h3>
|
||||
|
||||
<p>Another place you may find help is our IRC channel. This operates on the Freenode IRC network, <a href="irc://irc.freenode.net">irc.freenode.net</a> and the channel is <em>#phpbb</em> and can be accessed by any decent IRC client such as mIRC, XChat, etc. Again, please do not abuse this service and be respectful of other users.</p>
|
||||
|
||||
<p>There are other IRC channels available, please see <a href="https://www.phpbb.com/support/irc/">https://www.phpbb.com/support/irc/</a> for the complete list.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -216,13 +226,13 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This is the third stable release of phpBB. The 3.0.x line is essentially feature frozen, with only point releases seeing fixes for bugs and security issues, though feature alterations and minor feature additions may be done if deemed absolutely required. Our next major release will be phpBB 3.2 and the planning phase has begun (the unstable development version is 3.1). Please do not post questions asking when 3.2 will be available, no release date has been set.</p>
|
||||
<p>This is the third stable release of phpBB. The 3.0.x line is essentially feature frozen, with only point releases seeing fixes for bugs and security issues, though feature alterations and minor feature additions may be done if deemed absolutely required. Our next major release will be phpBB 3.1. Please do not post questions asking when 3.1 will be available, no release date has been set.</p>
|
||||
|
||||
<p>For those interested in the development of phpBB should keep an eye on the community forums to see how things are progressing:</p>
|
||||
<p>Those interested in the development of phpBB should keep an eye on the development forums to see how things are progressing:</p>
|
||||
|
||||
<p><a href="http://area51.phpbb.com/phpBB/">http://area51.phpbb.com/phpBB/</a></p>
|
||||
|
||||
<p>Please note that this forum should <strong>NOT</strong> be used to obtain support for or ask questions about phpBB 2.0.x or phpBB 3.0.x, the main community forums are the place for this. Any such posts will be locked and go unanswered.</p>
|
||||
<p>Please note that the development forums should <strong>NOT</strong> be used to seek support for or ask questions about phpBB 2.0.x or phpBB 3.0.x, the main community forums are the place for this. Any such posts will be locked and go unanswered.</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -240,20 +250,20 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>The phpBB Group uses a bug tracking system to store, list and manage all reported bugs, it can be found at the location listed below. Please <strong>DO NOT</strong> post bug reports to our forums, they will be locked. In addition please <strong>DO NOT</strong> use the bug tracker for support requests. Posting such a request will only see you directed to the support forums (while taking time away from working on real bugs).</p>
|
||||
<p>The phpBB Group uses a bug tracking system to store, list and manage all reported bugs, it can be found at the location listed below. Please <strong>DO NOT</strong> post bug reports to our forums. In addition please <strong>DO NOT</strong> use the bug tracker for support requests. Posting such a request will only see you directed to the support forums (while taking time away from working on real bugs).</p>
|
||||
|
||||
<p><a href="http://tracker.phpbb.com/">http://tracker.phpbb.com/</a></p>
|
||||
<p><a href="http://tracker.phpbb.com/browse/PHPBB3">http://tracker.phpbb.com/browse/PHPBB3</a></p>
|
||||
|
||||
<p>While we very much appreciate receiving bug reports (the more reports the more stable phpBB will be) we ask you carry out a few steps before adding new entries:</p>
|
||||
|
||||
<ul>
|
||||
<li>Firstly determine if your bug is reproduceable, how to determine this depends on the bug in question. Only if the bug is reproduceable it is likely to be a problem with phpBB3 (or in some way connected). If something cannot be reproduced it may turn out to have been your hosting provider working on something, a user doing something silly, etc. Bug reports for non-reproduceable events can slow down our attempts to fix real, reproduceable issues<br /><br /></li>
|
||||
<li>Next please read or search through the existing bug reports to see if <em>your</em> bug (or one very similar to it) is already listed. If it is please add to that existing bug rather than creating a new duplicate entry (all this does is slow us down).<br /><br /></li>
|
||||
<li>Check the forums (use search!) to see if people have discussed anything that sounds similar to what you are seeing. However, as noted above please <strong>DO NOT</strong> post your particular bug to the forum unless it's non-reproduceable or you are sure it's related to something you have done rather phpBB3<br /><br /></li>
|
||||
<li>First, determine if your bug is reproduceable; how to determine this depends on the bug in question. Only if the bug is reproduceable is it likely to be a problem with phpBB3 (or in some way connected). If something cannot be reproduced it may turn out to have been your hosting provider working on something, a user doing something silly, etc. Bug reports for non-reproduceable events can slow down our attempts to fix real, reproduceable issues<br /><br /></li>
|
||||
<li>Next, please read or search through the existing bug reports to see if <em>your</em> bug (or one very similar to it) is already listed. If it is please add to that existing bug rather than creating a new duplicate entry (all this does is slow us down).<br /><br /></li>
|
||||
<li>Check the forums (use search!) to see if people have discussed anything that sounds similar to what you are seeing. However, as noted above please <strong>DO NOT</strong> post your particular bug to the forum unless it's non-reproduceable or you are sure it’s related to something you have done rather than phpBB3<br /><br /></li>
|
||||
<li>If no existing bug exists then please feel free to add it</li>
|
||||
</ul>
|
||||
|
||||
<p>If you do post a new bug (i.e. one that isn't already listed in the bug tracker) firstly make sure you have logged in (your username and password are the same as for the community forums) then please include the following details:</p>
|
||||
<p>If you do post a new bug (i.e. one that isn't already listed in the bug tracker) first make sure that you have logged in (your username and password are the same as for the community forums) then please include the following details:</p>
|
||||
|
||||
<ul>
|
||||
<li>Your server type/version, e.g. Apache 1.3.28, IIS 4, Sambar, etc.</li>
|
||||
@@ -261,9 +271,11 @@
|
||||
<li>DB type/version, e.g. MySQL 4.0.1, PostgreSQL 7.3.2, MSSQL Server 2000 SP1, etc.</li>
|
||||
</ul>
|
||||
|
||||
<p>The relevant database type/version is listed within the administration control panel</p>
|
||||
<p>The relevant database type/version is listed within the administration control panel.</p>
|
||||
|
||||
<p>Please also be as detailed as you can in your report, if possible list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request <a href="https://github.com/phpbb/phpbb3">on GitHub</a>.</p>
|
||||
<p>Please be as detailed as you can in your report, and if possible, list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request to our repository <a href="https://github.com/phpbb/phpbb3">on GitHub</a>.</p>
|
||||
|
||||
<p>If you create a patch, it is very much appreciated (but not required) if you follow the phpBB coding guidelines. Please note that the coding guidelines are somewhat different between different versions of phpBB. For phpBB 3.0.x the coding guidelines may be found here: <a href="http://area51.phpbb.com/docs/30x/coding-guidelines.html">http://area51.phpbb.com/docs/30x/coding-guidelines.html</a></p>
|
||||
|
||||
<p>Once a bug has been submitted you will be emailed any follow up comments added to it. <strong>Please</strong> if you are requested to supply additional information, do so! It is frustrating for us to receive bug reports, ask for additional information but get nothing. In these cases we have a policy of closing the bug, which may leave a very real problem in place. Obviously we would rather not have this situation arise.</p>
|
||||
|
||||
@@ -271,7 +283,7 @@
|
||||
|
||||
<p>If you find a potential security related vulnerability in phpBB please <strong>DO NOT</strong> post it to the bug tracker, public forums, etc.! Doing so may allow unscrupulous users to take advantage of it before we have time to put a fix in place. All security related bugs should be sent to our security tracker:</p>
|
||||
|
||||
<p><a href="http://www.phpbb.com/security/">http://www.phpbb.com/security/</a></p>
|
||||
<p><a href="https://www.phpbb.com/security/">https://www.phpbb.com/security/</a></p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -289,11 +301,11 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This list is not complete but does represent those bugs which may effect users on a wider scale. Other bugs listed in the tracker have typically been shown to be limited to certain setups or methods of installation, updating and/or conversions.</p>
|
||||
<p>This list is not complete but does represent those bugs which may affect users on a wider scale. Other bugs listed in the tracker have typically been shown to be limited to certain setups or methods of installation, updating and/or conversions.</p>
|
||||
|
||||
<ul>
|
||||
<li>Conversions may fail to complete on large boards under some hosts</li>
|
||||
<li>Updates may fail to complete on large update sets under some hosts</li>
|
||||
<li>Conversions may fail to complete on large boards under some hosts.</li>
|
||||
<li>Updates may fail to complete on large update sets under some hosts.</li>
|
||||
<li>Smilies placed directly after bbcode tags will not get parsed. Smilies always need to be separated by spaces.</li>
|
||||
</ul>
|
||||
|
||||
@@ -313,11 +325,11 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>phpBB is no longer supported on PHP3 due to several compatibility issues and we recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 4.3.3.</p>
|
||||
<p>phpBB is no longer supported on PHP3 due to several compatibility issues and we recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 4.3.3. The minimum version that will be required for phpBB 3.1 is PHP 5.3.3.</p>
|
||||
|
||||
<p>Please remember that running any application on a developmental version of PHP can lead to strange/unexpected results which may appear to be bugs in the application (which may not be true). Therefore we recommend you upgrade to the newest stable version of PHP before running phpBB3. If you are running a developmental version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
|
||||
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB3. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
|
||||
|
||||
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MSSQL Server 2000, PostgreSQL 7.x, Oracle 8, SQLite and Firebird. Versions of PHP used range from 4.3.3 to 6.0.0-dev without problem. </p>
|
||||
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MSSQL Server 2000, PostgreSQL 7.x, Oracle 8, SQLite 2 and Firebird. Versions of PHP used range from 4.3.3 to 5.4.x without problem. </p>
|
||||
|
||||
<a name="phpsec"></a><h3>7.i. Notice on PHP security issues</h3>
|
||||
|
||||
@@ -339,7 +351,7 @@
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-license.php">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright © <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@@ -200,7 +200,7 @@ $user_id = 2;
|
||||
$auth->acl_clear_prefetch($user_id);
|
||||
</pre></div>
|
||||
|
||||
<p>This method returns void.</p>
|
||||
<p>This method returns null.</p>
|
||||
|
||||
<a name="acl_get_list"></a><h3>2.viii. acl_get_list</h3>
|
||||
|
||||
@@ -275,7 +275,7 @@ $auth_admin = new auth_admin();
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-license.php">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@@ -129,9 +129,8 @@
|
||||
/**
|
||||
*
|
||||
* @package {PACKAGENAME}
|
||||
* @version $Id: $
|
||||
* @copyright (c) 2007 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
</pre></div>
|
||||
@@ -957,6 +956,8 @@ $action_ary = request_var('action', array('' => 0));
|
||||
<h4>Login checks/redirection: </h4>
|
||||
<p>To show a forum login box use <code>login_forum_box($forum_data)</code>, else use the <code>login_box()</code> function.</p>
|
||||
|
||||
<p><code>$forum_data</code> should contain at least the <code>forum_id</code> and <code>forum_password</code> fields. If the field <code>forum_name</code> is available, then it is displayed on the forum login page.</p>
|
||||
|
||||
<p>The <code>login_box()</code> function can have a redirect as the first parameter. As a thumb of rule, specify an empty string if you want to redirect to the users current location, else do not add the <code>$SID</code> to the redirect string (for example within the ucp/login we redirect to the board index because else the user would be redirected to the login screen).</p>
|
||||
|
||||
<h4>Sensitive Operations: </h4>
|
||||
@@ -1190,7 +1191,7 @@ append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;
|
||||
<span class="comment"><!-- INCLUDEPHP somefile.php --></span>
|
||||
</pre></div>
|
||||
|
||||
<p>it will be included and executed inline.<br /><br />A note, it is very much encouraged that template designers do not include PHP. The ability to include raw PHP was introduced primarily to allow end users to include banner code, etc. without modifying multiple files (as with 2.0.x). It was not intended for general use ... hence <!-- w --><a href="http://www.phpbb.com">www.phpbb.com</a><!-- w --> will <strong>not</strong> make available template sets which include PHP. And by default templates will have PHP disabled (the admin will need to specifically activate PHP for a template).</p>
|
||||
<p>it will be included and executed inline.<br /><br />A note, it is very much encouraged that template designers do not include PHP. The ability to include raw PHP was introduced primarily to allow end users to include banner code, etc. without modifying multiple files (as with 2.0.x). It was not intended for general use ... hence <!-- w --><a href="https://www.phpbb.com">www.phpbb.com</a><!-- w --> will <strong>not</strong> make available template sets which include PHP. And by default templates will have PHP disabled (the admin will need to specifically activate PHP for a template).</p>
|
||||
|
||||
<h4>Conditionals/Control structures</h4>
|
||||
<p>The most significant addition to 3.0.x are conditions or control structures, "if something then do this else do that". The system deployed is very similar to Smarty. This may confuse some people at first but it offers great potential and great flexibility with a little imagination. In their most simple form these constructs take the form:</p>
|
||||
@@ -2315,14 +2316,14 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="disclaimer"></a><h2>8. Copyright and disclaimer</h2>
|
||||
<a name="disclaimer"></a><h2>7. Copyright and disclaimer</h2>
|
||||
|
||||
<div class="paragraph">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-license.php">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@@ -867,7 +867,7 @@ function phpbb_hook_register(&$hook)
|
||||
|
||||
<div class="content">
|
||||
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-license.php">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@@ -170,7 +170,7 @@ else
|
||||
if (!$attachment['in_message'])
|
||||
{
|
||||
//
|
||||
$sql = 'SELECT p.forum_id, f.forum_password, f.parent_id
|
||||
$sql = 'SELECT p.forum_id, f.forum_name, f.forum_password, f.parent_id
|
||||
FROM ' . POSTS_TABLE . ' p, ' . FORUMS_TABLE . ' f
|
||||
WHERE p.post_id = ' . $attachment['post_msg_id'] . '
|
||||
AND p.forum_id = f.forum_id';
|
||||
@@ -285,7 +285,7 @@ else if (($display_cat == ATTACHMENT_CATEGORY_NONE/* || $display_cat == ATTACHME
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
if ($display_cat == ATTACHMENT_CATEGORY_IMAGE && $mode === 'view' && (strpos($attachment['mimetype'], 'image') === 0) && ((strpos(strtolower($user->browser), 'msie') !== false) && (strpos(strtolower($user->browser), 'msie 8.0') === false)))
|
||||
if ($display_cat == ATTACHMENT_CATEGORY_IMAGE && $mode === 'view' && (strpos($attachment['mimetype'], 'image') === 0) && (strpos(strtolower($user->browser), 'msie') !== false) && !phpbb_is_greater_ie_version($user->browser, 7))
|
||||
{
|
||||
wrap_img_in_html(append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $attachment['attach_id']), $attachment['real_filename']);
|
||||
file_gc();
|
||||
@@ -343,8 +343,8 @@ function send_avatar_to_browser($file, $browser)
|
||||
|
||||
$image_data = @getimagesize($file_path);
|
||||
header('Content-Type: ' . image_type_to_mime_type($image_data[2]));
|
||||
|
||||
if (strpos(strtolower($browser), 'msie') !== false && strpos(strtolower($browser), 'msie 8.0') === false)
|
||||
|
||||
if ((strpos(strtolower($browser), 'msie') !== false) && !phpbb_is_greater_ie_version($browser, 7))
|
||||
{
|
||||
header('Content-Disposition: attachment; ' . header_filename($file));
|
||||
|
||||
@@ -424,7 +424,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
if (!@file_exists($filename))
|
||||
{
|
||||
send_status_line(404, 'Not Found');
|
||||
trigger_error($user->lang['ERROR_NO_ATTACHMENT'] . '<br /><br />' . sprintf($user->lang['FILE_NOT_FOUND_404'], $filename));
|
||||
trigger_error('ERROR_NO_ATTACHMENT');
|
||||
}
|
||||
|
||||
// Correct the mime type - we force application/octetstream for all files, except images
|
||||
@@ -477,10 +477,9 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
*/
|
||||
|
||||
// Send out the Headers. Do not set Content-Disposition to inline please, it is a security measure for users using the Internet Explorer.
|
||||
$is_ie8 = (strpos(strtolower($user->browser), 'msie 8.0') !== false);
|
||||
header('Content-Type: ' . $attachment['mimetype']);
|
||||
|
||||
if ($is_ie8)
|
||||
|
||||
if (phpbb_is_greater_ie_version($user->browser, 7))
|
||||
{
|
||||
header('X-Content-Type-Options: nosniff');
|
||||
}
|
||||
@@ -492,7 +491,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (empty($user->browser) || (!$is_ie8 && (strpos(strtolower($user->browser), 'msie') !== false)))
|
||||
if (empty($user->browser) || ((strpos(strtolower($user->browser), 'msie') !== false) && !phpbb_is_greater_ie_version($user->browser, 7)))
|
||||
{
|
||||
header('Content-Disposition: attachment; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'])));
|
||||
if (empty($user->browser) || (strpos(strtolower($user->browser), 'msie 6.0') !== false))
|
||||
@@ -503,7 +502,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
else
|
||||
{
|
||||
header('Content-Disposition: ' . ((strpos($attachment['mimetype'], 'image') === 0) ? 'inline' : 'attachment') . '; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'])));
|
||||
if ($is_ie8 && (strpos($attachment['mimetype'], 'image') !== 0))
|
||||
if (phpbb_is_greater_ie_version($user->browser, 7) && (strpos($attachment['mimetype'], 'image') !== 0))
|
||||
{
|
||||
header('X-Download-Options: noopen');
|
||||
}
|
||||
@@ -680,7 +679,8 @@ function set_modified_headers($stamp, $browser)
|
||||
{
|
||||
// let's see if we have to send the file at all
|
||||
$last_load = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? strtotime(trim($_SERVER['HTTP_IF_MODIFIED_SINCE'])) : false;
|
||||
if ((strpos(strtolower($browser), 'msie 6.0') === false) && (strpos(strtolower($browser), 'msie 8.0') === false))
|
||||
|
||||
if (strpos(strtolower($browser), 'msie 6.0') === false && !phpbb_is_greater_ie_version($browser, 7))
|
||||
{
|
||||
if ($last_load !== false && $last_load >= $stamp)
|
||||
{
|
||||
@@ -709,4 +709,25 @@ function file_gc()
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the browser is internet explorer version 7+
|
||||
*
|
||||
* @param string $user_agent User agent HTTP header
|
||||
* @param int $version IE version to check against
|
||||
*
|
||||
* @return bool true if internet explorer version is greater than $version
|
||||
*/
|
||||
function phpbb_is_greater_ie_version($user_agent, $version)
|
||||
{
|
||||
if (preg_match('/msie (\d+)/', strtolower($user_agent), $matches))
|
||||
{
|
||||
$ie_version = (int) $matches[1];
|
||||
return ($ie_version > $version);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@@ -33,7 +33,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Purge cache data
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function purge()
|
||||
{
|
||||
|
@@ -37,7 +37,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Purge cache data
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function purge()
|
||||
{
|
||||
@@ -54,7 +54,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Perform cache garbage collection
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function tidy()
|
||||
{
|
||||
|
@@ -71,7 +71,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Unload the cache resources
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function unload()
|
||||
{
|
||||
@@ -83,7 +83,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Purge cache data
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function purge()
|
||||
{
|
||||
|
@@ -80,7 +80,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Unload the cache resources
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function unload()
|
||||
{
|
||||
@@ -92,7 +92,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Purge cache data
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function purge()
|
||||
{
|
||||
|
@@ -32,7 +32,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Purge cache data
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function purge()
|
||||
{
|
||||
|
@@ -48,7 +48,7 @@ class acm extends acm_memory
|
||||
/**
|
||||
* Purge cache data
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function purge()
|
||||
{
|
||||
|
@@ -113,8 +113,8 @@ class acp_bbcodes
|
||||
{
|
||||
$template->assign_block_vars('token', array(
|
||||
'TOKEN' => '{' . $token . '}',
|
||||
'EXPLAIN' => $token_explain)
|
||||
);
|
||||
'EXPLAIN' => ($token === 'LOCAL_URL') ? sprintf($token_explain, generate_board_url() . '/') : $token_explain,
|
||||
));
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -345,6 +345,9 @@ class acp_bbcodes
|
||||
'LOCAL_URL' => array(
|
||||
'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e' => "\$this->bbcode_specialchars('$1')"
|
||||
),
|
||||
'RELATIVE_URL' => array(
|
||||
'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e' => "\$this->bbcode_specialchars('$1')"
|
||||
),
|
||||
'EMAIL' => array(
|
||||
'!(' . get_preg_expression('email') . ')!ie' => "\$this->bbcode_specialchars('$1')"
|
||||
),
|
||||
@@ -371,6 +374,7 @@ class acp_bbcodes
|
||||
$sp_tokens = array(
|
||||
'URL' => '(?i)((?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('url')) . ')|(?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('www_url')) . '))(?-i)',
|
||||
'LOCAL_URL' => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)',
|
||||
'RELATIVE_URL' => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)',
|
||||
'EMAIL' => '(' . get_preg_expression('email') . ')',
|
||||
'TEXT' => '(.*?)',
|
||||
'SIMPLETEXT' => '([a-zA-Z0-9-+.,_ ]+)',
|
||||
@@ -427,7 +431,11 @@ class acp_bbcodes
|
||||
$fp_replace = str_replace($token, $replace, $fp_replace);
|
||||
|
||||
$sp_match = str_replace(preg_quote($token, '!'), $sp_tokens[$token_type], $sp_match);
|
||||
$sp_replace = str_replace($token, '${' . ($n + 1) . '}', $sp_replace);
|
||||
|
||||
// Prepend the board url to local relative links
|
||||
$replace_prepend = ($token_type === 'LOCAL_URL') ? generate_board_url() . '/' : '';
|
||||
|
||||
$sp_replace = str_replace($token, $replace_prepend . '${' . ($n + 1) . '}', $sp_replace);
|
||||
}
|
||||
|
||||
$fp_match = '!' . $fp_match . '!' . $modifiers;
|
||||
|
@@ -234,7 +234,7 @@ class acp_board
|
||||
'max_name_chars' => array('lang' => 'USERNAME_LENGTH', 'validate' => 'int:8:180', 'type' => false, 'method' => false, 'explain' => false,),
|
||||
'max_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:8:255', 'type' => false, 'method' => false, 'explain' => false,),
|
||||
|
||||
'require_activation' => array('lang' => 'ACC_ACTIVATION', 'validate' => 'int', 'type' => 'custom', 'method' => 'select_acc_activation', 'explain' => true),
|
||||
'require_activation' => array('lang' => 'ACC_ACTIVATION', 'validate' => 'int', 'type' => 'select', 'method' => 'select_acc_activation', 'explain' => true),
|
||||
'new_member_post_limit' => array('lang' => 'NEW_MEMBER_POST_LIMIT', 'validate' => 'int:0:255', 'type' => 'text:4:4', 'explain' => true, 'append' => ' ' . $user->lang['POSTS']),
|
||||
'new_member_group_default'=> array('lang' => 'NEW_MEMBER_GROUP_DEFAULT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'min_name_chars' => array('lang' => 'USERNAME_LENGTH', 'validate' => 'int:1', 'type' => 'custom:5:180', 'method' => 'username_length', 'explain' => true),
|
||||
@@ -383,6 +383,8 @@ class acp_board
|
||||
'referer_validation' => array('lang' => 'REFERER_VALID', 'validate' => 'int:0:3','type' => 'custom', 'method' => 'select_ref_check', 'explain' => true),
|
||||
'check_dnsbl' => array('lang' => 'CHECK_DNSBL', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'email_check_mx' => array('lang' => 'EMAIL_CHECK_MX', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'max_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:8:255', 'type' => false, 'method' => false, 'explain' => false,),
|
||||
'min_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:1', 'type' => 'custom', 'method' => 'password_length', 'explain' => true),
|
||||
'pass_complex' => array('lang' => 'PASSWORD_TYPE', 'validate' => 'string', 'type' => 'select', 'method' => 'select_password_chars', 'explain' => true),
|
||||
'chg_passforce' => array('lang' => 'FORCE_PASS_CHANGE', 'validate' => 'int:0', 'type' => 'text:3:3', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
||||
'max_login_attempts' => array('lang' => 'MAX_LOGIN_ATTEMPTS', 'validate' => 'int:0', 'type' => 'text:3:3', 'explain' => true),
|
||||
@@ -406,8 +408,8 @@ class acp_board
|
||||
'board_email_form' => array('lang' => 'BOARD_EMAIL_FORM', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
||||
'email_function_name' => array('lang' => 'EMAIL_FUNCTION_NAME', 'validate' => 'string', 'type' => 'text:20:50', 'explain' => true),
|
||||
'email_package_size' => array('lang' => 'EMAIL_PACKAGE_SIZE', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true),
|
||||
'board_contact' => array('lang' => 'CONTACT_EMAIL', 'validate' => 'string', 'type' => 'text:25:100', 'explain' => true),
|
||||
'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'string', 'type' => 'text:25:100', 'explain' => true),
|
||||
'board_contact' => array('lang' => 'CONTACT_EMAIL', 'validate' => 'email', 'type' => 'text:25:100', 'explain' => true),
|
||||
'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'email', 'type' => 'text:25:100', 'explain' => true),
|
||||
'board_email_sig' => array('lang' => 'EMAIL_SIG', 'validate' => 'string', 'type' => 'textarea:5:30', 'explain' => true),
|
||||
'board_hide_emails' => array('lang' => 'BOARD_HIDE_EMAILS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
|
||||
@@ -768,24 +770,28 @@ class acp_board
|
||||
/**
|
||||
* Select account activation method
|
||||
*/
|
||||
function select_acc_activation($value, $key = '')
|
||||
function select_acc_activation($selected_value, $value)
|
||||
{
|
||||
global $user, $config;
|
||||
|
||||
$radio_ary = array(
|
||||
USER_ACTIVATION_DISABLE => 'ACC_DISABLE',
|
||||
USER_ACTIVATION_NONE => 'ACC_NONE',
|
||||
$act_ary = array(
|
||||
'ACC_DISABLE' => USER_ACTIVATION_DISABLE,
|
||||
'ACC_NONE' => USER_ACTIVATION_NONE,
|
||||
);
|
||||
|
||||
if ($config['email_enable'])
|
||||
{
|
||||
$radio_ary[USER_ACTIVATION_SELF] = 'ACC_USER';
|
||||
$radio_ary[USER_ACTIVATION_ADMIN] = 'ACC_ADMIN';
|
||||
$act_ary['ACC_USER'] = USER_ACTIVATION_SELF;
|
||||
$act_ary['ACC_ADMIN'] = USER_ACTIVATION_ADMIN;
|
||||
}
|
||||
$act_options = '';
|
||||
|
||||
foreach ($act_ary as $key => $value)
|
||||
{
|
||||
$selected = ($selected_value == $value) ? ' selected="selected"' : '';
|
||||
$act_options .= '<option value="' . $value . '"' . $selected . '>' . $user->lang[$key] . '</option>';
|
||||
}
|
||||
|
||||
$radio_text = h_radio('config[require_activation]', $radio_ary, $value, 'require_activation', $key, '<br />');
|
||||
|
||||
return $radio_text;
|
||||
return $act_options;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -96,7 +96,7 @@ class acp_captcha
|
||||
}
|
||||
else if ($submit)
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link(), E_USER_WARNING);
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -124,6 +124,8 @@ class acp_captcha
|
||||
'CAPTCHA_PREVIEW_TPL' => $demo_captcha->get_demo_template($id),
|
||||
'S_CAPTCHA_HAS_CONFIG' => $demo_captcha->has_config(),
|
||||
'CAPTCHA_SELECT' => $captcha_select,
|
||||
|
||||
'U_ACTION' => $this->u_action,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@@ -21,6 +21,7 @@ if (!defined('IN_PHPBB'))
|
||||
*/
|
||||
class acp_database
|
||||
{
|
||||
var $db_tools;
|
||||
var $u_action;
|
||||
|
||||
function main($id, $mode)
|
||||
@@ -28,6 +29,12 @@ class acp_database
|
||||
global $cache, $db, $user, $auth, $template, $table_prefix;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
if (!class_exists('phpbb_db_tools'))
|
||||
{
|
||||
require($phpbb_root_path . 'includes/db/db_tools.' . $phpEx);
|
||||
}
|
||||
$this->db_tools = new phpbb_db_tools($db);
|
||||
|
||||
$user->add_lang('acp/database');
|
||||
|
||||
$this->tpl_name = 'acp_database';
|
||||
@@ -50,7 +57,7 @@ class acp_database
|
||||
{
|
||||
case 'download':
|
||||
$type = request_var('type', '');
|
||||
$table = request_var('table', array(''));
|
||||
$table = array_intersect($this->db_tools->sql_list_tables(), request_var('table', array('')));
|
||||
$format = request_var('method', '');
|
||||
$where = request_var('where', '');
|
||||
|
||||
@@ -173,8 +180,7 @@ class acp_database
|
||||
break;
|
||||
|
||||
default:
|
||||
include($phpbb_root_path . 'includes/functions_install.' . $phpEx);
|
||||
$tables = get_tables($db);
|
||||
$tables = $this->db_tools->sql_list_tables();
|
||||
asort($tables);
|
||||
foreach ($tables as $table_name)
|
||||
{
|
||||
|
@@ -80,6 +80,11 @@ class acp_groups
|
||||
case 'approve':
|
||||
case 'demote':
|
||||
case 'promote':
|
||||
if (!check_form_key($form_key))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!$group_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
@@ -120,48 +125,64 @@ class acp_groups
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
else if (empty($mark_ary))
|
||||
{
|
||||
trigger_error($user->lang['NO_USERS'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (confirm_box(true))
|
||||
{
|
||||
$group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'];
|
||||
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
||||
trigger_error($user->lang['GROUP_DEFS_UPDATED'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id));
|
||||
}
|
||||
else
|
||||
{
|
||||
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
|
||||
'mark' => $mark_ary,
|
||||
'g' => $group_id,
|
||||
'i' => $id,
|
||||
'mode' => $mode,
|
||||
'action' => $action))
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
if (!sizeof($mark_ary))
|
||||
case 'set_default_on_all':
|
||||
if (confirm_box(true))
|
||||
{
|
||||
$group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'];
|
||||
|
||||
$start = 0;
|
||||
|
||||
do
|
||||
{
|
||||
$start = 0;
|
||||
$sql = 'SELECT user_id
|
||||
FROM ' . USER_GROUP_TABLE . "
|
||||
WHERE group_id = $group_id
|
||||
ORDER BY user_id";
|
||||
$result = $db->sql_query_limit($sql, 200, $start);
|
||||
|
||||
do
|
||||
$mark_ary = array();
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$sql = 'SELECT user_id
|
||||
FROM ' . USER_GROUP_TABLE . "
|
||||
WHERE group_id = $group_id
|
||||
ORDER BY user_id";
|
||||
$result = $db->sql_query_limit($sql, 200, $start);
|
||||
|
||||
$mark_ary = array();
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
do
|
||||
{
|
||||
do
|
||||
{
|
||||
$mark_ary[] = $row['user_id'];
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
||||
|
||||
$start = (sizeof($mark_ary) < 200) ? 0 : $start + 200;
|
||||
$mark_ary[] = $row['user_id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$start = 0;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
||||
|
||||
$start = (sizeof($mark_ary) < 200) ? 0 : $start + 200;
|
||||
}
|
||||
while ($start);
|
||||
}
|
||||
else
|
||||
{
|
||||
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
||||
else
|
||||
{
|
||||
$start = 0;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
while ($start);
|
||||
|
||||
trigger_error($user->lang['GROUP_DEFS_UPDATED'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id));
|
||||
}
|
||||
@@ -175,10 +196,13 @@ class acp_groups
|
||||
'action' => $action))
|
||||
);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'deleteusers':
|
||||
if (empty($mark_ary))
|
||||
{
|
||||
trigger_error($user->lang['NO_USERS'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id), E_USER_WARNING);
|
||||
}
|
||||
case 'delete':
|
||||
if (!$group_id)
|
||||
{
|
||||
@@ -233,6 +257,11 @@ class acp_groups
|
||||
break;
|
||||
|
||||
case 'addusers':
|
||||
if (!check_form_key($form_key))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!$group_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
@@ -394,13 +423,21 @@ class acp_groups
|
||||
}
|
||||
}
|
||||
|
||||
// Validate the length of "Maximum number of allowed recipients per private message" setting.
|
||||
// We use 16777215 as a maximum because it matches MySQL unsigned mediumint maximum value
|
||||
// which is the lowest amongst DBMSes supported by phpBB3
|
||||
if ($max_recipients_error = validate_data($submit_ary, array('max_recipients' => array('num', false, 0, 16777215))))
|
||||
/*
|
||||
* Validate the length of "Maximum number of allowed recipients per
|
||||
* private message" setting. We use 16777215 as a maximum because it matches
|
||||
* MySQL unsigned mediumint maximum value which is the lowest amongst DBMSes
|
||||
* supported by phpBB3. Also validate the submitted colour value.
|
||||
*/
|
||||
$validation_checks = array(
|
||||
'max_recipients' => array('num', false, 0, 16777215),
|
||||
'colour' => array('hex_colour', true),
|
||||
);
|
||||
|
||||
if ($validation_error = validate_data($submit_ary, $validation_checks))
|
||||
{
|
||||
// Replace "error" string with its real, localised form
|
||||
$error = array_merge($error, array_map(array(&$user, 'lang'), $max_recipients_error));
|
||||
$error = array_merge($error, $validation_error);
|
||||
}
|
||||
|
||||
if (!sizeof($error))
|
||||
@@ -493,6 +530,7 @@ class acp_groups
|
||||
|
||||
if (sizeof($error))
|
||||
{
|
||||
$error = array_map(array(&$user, 'lang'), $error);
|
||||
$group_rank = $submit_ary['rank'];
|
||||
|
||||
$group_desc_data = array(
|
||||
@@ -683,7 +721,7 @@ class acp_groups
|
||||
'U_ACTION' => $this->u_action . "&g=$group_id",
|
||||
'U_BACK' => $this->u_action,
|
||||
'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=list&field=usernames'),
|
||||
'U_DEFAULT_ALL' => "{$this->u_action}&action=default&g=$group_id",
|
||||
'U_DEFAULT_ALL' => "{$this->u_action}&action=set_default_on_all&g=$group_id",
|
||||
));
|
||||
|
||||
// Grab the members
|
||||
@@ -795,4 +833,4 @@ class acp_groups
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
@@ -201,7 +201,7 @@ class acp_main
|
||||
// No maximum post id? :o
|
||||
if (!$max_post_id)
|
||||
{
|
||||
$sql = 'SELECT MAX(post_id)
|
||||
$sql = 'SELECT MAX(post_id) as max_post_id
|
||||
FROM ' . POSTS_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
$max_post_id = (int) $db->sql_fetchfield('max_post_id');
|
||||
@@ -398,11 +398,11 @@ class acp_main
|
||||
// Version check
|
||||
$user->add_lang('install');
|
||||
|
||||
if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.2.0', '<'))
|
||||
if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.3.3', '<'))
|
||||
{
|
||||
$template->assign_vars(array(
|
||||
'S_PHP_VERSION_OLD' => true,
|
||||
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], '<a href="http://www.phpbb.com/community/viewtopic.php?f=14&t=1958605">', '</a>'),
|
||||
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], '<a href="https://www.phpbb.com/community/viewtopic.php?f=14&t=2152375">', '</a>'),
|
||||
));
|
||||
}
|
||||
|
||||
|
@@ -365,6 +365,7 @@ class acp_profile
|
||||
$field_row = array_merge($default_values[$field_type], array(
|
||||
'field_ident' => str_replace(' ', '_', utf8_clean_string(request_var('field_ident', '', true))),
|
||||
'field_required' => 0,
|
||||
'field_show_novalue'=> 0,
|
||||
'field_hide' => 0,
|
||||
'field_show_profile'=> 0,
|
||||
'field_no_view' => 0,
|
||||
@@ -380,7 +381,7 @@ class acp_profile
|
||||
|
||||
// $exclude contains the data we gather in each step
|
||||
$exclude = array(
|
||||
1 => array('field_ident', 'lang_name', 'lang_explain', 'field_option_none', 'field_show_on_reg', 'field_show_on_vt', 'field_required', 'field_hide', 'field_show_profile', 'field_no_view'),
|
||||
1 => array('field_ident', 'lang_name', 'lang_explain', 'field_option_none', 'field_show_on_reg', 'field_show_on_vt', 'field_required', 'field_show_novalue', 'field_hide', 'field_show_profile', 'field_no_view'),
|
||||
2 => array('field_length', 'field_maxlen', 'field_minlen', 'field_validation', 'field_novalue', 'field_default_value'),
|
||||
3 => array('l_lang_name', 'l_lang_explain', 'l_lang_default_value', 'l_lang_options')
|
||||
);
|
||||
@@ -405,6 +406,7 @@ class acp_profile
|
||||
// Visibility Options...
|
||||
$visibility_ary = array(
|
||||
'field_required',
|
||||
'field_show_novalue',
|
||||
'field_show_on_reg',
|
||||
'field_show_on_vt',
|
||||
'field_show_profile',
|
||||
@@ -504,11 +506,34 @@ class acp_profile
|
||||
}
|
||||
}
|
||||
}
|
||||
/* else if ($field_type == FIELD_BOOL && $key == 'field_default_value')
|
||||
else if ($field_type == FIELD_BOOL && $key == 'field_default_value')
|
||||
{
|
||||
// Get the number of options if this key is 'field_maxlen'
|
||||
$var = request_var('field_default_value', 0);
|
||||
}*/
|
||||
// 'field_length' == 1 defines radio buttons. Possible values are 1 or 2 only.
|
||||
// 'field_length' == 2 defines checkbox. Possible values are 0 or 1 only.
|
||||
// If we switch the type on step 2, we have to adjust field value.
|
||||
// 1 is a common value for the checkbox and radio buttons.
|
||||
|
||||
// Adjust unchecked checkbox value.
|
||||
// If we return or save settings from 2nd/3rd page
|
||||
// and the checkbox is unchecked, set the value to 0.
|
||||
if (isset($_REQUEST['step']) && !isset($_REQUEST[$key]))
|
||||
{
|
||||
$var = 0;
|
||||
}
|
||||
|
||||
// If we switch to the checkbox type but former radio buttons value was 2,
|
||||
// which is not the case for the checkbox, set it to 0 (unchecked).
|
||||
if ($cp->vars['field_length'] == 2 && $var == 2)
|
||||
{
|
||||
$var = 0;
|
||||
}
|
||||
// If we switch to the radio buttons but the former checkbox value was 0,
|
||||
// which is not the case for the radio buttons, set it to 0.
|
||||
else if ($cp->vars['field_length'] == 1 && $var == 0)
|
||||
{
|
||||
$var = 2;
|
||||
}
|
||||
}
|
||||
else if ($field_type == FIELD_INT && $key == 'field_default_value')
|
||||
{
|
||||
// Permit an empty string
|
||||
@@ -676,6 +701,10 @@ class acp_profile
|
||||
{
|
||||
$_new_key_ary[$key] = utf8_normalize_nfc(request_var($key, array(array('')), true));
|
||||
}
|
||||
else if ($field_type == FIELD_BOOL && $key == 'field_default_value')
|
||||
{
|
||||
$_new_key_ary[$key] = request_var($key, $cp->vars[$key]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!isset($_REQUEST[$key]))
|
||||
@@ -730,6 +759,7 @@ class acp_profile
|
||||
$template->assign_vars(array(
|
||||
'S_STEP_ONE' => true,
|
||||
'S_FIELD_REQUIRED' => ($cp->vars['field_required']) ? true : false,
|
||||
'S_FIELD_SHOW_NOVALUE'=> ($cp->vars['field_show_novalue']) ? true : false,
|
||||
'S_SHOW_ON_REG' => ($cp->vars['field_show_on_reg']) ? true : false,
|
||||
'S_SHOW_ON_VT' => ($cp->vars['field_show_on_vt']) ? true : false,
|
||||
'S_FIELD_HIDE' => ($cp->vars['field_hide']) ? true : false,
|
||||
@@ -1046,6 +1076,7 @@ class acp_profile
|
||||
'field_default_value' => $cp->vars['field_default_value'],
|
||||
'field_validation' => $cp->vars['field_validation'],
|
||||
'field_required' => $cp->vars['field_required'],
|
||||
'field_show_novalue' => $cp->vars['field_show_novalue'],
|
||||
'field_show_on_reg' => $cp->vars['field_show_on_reg'],
|
||||
'field_show_on_vt' => $cp->vars['field_show_on_vt'],
|
||||
'field_hide' => $cp->vars['field_hide'],
|
||||
|
@@ -52,7 +52,7 @@ class acp_ranks
|
||||
}
|
||||
$rank_title = utf8_normalize_nfc(request_var('title', '', true));
|
||||
$special_rank = request_var('special_rank', 0);
|
||||
$min_posts = ($special_rank) ? 0 : request_var('min_posts', 0);
|
||||
$min_posts = ($special_rank) ? 0 : max(0, request_var('min_posts', 0));
|
||||
$rank_image = request_var('rank_image', '');
|
||||
|
||||
// The rank image has to be a jpg, gif or png
|
||||
|
@@ -29,7 +29,7 @@ class acp_send_statistics
|
||||
{
|
||||
global $config, $template, $phpbb_admin_path, $phpEx;
|
||||
|
||||
$collect_url = "http://www.phpbb.com/stats/receive_stats.php";
|
||||
$collect_url = "https://www.phpbb.com/stats/receive_stats.php";
|
||||
|
||||
$this->tpl_name = 'acp_send_statistics';
|
||||
$this->page_title = 'ACP_SEND_STATISTICS';
|
||||
|
@@ -99,11 +99,11 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
$this->template_cfg .= '
|
||||
# Some configuration options
|
||||
|
||||
#
|
||||
# You can use this function to inherit templates from another template.
|
||||
# The template of the given name has to be installed.
|
||||
# Templates cannot inherit from inheriting templates.
|
||||
#';
|
||||
# Template inheritance
|
||||
# See http://blog.phpbb.com/2008/07/31/templating-just-got-easier/
|
||||
# Set value to empty or this template name to ignore template inheritance.
|
||||
inherit_from = {INHERIT_FROM}
|
||||
';
|
||||
|
||||
$this->imageset_keys = array(
|
||||
'logos' => array(
|
||||
@@ -540,12 +540,14 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
global $user, $template, $db, $config, $phpbb_root_path, $phpEx;
|
||||
|
||||
$sql_from = '';
|
||||
$sql_sort = 'LOWER(' . $mode . '_name)';
|
||||
$style_count = array();
|
||||
|
||||
switch ($mode)
|
||||
{
|
||||
case 'style':
|
||||
$sql_from = STYLES_TABLE;
|
||||
$sql_sort = 'style_active DESC, ' . $sql_sort;
|
||||
|
||||
$sql = 'SELECT user_style, COUNT(user_style) AS style_count
|
||||
FROM ' . USERS_TABLE . '
|
||||
@@ -571,6 +573,9 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
case 'imageset':
|
||||
$sql_from = STYLES_IMAGESET_TABLE;
|
||||
break;
|
||||
|
||||
default:
|
||||
trigger_error($user->lang['NO_MODE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$l_prefix = strtoupper($mode);
|
||||
@@ -594,7 +599,8 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
);
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM $sql_from";
|
||||
FROM $sql_from
|
||||
ORDER BY $sql_sort ASC";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$installed = array();
|
||||
@@ -630,6 +636,8 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
|
||||
'NAME' => $row[$mode . '_name'],
|
||||
'STYLE_COUNT' => ($mode == 'style' && isset($style_count[$row['style_id']])) ? $style_count[$row['style_id']] : 0,
|
||||
|
||||
'S_INACTIVE' => ($mode == 'style' && !$row['style_active']) ? true : false,
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -659,7 +667,9 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
|
||||
if ($name && !in_array($name, $installed))
|
||||
{
|
||||
$new_ary[] = array(
|
||||
// The array key is used for sorting later on.
|
||||
// $file is appended because $name doesn't have to be unique.
|
||||
$new_ary[$name . $file] = array(
|
||||
'path' => $file,
|
||||
'name' => $name,
|
||||
'copyright' => $items['copyright'],
|
||||
@@ -675,6 +685,8 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
|
||||
if (sizeof($new_ary))
|
||||
{
|
||||
ksort($new_ary);
|
||||
|
||||
foreach ($new_ary as $cfg)
|
||||
{
|
||||
$template->assign_block_vars('uninstalled', array(
|
||||
@@ -1634,6 +1646,13 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
trigger_error($user->lang['NO_' . $l_prefix] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$s_only_component = $this->display_component_options($mode, $style_row[$mode . '_id'], $style_row);
|
||||
|
||||
if ($s_only_component)
|
||||
{
|
||||
trigger_error($user->lang['ONLY_' . $l_prefix] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if ($update)
|
||||
{
|
||||
if ($mode == 'style')
|
||||
@@ -1678,8 +1697,6 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
trigger_error($user->lang[$message] . adm_back_link($this->u_action));
|
||||
}
|
||||
|
||||
$this->display_component_options($mode, $style_row[$mode . '_id'], $style_row);
|
||||
|
||||
$this->page_title = 'DELETE_' . $l_prefix;
|
||||
|
||||
$template->assign_vars(array(
|
||||
@@ -1765,11 +1782,14 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
|
||||
/**
|
||||
* Display the options which can be used to replace a style/template/theme/imageset
|
||||
*
|
||||
* @return boolean Returns true if the component is the only component and can not be deleted.
|
||||
*/
|
||||
function display_component_options($component, $component_id, $style_row = false, $style_id = false)
|
||||
{
|
||||
global $db, $template, $user;
|
||||
|
||||
$is_only_component = true;
|
||||
$component_in_use = array();
|
||||
if ($component != 'style')
|
||||
{
|
||||
@@ -1801,6 +1821,9 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
$s_options = '';
|
||||
if (($component != 'style') && empty($component_in_use))
|
||||
{
|
||||
// If it is not in use, there must be another component
|
||||
$is_only_component = false;
|
||||
|
||||
$sql = "SELECT {$component}_id, {$component}_name
|
||||
FROM $sql_from
|
||||
WHERE {$component}_id = {$component_id}";
|
||||
@@ -1824,6 +1847,7 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
{
|
||||
if ($row[$component . '_id'] != $component_id)
|
||||
{
|
||||
$is_only_component = false;
|
||||
$s_options .= '<option value="' . $row[$component . '_id'] . '">' . sprintf($user->lang['REPLACE_WITH_OPTION'], $row[$component . '_name']) . '</option>';
|
||||
}
|
||||
else if ($component != 'style')
|
||||
@@ -1851,6 +1875,8 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $is_only_component;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2025,9 +2051,7 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
// Export template core code
|
||||
if ($mode == 'template' || $inc_template)
|
||||
{
|
||||
$template_cfg = str_replace(array('{MODE}', '{NAME}', '{COPYRIGHT}', '{VERSION}'), array($mode, $style_row['template_name'], $style_row['template_copyright'], $config['version']), $this->template_cfg);
|
||||
|
||||
$use_template_name = '';
|
||||
$use_template_name = $style_row['template_name'];
|
||||
|
||||
// Add the inherit from variable, depending on it's use...
|
||||
if ($style_row['template_inherits_id'])
|
||||
@@ -2041,7 +2065,8 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
$template_cfg .= ($use_template_name) ? "\ninherit_from = $use_template_name" : "\n#inherit_from = ";
|
||||
$template_cfg = str_replace(array('{MODE}', '{NAME}', '{COPYRIGHT}', '{VERSION}', '{INHERIT_FROM}'), array($mode, $style_row['template_name'], $style_row['template_copyright'], $config['version'], $use_template_name), $this->template_cfg);
|
||||
|
||||
$template_cfg .= "\n\nbbcode_bitfield = {$style_row['bbcode_bitfield']}";
|
||||
|
||||
$data[] = array(
|
||||
|
@@ -39,7 +39,7 @@ class acp_update
|
||||
|
||||
$info = obtain_latest_version_info(request_var('versioncheck_force', false));
|
||||
|
||||
if ($info === false)
|
||||
if (empty($info))
|
||||
{
|
||||
trigger_error('VERSIONCHECK_FAIL', E_USER_WARNING);
|
||||
}
|
||||
|
@@ -1009,6 +1009,13 @@ class acp_users
|
||||
$user_row['posts_in_queue'] = (int) $db->sql_fetchfield('posts_in_queue');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = 'SELECT post_id
|
||||
FROM ' . POSTS_TABLE . '
|
||||
WHERE poster_id = '. $user_id;
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$user_row['user_has_posts'] = (bool) $db->sql_fetchfield('post_id');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'L_NAME_CHARS_EXPLAIN' => sprintf($user->lang[$config['allow_name_chars'] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']),
|
||||
'L_CHANGE_PASSWORD_EXPLAIN' => sprintf($user->lang[$config['pass_complex'] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']),
|
||||
@@ -1036,6 +1043,7 @@ class acp_users
|
||||
'USER_EMAIL' => $user_row['user_email'],
|
||||
'USER_WARNINGS' => $user_row['user_warnings'],
|
||||
'USER_POSTS' => $user_row['user_posts'],
|
||||
'USER_HAS_POSTS' => $user_row['user_has_posts'],
|
||||
'USER_INACTIVE_REASON' => $inactive_reason,
|
||||
));
|
||||
|
||||
@@ -2339,47 +2347,62 @@ class acp_users
|
||||
}
|
||||
|
||||
/**
|
||||
* Optionset replacement for this module based on $user->optionset
|
||||
* Set option bit field for user options in a user row array.
|
||||
*
|
||||
* Optionset replacement for this module based on $user->optionset.
|
||||
*
|
||||
* @param array $user_row Row from the users table.
|
||||
* @param int $key Option key, as defined in $user->keyoptions property.
|
||||
* @param bool $value True to set the option, false to clear the option.
|
||||
* @param int $data Current bit field value, or false to use $user_row['user_options']
|
||||
* @return int|bool If $data is false, the bit field is modified and
|
||||
* written back to $user_row['user_options'], and
|
||||
* return value is true if the bit field changed and
|
||||
* false otherwise. If $data is not false, the new
|
||||
* bitfield value is returned.
|
||||
*/
|
||||
function optionset(&$user_row, $key, $value, $data = false)
|
||||
{
|
||||
global $user;
|
||||
|
||||
$var = ($data) ? $data : $user_row['user_options'];
|
||||
$var = ($data !== false) ? $data : $user_row['user_options'];
|
||||
|
||||
if ($value && !($var & 1 << $user->keyoptions[$key]))
|
||||
$new_var = phpbb_optionset($user->keyoptions[$key], $value, $var);
|
||||
|
||||
if ($data === false)
|
||||
{
|
||||
$var += 1 << $user->keyoptions[$key];
|
||||
}
|
||||
else if (!$value && ($var & 1 << $user->keyoptions[$key]))
|
||||
{
|
||||
$var -= 1 << $user->keyoptions[$key];
|
||||
if ($new_var != $var)
|
||||
{
|
||||
$user_row['user_options'] = $new_var;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return ($data) ? $var : false;
|
||||
}
|
||||
|
||||
if (!$data)
|
||||
{
|
||||
$user_row['user_options'] = $var;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $var;
|
||||
return $new_var;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Optionget replacement for this module based on $user->optionget
|
||||
* Get option bit field from user options in a user row array.
|
||||
*
|
||||
* Optionget replacement for this module based on $user->optionget.
|
||||
*
|
||||
* @param array $user_row Row from the users table.
|
||||
* @param int $key option key, as defined in $user->keyoptions property.
|
||||
* @param int $data bit field value to use, or false to use $user_row['user_options']
|
||||
* @return bool true if the option is set in the bit field, false otherwise
|
||||
*/
|
||||
function optionget(&$user_row, $key, $data = false)
|
||||
{
|
||||
global $user;
|
||||
|
||||
$var = ($data) ? $data : $user_row['user_options'];
|
||||
return ($var & 1 << $user->keyoptions[$key]) ? true : false;
|
||||
$var = ($data !== false) ? $data : $user_row['user_options'];
|
||||
return phpbb_optionget($user->keyoptions[$key], $var);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -163,7 +163,7 @@ function login_db($username, $password, $ip = '', $browser = '', $forwarded_for
|
||||
$password_old_format = (!STRIP) ? addslashes($password_old_format) : $password_old_format;
|
||||
$password_new_format = '';
|
||||
|
||||
set_var($password_new_format, stripslashes($password_old_format), 'string');
|
||||
set_var($password_new_format, stripslashes($password_old_format), 'string', true);
|
||||
|
||||
if ($password == $password_new_format)
|
||||
{
|
||||
|
@@ -156,7 +156,11 @@ function login_ldap(&$username, &$password)
|
||||
{
|
||||
if (!@ldap_bind($ldap, htmlspecialchars_decode($config['ldap_user']), htmlspecialchars_decode($config['ldap_password'])))
|
||||
{
|
||||
return $user->lang['LDAP_NO_SERVER_CONNECTION'];
|
||||
return array(
|
||||
'status' => LOGIN_ERROR_EXTERNAL_AUTH,
|
||||
'error_msg' => 'LDAP_NO_SERVER_CONNECTION',
|
||||
'user_row' => array('user_id' => ANONYMOUS),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -119,7 +119,7 @@ class captcha
|
||||
$new_line = '';
|
||||
|
||||
$end = strlen($scanline) - ceil($width/2);
|
||||
for ($i = floor($width/2); $i < $end; $i++)
|
||||
for ($i = (int) floor($width / 2); $i < $end; $i++)
|
||||
{
|
||||
$pixel = ord($scanline{$i});
|
||||
|
||||
|
@@ -25,7 +25,7 @@ if (!defined('IN_PHPBB'))
|
||||
*/
|
||||
|
||||
// phpBB Version
|
||||
define('PHPBB_VERSION', '3.0.10-RC1');
|
||||
define('PHPBB_VERSION', '3.0.12');
|
||||
|
||||
// QA-related
|
||||
// define('PHPBB_QA', 1);
|
||||
@@ -157,6 +157,7 @@ define('PHYSICAL_LINK', 2);
|
||||
define('CONFIRM_REG', 1);
|
||||
define('CONFIRM_LOGIN', 2);
|
||||
define('CONFIRM_POST', 3);
|
||||
define('CONFIRM_REPORT', 4);
|
||||
|
||||
// Categories - Attachments
|
||||
define('ATTACHMENT_CATEGORY_NONE', 0);
|
||||
|
@@ -1819,6 +1819,22 @@ class phpbb_db_tools
|
||||
|
||||
case 'mssql':
|
||||
case 'mssqlnative':
|
||||
// remove default cosntraints first
|
||||
// http://msdn.microsoft.com/en-us/library/aa175912%28v=sql.80%29.aspx
|
||||
$statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000)
|
||||
SET @drop_default_name =
|
||||
(SELECT so.name FROM sysobjects so
|
||||
JOIN sysconstraints sc ON so.id = sc.constid
|
||||
WHERE object_name(so.parent_obj) = '{$table_name}'
|
||||
AND so.xtype = 'D'
|
||||
AND sc.colid = (SELECT colid FROM syscolumns
|
||||
WHERE id = object_id('{$table_name}')
|
||||
AND name = '{$column_name}'))
|
||||
IF @drop_default_name <> ''
|
||||
BEGIN
|
||||
SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']'
|
||||
EXEC(@cmd)
|
||||
END";
|
||||
$statements[] = 'ALTER TABLE [' . $table_name . '] DROP COLUMN [' . $column_name . ']';
|
||||
break;
|
||||
|
||||
@@ -2115,7 +2131,7 @@ class phpbb_db_tools
|
||||
|
||||
case 'mysql_40':
|
||||
case 'mysql_41':
|
||||
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD UNIQUE INDEX (' . implode(', ', $column) . ')';
|
||||
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD UNIQUE INDEX ' . $index_name . '(' . implode(', ', $column) . ')';
|
||||
break;
|
||||
|
||||
case 'mssql':
|
||||
|
@@ -194,6 +194,49 @@ class dbal
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Seek to given row number
|
||||
* rownum is zero-based
|
||||
*/
|
||||
function sql_rowseek($rownum, &$query_id)
|
||||
{
|
||||
global $cache;
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
$query_id = $this->query_result;
|
||||
}
|
||||
|
||||
if (isset($cache->sql_rowset[$query_id]))
|
||||
{
|
||||
return $cache->sql_rowseek($rownum, $query_id);
|
||||
}
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->sql_freeresult($query_id);
|
||||
$query_id = $this->sql_query($this->last_query_text);
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// We do not fetch the row for rownum == 0 because then the next resultset would be the second row
|
||||
for ($i = 0; $i < $rownum; $i++)
|
||||
{
|
||||
if (!$this->sql_fetchrow($query_id))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch field
|
||||
* if rownum is false, the current row is used, else it is pointing to the row (zero-based)
|
||||
@@ -457,6 +500,18 @@ class dbal
|
||||
return $column_name . ' | ' . (1 << $bit) . (($compare) ? ' ' . $compare : '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Run LOWER() on DB column of type text (i.e. neither varchar nor char).
|
||||
*
|
||||
* @param string $column_name The column name to use
|
||||
*
|
||||
* @return string A SQL statement like "LOWER($column_name)"
|
||||
*/
|
||||
function sql_lower_text($column_name)
|
||||
{
|
||||
return "LOWER($column_name)";
|
||||
}
|
||||
|
||||
/**
|
||||
* Run more than one insert statement.
|
||||
*
|
||||
@@ -662,12 +717,7 @@ class dbal
|
||||
// The DEBUG_EXTRA constant is for development only!
|
||||
if ((isset($auth) && $auth->acl_get('a_')) || defined('IN_INSTALL') || defined('DEBUG_EXTRA'))
|
||||
{
|
||||
// Print out a nice backtrace...
|
||||
$backtrace = get_backtrace();
|
||||
|
||||
$message .= ($sql) ? '<br /><br />SQL<br /><br />' . htmlspecialchars($sql) : '';
|
||||
$message .= ($backtrace) ? '<br /><br />BACKTRACE<br />' . $backtrace : '';
|
||||
$message .= '<br />';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -777,7 +827,7 @@ class dbal
|
||||
</div>
|
||||
</div>
|
||||
<div id="page-footer">
|
||||
Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group
|
||||
Powered by <a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
@@ -905,6 +955,41 @@ class dbal
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the estimated number of rows in a specified table.
|
||||
*
|
||||
* @param string $table_name Table name
|
||||
*
|
||||
* @return string Number of rows in $table_name.
|
||||
* Prefixed with ~ if estimated (otherwise exact).
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function get_estimated_row_count($table_name)
|
||||
{
|
||||
return $this->get_row_count($table_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the exact number of rows in a specified table.
|
||||
*
|
||||
* @param string $table_name Table name
|
||||
*
|
||||
* @return string Exact number of rows in $table_name.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function get_row_count($table_name)
|
||||
{
|
||||
$sql = 'SELECT COUNT(*) AS rows_total
|
||||
FROM ' . $this->sql_escape($table_name);
|
||||
$result = $this->sql_query($sql);
|
||||
$rows_total = $this->sql_fetchfield('rows_total');
|
||||
$this->sql_freeresult($result);
|
||||
|
||||
return $rows_total;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -359,49 +359,6 @@ class dbal_firebird extends dbal
|
||||
return (sizeof($row)) ? $row : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Seek to given row number
|
||||
* rownum is zero-based
|
||||
*/
|
||||
function sql_rowseek($rownum, &$query_id)
|
||||
{
|
||||
global $cache;
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
$query_id = $this->query_result;
|
||||
}
|
||||
|
||||
if (isset($cache->sql_rowset[$query_id]))
|
||||
{
|
||||
return $cache->sql_rowseek($rownum, $query_id);
|
||||
}
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$this->sql_freeresult($query_id);
|
||||
$query_id = $this->sql_query($this->last_query_text);
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// We do not fetch the row for rownum == 0 because then the next resultset would be the second row
|
||||
for ($i = 0; $i < $rownum; $i++)
|
||||
{
|
||||
if (!$this->sql_fetchrow($query_id))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get last inserted id after insert statement
|
||||
*/
|
||||
|
@@ -25,11 +25,19 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
|
||||
*/
|
||||
class dbal_mssql extends dbal
|
||||
{
|
||||
var $connect_error = '';
|
||||
|
||||
/**
|
||||
* Connect to server
|
||||
*/
|
||||
function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false, $new_link = false)
|
||||
{
|
||||
if (!function_exists('mssql_connect'))
|
||||
{
|
||||
$this->connect_error = 'mssql_connect function does not exist, is mssql extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
|
||||
$this->persistency = $persistency;
|
||||
$this->user = $sqluser;
|
||||
$this->dbname = $database;
|
||||
@@ -332,6 +340,14 @@ class dbal_mssql extends dbal
|
||||
return str_replace(array("'", "\0"), array("''", ''), $msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
function sql_lower_text($column_name)
|
||||
{
|
||||
return "LOWER(SUBSTRING($column_name, 1, DATALENGTH($column_name)))";
|
||||
}
|
||||
|
||||
/**
|
||||
* Build LIKE expression
|
||||
* @access private
|
||||
@@ -347,34 +363,44 @@ class dbal_mssql extends dbal
|
||||
*/
|
||||
function _sql_error()
|
||||
{
|
||||
$error = array(
|
||||
'message' => @mssql_get_last_message(),
|
||||
'code' => ''
|
||||
);
|
||||
|
||||
// Get error code number
|
||||
$result_id = @mssql_query('SELECT @@ERROR as code', $this->db_connect_id);
|
||||
if ($result_id)
|
||||
if (function_exists('mssql_get_last_message'))
|
||||
{
|
||||
$row = @mssql_fetch_assoc($result_id);
|
||||
$error['code'] = $row['code'];
|
||||
@mssql_free_result($result_id);
|
||||
}
|
||||
$error = array(
|
||||
'message' => @mssql_get_last_message(),
|
||||
'code' => '',
|
||||
);
|
||||
|
||||
// Get full error message if possible
|
||||
$sql = 'SELECT CAST(description as varchar(255)) as message
|
||||
FROM master.dbo.sysmessages
|
||||
WHERE error = ' . $error['code'];
|
||||
$result_id = @mssql_query($sql);
|
||||
|
||||
if ($result_id)
|
||||
{
|
||||
$row = @mssql_fetch_assoc($result_id);
|
||||
if (!empty($row['message']))
|
||||
// Get error code number
|
||||
$result_id = @mssql_query('SELECT @@ERROR as code', $this->db_connect_id);
|
||||
if ($result_id)
|
||||
{
|
||||
$error['message'] .= '<br />' . $row['message'];
|
||||
$row = @mssql_fetch_assoc($result_id);
|
||||
$error['code'] = $row['code'];
|
||||
@mssql_free_result($result_id);
|
||||
}
|
||||
@mssql_free_result($result_id);
|
||||
|
||||
// Get full error message if possible
|
||||
$sql = 'SELECT CAST(description as varchar(255)) as message
|
||||
FROM master.dbo.sysmessages
|
||||
WHERE error = ' . $error['code'];
|
||||
$result_id = @mssql_query($sql);
|
||||
|
||||
if ($result_id)
|
||||
{
|
||||
$row = @mssql_fetch_assoc($result_id);
|
||||
if (!empty($row['message']))
|
||||
{
|
||||
$error['message'] .= '<br />' . $row['message'];
|
||||
}
|
||||
@mssql_free_result($result_id);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = array(
|
||||
'message' => $this->connect_error,
|
||||
'code' => '',
|
||||
);
|
||||
}
|
||||
|
||||
return $error;
|
||||
|
@@ -32,6 +32,7 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
|
||||
class dbal_mssql_odbc extends dbal
|
||||
{
|
||||
var $last_query_text = '';
|
||||
var $connect_error = '';
|
||||
|
||||
/**
|
||||
* Connect to server
|
||||
@@ -68,7 +69,24 @@ class dbal_mssql_odbc extends dbal
|
||||
@ini_set('odbc.defaultlrl', $max_size);
|
||||
}
|
||||
|
||||
$this->db_connect_id = ($this->persistency) ? @odbc_pconnect($this->server, $this->user, $sqlpassword) : @odbc_connect($this->server, $this->user, $sqlpassword);
|
||||
if ($this->persistency)
|
||||
{
|
||||
if (!function_exists('odbc_pconnect'))
|
||||
{
|
||||
$this->connect_error = 'odbc_pconnect function does not exist, is odbc extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @odbc_pconnect($this->server, $this->user, $sqlpassword);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!function_exists('odbc_connect'))
|
||||
{
|
||||
$this->connect_error = 'odbc_connect function does not exist, is odbc extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @odbc_connect($this->server, $this->user, $sqlpassword);
|
||||
}
|
||||
|
||||
return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error('');
|
||||
}
|
||||
@@ -255,49 +273,6 @@ class dbal_mssql_odbc extends dbal
|
||||
return ($query_id !== false) ? @odbc_fetch_array($query_id) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Seek to given row number
|
||||
* rownum is zero-based
|
||||
*/
|
||||
function sql_rowseek($rownum, &$query_id)
|
||||
{
|
||||
global $cache;
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
$query_id = $this->query_result;
|
||||
}
|
||||
|
||||
if (isset($cache->sql_rowset[$query_id]))
|
||||
{
|
||||
return $cache->sql_rowseek($rownum, $query_id);
|
||||
}
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->sql_freeresult($query_id);
|
||||
$query_id = $this->sql_query($this->last_query_text);
|
||||
|
||||
if ($query_id === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// We do not fetch the row for rownum == 0 because then the next resultset would be the second row
|
||||
for ($i = 0; $i < $rownum; $i++)
|
||||
{
|
||||
if (!$this->sql_fetchrow($query_id))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get last inserted id after insert statement
|
||||
*/
|
||||
@@ -353,6 +328,14 @@ class dbal_mssql_odbc extends dbal
|
||||
return str_replace(array("'", "\0"), array("''", ''), $msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
function sql_lower_text($column_name)
|
||||
{
|
||||
return "LOWER(SUBSTRING($column_name, 1, DATALENGTH($column_name)))";
|
||||
}
|
||||
|
||||
/**
|
||||
* Build LIKE expression
|
||||
* @access private
|
||||
@@ -377,10 +360,22 @@ class dbal_mssql_odbc extends dbal
|
||||
*/
|
||||
function _sql_error()
|
||||
{
|
||||
return array(
|
||||
'message' => @odbc_errormsg(),
|
||||
'code' => @odbc_error()
|
||||
);
|
||||
if (function_exists('odbc_errormsg'))
|
||||
{
|
||||
$error = array(
|
||||
'message' => @odbc_errormsg(),
|
||||
'code' => @odbc_error(),
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = array(
|
||||
'message' => $this->connect_error,
|
||||
'code' => '',
|
||||
);
|
||||
}
|
||||
|
||||
return $error;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -199,16 +199,18 @@ class dbal_mssqlnative extends dbal
|
||||
var $m_insert_id = NULL;
|
||||
var $last_query_text = '';
|
||||
var $query_options = array();
|
||||
var $connect_error = '';
|
||||
|
||||
/**
|
||||
* Connect to server
|
||||
*/
|
||||
function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false, $new_link = false)
|
||||
{
|
||||
# Test for driver support, to avoid suppressed fatal error
|
||||
// Test for driver support, to avoid suppressed fatal error
|
||||
if (!function_exists('sqlsrv_connect'))
|
||||
{
|
||||
trigger_error('Native MS SQL Server driver for PHP is missing or needs to be updated. Version 1.1 or later is required to install phpBB3. You can download the driver from: http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx\n', E_USER_ERROR);
|
||||
$this->connect_error = 'Native MS SQL Server driver for PHP is missing or needs to be updated. Version 1.1 or later is required to install phpBB3. You can download the driver from: http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
|
||||
//set up connection variables
|
||||
@@ -219,7 +221,6 @@ class dbal_mssqlnative extends dbal
|
||||
$this->server = $sqlserver . (($port) ? $port_delimiter . $port : '');
|
||||
|
||||
//connect to database
|
||||
error_reporting(E_ALL);
|
||||
$this->db_connect_id = sqlsrv_connect($this->server, array(
|
||||
'Database' => $this->dbname,
|
||||
'UID' => $this->user,
|
||||
@@ -436,25 +437,7 @@ class dbal_mssqlnative extends dbal
|
||||
unset($row['line2'], $row['line3']);
|
||||
}
|
||||
}
|
||||
return $row;
|
||||
}
|
||||
|
||||
/**
|
||||
* Seek to given row number
|
||||
* rownum is zero-based
|
||||
*/
|
||||
function sql_rowseek($rownum, &$query_id)
|
||||
{
|
||||
global $cache;
|
||||
|
||||
if (isset($cache->sql_rowset[$query_id]))
|
||||
{
|
||||
return $cache->sql_rowseek($rownum, $query_id);
|
||||
}
|
||||
|
||||
$seek = new result_mssqlnative($query_id);
|
||||
$row = $seek->seek($rownum);
|
||||
return ($row = $seek->fetch()) ? $row : false;
|
||||
return (sizeof($row)) ? $row : false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -510,6 +493,14 @@ class dbal_mssqlnative extends dbal
|
||||
return str_replace(array("'", "\0"), array("''", ''), $msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
function sql_lower_text($column_name)
|
||||
{
|
||||
return "LOWER(SUBSTRING($column_name, 1, DATALENGTH($column_name)))";
|
||||
}
|
||||
|
||||
/**
|
||||
* Build LIKE expression
|
||||
* @access private
|
||||
@@ -525,31 +516,43 @@ class dbal_mssqlnative extends dbal
|
||||
*/
|
||||
function _sql_error()
|
||||
{
|
||||
$errors = @sqlsrv_errors(SQLSRV_ERR_ERRORS);
|
||||
$error_message = '';
|
||||
$code = 0;
|
||||
|
||||
if ($errors != null)
|
||||
if (function_exists('sqlsrv_errors'))
|
||||
{
|
||||
foreach ($errors as $error)
|
||||
$errors = @sqlsrv_errors(SQLSRV_ERR_ERRORS);
|
||||
$error_message = '';
|
||||
$code = 0;
|
||||
|
||||
if ($errors != null)
|
||||
{
|
||||
$error_message .= "SQLSTATE: ".$error[ 'SQLSTATE']."\n";
|
||||
$error_message .= "code: ".$error[ 'code']."\n";
|
||||
$code = $error['code'];
|
||||
$error_message .= "message: ".$error[ 'message']."\n";
|
||||
foreach ($errors as $error)
|
||||
{
|
||||
$error_message .= "SQLSTATE: " . $error[ 'SQLSTATE'] . "\n";
|
||||
$error_message .= "code: " . $error[ 'code'] . "\n";
|
||||
$code = $error['code'];
|
||||
$error_message .= "message: " . $error[ 'message'] . "\n";
|
||||
}
|
||||
$this->last_error_result = $error_message;
|
||||
$error = $this->last_error_result;
|
||||
}
|
||||
$this->last_error_result = $error_message;
|
||||
$error = $this->last_error_result;
|
||||
else
|
||||
{
|
||||
$error = (isset($this->last_error_result) && $this->last_error_result) ? $this->last_error_result : array();
|
||||
}
|
||||
|
||||
$error = array(
|
||||
'message' => $error,
|
||||
'code' => $code,
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = (isset($this->last_error_result) && $this->last_error_result) ? $this->last_error_result : array();
|
||||
$error = array(
|
||||
'message' => $this->connect_error,
|
||||
'code' => '',
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'message' => $error,
|
||||
'code' => $code,
|
||||
);
|
||||
return $error;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -30,6 +30,7 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
|
||||
class dbal_mysql extends dbal
|
||||
{
|
||||
var $multi_insert = true;
|
||||
var $connect_error = '';
|
||||
|
||||
/**
|
||||
* Connect to server
|
||||
@@ -44,7 +45,24 @@ class dbal_mysql extends dbal
|
||||
|
||||
$this->sql_layer = 'mysql4';
|
||||
|
||||
$this->db_connect_id = ($this->persistency) ? @mysql_pconnect($this->server, $this->user, $sqlpassword) : @mysql_connect($this->server, $this->user, $sqlpassword, $new_link);
|
||||
if ($this->persistency)
|
||||
{
|
||||
if (!function_exists('mysql_pconnect'))
|
||||
{
|
||||
$this->connect_error = 'mysql_pconnect function does not exist, is mysql extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $sqlpassword);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!function_exists('mysql_connect'))
|
||||
{
|
||||
$this->connect_error = 'mysql_connect function does not exist, is mysql extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @mysql_connect($this->server, $this->user, $sqlpassword, $new_link);
|
||||
}
|
||||
|
||||
if ($this->db_connect_id && $this->dbname != '')
|
||||
{
|
||||
@@ -318,6 +336,76 @@ class dbal_mysql extends dbal
|
||||
return @mysql_real_escape_string($msg, $this->db_connect_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the estimated number of rows in a specified table.
|
||||
*
|
||||
* @param string $table_name Table name
|
||||
*
|
||||
* @return string Number of rows in $table_name.
|
||||
* Prefixed with ~ if estimated (otherwise exact).
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function get_estimated_row_count($table_name)
|
||||
{
|
||||
$table_status = $this->get_table_status($table_name);
|
||||
|
||||
if (isset($table_status['Engine']))
|
||||
{
|
||||
if ($table_status['Engine'] === 'MyISAM')
|
||||
{
|
||||
return $table_status['Rows'];
|
||||
}
|
||||
else if ($table_status['Engine'] === 'InnoDB' && $table_status['Rows'] > 100000)
|
||||
{
|
||||
return '~' . $table_status['Rows'];
|
||||
}
|
||||
}
|
||||
|
||||
return parent::get_row_count($table_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the exact number of rows in a specified table.
|
||||
*
|
||||
* @param string $table_name Table name
|
||||
*
|
||||
* @return string Exact number of rows in $table_name.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function get_row_count($table_name)
|
||||
{
|
||||
$table_status = $this->get_table_status($table_name);
|
||||
|
||||
if (isset($table_status['Engine']) && $table_status['Engine'] === 'MyISAM')
|
||||
{
|
||||
return $table_status['Rows'];
|
||||
}
|
||||
|
||||
return parent::get_row_count($table_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets some information about the specified table.
|
||||
*
|
||||
* @param string $table_name Table name
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @access protected
|
||||
*/
|
||||
function get_table_status($table_name)
|
||||
{
|
||||
$sql = "SHOW TABLE STATUS
|
||||
LIKE '" . $this->sql_escape($table_name) . "'";
|
||||
$result = $this->sql_query($sql);
|
||||
$table_status = $this->sql_fetchrow($result);
|
||||
$this->sql_freeresult($result);
|
||||
|
||||
return $table_status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build LIKE expression
|
||||
* @access private
|
||||
@@ -349,18 +437,29 @@ class dbal_mysql extends dbal
|
||||
*/
|
||||
function _sql_error()
|
||||
{
|
||||
if (!$this->db_connect_id)
|
||||
if ($this->db_connect_id)
|
||||
{
|
||||
return array(
|
||||
$error = array(
|
||||
'message' => @mysql_error($this->db_connect_id),
|
||||
'code' => @mysql_errno($this->db_connect_id),
|
||||
);
|
||||
}
|
||||
else if (function_exists('mysql_error'))
|
||||
{
|
||||
$error = array(
|
||||
'message' => @mysql_error(),
|
||||
'code' => @mysql_errno()
|
||||
'code' => @mysql_errno(),
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = array(
|
||||
'message' => $this->connect_error,
|
||||
'code' => '',
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'message' => @mysql_error($this->db_connect_id),
|
||||
'code' => @mysql_errno($this->db_connect_id)
|
||||
);
|
||||
return $error;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -27,12 +27,19 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
|
||||
class dbal_mysqli extends dbal
|
||||
{
|
||||
var $multi_insert = true;
|
||||
var $connect_error = '';
|
||||
|
||||
/**
|
||||
* Connect to server
|
||||
*/
|
||||
function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false , $new_link = false)
|
||||
{
|
||||
if (!function_exists('mysqli_connect'))
|
||||
{
|
||||
$this->connect_error = 'mysqli_connect function does not exist, is mysqli extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
|
||||
// Mysqli extension supports persistent connection since PHP 5.3.0
|
||||
$this->persistency = (version_compare(PHP_VERSION, '5.3.0', '>=')) ? $persistency : false;
|
||||
$this->user = $sqluser;
|
||||
@@ -315,6 +322,76 @@ class dbal_mysqli extends dbal
|
||||
return @mysqli_real_escape_string($this->db_connect_id, $msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the estimated number of rows in a specified table.
|
||||
*
|
||||
* @param string $table_name Table name
|
||||
*
|
||||
* @return string Number of rows in $table_name.
|
||||
* Prefixed with ~ if estimated (otherwise exact).
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function get_estimated_row_count($table_name)
|
||||
{
|
||||
$table_status = $this->get_table_status($table_name);
|
||||
|
||||
if (isset($table_status['Engine']))
|
||||
{
|
||||
if ($table_status['Engine'] === 'MyISAM')
|
||||
{
|
||||
return $table_status['Rows'];
|
||||
}
|
||||
else if ($table_status['Engine'] === 'InnoDB' && $table_status['Rows'] > 100000)
|
||||
{
|
||||
return '~' . $table_status['Rows'];
|
||||
}
|
||||
}
|
||||
|
||||
return parent::get_row_count($table_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the exact number of rows in a specified table.
|
||||
*
|
||||
* @param string $table_name Table name
|
||||
*
|
||||
* @return string Exact number of rows in $table_name.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function get_row_count($table_name)
|
||||
{
|
||||
$table_status = $this->get_table_status($table_name);
|
||||
|
||||
if (isset($table_status['Engine']) && $table_status['Engine'] === 'MyISAM')
|
||||
{
|
||||
return $table_status['Rows'];
|
||||
}
|
||||
|
||||
return parent::get_row_count($table_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets some information about the specified table.
|
||||
*
|
||||
* @param string $table_name Table name
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @access protected
|
||||
*/
|
||||
function get_table_status($table_name)
|
||||
{
|
||||
$sql = "SHOW TABLE STATUS
|
||||
LIKE '" . $this->sql_escape($table_name) . "'";
|
||||
$result = $this->sql_query($sql);
|
||||
$table_status = $this->sql_fetchrow($result);
|
||||
$this->sql_freeresult($result);
|
||||
|
||||
return $table_status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build LIKE expression
|
||||
* @access private
|
||||
@@ -346,18 +423,29 @@ class dbal_mysqli extends dbal
|
||||
*/
|
||||
function _sql_error()
|
||||
{
|
||||
if (!$this->db_connect_id)
|
||||
if ($this->db_connect_id)
|
||||
{
|
||||
return array(
|
||||
$error = array(
|
||||
'message' => @mysqli_error($this->db_connect_id),
|
||||
'code' => @mysqli_errno($this->db_connect_id)
|
||||
);
|
||||
}
|
||||
else if (function_exists('mysqli_connect_error'))
|
||||
{
|
||||
$error = array(
|
||||
'message' => @mysqli_connect_error(),
|
||||
'code' => @mysqli_connect_errno()
|
||||
'code' => @mysqli_connect_errno(),
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = array(
|
||||
'message' => $this->connect_error,
|
||||
'code' => '',
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'message' => @mysqli_error($this->db_connect_id),
|
||||
'code' => @mysqli_errno($this->db_connect_id)
|
||||
);
|
||||
return $error;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -25,6 +25,7 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
|
||||
class dbal_oracle extends dbal
|
||||
{
|
||||
var $last_query_text = '';
|
||||
var $connect_error = '';
|
||||
|
||||
/**
|
||||
* Connect to server
|
||||
@@ -48,7 +49,33 @@ class dbal_oracle extends dbal
|
||||
$connect = $sqlserver . (($port) ? ':' . $port : '') . '/' . $database;
|
||||
}
|
||||
|
||||
$this->db_connect_id = ($new_link) ? @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8') : (($this->persistency) ? @ociplogon($this->user, $sqlpassword, $connect, 'UTF8') : @ocilogon($this->user, $sqlpassword, $connect, 'UTF8'));
|
||||
if ($new_link)
|
||||
{
|
||||
if (!function_exists('ocinlogon'))
|
||||
{
|
||||
$this->connect_error = 'ocinlogon function does not exist, is oci extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8');
|
||||
}
|
||||
else if ($this->persistency)
|
||||
{
|
||||
if (!function_exists('ociplogon'))
|
||||
{
|
||||
$this->connect_error = 'ociplogon function does not exist, is oci extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @ociplogon($this->user, $sqlpassword, $connect, 'UTF8');
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!function_exists('ocilogon'))
|
||||
{
|
||||
$this->connect_error = 'ocilogon function does not exist, is oci extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @ocilogon($this->user, $sqlpassword, $connect, 'UTF8');
|
||||
}
|
||||
|
||||
return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error('');
|
||||
}
|
||||
@@ -647,17 +674,27 @@ class dbal_oracle extends dbal
|
||||
*/
|
||||
function _sql_error()
|
||||
{
|
||||
$error = @ocierror();
|
||||
$error = (!$error) ? @ocierror($this->query_result) : $error;
|
||||
$error = (!$error) ? @ocierror($this->db_connect_id) : $error;
|
||||
|
||||
if ($error)
|
||||
if (function_exists('ocierror'))
|
||||
{
|
||||
$this->last_error_result = $error;
|
||||
$error = @ocierror();
|
||||
$error = (!$error) ? @ocierror($this->query_result) : $error;
|
||||
$error = (!$error) ? @ocierror($this->db_connect_id) : $error;
|
||||
|
||||
if ($error)
|
||||
{
|
||||
$this->last_error_result = $error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = (isset($this->last_error_result) && $this->last_error_result) ? $this->last_error_result : array();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = (isset($this->last_error_result) && $this->last_error_result) ? $this->last_error_result : array();
|
||||
$error = array(
|
||||
'message' => $this->connect_error,
|
||||
'code' => '',
|
||||
);
|
||||
}
|
||||
|
||||
return $error;
|
||||
|
@@ -25,6 +25,8 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
|
||||
*/
|
||||
class dbal_sqlite extends dbal
|
||||
{
|
||||
var $connect_error = '';
|
||||
|
||||
/**
|
||||
* Connect to server
|
||||
*/
|
||||
@@ -36,7 +38,24 @@ class dbal_sqlite extends dbal
|
||||
$this->dbname = $database;
|
||||
|
||||
$error = '';
|
||||
$this->db_connect_id = ($this->persistency) ? @sqlite_popen($this->server, 0666, $error) : @sqlite_open($this->server, 0666, $error);
|
||||
if ($this->persistency)
|
||||
{
|
||||
if (!function_exists('sqlite_popen'))
|
||||
{
|
||||
$this->connect_error = 'sqlite_popen function does not exist, is sqlite extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @sqlite_popen($this->server, 0666, $error);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!function_exists('sqlite_open'))
|
||||
{
|
||||
$this->connect_error = 'sqlite_open function does not exist, is sqlite extension installed?';
|
||||
return $this->sql_error('');
|
||||
}
|
||||
$this->db_connect_id = @sqlite_open($this->server, 0666, $error);
|
||||
}
|
||||
|
||||
if ($this->db_connect_id)
|
||||
{
|
||||
@@ -281,10 +300,22 @@ class dbal_sqlite extends dbal
|
||||
*/
|
||||
function _sql_error()
|
||||
{
|
||||
return array(
|
||||
'message' => @sqlite_error_string(@sqlite_last_error($this->db_connect_id)),
|
||||
'code' => @sqlite_last_error($this->db_connect_id)
|
||||
);
|
||||
if (function_exists('sqlite_error_string'))
|
||||
{
|
||||
$error = array(
|
||||
'message' => @sqlite_error_string(@sqlite_last_error($this->db_connect_id)),
|
||||
'code' => @sqlite_last_error($this->db_connect_id),
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = array(
|
||||
'message' => $this->connect_error,
|
||||
'code' => '',
|
||||
);
|
||||
}
|
||||
|
||||
return $error;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -137,7 +137,18 @@ function request_var($var_name, $default, $multibyte = false, $cookie = false)
|
||||
}
|
||||
|
||||
/**
|
||||
* Set config value. Creates missing config entry.
|
||||
* Sets a configuration option's value.
|
||||
*
|
||||
* Please note that this function does not update the is_dynamic value for
|
||||
* an already existing config option.
|
||||
*
|
||||
* @param string $config_name The configuration option's name
|
||||
* @param string $config_value New configuration value
|
||||
* @param bool $is_dynamic Whether this variable should be cached (false) or
|
||||
* if it changes too frequently (true) to be
|
||||
* efficiently cached.
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
function set_config($config_name, $config_value, $is_dynamic = false)
|
||||
{
|
||||
@@ -166,7 +177,15 @@ function set_config($config_name, $config_value, $is_dynamic = false)
|
||||
}
|
||||
|
||||
/**
|
||||
* Set dynamic config value with arithmetic operation.
|
||||
* Increments an integer config value directly in the database.
|
||||
*
|
||||
* @param string $config_name The configuration option's name
|
||||
* @param int $increment Amount to increment by
|
||||
* @param bool $is_dynamic Whether this variable should be cached (false) or
|
||||
* if it changes too frequently (true) to be
|
||||
* efficiently cached.
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
function set_config_count($config_name, $increment, $is_dynamic = false)
|
||||
{
|
||||
@@ -289,7 +308,8 @@ function phpbb_gmgetdate($time = false)
|
||||
/**
|
||||
* Return formatted string for filesizes
|
||||
*
|
||||
* @param int $value filesize in bytes
|
||||
* @param mixed $value filesize in bytes
|
||||
* (non-negative number; int, float or string)
|
||||
* @param bool $string_only true if language string should be returned
|
||||
* @param array $allowed_units only allow these units (data array indexes)
|
||||
*
|
||||
@@ -301,6 +321,12 @@ function get_formatted_filesize($value, $string_only = true, $allowed_units = fa
|
||||
global $user;
|
||||
|
||||
$available_units = array(
|
||||
'tb' => array(
|
||||
'min' => 1099511627776, // pow(2, 40)
|
||||
'index' => 4,
|
||||
'si_unit' => 'TB',
|
||||
'iec_unit' => 'TIB',
|
||||
),
|
||||
'gb' => array(
|
||||
'min' => 1073741824, // pow(2, 30)
|
||||
'index' => 3,
|
||||
@@ -476,6 +502,13 @@ function phpbb_hash($password)
|
||||
*/
|
||||
function phpbb_check_hash($password, $hash)
|
||||
{
|
||||
if (strlen($password) > 4096)
|
||||
{
|
||||
// If the password is too huge, we will simply reject it
|
||||
// and not let the server try to hash it.
|
||||
return false;
|
||||
}
|
||||
|
||||
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
||||
if (strlen($hash) == 34)
|
||||
{
|
||||
@@ -979,7 +1012,7 @@ if (!function_exists('stripos'))
|
||||
*/
|
||||
function is_absolute($path)
|
||||
{
|
||||
return ($path[0] == '/' || (DIRECTORY_SEPARATOR == '\\' && preg_match('#^[a-z]:[/\\\]#i', $path))) ? true : false;
|
||||
return (isset($path[0]) && $path[0] == '/' || preg_match('#^[a-z]:[/\\\]#i', $path)) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1176,6 +1209,36 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Eliminates useless . and .. components from specified path.
|
||||
*
|
||||
* @param string $path Path to clean
|
||||
* @return string Cleaned path
|
||||
*/
|
||||
function phpbb_clean_path($path)
|
||||
{
|
||||
$exploded = explode('/', $path);
|
||||
$filtered = array();
|
||||
foreach ($exploded as $part)
|
||||
{
|
||||
if ($part === '.' && !empty($filtered))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($part === '..' && !empty($filtered) && $filtered[sizeof($filtered) - 1] !== '..')
|
||||
{
|
||||
array_pop($filtered);
|
||||
}
|
||||
else
|
||||
{
|
||||
$filtered[] = $part;
|
||||
}
|
||||
}
|
||||
$path = implode('/', $filtered);
|
||||
return $path;
|
||||
}
|
||||
|
||||
if (!function_exists('htmlspecialchars_decode'))
|
||||
{
|
||||
/**
|
||||
@@ -1918,14 +1981,17 @@ function update_forum_tracking_info($forum_id, $forum_last_post_time, $f_mark_ti
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT t.forum_id FROM ' . TOPICS_TABLE . ' t
|
||||
LEFT JOIN ' . TOPICS_TRACK_TABLE . ' tt ON (tt.topic_id = t.topic_id AND tt.user_id = ' . $user->data['user_id'] . ')
|
||||
$sql = 'SELECT t.forum_id
|
||||
FROM ' . TOPICS_TABLE . ' t
|
||||
LEFT JOIN ' . TOPICS_TRACK_TABLE . ' tt
|
||||
ON (tt.topic_id = t.topic_id
|
||||
AND tt.user_id = ' . $user->data['user_id'] . ')
|
||||
WHERE t.forum_id = ' . $forum_id . '
|
||||
AND t.topic_last_post_time > ' . $mark_time_forum . '
|
||||
AND t.topic_moved_id = 0 ' .
|
||||
$sql_update_unapproved . '
|
||||
AND (tt.topic_id IS NULL OR tt.mark_time < t.topic_last_post_time)
|
||||
GROUP BY t.forum_id';
|
||||
AND (tt.topic_id IS NULL
|
||||
OR tt.mark_time < t.topic_last_post_time)';
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
@@ -1943,11 +2009,11 @@ function update_forum_tracking_info($forum_id, $forum_last_post_time, $f_mark_ti
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT topic_id
|
||||
FROM ' . TOPICS_TABLE . '
|
||||
WHERE forum_id = ' . $forum_id . '
|
||||
AND topic_last_post_time > ' . $mark_time_forum . '
|
||||
AND topic_moved_id = 0 ' .
|
||||
$sql = 'SELECT t.topic_id
|
||||
FROM ' . TOPICS_TABLE . ' t
|
||||
WHERE t.forum_id = ' . $forum_id . '
|
||||
AND t.topic_last_post_time > ' . $mark_time_forum . '
|
||||
AND t.topic_moved_id = 0 ' .
|
||||
$sql_update_unapproved;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
@@ -2681,7 +2747,7 @@ function meta_refresh($time, $url, $disable_cd_check = false)
|
||||
|
||||
// For XHTML compatibility we change back & to &
|
||||
$template->assign_vars(array(
|
||||
'META' => '<meta http-equiv="refresh" content="' . $time . ';url=' . $url . '" />')
|
||||
'META' => '<meta http-equiv="refresh" content="' . $time . '; url=' . $url . '" />')
|
||||
);
|
||||
|
||||
return $url;
|
||||
@@ -2705,7 +2771,7 @@ function meta_refresh($time, $url, $disable_cd_check = false)
|
||||
*
|
||||
* @param int $code HTTP status code
|
||||
* @param string $message Message for the status code
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function send_status_line($code, $message)
|
||||
{
|
||||
@@ -2808,7 +2874,7 @@ function check_form_key($form_name, $timespan = false, $return_page = '', $trigg
|
||||
$diff = time() - $creation_time;
|
||||
|
||||
// If creation_time and the time() now is zero we can assume it was not a human doing this (the check for if ($diff)...
|
||||
if ($diff && ($diff <= $timespan || $timespan === -1))
|
||||
if (defined('DEBUG_TEST') || $diff && ($diff <= $timespan || $timespan === -1))
|
||||
{
|
||||
$token_sid = ($user->data['user_id'] == ANONYMOUS && !empty($config['form_token_sid_guests'])) ? $user->session_id : '';
|
||||
$key = sha1($creation_time . $user->data['user_form_salt'] . $form_name . $token_sid);
|
||||
@@ -3213,6 +3279,7 @@ function login_forum_box($forum_data)
|
||||
page_header($user->lang['LOGIN'], false);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'FORUM_NAME' => isset($forum_data['forum_name']) ? $forum_data['forum_name'] : '',
|
||||
'S_LOGIN_ACTION' => build_url(array('f')),
|
||||
'S_HIDDEN_FIELDS' => build_hidden_fields(array('f' => $forum_data['forum_id'])))
|
||||
);
|
||||
@@ -3322,6 +3389,11 @@ function parse_cfg_file($filename, $lines = false)
|
||||
|
||||
$parsed_items[$key] = $value;
|
||||
}
|
||||
|
||||
if (isset($parsed_items['inherit_from']) && isset($parsed_items['name']) && $parsed_items['inherit_from'] == $parsed_items['name'])
|
||||
{
|
||||
unset($parsed_items['inherit_from']);
|
||||
}
|
||||
|
||||
return $parsed_items;
|
||||
}
|
||||
@@ -3448,7 +3520,7 @@ function get_preg_expression($mode)
|
||||
case 'email':
|
||||
// Regex written by James Watts and Francisco Jose Martin Moreno
|
||||
// http://fightingforalostcause.net/misc/2006/compare-email-regex.php
|
||||
return '([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*(?:[\w\!\#$\%\'\*\+\-\/\=\?\^\`{\|\}\~]|&)+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)';
|
||||
return '([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*(?:[\w\!\#$\%\'\*\+\-\/\=\?\^\`{\|\}\~]|&)+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,63})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)';
|
||||
break;
|
||||
|
||||
case 'bbcode_htm':
|
||||
@@ -3853,11 +3925,23 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||
}
|
||||
}
|
||||
|
||||
$log_text = $msg_text;
|
||||
$backtrace = get_backtrace();
|
||||
if ($backtrace)
|
||||
{
|
||||
$log_text .= '<br /><br />BACKTRACE<br />' . $backtrace;
|
||||
}
|
||||
|
||||
if (defined('IN_INSTALL') || defined('DEBUG_EXTRA') || isset($auth) && $auth->acl_get('a_'))
|
||||
{
|
||||
$msg_text = $log_text;
|
||||
}
|
||||
|
||||
if ((defined('DEBUG') || defined('IN_CRON') || defined('IMAGE_OUTPUT')) && isset($db))
|
||||
{
|
||||
// let's avoid loops
|
||||
$db->sql_return_on_error(true);
|
||||
add_log('critical', 'LOG_GENERAL_ERROR', $msg_title, $msg_text);
|
||||
add_log('critical', 'LOG_GENERAL_ERROR', $msg_title, $log_text);
|
||||
$db->sql_return_on_error(false);
|
||||
}
|
||||
|
||||
@@ -3901,7 +3985,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||
echo ' </div>';
|
||||
echo ' </div>';
|
||||
echo ' <div id="page-footer">';
|
||||
echo ' Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group';
|
||||
echo ' Powered by <a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group';
|
||||
echo ' </div>';
|
||||
echo '</div>';
|
||||
echo '</body>';
|
||||
@@ -4275,7 +4359,7 @@ function phpbb_optionset($bit, $set, $data)
|
||||
*
|
||||
* @param array $param Parameter array, see $param_defaults array.
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function phpbb_http_login($param)
|
||||
{
|
||||
@@ -4378,7 +4462,7 @@ function phpbb_http_login($param)
|
||||
*/
|
||||
function page_header($page_title = '', $display_online_list = true, $item_id = 0, $item = 'forum')
|
||||
{
|
||||
global $db, $config, $template, $SID, $_SID, $user, $auth, $phpEx, $phpbb_root_path;
|
||||
global $db, $config, $template, $SID, $_SID, $_EXTRA_URL, $user, $auth, $phpEx, $phpbb_root_path;
|
||||
|
||||
if (defined('HEADER_INC'))
|
||||
{
|
||||
@@ -4531,6 +4615,15 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
|
||||
$s_search_hidden_fields['sid'] = $_SID;
|
||||
}
|
||||
|
||||
if (!empty($_EXTRA_URL))
|
||||
{
|
||||
foreach ($_EXTRA_URL as $url_param)
|
||||
{
|
||||
$url_param = explode('=', $url_param, 2);
|
||||
$s_search_hidden_fields[$url_param[0]] = $url_param[1];
|
||||
}
|
||||
}
|
||||
|
||||
// The following assigns all _common_ variables that may be used at any point in a template.
|
||||
$template->assign_vars(array(
|
||||
'SITENAME' => $config['sitename'],
|
||||
@@ -4622,11 +4715,11 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
|
||||
|
||||
'S_SEARCH_HIDDEN_FIELDS' => build_hidden_fields($s_search_hidden_fields),
|
||||
|
||||
'T_THEME_PATH' => "{$web_path}styles/" . $user->theme['theme_path'] . '/theme',
|
||||
'T_TEMPLATE_PATH' => "{$web_path}styles/" . $user->theme['template_path'] . '/template',
|
||||
'T_SUPER_TEMPLATE_PATH' => (isset($user->theme['template_inherit_path']) && $user->theme['template_inherit_path']) ? "{$web_path}styles/" . $user->theme['template_inherit_path'] . '/template' : "{$web_path}styles/" . $user->theme['template_path'] . '/template',
|
||||
'T_IMAGESET_PATH' => "{$web_path}styles/" . $user->theme['imageset_path'] . '/imageset',
|
||||
'T_IMAGESET_LANG_PATH' => "{$web_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->lang_name,
|
||||
'T_THEME_PATH' => "{$web_path}styles/" . rawurlencode($user->theme['theme_path']) . '/theme',
|
||||
'T_TEMPLATE_PATH' => "{$web_path}styles/" . rawurlencode($user->theme['template_path']) . '/template',
|
||||
'T_SUPER_TEMPLATE_PATH' => (isset($user->theme['template_inherit_path']) && $user->theme['template_inherit_path']) ? "{$web_path}styles/" . rawurlencode($user->theme['template_inherit_path']) . '/template' : "{$web_path}styles/" . rawurlencode($user->theme['template_path']) . '/template',
|
||||
'T_IMAGESET_PATH' => "{$web_path}styles/" . rawurlencode($user->theme['imageset_path']) . '/imageset',
|
||||
'T_IMAGESET_LANG_PATH' => "{$web_path}styles/" . rawurlencode($user->theme['imageset_path']) . '/imageset/' . $user->lang_name,
|
||||
'T_IMAGES_PATH' => "{$web_path}images/",
|
||||
'T_SMILIES_PATH' => "{$web_path}{$config['smilies_path']}/",
|
||||
'T_AVATAR_PATH' => "{$web_path}{$config['avatar_path']}/",
|
||||
@@ -4634,13 +4727,13 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
|
||||
'T_ICONS_PATH' => "{$web_path}{$config['icons_path']}/",
|
||||
'T_RANKS_PATH' => "{$web_path}{$config['ranks_path']}/",
|
||||
'T_UPLOAD_PATH' => "{$web_path}{$config['upload_path']}/",
|
||||
'T_STYLESHEET_LINK' => (!$user->theme['theme_storedb']) ? "{$web_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css' : append_sid("{$phpbb_root_path}style.$phpEx", 'id=' . $user->theme['style_id'] . '&lang=' . $user->lang_name),
|
||||
'T_STYLESHEET_LINK' => (!$user->theme['theme_storedb']) ? "{$web_path}styles/" . rawurlencode($user->theme['theme_path']) . '/theme/stylesheet.css' : append_sid("{$phpbb_root_path}style.$phpEx", 'id=' . $user->theme['style_id'] . '&lang=' . $user->lang_name),
|
||||
'T_STYLESHEET_NAME' => $user->theme['theme_name'],
|
||||
|
||||
'T_THEME_NAME' => $user->theme['theme_path'],
|
||||
'T_TEMPLATE_NAME' => $user->theme['template_path'],
|
||||
'T_SUPER_TEMPLATE_NAME' => (isset($user->theme['template_inherit_path']) && $user->theme['template_inherit_path']) ? $user->theme['template_inherit_path'] : $user->theme['template_path'],
|
||||
'T_IMAGESET_NAME' => $user->theme['imageset_path'],
|
||||
'T_THEME_NAME' => rawurlencode($user->theme['theme_path']),
|
||||
'T_TEMPLATE_NAME' => rawurlencode($user->theme['template_path']),
|
||||
'T_SUPER_TEMPLATE_NAME' => rawurlencode((isset($user->theme['template_inherit_path']) && $user->theme['template_inherit_path']) ? $user->theme['template_inherit_path'] : $user->theme['template_path']),
|
||||
'T_IMAGESET_NAME' => rawurlencode($user->theme['imageset_path']),
|
||||
'T_IMAGESET_LANG_NAME' => $user->data['user_lang'],
|
||||
'T_IMAGES' => 'images',
|
||||
'T_SMILIES' => $config['smilies_path'],
|
||||
@@ -4712,6 +4805,7 @@ function page_footer($run_cron = true)
|
||||
$template->assign_vars(array(
|
||||
'DEBUG_OUTPUT' => (defined('DEBUG')) ? $debug_output : '',
|
||||
'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
|
||||
'CREDIT_LINE' => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group'),
|
||||
|
||||
'U_ACP' => ($auth->acl_get('a_') && !empty($user->data['is_registered'])) ? append_sid("{$phpbb_root_path}adm/index.$phpEx", false, true, $user->session_id) : '')
|
||||
);
|
||||
|
@@ -2296,35 +2296,15 @@ function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_fr
|
||||
/**
|
||||
* remove_comments will strip the sql comment lines out of an uploaded sql file
|
||||
* specifically for mssql and postgres type files in the install....
|
||||
*
|
||||
* @deprecated Use phpbb_remove_comments() instead.
|
||||
*/
|
||||
function remove_comments(&$output)
|
||||
{
|
||||
$lines = explode("\n", $output);
|
||||
$output = '';
|
||||
// Remove /* */ comments (http://ostermiller.org/findcomment.html)
|
||||
$output = preg_replace('#/\*(.|[\r\n])*?\*/#', "\n", $output);
|
||||
|
||||
// try to keep mem. use down
|
||||
$linecount = sizeof($lines);
|
||||
|
||||
$in_comment = false;
|
||||
for ($i = 0; $i < $linecount; $i++)
|
||||
{
|
||||
if (trim($lines[$i]) == '/*')
|
||||
{
|
||||
$in_comment = true;
|
||||
}
|
||||
|
||||
if (!$in_comment)
|
||||
{
|
||||
$output .= $lines[$i] . "\n";
|
||||
}
|
||||
|
||||
if (trim($lines[$i]) == '*/')
|
||||
{
|
||||
$in_comment = false;
|
||||
}
|
||||
}
|
||||
|
||||
unset($lines);
|
||||
// Return by reference and value.
|
||||
return $output;
|
||||
}
|
||||
|
||||
@@ -2592,7 +2572,8 @@ function view_log($mode, &$log, &$log_count, $limit = 0, $offset = 0, $forum_id
|
||||
{
|
||||
$sql_keywords .= $db->sql_in_set('l.log_operation', $operations) . ' OR ';
|
||||
}
|
||||
$sql_keywords .= 'LOWER(l.log_data) ' . implode(' OR LOWER(l.log_data) ', $keywords) . ')';
|
||||
$sql_lower = $db->sql_lower_text('l.log_data');
|
||||
$sql_keywords .= "$sql_lower " . implode(" OR $sql_lower ", $keywords) . ')';
|
||||
}
|
||||
|
||||
if ($log_count !== false)
|
||||
@@ -2609,7 +2590,11 @@ function view_log($mode, &$log, &$log_count, $limit = 0, $offset = 0, $forum_id
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
if ($log_count == 0)
|
||||
// $log_count may be false here if false was passed in for it,
|
||||
// because in this case we did not run the COUNT() query above.
|
||||
// If we ran the COUNT() query and it returned zero rows, return;
|
||||
// otherwise query for logs below.
|
||||
if ($log_count === 0)
|
||||
{
|
||||
// Save the queries, because there are no logs to display
|
||||
return 0;
|
||||
@@ -3136,7 +3121,7 @@ function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port
|
||||
|
||||
if ($fsock = @fsockopen($host, $port, $errno, $errstr, $timeout))
|
||||
{
|
||||
@fputs($fsock, "GET $directory/$filename HTTP/1.1\r\n");
|
||||
@fputs($fsock, "GET $directory/$filename HTTP/1.0\r\n");
|
||||
@fputs($fsock, "HOST: $host\r\n");
|
||||
@fputs($fsock, "Connection: close\r\n\r\n");
|
||||
|
||||
@@ -3334,7 +3319,7 @@ function obtain_latest_version_info($force_update = false, $warn_fail = false, $
|
||||
$info = get_remote_file('version.phpbb.com', '/phpbb',
|
||||
((defined('PHPBB_QA')) ? '30x_qa.txt' : '30x.txt'), $errstr, $errno);
|
||||
|
||||
if ($info === false)
|
||||
if (empty($info))
|
||||
{
|
||||
$cache->destroy('versioncheck');
|
||||
if ($warn_fail)
|
||||
@@ -3358,7 +3343,7 @@ function obtain_latest_version_info($force_update = false, $warn_fail = false, $
|
||||
* @param int $flag The binary flag which is OR-ed with the current column value
|
||||
* @param string $sql_more This string is attached to the sql query generated to update the table.
|
||||
*
|
||||
* @return void
|
||||
* @return null
|
||||
*/
|
||||
function enable_bitfield_column_flag($table_name, $column_name, $flag, $sql_more = '')
|
||||
{
|
||||
|
@@ -424,7 +424,8 @@ function import_avatar_gallery($gallery_name = '', $subdirs_as_galleries = false
|
||||
|
||||
$relative_path = empty($convert->convertor['source_path_absolute']);
|
||||
|
||||
if (empty($convert->convertor['avatar_gallery_path']))
|
||||
// check for trailing slash
|
||||
if (rtrim($convert->convertor['avatar_gallery_path'], '/') === '')
|
||||
{
|
||||
$convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_GALLERY_PATH'], 'import_avatar_gallery()'), __LINE__, __FILE__);
|
||||
}
|
||||
@@ -588,7 +589,8 @@ function import_attachment($source, $use_target = false)
|
||||
|
||||
global $convert, $phpbb_root_path, $config, $user;
|
||||
|
||||
if (empty($convert->convertor['upload_path']))
|
||||
// check for trailing slash
|
||||
if (rtrim($convert->convertor['upload_path'], '/') === '')
|
||||
{
|
||||
$convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_UPLOAD_DIR'], 'import_attachment()'), __LINE__, __FILE__);
|
||||
}
|
||||
@@ -647,7 +649,8 @@ function import_smiley($source, $use_target = false)
|
||||
|
||||
global $convert, $phpbb_root_path, $config, $user;
|
||||
|
||||
if (!isset($convert->convertor['smilies_path']))
|
||||
// check for trailing slash
|
||||
if (rtrim($convert->convertor['smilies_path'], '/') === '')
|
||||
{
|
||||
$convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_SMILIES_PATH'], 'import_smiley()'), __LINE__, __FILE__);
|
||||
}
|
||||
@@ -667,7 +670,8 @@ function import_avatar($source, $use_target = false, $user_id = false)
|
||||
|
||||
global $convert, $phpbb_root_path, $config, $user;
|
||||
|
||||
if (!isset($convert->convertor['avatar_path']))
|
||||
// check for trailing slash
|
||||
if (rtrim($convert->convertor['avatar_path'], '/') === '')
|
||||
{
|
||||
$convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_AVATAR_PATH'], 'import_avatar()'), __LINE__, __FILE__);
|
||||
}
|
||||
|
206
phpBB/includes/functions_database_helper.php
Normal file
206
phpBB/includes/functions_database_helper.php
Normal file
@@ -0,0 +1,206 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates rows in given table from a set of values to a new value.
|
||||
* If this results in rows violating uniqueness constraints, the duplicate
|
||||
* rows are eliminated.
|
||||
*
|
||||
* The only supported table is bookmarks.
|
||||
*
|
||||
* @param dbal $db Database object
|
||||
* @param string $table Table on which to perform the update
|
||||
* @param string $column Column whose values to change
|
||||
* @param array $from_values An array of values that should be changed
|
||||
* @param int $to_value The new value
|
||||
* @return null
|
||||
*/
|
||||
function phpbb_update_rows_avoiding_duplicates($db, $table, $column, $from_values, $to_value)
|
||||
{
|
||||
$sql = "SELECT $column, user_id
|
||||
FROM $table
|
||||
WHERE " . $db->sql_in_set($column, $from_values);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$old_user_ids = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$old_user_ids[$row[$column]][] = (int) $row['user_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = "SELECT $column, user_id
|
||||
FROM $table
|
||||
WHERE $column = " . (int) $to_value;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$new_user_ids = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$new_user_ids[$row[$column]][] = (int) $row['user_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$queries = array();
|
||||
foreach ($from_values as $from_value)
|
||||
{
|
||||
if (!isset($old_user_ids[$from_value]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (empty($new_user_ids))
|
||||
{
|
||||
$sql = "UPDATE $table
|
||||
SET $column = " . (int) $to_value . "
|
||||
WHERE $column = '" . $db->sql_escape($from_value) . "'";
|
||||
$queries[] = $sql;
|
||||
}
|
||||
else
|
||||
{
|
||||
$different_user_ids = array_diff($old_user_ids[$from_value], $new_user_ids[$to_value]);
|
||||
if (!empty($different_user_ids))
|
||||
{
|
||||
$sql = "UPDATE $table
|
||||
SET $column = " . (int) $to_value . "
|
||||
WHERE $column = '" . $db->sql_escape($from_value) . "'
|
||||
AND " . $db->sql_in_set('user_id', $different_user_ids);
|
||||
$queries[] = $sql;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($queries))
|
||||
{
|
||||
$db->sql_transaction('begin');
|
||||
|
||||
foreach ($queries as $sql)
|
||||
{
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
$sql = "DELETE FROM $table
|
||||
WHERE " . $db->sql_in_set($column, $from_values);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$db->sql_transaction('commit');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates rows in given table from a set of values to a new value.
|
||||
* If this results in rows violating uniqueness constraints, the duplicate
|
||||
* rows are merged respecting notify_status (0 takes precedence over 1).
|
||||
*
|
||||
* The only supported table is topics_watch.
|
||||
*
|
||||
* @param dbal $db Database object
|
||||
* @param string $table Table on which to perform the update
|
||||
* @param string $column Column whose values to change
|
||||
* @param array $from_values An array of values that should be changed
|
||||
* @param int $to_value The new value
|
||||
* @return null
|
||||
*/
|
||||
function phpbb_update_rows_avoiding_duplicates_notify_status($db, $table, $column, $from_values, $to_value)
|
||||
{
|
||||
$sql = "SELECT $column, user_id, notify_status
|
||||
FROM $table
|
||||
WHERE " . $db->sql_in_set($column, $from_values);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$old_user_ids = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$old_user_ids[(int) $row['notify_status']][$row[$column]][] = (int) $row['user_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = "SELECT $column, user_id
|
||||
FROM $table
|
||||
WHERE $column = " . (int) $to_value;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$new_user_ids = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$new_user_ids[$row[$column]][] = (int) $row['user_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$queries = array();
|
||||
$extra_updates = array(
|
||||
0 => 'notify_status = 0',
|
||||
1 => '',
|
||||
);
|
||||
foreach ($from_values as $from_value)
|
||||
{
|
||||
foreach ($extra_updates as $notify_status => $extra_update)
|
||||
{
|
||||
if (!isset($old_user_ids[$notify_status][$from_value]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (empty($new_user_ids))
|
||||
{
|
||||
$sql = "UPDATE $table
|
||||
SET $column = " . (int) $to_value . "
|
||||
WHERE $column = '" . $db->sql_escape($from_value) . "'";
|
||||
$queries[] = $sql;
|
||||
}
|
||||
else
|
||||
{
|
||||
$different_user_ids = array_diff($old_user_ids[$notify_status][$from_value], $new_user_ids[$to_value]);
|
||||
if (!empty($different_user_ids))
|
||||
{
|
||||
$sql = "UPDATE $table
|
||||
SET $column = " . (int) $to_value . "
|
||||
WHERE $column = '" . $db->sql_escape($from_value) . "'
|
||||
AND " . $db->sql_in_set('user_id', $different_user_ids);
|
||||
$queries[] = $sql;
|
||||
}
|
||||
|
||||
if ($extra_update)
|
||||
{
|
||||
$same_user_ids = array_diff($old_user_ids[$notify_status][$from_value], $different_user_ids);
|
||||
if (!empty($same_user_ids))
|
||||
{
|
||||
$sql = "UPDATE $table
|
||||
SET $extra_update
|
||||
WHERE $column = '" . (int) $to_value . "'
|
||||
AND " . $db->sql_in_set('user_id', $same_user_ids);
|
||||
$queries[] = $sql;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($queries))
|
||||
{
|
||||
$db->sql_transaction('begin');
|
||||
|
||||
foreach ($queries as $sql)
|
||||
{
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
$sql = "DELETE FROM $table
|
||||
WHERE " . $db->sql_in_set($column, $from_values);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$db->sql_transaction('commit');
|
||||
}
|
||||
}
|
@@ -55,6 +55,8 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20
|
||||
'AVAILABLE' => true,
|
||||
'2.0.x' => false,
|
||||
),
|
||||
// Note: php 5.5 alpha 2 deprecated mysql.
|
||||
// Keep mysqli before mysql in this list.
|
||||
'mysqli' => array(
|
||||
'LABEL' => 'MySQL with MySQLi Extension',
|
||||
'SCHEMA' => 'mysql_41',
|
||||
@@ -473,11 +475,40 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,
|
||||
}
|
||||
|
||||
/**
|
||||
* remove_remarks will strip the sql comment lines out of an uploaded sql file
|
||||
* Removes comments from schema files
|
||||
*
|
||||
* @deprecated Use phpbb_remove_comments() instead.
|
||||
*/
|
||||
function remove_remarks(&$sql)
|
||||
{
|
||||
// Remove # style comments
|
||||
$sql = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql));
|
||||
|
||||
// Return by reference
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes "/* style" as well as "# style" comments from $input.
|
||||
*
|
||||
* @param string $input Input string
|
||||
*
|
||||
* @return string Input string with comments removed
|
||||
*/
|
||||
function phpbb_remove_comments($input)
|
||||
{
|
||||
if (!function_exists('remove_comments'))
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
|
||||
}
|
||||
|
||||
// Remove /* */ comments
|
||||
remove_comments($input);
|
||||
|
||||
// Remove # style comments
|
||||
remove_remarks($input);
|
||||
|
||||
return $input;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -515,4 +546,61 @@ function adjust_language_keys_callback($matches)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the output to be stored in a phpBB config.php file
|
||||
*
|
||||
* @param array $data Array containing the database connection information
|
||||
* @param string $dbms The name of the DBAL class to use
|
||||
* @param array $load_extensions Array of additional extensions that should be loaded
|
||||
* @param bool $debug If the debug constants should be enabled by default or not
|
||||
* @param bool $debug_test If the DEBUG_TEST constant should be added
|
||||
* NOTE: Only for use within the testing framework
|
||||
*
|
||||
* @return string The output to write to the file
|
||||
*/
|
||||
function phpbb_create_config_file_data($data, $dbms, $load_extensions, $debug = false, $debug_test = false)
|
||||
{
|
||||
$load_extensions = implode(',', $load_extensions);
|
||||
|
||||
$config_data = "<?php\n";
|
||||
$config_data .= "// phpBB 3.0.x auto-generated configuration file\n// Do not change anything in this file!\n";
|
||||
|
||||
$config_data_array = array(
|
||||
'dbms' => $dbms,
|
||||
'dbhost' => $data['dbhost'],
|
||||
'dbport' => $data['dbport'],
|
||||
'dbname' => $data['dbname'],
|
||||
'dbuser' => $data['dbuser'],
|
||||
'dbpasswd' => htmlspecialchars_decode($data['dbpasswd']),
|
||||
'table_prefix' => $data['table_prefix'],
|
||||
'acm_type' => 'file',
|
||||
'load_extensions' => $load_extensions,
|
||||
);
|
||||
|
||||
foreach ($config_data_array as $key => $value)
|
||||
{
|
||||
$config_data .= "\${$key} = '" . str_replace("'", "\\'", str_replace('\\', '\\\\', $value)) . "';\n";
|
||||
}
|
||||
|
||||
$config_data .= "\n@define('PHPBB_INSTALLED', true);\n";
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
$config_data .= "@define('DEBUG', true);\n";
|
||||
$config_data .= "@define('DEBUG_EXTRA', true);\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$config_data .= "// @define('DEBUG', true);\n";
|
||||
$config_data .= "// @define('DEBUG_EXTRA', true);\n";
|
||||
}
|
||||
|
||||
if ($debug_test)
|
||||
{
|
||||
$config_data .= "@define('DEBUG_TEST', true);\n";
|
||||
}
|
||||
|
||||
return $config_data;
|
||||
}
|
||||
|
||||
?>
|
@@ -250,7 +250,7 @@ class jabber
|
||||
return true;
|
||||
}
|
||||
|
||||
// Apparently an error occured...
|
||||
// Apparently an error occurred...
|
||||
$this->add_to_log('Error: open_socket() - ' . $errorstr);
|
||||
return false;
|
||||
}
|
||||
|
@@ -389,6 +389,28 @@ class messenger
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a valid message id to be used in emails
|
||||
*
|
||||
* @return string message id
|
||||
*/
|
||||
function generate_message_id()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$domain = 'phpbb.generated';
|
||||
if ($config['server_name'])
|
||||
{
|
||||
$domain = $config['server_name'];
|
||||
}
|
||||
else if (!empty($_SERVER['SERVER_NAME']))
|
||||
{
|
||||
$domain = $_SERVER['SERVER_NAME'];
|
||||
}
|
||||
|
||||
return md5(unique_id(time())) . '@' . $domain;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return email header
|
||||
*/
|
||||
@@ -415,7 +437,7 @@ class messenger
|
||||
$headers[] = 'Return-Path: <' . $config['board_email'] . '>';
|
||||
$headers[] = 'Sender: <' . $config['board_email'] . '>';
|
||||
$headers[] = 'MIME-Version: 1.0';
|
||||
$headers[] = 'Message-ID: <' . md5(unique_id(time())) . '@' . $config['server_name'] . '>';
|
||||
$headers[] = 'Message-ID: <' . $this->generate_message_id() . '>';
|
||||
$headers[] = 'Date: ' . date('r', time());
|
||||
$headers[] = 'Content-Type: text/plain; charset=UTF-8'; // format=flowed
|
||||
$headers[] = 'Content-Transfer-Encoding: 8bit'; // 7bit
|
||||
@@ -568,7 +590,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'], $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']);
|
||||
|
||||
if (!$this->jabber->connect())
|
||||
{
|
||||
@@ -715,14 +737,21 @@ class queue
|
||||
|
||||
$lock_fp = $this->lock();
|
||||
|
||||
set_config('last_queue_run', time(), true);
|
||||
|
||||
if (!file_exists($this->cache_file) || filemtime($this->cache_file) > time() - $config['queue_interval'])
|
||||
// avoid races, check file existence once
|
||||
$have_cache_file = file_exists($this->cache_file);
|
||||
if (!$have_cache_file || $config['last_queue_run'] > time() - $config['queue_interval'])
|
||||
{
|
||||
if (!$have_cache_file)
|
||||
{
|
||||
set_config('last_queue_run', time(), true);
|
||||
}
|
||||
|
||||
$this->unlock($lock_fp);
|
||||
return;
|
||||
}
|
||||
|
||||
set_config('last_queue_run', time(), true);
|
||||
|
||||
include($this->cache_file);
|
||||
|
||||
foreach ($this->queue_data as $object => $data_ary)
|
||||
@@ -769,7 +798,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'], $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']);
|
||||
|
||||
if (!$this->jabber->connect())
|
||||
{
|
||||
@@ -1022,7 +1051,7 @@ function smtpmail($addresses, $subject, $message, &$err_msg, $headers = false)
|
||||
}
|
||||
|
||||
// Let me in. This function handles the complete authentication process
|
||||
if ($err_msg = $smtp->log_into_server($config['smtp_host'], $config['smtp_username'], $config['smtp_password'], $config['smtp_auth_method']))
|
||||
if ($err_msg = $smtp->log_into_server($config['smtp_host'], $config['smtp_username'], htmlspecialchars_decode($config['smtp_password']), $config['smtp_auth_method']))
|
||||
{
|
||||
$smtp->close_session($err_msg);
|
||||
return false;
|
||||
|
@@ -288,13 +288,15 @@ function posting_gen_topic_icons($mode, $icon_id)
|
||||
|
||||
if (sizeof($icons))
|
||||
{
|
||||
$root_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . '/' : $phpbb_root_path;
|
||||
|
||||
foreach ($icons as $id => $data)
|
||||
{
|
||||
if ($data['display'])
|
||||
{
|
||||
$template->assign_block_vars('topic_icon', array(
|
||||
'ICON_ID' => $id,
|
||||
'ICON_IMG' => $phpbb_root_path . $config['icons_path'] . '/' . $data['img'],
|
||||
'ICON_IMG' => $root_path . $config['icons_path'] . '/' . $data['img'],
|
||||
'ICON_WIDTH' => $data['width'],
|
||||
'ICON_HEIGHT' => $data['height'],
|
||||
|
||||
@@ -421,16 +423,6 @@ function upload_attachment($form_name, $forum_id, $local = false, $local_storage
|
||||
|
||||
$cat_id = (isset($extensions[$file->get('extension')]['display_cat'])) ? $extensions[$file->get('extension')]['display_cat'] : ATTACHMENT_CATEGORY_NONE;
|
||||
|
||||
// Make sure the image category only holds valid images...
|
||||
if ($cat_id == ATTACHMENT_CATEGORY_IMAGE && !$file->is_image())
|
||||
{
|
||||
$file->remove();
|
||||
|
||||
// If this error occurs a user tried to exploit an IE Bug by renaming extensions
|
||||
// Since the image category is displaying content inline we need to catch this.
|
||||
trigger_error($user->lang['ATTACHED_IMAGE_NOT_IMAGE']);
|
||||
}
|
||||
|
||||
// Do we have to create a thumbnail?
|
||||
$filedata['thumbnail'] = ($cat_id == ATTACHMENT_CATEGORY_IMAGE && $config['img_create_thumbnail']) ? 1 : 0;
|
||||
|
||||
@@ -471,6 +463,16 @@ function upload_attachment($form_name, $forum_id, $local = false, $local_storage
|
||||
return $filedata;
|
||||
}
|
||||
|
||||
// Make sure the image category only holds valid images...
|
||||
if ($cat_id == ATTACHMENT_CATEGORY_IMAGE && !$file->is_image())
|
||||
{
|
||||
$file->remove();
|
||||
|
||||
// If this error occurs a user tried to exploit an IE Bug by renaming extensions
|
||||
// Since the image category is displaying content inline we need to catch this.
|
||||
trigger_error($user->lang['ATTACHED_IMAGE_NOT_IMAGE']);
|
||||
}
|
||||
|
||||
$filedata['filesize'] = $file->get('filesize');
|
||||
$filedata['mimetype'] = $file->get('mimetype');
|
||||
$filedata['extension'] = $file->get('extension');
|
||||
@@ -497,7 +499,14 @@ function upload_attachment($form_name, $forum_id, $local = false, $local_storage
|
||||
{
|
||||
if ($free_space <= $file->get('filesize'))
|
||||
{
|
||||
$filedata['error'][] = $user->lang['ATTACH_QUOTA_REACHED'];
|
||||
if ($auth->acl_get('a_'))
|
||||
{
|
||||
$filedata['error'][] = $user->lang['ATTACH_DISK_FULL'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$filedata['error'][] = $user->lang['ATTACH_QUOTA_REACHED'];
|
||||
}
|
||||
$filedata['post_attach'] = false;
|
||||
|
||||
$file->remove();
|
||||
@@ -1160,7 +1169,7 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
|
||||
/**
|
||||
* User Notification
|
||||
*/
|
||||
function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id, $topic_id, $post_id)
|
||||
function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id, $topic_id, $post_id, $author_name = '')
|
||||
{
|
||||
global $db, $user, $config, $phpbb_root_path, $phpEx, $auth;
|
||||
|
||||
@@ -1180,36 +1189,32 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
|
||||
$topic_title = ($topic_notification) ? $topic_title : $subject;
|
||||
$topic_title = censor_text($topic_title);
|
||||
|
||||
// Get banned User ID's
|
||||
$sql = 'SELECT ban_userid
|
||||
FROM ' . BANLIST_TABLE . '
|
||||
WHERE ban_userid <> 0
|
||||
AND ban_exclude <> 1';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$sql_ignore_users = ANONYMOUS . ', ' . $user->data['user_id'];
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
// Exclude guests, current user and banned users from notifications
|
||||
if (!function_exists('phpbb_get_banned_user_ids'))
|
||||
{
|
||||
$sql_ignore_users .= ', ' . (int) $row['ban_userid'];
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
$sql_ignore_users = phpbb_get_banned_user_ids();
|
||||
$sql_ignore_users[ANONYMOUS] = ANONYMOUS;
|
||||
$sql_ignore_users[$user->data['user_id']] = $user->data['user_id'];
|
||||
|
||||
$notify_rows = array();
|
||||
|
||||
// -- get forum_userids || topic_userids
|
||||
$sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber
|
||||
FROM ' . (($topic_notification) ? TOPICS_WATCH_TABLE : FORUMS_WATCH_TABLE) . ' w, ' . USERS_TABLE . ' u
|
||||
WHERE w.' . (($topic_notification) ? 'topic_id' : 'forum_id') . ' = ' . (($topic_notification) ? $topic_id : $forum_id) . "
|
||||
AND w.user_id NOT IN ($sql_ignore_users)
|
||||
AND w.notify_status = " . NOTIFY_YES . '
|
||||
WHERE w.' . (($topic_notification) ? 'topic_id' : 'forum_id') . ' = ' . (($topic_notification) ? $topic_id : $forum_id) . '
|
||||
AND ' . $db->sql_in_set('w.user_id', $sql_ignore_users, true) . '
|
||||
AND w.notify_status = ' . NOTIFY_YES . '
|
||||
AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')
|
||||
AND u.user_id = w.user_id';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$notify_rows[$row['user_id']] = array(
|
||||
'user_id' => $row['user_id'],
|
||||
$notify_user_id = (int) $row['user_id'];
|
||||
$notify_rows[$notify_user_id] = array(
|
||||
'user_id' => $notify_user_id,
|
||||
'username' => $row['username'],
|
||||
'user_email' => $row['user_email'],
|
||||
'user_jabber' => $row['user_jabber'],
|
||||
@@ -1219,30 +1224,29 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
|
||||
'method' => $row['user_notify_type'],
|
||||
'allowed' => false
|
||||
);
|
||||
|
||||
// Add users who have been already notified to ignore list
|
||||
$sql_ignore_users[$notify_user_id] = $notify_user_id;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// forum notification is sent to those not already receiving topic notifications
|
||||
if ($topic_notification)
|
||||
{
|
||||
if (sizeof($notify_rows))
|
||||
{
|
||||
$sql_ignore_users .= ', ' . implode(', ', array_keys($notify_rows));
|
||||
}
|
||||
|
||||
$sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber
|
||||
FROM ' . FORUMS_WATCH_TABLE . ' fw, ' . USERS_TABLE . " u
|
||||
WHERE fw.forum_id = $forum_id
|
||||
AND fw.user_id NOT IN ($sql_ignore_users)
|
||||
AND fw.notify_status = " . NOTIFY_YES . '
|
||||
AND " . $db->sql_in_set('fw.user_id', $sql_ignore_users, true) . '
|
||||
AND fw.notify_status = ' . NOTIFY_YES . '
|
||||
AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')
|
||||
AND u.user_id = fw.user_id';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$notify_rows[$row['user_id']] = array(
|
||||
'user_id' => $row['user_id'],
|
||||
$notify_user_id = (int) $row['user_id'];
|
||||
$notify_rows[$notify_user_id] = array(
|
||||
'user_id' => $notify_user_id,
|
||||
'username' => $row['username'],
|
||||
'user_email' => $row['user_email'],
|
||||
'user_jabber' => $row['user_jabber'],
|
||||
@@ -1273,7 +1277,6 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Now, we have to do a little step before really sending, we need to distinguish our users a little bit. ;)
|
||||
$msg_users = $delete_ids = $update_notification = array();
|
||||
foreach ($notify_rows as $user_id => $row)
|
||||
@@ -1286,6 +1289,20 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
|
||||
{
|
||||
$msg_users[] = $row;
|
||||
$update_notification[$row['notify_type']][] = $row['user_id'];
|
||||
|
||||
/*
|
||||
* We also update the forums watch table for this user when we are
|
||||
* sending out a topic notification to prevent sending out another
|
||||
* notification in case this user is also subscribed to the forum
|
||||
* this topic was posted in.
|
||||
* Since an UPDATE query is used, this has no effect on users only
|
||||
* subscribed to the topic (i.e. no row is created) and should not
|
||||
* be a performance issue.
|
||||
*/
|
||||
if ($row['notify_type'] === 'topic')
|
||||
{
|
||||
$update_notification['forum'][] = $row['user_id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($notify_rows);
|
||||
@@ -1323,6 +1340,7 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
|
||||
'USERNAME' => htmlspecialchars_decode($addr['name']),
|
||||
'TOPIC_TITLE' => htmlspecialchars_decode($topic_title),
|
||||
'FORUM_NAME' => htmlspecialchars_decode($forum_name),
|
||||
'AUTHOR_NAME' => htmlspecialchars_decode($author_name),
|
||||
|
||||
'U_FORUM' => generate_board_url() . "/viewforum.$phpEx?f=$forum_id",
|
||||
'U_TOPIC' => generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id",
|
||||
@@ -1680,8 +1698,9 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
// The variable name should be $post_approved, because it indicates if the post is approved or not
|
||||
$post_approval = 1;
|
||||
|
||||
// Check the permissions for post approval. Moderators are not affected.
|
||||
if (!$auth->acl_get('f_noapprove', $data['forum_id']) && !$auth->acl_get('m_approve', $data['forum_id']))
|
||||
// Check the permissions for post approval.
|
||||
// Moderators must go through post approval like ordinary users.
|
||||
if (!$auth->acl_get('f_noapprove', $data['forum_id']))
|
||||
{
|
||||
// Post not approved, but in queue
|
||||
$post_approval = 0;
|
||||
@@ -2585,7 +2604,11 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
// Send Notifications
|
||||
if (($mode == 'reply' || $mode == 'quote' || $mode == 'post') && $post_approval)
|
||||
{
|
||||
user_notification($mode, $subject, $data['topic_title'], $data['forum_name'], $data['forum_id'], $data['topic_id'], $data['post_id']);
|
||||
// If a username was supplied or the poster is a guest, we will use the supplied username.
|
||||
// Doing it this way we can use "...post by guest-username..." in notifications when
|
||||
// "guest-username" is supplied or ommit the username if it is not.
|
||||
$username = ($username !== '' || !$user->data['is_registered']) ? $username : $user->data['username'];
|
||||
user_notification($mode, $subject, $data['topic_title'], $data['forum_name'], $data['forum_id'], $data['topic_id'], $data['post_id'], $username);
|
||||
}
|
||||
|
||||
$params = $add_anchor = '';
|
||||
@@ -2622,7 +2645,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||
* - 'topic_last_post_subject'
|
||||
* - 'topic_last_poster_name'
|
||||
* - 'topic_last_poster_colour'
|
||||
* @param int $bump_time The time at which topic was bumped, usually it is a current time as obtained via time().
|
||||
* @param int $bump_time The time at which topic was bumped, usually it is a current time as obtained via time().
|
||||
* @return string An URL to the bumped topic, example: ./viewtopic.php?forum_id=1&topic_id=2&p=3#p3
|
||||
*/
|
||||
function phpbb_bump_topic($forum_id, $topic_id, $post_data, $bump_time = false)
|
||||
|
@@ -1083,6 +1083,205 @@ function delete_pm($user_id, $msg_ids, $folder_id)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all PM(s) for a given user and delete the ones without references
|
||||
*
|
||||
* @param int $user_id ID of the user whose private messages we want to delete
|
||||
*
|
||||
* @return boolean False if there were no pms found, true otherwise.
|
||||
*/
|
||||
function phpbb_delete_user_pms($user_id)
|
||||
{
|
||||
global $db, $user, $phpbb_root_path, $phpEx;
|
||||
|
||||
$user_id = (int) $user_id;
|
||||
|
||||
if (!$user_id)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get PM Information for later deleting
|
||||
// The two queries where split, so we can use our indexes
|
||||
$undelivered_msg = $delete_ids = array();
|
||||
|
||||
// Part 1: get PMs the user received
|
||||
$sql = 'SELECT msg_id
|
||||
FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE user_id = ' . $user_id;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$msg_id = (int) $row['msg_id'];
|
||||
$delete_ids[$msg_id] = $msg_id;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Part 2: get PMs the user sent, but have yet to be received
|
||||
// We cannot simply delete them. First we have to check,
|
||||
// whether another user already received and read the message.
|
||||
$sql = 'SELECT msg_id
|
||||
FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE author_id = ' . $user_id . '
|
||||
AND folder_id = ' . PRIVMSGS_NO_BOX;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$msg_id = (int) $row['msg_id'];
|
||||
$undelivered_msg[$msg_id] = $msg_id;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (empty($delete_ids) && empty($undelivered_msg))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$db->sql_transaction('begin');
|
||||
|
||||
if (!empty($undelivered_msg))
|
||||
{
|
||||
// A pm is delivered, if for any recipient the message was moved
|
||||
// from their NO_BOX to another folder. We do not delete such
|
||||
// messages, but only delete them for users, who have not yet
|
||||
// received them.
|
||||
$sql = 'SELECT msg_id
|
||||
FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE author_id = ' . $user_id . '
|
||||
AND folder_id <> ' . PRIVMSGS_NO_BOX . '
|
||||
AND folder_id <> ' . PRIVMSGS_OUTBOX . '
|
||||
AND folder_id <> ' . PRIVMSGS_SENTBOX;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$delivered_msg = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$msg_id = (int) $row['msg_id'];
|
||||
$delivered_msg[$msg_id] = $msg_id;
|
||||
unset($undelivered_msg[$msg_id]);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$undelivered_user = array();
|
||||
|
||||
// Count the messages we delete, so we can correct the user pm data
|
||||
$sql = 'SELECT user_id, COUNT(msg_id) as num_undelivered_privmsgs
|
||||
FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE author_id = ' . $user_id . '
|
||||
AND folder_id = ' . PRIVMSGS_NO_BOX . '
|
||||
AND ' . $db->sql_in_set('msg_id', array_merge($undelivered_msg, $delivered_msg)) . '
|
||||
GROUP BY user_id';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$num_pms = (int) $row['num_undelivered_privmsgs'];
|
||||
$undelivered_user[$num_pms][] = (int) $row['user_id'];
|
||||
|
||||
if (sizeof($undelivered_user[$num_pms]) > 50)
|
||||
{
|
||||
// If there are too many users affected the query might get
|
||||
// too long, so we update the value for the first bunch here.
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET user_new_privmsg = user_new_privmsg - ' . $num_pms . ',
|
||||
user_unread_privmsg = user_unread_privmsg - ' . $num_pms . '
|
||||
WHERE ' . $db->sql_in_set('user_id', $undelivered_user[$num_pms]);
|
||||
$db->sql_query($sql);
|
||||
unset($undelivered_user[$num_pms]);
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
foreach ($undelivered_user as $num_pms => $undelivered_user_set)
|
||||
{
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET user_new_privmsg = user_new_privmsg - ' . $num_pms . ',
|
||||
user_unread_privmsg = user_unread_privmsg - ' . $num_pms . '
|
||||
WHERE ' . $db->sql_in_set('user_id', $undelivered_user_set);
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
if (!empty($delivered_msg))
|
||||
{
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE folder_id = ' . PRIVMSGS_NO_BOX . '
|
||||
AND ' . $db->sql_in_set('msg_id', $delivered_msg);
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
if (!empty($undelivered_msg))
|
||||
{
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('msg_id', $undelivered_msg);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('msg_id', $undelivered_msg);
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
// Reset the user's pm count to 0
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET user_new_privmsg = 0,
|
||||
user_unread_privmsg = 0
|
||||
WHERE user_id = ' . $user_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Delete private message data of the user
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE user_id = ' . (int) $user_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
if (!empty($delete_ids))
|
||||
{
|
||||
// Now we have to check which messages we can delete completely
|
||||
$sql = 'SELECT msg_id
|
||||
FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('msg_id', $delete_ids);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
unset($delete_ids[$row['msg_id']]);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (!empty($delete_ids))
|
||||
{
|
||||
// Check if there are any attachments we need to remove
|
||||
if (!function_exists('delete_attachments'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
|
||||
}
|
||||
|
||||
delete_attachments('message', $delete_ids, false);
|
||||
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('msg_id', $delete_ids);
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
// Set the remaining author id to anonymous
|
||||
// This way users are still able to read messages from users being removed
|
||||
$sql = 'UPDATE ' . PRIVMSGS_TO_TABLE . '
|
||||
SET author_id = ' . ANONYMOUS . '
|
||||
WHERE author_id = ' . $user_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = 'UPDATE ' . PRIVMSGS_TABLE . '
|
||||
SET author_id = ' . ANONYMOUS . '
|
||||
WHERE author_id = ' . $user_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
$db->sql_transaction('commit');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rebuild message header
|
||||
*/
|
||||
@@ -1362,12 +1561,6 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true)
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
// Additionally, do not include the sender if he is in the group he wants to send to. ;)
|
||||
if ($row['user_id'] === $user->data['user_id'])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$field = ($data['address_list']['g'][$row['group_id']] == 'to') ? 'to' : 'bcc';
|
||||
$recipients[$row['user_id']] = $field;
|
||||
}
|
||||
@@ -1622,6 +1815,7 @@ function pm_notification($mode, $author, $recipients, $subject, $message, $msg_i
|
||||
|
||||
$subject = censor_text($subject);
|
||||
|
||||
// Exclude guests, current user and banned users from notifications
|
||||
unset($recipients[ANONYMOUS], $recipients[$user->data['user_id']]);
|
||||
|
||||
if (!sizeof($recipients))
|
||||
@@ -1629,18 +1823,12 @@ function pm_notification($mode, $author, $recipients, $subject, $message, $msg_i
|
||||
return;
|
||||
}
|
||||
|
||||
// Get banned User ID's
|
||||
$sql = 'SELECT ban_userid
|
||||
FROM ' . BANLIST_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('ban_userid', array_map('intval', array_keys($recipients))) . '
|
||||
AND ban_exclude = 0';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
if (!function_exists('phpbb_get_banned_user_ids'))
|
||||
{
|
||||
unset($recipients[$row['ban_userid']]);
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
$banned_users = phpbb_get_banned_user_ids(array_keys($recipients));
|
||||
$recipients = array_diff(array_keys($recipients), $banned_users);
|
||||
|
||||
if (!sizeof($recipients))
|
||||
{
|
||||
@@ -1649,7 +1837,7 @@ function pm_notification($mode, $author, $recipients, $subject, $message, $msg_i
|
||||
|
||||
$sql = 'SELECT user_id, username, user_email, user_lang, user_notify_pm, user_notify_type, user_jabber
|
||||
FROM ' . USERS_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('user_id', array_map('intval', array_keys($recipients)));
|
||||
WHERE ' . $db->sql_in_set('user_id', $recipients);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$msg_list_ary = array();
|
||||
|
@@ -122,7 +122,7 @@ class custom_profile
|
||||
|
||||
case FIELD_BOOL:
|
||||
$field_value = (bool) $field_value;
|
||||
|
||||
|
||||
if (!$field_value && $field_data['field_required'])
|
||||
{
|
||||
return 'FIELD_REQUIRED';
|
||||
@@ -134,7 +134,7 @@ class custom_profile
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$field_value = (int) $field_value;
|
||||
|
||||
if ($field_value < $field_data['field_minlen'])
|
||||
@@ -456,6 +456,8 @@ class custom_profile
|
||||
|
||||
$user_fields = array();
|
||||
|
||||
$user_ids = $user_id;
|
||||
|
||||
// Go through the fields in correct order
|
||||
foreach (array_keys($this->profile_cache) as $used_ident)
|
||||
{
|
||||
@@ -464,6 +466,15 @@ class custom_profile
|
||||
$user_fields[$user_id][$used_ident]['value'] = $row['pf_' . $used_ident];
|
||||
$user_fields[$user_id][$used_ident]['data'] = $this->profile_cache[$used_ident];
|
||||
}
|
||||
|
||||
foreach ($user_ids as $user_id)
|
||||
{
|
||||
if (!isset($user_fields[$user_id][$used_ident]) && $this->profile_cache[$used_ident]['field_show_novalue'])
|
||||
{
|
||||
$user_fields[$user_id][$used_ident]['value'] = '';
|
||||
$user_fields[$user_id][$used_ident]['data'] = $this->profile_cache[$used_ident];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $user_fields;
|
||||
@@ -521,7 +532,7 @@ class custom_profile
|
||||
switch ($this->profile_types[$field_type])
|
||||
{
|
||||
case 'int':
|
||||
if ($value === '')
|
||||
if ($value === '' && !$ident_ary['data']['field_show_novalue'])
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@@ -530,7 +541,7 @@ class custom_profile
|
||||
|
||||
case 'string':
|
||||
case 'text':
|
||||
if (!$value)
|
||||
if (!$value && !$ident_ary['data']['field_show_novalue'])
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@@ -548,7 +559,7 @@ class custom_profile
|
||||
$month = (isset($date[1])) ? (int) $date[1] : 0;
|
||||
$year = (isset($date[2])) ? (int) $date[2] : 0;
|
||||
|
||||
if (!$day && !$month && !$year)
|
||||
if (!$day && !$month && !$year && !$ident_ary['data']['field_show_novalue'])
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@@ -571,7 +582,7 @@ class custom_profile
|
||||
$this->get_option_lang($field_id, $lang_id, FIELD_DROPDOWN, false);
|
||||
}
|
||||
|
||||
if ($value == $ident_ary['data']['field_novalue'])
|
||||
if ($value == $ident_ary['data']['field_novalue'] && !$ident_ary['data']['field_show_novalue'])
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@@ -581,7 +592,14 @@ class custom_profile
|
||||
// User not having a value assigned
|
||||
if (!isset($this->options_lang[$field_id][$lang_id][$value]))
|
||||
{
|
||||
return NULL;
|
||||
if ($ident_ary['data']['field_show_novalue'])
|
||||
{
|
||||
$value = $ident_ary['data']['field_novalue'];
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->options_lang[$field_id][$lang_id][$value];
|
||||
@@ -595,6 +613,11 @@ class custom_profile
|
||||
$this->get_option_lang($field_id, $lang_id, FIELD_BOOL, false);
|
||||
}
|
||||
|
||||
if (!$value && $ident_ary['data']['field_show_novalue'])
|
||||
{
|
||||
$value = $ident_ary['data']['field_default_value'];
|
||||
}
|
||||
|
||||
if ($ident_ary['data']['field_length'] == 1)
|
||||
{
|
||||
return (isset($this->options_lang[$field_id][$lang_id][(int) $value])) ? $this->options_lang[$field_id][$lang_id][(int) $value] : NULL;
|
||||
@@ -625,10 +648,10 @@ class custom_profile
|
||||
|
||||
$profile_row['field_ident'] = (isset($profile_row['var_name'])) ? $profile_row['var_name'] : 'pf_' . $profile_row['field_ident'];
|
||||
$user_ident = $profile_row['field_ident'];
|
||||
// checkbox - only testing for isset
|
||||
// checkbox - set the value to "true" if it has been set to 1
|
||||
if ($profile_row['field_type'] == FIELD_BOOL && $profile_row['field_length'] == 2)
|
||||
{
|
||||
$value = (isset($_REQUEST[$profile_row['field_ident']])) ? true : ((!isset($user->profile_fields[$user_ident]) || $preview) ? $default_value : $user->profile_fields[$user_ident]);
|
||||
$value = (isset($_REQUEST[$profile_row['field_ident']]) && request_var($profile_row['field_ident'], $default_value) == 1) ? true : ((!isset($user->profile_fields[$user_ident]) || $preview) ? $default_value : $user->profile_fields[$user_ident]);
|
||||
}
|
||||
else if ($profile_row['field_type'] == FIELD_INT)
|
||||
{
|
||||
|
@@ -751,6 +751,31 @@ class fileupload
|
||||
$filename = $url['path'];
|
||||
$filesize = 0;
|
||||
|
||||
$remote_max_filesize = $this->max_filesize;
|
||||
if (!$remote_max_filesize)
|
||||
{
|
||||
$max_filesize = @ini_get('upload_max_filesize');
|
||||
|
||||
if (!empty($max_filesize))
|
||||
{
|
||||
$unit = strtolower(substr($max_filesize, -1, 1));
|
||||
$remote_max_filesize = (int) $max_filesize;
|
||||
|
||||
switch ($unit)
|
||||
{
|
||||
case 'g':
|
||||
$remote_max_filesize *= 1024;
|
||||
// no break
|
||||
case 'm':
|
||||
$remote_max_filesize *= 1024;
|
||||
// no break
|
||||
case 'k':
|
||||
$remote_max_filesize *= 1024;
|
||||
// no break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$errno = 0;
|
||||
$errstr = '';
|
||||
|
||||
@@ -779,9 +804,9 @@ class fileupload
|
||||
$block = @fread($fsock, 1024);
|
||||
$filesize += strlen($block);
|
||||
|
||||
if ($this->max_filesize && $filesize > $this->max_filesize)
|
||||
if ($remote_max_filesize && $filesize > $remote_max_filesize)
|
||||
{
|
||||
$max_filesize = get_formatted_filesize($this->max_filesize, false);
|
||||
$max_filesize = get_formatted_filesize($remote_max_filesize, false);
|
||||
|
||||
$file = new fileerror(sprintf($user->lang[$this->error_prefix . 'WRONG_FILESIZE'], $max_filesize['value'], $max_filesize['unit']));
|
||||
return $file;
|
||||
@@ -807,9 +832,9 @@ class fileupload
|
||||
{
|
||||
$length = (int) str_replace('content-length: ', '', strtolower($line));
|
||||
|
||||
if ($length && $length > $this->max_filesize)
|
||||
if ($remote_max_filesize && $length && $length > $remote_max_filesize)
|
||||
{
|
||||
$max_filesize = get_formatted_filesize($this->max_filesize, false);
|
||||
$max_filesize = get_formatted_filesize($remote_max_filesize, false);
|
||||
|
||||
$file = new fileerror(sprintf($user->lang[$this->error_prefix . 'WRONG_FILESIZE'], $max_filesize['value'], $max_filesize['unit']));
|
||||
return $file;
|
||||
|
@@ -528,62 +528,12 @@ function user_delete($mode, $user_id, $post_username = false)
|
||||
WHERE session_user_id = ' . $user_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Remove any undelivered mails...
|
||||
$sql = 'SELECT msg_id, user_id
|
||||
FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE author_id = ' . $user_id . '
|
||||
AND folder_id = ' . PRIVMSGS_NO_BOX;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$undelivered_msg = $undelivered_user = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
// Clean the private messages tables from the user
|
||||
if (!function_exists('phpbb_delete_user_pms'))
|
||||
{
|
||||
$undelivered_msg[] = $row['msg_id'];
|
||||
$undelivered_user[$row['user_id']][] = true;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (sizeof($undelivered_msg))
|
||||
{
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('msg_id', $undelivered_msg);
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE author_id = ' . $user_id . '
|
||||
AND folder_id = ' . PRIVMSGS_NO_BOX;
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Delete all to-information
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TO_TABLE . '
|
||||
WHERE user_id = ' . $user_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Set the remaining author id to anonymous - this way users are still able to read messages from users being removed
|
||||
$sql = 'UPDATE ' . PRIVMSGS_TO_TABLE . '
|
||||
SET author_id = ' . ANONYMOUS . '
|
||||
WHERE author_id = ' . $user_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = 'UPDATE ' . PRIVMSGS_TABLE . '
|
||||
SET author_id = ' . ANONYMOUS . '
|
||||
WHERE author_id = ' . $user_id;
|
||||
$db->sql_query($sql);
|
||||
|
||||
foreach ($undelivered_user as $_user_id => $ary)
|
||||
{
|
||||
if ($_user_id == $user_id)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET user_new_privmsg = user_new_privmsg - ' . sizeof($ary) . ',
|
||||
user_unread_privmsg = user_unread_privmsg - ' . sizeof($ary) . '
|
||||
WHERE user_id = ' . $_user_id;
|
||||
$db->sql_query($sql);
|
||||
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
|
||||
}
|
||||
phpbb_delete_user_pms($user_id);
|
||||
|
||||
$db->sql_transaction('commit');
|
||||
|
||||
@@ -1297,8 +1247,9 @@ function validate_data($data, $val_ary)
|
||||
{
|
||||
$function = array_shift($validate);
|
||||
array_unshift($validate, $data[$var]);
|
||||
$function_prefix = (function_exists('phpbb_validate_' . $function)) ? 'phpbb_validate_' : 'validate_';
|
||||
|
||||
if ($result = call_user_func_array('validate_' . $function, $validate))
|
||||
if ($result = call_user_func_array($function_prefix . $function, $validate))
|
||||
{
|
||||
// Since errors are checked later for their language file existence, we need to make sure custom errors are not adjusted.
|
||||
$error[] = (empty($user->lang[$result . '_' . strtoupper($var)])) ? $result : $result . '_' . strtoupper($var);
|
||||
@@ -1603,7 +1554,7 @@ function validate_username($username, $allowed_username = false)
|
||||
*/
|
||||
function validate_password($password)
|
||||
{
|
||||
global $config, $db, $user;
|
||||
global $config;
|
||||
|
||||
if ($password === '' || $config['pass_complex'] === 'PASS_TYPE_ANY')
|
||||
{
|
||||
@@ -1948,6 +1899,51 @@ function validate_jabber($jid)
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate hex colour value
|
||||
*
|
||||
* @param string $colour The hex colour value
|
||||
* @param bool $optional Whether the colour value is optional. True if an empty
|
||||
* string will be accepted as correct input, false if not.
|
||||
* @return bool|string Error message if colour value is incorrect, false if it
|
||||
* fits the hex colour code
|
||||
*/
|
||||
function phpbb_validate_hex_colour($colour, $optional = false)
|
||||
{
|
||||
if ($colour === '')
|
||||
{
|
||||
return (($optional) ? false : 'WRONG_DATA');
|
||||
}
|
||||
|
||||
if (!preg_match('/^([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/', $colour))
|
||||
{
|
||||
return 'WRONG_DATA';
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies whether a style ID corresponds to an active style.
|
||||
*
|
||||
* @param int $style_id The style_id of a style which should be checked if activated or not.
|
||||
* @return boolean
|
||||
*/
|
||||
function phpbb_style_is_active($style_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$sql = 'SELECT style_active
|
||||
FROM ' . STYLES_TABLE . '
|
||||
WHERE style_id = '. (int) $style_id;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$style_is_active = (bool) $db->sql_fetchfield('style_active');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
return $style_is_active;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove avatar
|
||||
*/
|
||||
@@ -3587,4 +3583,37 @@ function remove_newly_registered($user_id, $user_data = false)
|
||||
return $user_data['group_id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets user ids of currently banned registered users.
|
||||
*
|
||||
* @param array $user_ids Array of users' ids to check for banning,
|
||||
* leave empty to get complete list of banned ids
|
||||
* @return array Array of banned users' ids if any, empty array otherwise
|
||||
*/
|
||||
function phpbb_get_banned_user_ids($user_ids = array())
|
||||
{
|
||||
global $db;
|
||||
|
||||
$sql_user_ids = (!empty($user_ids)) ? $db->sql_in_set('ban_userid', $user_ids) : 'ban_userid <> 0';
|
||||
|
||||
// Get banned User ID's
|
||||
// Ignore stale bans which were not wiped yet
|
||||
$banned_ids_list = array();
|
||||
$sql = 'SELECT ban_userid
|
||||
FROM ' . BANLIST_TABLE . "
|
||||
WHERE $sql_user_ids
|
||||
AND ban_exclude <> 1
|
||||
AND (ban_end > " . time() . '
|
||||
OR ban_end = 0)';
|
||||
$result = $db->sql_query($sql);
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$user_id = (int) $row['ban_userid'];
|
||||
$banned_ids_list[$user_id] = $user_id;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
return $banned_ids_list;
|
||||
}
|
||||
|
||||
?>
|
@@ -414,13 +414,16 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
|
||||
// Message and return links
|
||||
$success_msg = 'POSTS_MERGED_SUCCESS';
|
||||
|
||||
// If the topic no longer exist, we will update the topic watch table.
|
||||
// To not let it error out on users watching both topics, we just return on an error...
|
||||
$db->sql_return_on_error(true);
|
||||
$db->sql_query('UPDATE ' . TOPICS_WATCH_TABLE . ' SET topic_id = ' . (int) $to_topic_id . ' WHERE ' . $db->sql_in_set('topic_id', $topic_ids));
|
||||
$db->sql_return_on_error(false);
|
||||
if (!function_exists('phpbb_update_rows_avoiding_duplicates_notify_status'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_database_helper.' . $phpEx);
|
||||
}
|
||||
|
||||
$db->sql_query('DELETE FROM ' . TOPICS_WATCH_TABLE . ' WHERE ' . $db->sql_in_set('topic_id', $topic_ids));
|
||||
// Update the topic watch table.
|
||||
phpbb_update_rows_avoiding_duplicates_notify_status($db, TOPICS_WATCH_TABLE, 'topic_id', $topic_ids, $to_topic_id);
|
||||
|
||||
// Update the bookmarks table.
|
||||
phpbb_update_rows_avoiding_duplicates($db, BOOKMARKS_TABLE, 'topic_id', $topic_ids, $to_topic_id);
|
||||
|
||||
// Link to the new topic
|
||||
$return_link .= (($return_link) ? '<br /><br />' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&t=' . $to_topic_id) . '">', '</a>');
|
||||
|
@@ -1231,6 +1231,7 @@ function mcp_fork_topic($topic_ids)
|
||||
}
|
||||
}
|
||||
|
||||
// Copy topic subscriptions to new topic
|
||||
$sql = 'SELECT user_id, notify_status
|
||||
FROM ' . TOPICS_WATCH_TABLE . '
|
||||
WHERE topic_id = ' . $topic_id;
|
||||
@@ -1251,6 +1252,27 @@ function mcp_fork_topic($topic_ids)
|
||||
{
|
||||
$db->sql_multi_insert(TOPICS_WATCH_TABLE, $sql_ary);
|
||||
}
|
||||
|
||||
// Copy bookmarks to new topic
|
||||
$sql = 'SELECT user_id
|
||||
FROM ' . BOOKMARKS_TABLE . '
|
||||
WHERE topic_id = ' . $topic_id;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$sql_ary = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$sql_ary[] = array(
|
||||
'topic_id' => (int) $new_topic_id,
|
||||
'user_id' => (int) $row['user_id'],
|
||||
);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (sizeof($sql_ary))
|
||||
{
|
||||
$db->sql_multi_insert(BOOKMARKS_TABLE, $sql_ary);
|
||||
}
|
||||
}
|
||||
|
||||
// Sync new topics, parent forums and board stats
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user