Compare commits
1242 commits
legacy_2.4
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e1515c1b84 | ||
![]() |
e99a16c489 | ||
![]() |
5c81c0d144 | ||
![]() |
2b6abc25d4 | ||
![]() |
c86fa13cd3 | ||
![]() |
eb9d9a00a0 | ||
![]() |
26222f0efc | ||
![]() |
11744f257e | ||
![]() |
fbdc08d133 | ||
![]() |
5e2f007ed5 | ||
![]() |
fafdf876f8 | ||
![]() |
e2499bb981 | ||
![]() |
b5d9b7cc15 | ||
![]() |
bd0d5d3cda | ||
![]() |
96bac06cf6 | ||
![]() |
ccfcfc4232 | ||
![]() |
5159c8b8e0 | ||
![]() |
3010ed8c42 | ||
![]() |
59967e28e0 | ||
![]() |
b64c634090 | ||
![]() |
a333233418 | ||
![]() |
065435d1dd | ||
![]() |
82b57f2f40 | ||
![]() |
9f798aae51 | ||
![]() |
db08605c3e | ||
![]() |
0b51685ac2 | ||
![]() |
a8a313170b | ||
![]() |
9c04c5f971 | ||
![]() |
d6525285a2 | ||
![]() |
feec4b7160 | ||
![]() |
87eadebd85 | ||
![]() |
e8c48891ad | ||
![]() |
6541b2bf5b | ||
![]() |
b98c007113 | ||
![]() |
3442d08140 | ||
![]() |
5f35c9d8b5 | ||
![]() |
a30c0df76c | ||
![]() |
dbfc617615 | ||
![]() |
bcf3781022 | ||
![]() |
a2d0ee16a9 | ||
![]() |
a942b95763 | ||
![]() |
4b9692666e | ||
![]() |
7dd2b3af0a | ||
![]() |
783658994b | ||
![]() |
1b30324722 | ||
![]() |
5c1366668f | ||
![]() |
d6ca049f5e | ||
![]() |
1b295cf13b | ||
![]() |
1b47cb6af4 | ||
![]() |
b9de68d59c | ||
![]() |
8e1f1a13b6 | ||
![]() |
75560da8e6 | ||
![]() |
b671e25f0c | ||
![]() |
4f0d3c2fd0 | ||
![]() |
cb903ec37f | ||
![]() |
a3149deb8d | ||
![]() |
b4f623ae44 | ||
![]() |
cc72db8d29 | ||
![]() |
d786396836 | ||
![]() |
e2108444aa | ||
![]() |
ecc1e640e9 | ||
![]() |
4eee73dfc3 | ||
![]() |
5e3b26bcb1 | ||
![]() |
2e9f149c82 | ||
![]() |
247c414eb5 | ||
![]() |
9dc11cfa84 | ||
![]() |
805ca07d46 | ||
![]() |
22cf1f6c7c | ||
![]() |
e71f90ddd4 | ||
![]() |
574e09bc62 | ||
![]() |
94b492c968 | ||
![]() |
b40bac6ada | ||
![]() |
f957b60365 | ||
![]() |
15b89b3ece | ||
![]() |
e6df1416a4 | ||
![]() |
5230c55f9c | ||
![]() |
a62336c381 | ||
![]() |
26d0db86dc | ||
![]() |
a8e22e937c | ||
![]() |
e305782f72 | ||
![]() |
05bedc1c25 | ||
![]() |
d17f2542b9 | ||
![]() |
1b6f4f7892 | ||
![]() |
56a1be1287 | ||
![]() |
00a2a07198 | ||
![]() |
875577a7e3 | ||
![]() |
d158bf8fca | ||
![]() |
51ffcb6410 | ||
![]() |
625b2d0cf8 | ||
![]() |
f45d811f02 | ||
![]() |
a4d33000ce | ||
![]() |
97d81f95ce | ||
![]() |
4cd51a114c | ||
![]() |
e38de7753c | ||
![]() |
b2b508d08c | ||
![]() |
f35a60fed5 | ||
![]() |
5626becae7 | ||
![]() |
9916a2729c | ||
![]() |
24f8b677cf | ||
![]() |
9452c2fe0f | ||
![]() |
762f3acad3 | ||
![]() |
7221027151 | ||
![]() |
e85d0147d6 | ||
![]() |
8a23bea227 | ||
![]() |
a247742b84 | ||
![]() |
a7877adace | ||
![]() |
4c9cd99a95 | ||
![]() |
01e834eaed | ||
![]() |
f290498d47 | ||
![]() |
1253769da2 | ||
![]() |
77927ea6e9 | ||
![]() |
a2ce83f8f4 | ||
![]() |
f29d015dd1 | ||
![]() |
75a97d9499 | ||
![]() |
7e9371323c | ||
![]() |
a5704d99b9 | ||
![]() |
ec0ea66e2c | ||
![]() |
4e07a27020 | ||
![]() |
7f21bc79ff | ||
![]() |
47e146061c | ||
![]() |
8263af3bf2 | ||
![]() |
b8640b3615 | ||
![]() |
794a8470a3 | ||
![]() |
3151626297 | ||
![]() |
54cfd3ae3e | ||
![]() |
94eb3d8db8 | ||
![]() |
c238f822bb | ||
![]() |
0d988fb66c | ||
![]() |
570d6b7650 | ||
![]() |
3fb9541b87 | ||
![]() |
7b369f1708 | ||
![]() |
7ed5491bfb | ||
![]() |
5fd65373fc | ||
![]() |
3bcc4ab511 | ||
![]() |
06b9ab308e | ||
![]() |
af4f3d7848 | ||
![]() |
d2903cb71e | ||
![]() |
b218f96bce | ||
![]() |
3968216730 | ||
![]() |
d1f3f21089 | ||
![]() |
3affd55e55 | ||
![]() |
00fe9979dc | ||
![]() |
a0da7ed990 | ||
![]() |
4df17d0a30 | ||
![]() |
38d1f24ffb | ||
![]() |
49588649cf | ||
![]() |
785c95d98d | ||
![]() |
e2b33f6b1c | ||
![]() |
315b7f1a2a | ||
![]() |
b0e1f4acb7 | ||
![]() |
80f3317dbc | ||
![]() |
0686c7280d | ||
![]() |
2903f0309a | ||
![]() |
50f376f72d | ||
![]() |
45e1d8a427 | ||
![]() |
9bb8e12316 | ||
![]() |
ad9e67f5d7 | ||
![]() |
f48068a975 | ||
![]() |
cfd56463a6 | ||
![]() |
6dad642fa7 | ||
![]() |
cec62006a3 | ||
![]() |
24817297dc | ||
![]() |
80c4bb0d2e | ||
![]() |
73d2033acf | ||
![]() |
be43c2f1d5 | ||
![]() |
d211dde44b | ||
![]() |
6c09ebf7c8 | ||
![]() |
c705139cae | ||
![]() |
4b749ffd09 | ||
![]() |
bfc48ae4bb | ||
![]() |
f328c30466 | ||
![]() |
535d06b6f5 | ||
![]() |
32e7b2482b | ||
![]() |
c9ee28e9a7 | ||
![]() |
c205022b7b | ||
![]() |
e6468df376 | ||
![]() |
8a239c6795 | ||
![]() |
515e1d3c66 | ||
![]() |
fbc0ece19e | ||
![]() |
4d47314177 | ||
![]() |
e3ef91d4f2 | ||
![]() |
59ae06121f | ||
![]() |
b3993b723f | ||
![]() |
090214af03 | ||
![]() |
2a97654a34 | ||
![]() |
86cb084a76 | ||
![]() |
13759ed784 | ||
![]() |
1bc42f6c9d | ||
![]() |
7dd0876009 | ||
![]() |
c426105c52 | ||
![]() |
4bacdf1dc3 | ||
![]() |
74489dda22 | ||
![]() |
f59caf585a | ||
![]() |
97a75fb03e | ||
![]() |
3afcf7e368 | ||
![]() |
7f4543f0dc | ||
![]() |
5c1b529076 | ||
![]() |
4391964824 | ||
![]() |
3146ca0452 | ||
![]() |
ed4373f95a | ||
![]() |
6ffd766094 | ||
![]() |
5b93a3ca3c | ||
![]() |
2c460eb5b0 | ||
![]() |
c1fc1b4a71 | ||
![]() |
3aa680981c | ||
![]() |
eefcbed5eb | ||
![]() |
85f5a58d3c | ||
![]() |
0210f1cec0 | ||
![]() |
9e4c2d9e00 | ||
![]() |
4f0bae3be4 | ||
![]() |
3cabe244b9 | ||
![]() |
3053a8f8c6 | ||
![]() |
2699f7b9e8 | ||
![]() |
b5f47f1cf1 | ||
![]() |
aa322fcb12 | ||
![]() |
9d4a57f6dd | ||
![]() |
c01ed5a4f7 | ||
![]() |
5d8a9ac52f | ||
![]() |
b8f03a249d | ||
![]() |
cb89119ef4 | ||
![]() |
7a0c228d4f | ||
![]() |
168e50ad69 | ||
![]() |
5f8e739bc8 | ||
![]() |
c4aa95a138 | ||
![]() |
1848a10237 | ||
![]() |
bf013f7f18 | ||
![]() |
1dd05148d1 | ||
![]() |
c6dab07b51 | ||
![]() |
8c1ae75f23 | ||
![]() |
8b4dfa83db | ||
![]() |
455f08a257 | ||
![]() |
6c71b95e0f | ||
![]() |
834bc48589 | ||
![]() |
7883477ab6 | ||
![]() |
a30281839a | ||
![]() |
3c5992e26d | ||
![]() |
7c578c3c7a | ||
![]() |
cfde25b39e | ||
![]() |
3b54474b2a | ||
![]() |
1fd5a0aec4 | ||
![]() |
ef576dba70 | ||
![]() |
a812ecca3e | ||
![]() |
f0063b73ea | ||
![]() |
49401587cc | ||
![]() |
736f0ad4a0 | ||
![]() |
5bc23c35bf | ||
![]() |
f14371ac36 | ||
![]() |
cfc8076b23 | ||
![]() |
eb73b75194 | ||
![]() |
0015525048 | ||
![]() |
18298d3131 | ||
![]() |
fa89d768f2 | ||
![]() |
6d9ab8d3f5 | ||
![]() |
9eb86358ae | ||
![]() |
eafa51b6e3 | ||
![]() |
5160e13e8f | ||
![]() |
003f3150a3 | ||
![]() |
43b2e87f1c | ||
![]() |
c9bef69929 | ||
![]() |
e6116134c7 | ||
![]() |
70c857c379 | ||
![]() |
e73b8b0d46 | ||
![]() |
d1457f2105 | ||
![]() |
06a7c1dec5 | ||
![]() |
187e1f6f24 | ||
![]() |
f7c370a653 | ||
![]() |
22f17d797c | ||
![]() |
a1c375a7f7 | ||
![]() |
c19e421ac7 | ||
![]() |
d5811d5b76 | ||
![]() |
5adcb0002b | ||
![]() |
56b8ccb8d1 | ||
![]() |
45a6512fc7 | ||
![]() |
e3eebaf41e | ||
![]() |
ca60c3c740 | ||
![]() |
dabc7f84e4 | ||
![]() |
927859a476 | ||
![]() |
2d5f33812d | ||
![]() |
37c5d14438 | ||
![]() |
2927fc931d | ||
![]() |
9a74cb8a35 | ||
![]() |
cfcfe75fcf | ||
![]() |
d4787abb71 | ||
![]() |
b82979798d | ||
![]() |
dca2018056 | ||
![]() |
42774f9183 | ||
![]() |
ced3fec8e5 | ||
![]() |
aa2003c748 | ||
![]() |
868a3a16b6 | ||
![]() |
4898b22769 | ||
![]() |
40bf39a2dd | ||
![]() |
60158bdb26 | ||
![]() |
81ed9ddc73 | ||
![]() |
2033f905ba | ||
![]() |
dbc01b85fa | ||
![]() |
4261dd0e42 | ||
![]() |
3c93022020 | ||
![]() |
3c61d31bc5 | ||
![]() |
7000bf6329 | ||
![]() |
d075a0a518 | ||
![]() |
5cf8e52fa3 | ||
![]() |
1f7ef6353d | ||
![]() |
ea1542dc6f | ||
![]() |
f093edcdb2 | ||
![]() |
f5b42822fa | ||
![]() |
3069b8baeb | ||
![]() |
02c46a2f23 | ||
![]() |
13a9d645a7 | ||
![]() |
155846563c | ||
![]() |
a7e8562fd1 | ||
![]() |
e47eb5d406 | ||
![]() |
88fa688743 | ||
![]() |
322609d1ae | ||
![]() |
e3948b34c6 | ||
![]() |
1ac8f1eef6 | ||
![]() |
4fd0696bb6 | ||
![]() |
8b419931cb | ||
![]() |
f64d8d7c93 | ||
![]() |
2fcbe466a1 | ||
![]() |
7d0a88e6f0 | ||
![]() |
e488fb4a57 | ||
![]() |
2305068128 | ||
![]() |
72daabbd12 | ||
![]() |
dc858a2788 | ||
![]() |
e61a92d3d8 | ||
![]() |
2211d7d8eb | ||
![]() |
5e763375c2 | ||
![]() |
73f4f53996 | ||
![]() |
c70532d177 | ||
![]() |
6b16cc2bc2 | ||
![]() |
e57b0cf05f | ||
![]() |
dc6de3a392 | ||
![]() |
c679782a73 | ||
![]() |
779919c595 | ||
![]() |
5e21e13251 | ||
![]() |
da86e8e9ab | ||
![]() |
87a3172f9e | ||
![]() |
a5e22b346f | ||
![]() |
3079ea9084 | ||
![]() |
55f70de068 | ||
![]() |
5785a0ba1f | ||
![]() |
469af94fe6 | ||
![]() |
fd0328a92f | ||
![]() |
049c131264 | ||
![]() |
a1af9b5215 | ||
![]() |
da6be2bb72 | ||
![]() |
704b2f3937 | ||
![]() |
33408247f2 | ||
![]() |
2ea363ce1c | ||
![]() |
696de3ed9d | ||
![]() |
93edd1d979 | ||
![]() |
94eca06a09 | ||
![]() |
8ea8d28afd | ||
![]() |
5613f33a9d | ||
![]() |
273eb53e7a | ||
![]() |
449569e77b | ||
![]() |
d9b657df6a | ||
![]() |
34c3e5d95c | ||
![]() |
e565b9fd3c | ||
![]() |
e62d30f6bd | ||
![]() |
16bd83a564 | ||
![]() |
d0515bc711 | ||
![]() |
06cd50b032 | ||
![]() |
3d9fb80ccb | ||
![]() |
d40c64a072 | ||
![]() |
8eb2048f63 | ||
![]() |
16a0c4cba1 | ||
![]() |
185d0daa7f | ||
![]() |
98c6e69c18 | ||
![]() |
40003159af | ||
![]() |
dd1cd3c304 | ||
![]() |
13022be5f7 | ||
![]() |
da414df161 | ||
![]() |
be26761955 | ||
![]() |
1addbb43ac | ||
![]() |
7208279d2b | ||
![]() |
fcd6a383cb | ||
![]() |
f9655fd45d | ||
![]() |
bbdf14d96e | ||
![]() |
9c1dbdf4e5 | ||
![]() |
0691ae36f6 | ||
![]() |
02525cf6f9 | ||
![]() |
40cfe4a6b6 | ||
![]() |
86761ef9eb | ||
![]() |
57fc230bc5 | ||
![]() |
9b3c75e741 | ||
![]() |
1b83a1d7dc | ||
![]() |
4a0c09cab4 | ||
![]() |
ca580bfe65 | ||
![]() |
85f17622f3 | ||
![]() |
5c7f255c86 | ||
![]() |
660572fc25 | ||
![]() |
6c53ba3461 | ||
![]() |
65089a8dea | ||
![]() |
7db8934046 | ||
![]() |
0bf486fab5 | ||
![]() |
81bee0f6d0 | ||
![]() |
c72909f108 | ||
![]() |
b131fef734 | ||
![]() |
431c125c7c | ||
![]() |
9dc7e88487 | ||
![]() |
1a7b26ae05 | ||
![]() |
ce1a82fab4 | ||
![]() |
3c953f3355 | ||
![]() |
67bf7ecc9b | ||
![]() |
36fa46a25c | ||
![]() |
f229c8140c | ||
![]() |
f52b59cdba | ||
![]() |
0ae0c2290d | ||
![]() |
0b177ccfc9 | ||
![]() |
bc2815aeb3 | ||
![]() |
65867aacca | ||
![]() |
90361ae67a | ||
![]() |
fa82d218e0 | ||
![]() |
d2778fdb9f | ||
![]() |
2559ba302c | ||
![]() |
0e170d286e | ||
![]() |
164f393aef | ||
![]() |
6dd1ba763d | ||
![]() |
ba661b88f9 | ||
![]() |
0f660efae9 | ||
![]() |
180781a3fc | ||
![]() |
75c6e433f8 | ||
![]() |
0a7d4cfcc1 | ||
![]() |
2210050365 | ||
![]() |
7b752a0f28 | ||
![]() |
1586130893 | ||
![]() |
6de2263173 | ||
![]() |
04299e4e37 | ||
![]() |
52dd204a0a | ||
![]() |
af957cb189 | ||
![]() |
54c93b0825 | ||
![]() |
4bf6c0eabe | ||
![]() |
a70baec4c5 | ||
![]() |
afe9ff93b2 | ||
![]() |
da77b8fa0f | ||
![]() |
08f5fb97a2 | ||
![]() |
bac761111a | ||
![]() |
a1e6cba1e3 | ||
![]() |
9e98003664 | ||
![]() |
4ce3c32caa | ||
![]() |
2f9665136f | ||
![]() |
b52add3a3e | ||
![]() |
31369e74a1 | ||
![]() |
f9e329dee1 | ||
![]() |
83f1dd116b | ||
![]() |
d59a3c155a | ||
![]() |
7f82886d09 | ||
![]() |
a5799db39b | ||
![]() |
d452156cd8 | ||
![]() |
d911685f07 | ||
![]() |
8490a1700e | ||
![]() |
11bac1bf22 | ||
![]() |
0c554b53ef | ||
![]() |
de65775de0 | ||
![]() |
dffc801e34 | ||
![]() |
a524bf2280 | ||
![]() |
6aa4224c58 | ||
![]() |
a33401fef1 | ||
![]() |
bb33c508fe | ||
![]() |
ee38b24a47 | ||
![]() |
8b2eec6897 | ||
![]() |
779d44cb35 | ||
![]() |
eb85d2b66f | ||
![]() |
7b38751024 | ||
![]() |
6edc80b0ed | ||
![]() |
7f7b6b71d5 | ||
![]() |
764de49b2f | ||
![]() |
8842bb8bae | ||
![]() |
bd660e669a | ||
![]() |
df3399c1a8 | ||
![]() |
4f2142ace3 | ||
![]() |
59b05f74fe | ||
![]() |
cf37feec94 | ||
![]() |
b941ebdab3 | ||
![]() |
79ae99278c | ||
![]() |
d60a5ebbc8 | ||
![]() |
0b002ef0e0 | ||
![]() |
6127884fb0 | ||
![]() |
18e0be2348 | ||
![]() |
ff3348076d | ||
![]() |
5e86e642c1 | ||
![]() |
f6f19934cd | ||
![]() |
a98630e9c6 | ||
![]() |
e2e1fba7ae | ||
![]() |
7dfed8930e | ||
![]() |
5ebdeeaa60 | ||
![]() |
45cffb033e | ||
![]() |
8e30344e5e | ||
![]() |
f20ac777dd | ||
![]() |
c1177a2254 | ||
![]() |
e45d04dc18 | ||
![]() |
3aa741204a | ||
![]() |
97854ff6bb | ||
![]() |
c1137cd61b | ||
![]() |
2d3f50019a | ||
![]() |
b26f8a3ddc | ||
![]() |
4fb4a24711 | ||
![]() |
80c1554dc3 | ||
![]() |
9cdeed3bb2 | ||
![]() |
521bb48036 | ||
![]() |
7d7d9bb47e | ||
![]() |
4825d22d7f | ||
![]() |
0a2033a4ec | ||
![]() |
13506a6637 | ||
![]() |
39c19096e2 | ||
![]() |
b3c5ffa86a | ||
![]() |
c38c754cf4 | ||
![]() |
9185cf2276 | ||
![]() |
73be6ae907 | ||
![]() |
065aa431ba | ||
![]() |
31d17a2ae5 | ||
![]() |
54931a3a26 | ||
![]() |
90e56ac349 | ||
![]() |
d7a7c3c45c | ||
![]() |
301e663097 | ||
![]() |
d0e070d838 | ||
![]() |
06b14c1e09 | ||
![]() |
c797f19d30 | ||
![]() |
9b687c81b1 | ||
![]() |
06bb7020f9 | ||
![]() |
a2f528bad9 | ||
![]() |
d360b39298 | ||
![]() |
1e8ea6d428 | ||
![]() |
0a00364beb | ||
![]() |
7f0eb9650a | ||
![]() |
9aaafbd71b | ||
![]() |
3c48f05982 | ||
![]() |
3328cca421 | ||
![]() |
6664187766 | ||
![]() |
7fe251e951 | ||
![]() |
571a5e2b5e | ||
![]() |
94c1eaab11 | ||
![]() |
89faaa54c2 | ||
![]() |
7910a45d52 | ||
![]() |
4eba711ad1 | ||
![]() |
7293af046a | ||
![]() |
aee5e2a9dd | ||
![]() |
4dd9a4b4dd | ||
![]() |
6723fca78a | ||
![]() |
76f407d1db | ||
![]() |
153abc3c4c | ||
![]() |
4c77637d32 | ||
![]() |
c303949847 | ||
![]() |
b135914737 | ||
![]() |
470893a15c | ||
![]() |
af1aef0ec1 | ||
![]() |
645165adab | ||
![]() |
6e53618816 | ||
![]() |
bc94ca4c66 | ||
![]() |
9f63a7c568 | ||
![]() |
dc562998b3 | ||
![]() |
249c81914b | ||
![]() |
e8553ee7bf | ||
![]() |
dbc2a73fb9 | ||
![]() |
f7a0ebdf2a | ||
![]() |
9b745142ac | ||
![]() |
228e802c78 | ||
![]() |
1ab386dffd | ||
![]() |
92af6b0360 | ||
![]() |
de94e8bacb | ||
![]() |
f0630ddc4c | ||
![]() |
f7e8726d8b | ||
![]() |
6080ed7d35 | ||
![]() |
683aa02a23 | ||
![]() |
33e169dcdc | ||
![]() |
ae9d6873a6 | ||
![]() |
1b9f8a66b7 | ||
![]() |
5de0bda145 | ||
![]() |
31fcda37fa | ||
![]() |
8ac9dbf608 | ||
![]() |
854c205ffc | ||
![]() |
c62c9cbc89 | ||
![]() |
68a20d61ea | ||
![]() |
5d30abf1c8 | ||
![]() |
afe23fedbf | ||
![]() |
89bfcd01f7 | ||
![]() |
c552bca3f9 | ||
![]() |
d02eedbe25 | ||
![]() |
19ff764fe8 | ||
![]() |
e938a69938 | ||
![]() |
fca5bdd70f | ||
![]() |
7e4ef773ec | ||
![]() |
af1d79486c | ||
![]() |
98b5e4c48d | ||
![]() |
0fd36e6e40 | ||
![]() |
ec5affd42e | ||
![]() |
29893a180d | ||
![]() |
dbe9fa30b7 | ||
![]() |
95b0dfe717 | ||
![]() |
d820ff413e | ||
![]() |
7190b58a37 | ||
![]() |
64ed71df6b | ||
![]() |
3db69d21ec | ||
![]() |
68c1b109d0 | ||
![]() |
467806b037 | ||
![]() |
8c0f245909 | ||
![]() |
dbffc35163 | ||
![]() |
6957cb61d6 | ||
![]() |
12ff5a224d | ||
![]() |
621da24b6f | ||
![]() |
87f5459c40 | ||
![]() |
c3a2ac6e59 | ||
![]() |
bc67558276 | ||
![]() |
3b3b153bfc | ||
![]() |
6e6c3a7d31 | ||
![]() |
cb809c9f0d | ||
![]() |
98321a912b | ||
![]() |
65bb31f330 | ||
![]() |
002b304461 | ||
![]() |
1a43219cf4 | ||
![]() |
eb0f3f9bb5 | ||
![]() |
ab13c0e323 | ||
![]() |
6c7cacccf6 | ||
![]() |
be29fc66b2 | ||
![]() |
44fef3f35d | ||
![]() |
85b38d2d60 | ||
![]() |
bf9e22d836 | ||
![]() |
b979e18971 | ||
![]() |
d584a71b14 | ||
![]() |
6eca946cba | ||
![]() |
e1ca5d40dd | ||
![]() |
608483f0b0 | ||
![]() |
d5f8a2ae8e | ||
![]() |
a82d340a16 | ||
![]() |
71c4b2c384 | ||
![]() |
3767524018 | ||
![]() |
80d6b449d6 | ||
![]() |
fb2659e70e | ||
![]() |
785d11f32c | ||
![]() |
a2fc79e3c4 | ||
![]() |
47605d44c7 | ||
![]() |
deba37269d | ||
![]() |
913484bac8 | ||
![]() |
24df928fea | ||
![]() |
56a6f5447b | ||
![]() |
2a227e7f43 | ||
![]() |
26fa69a945 | ||
![]() |
aa0b84786c | ||
![]() |
a8ca416948 | ||
![]() |
9470172f6a | ||
![]() |
b2988e44ab | ||
![]() |
f29e90ff7b | ||
![]() |
07ade7a701 | ||
![]() |
19bb31f3ff | ||
![]() |
fce456c283 | ||
![]() |
c4c8f8b93f | ||
![]() |
d648efbd1c | ||
![]() |
2ba0fafaba | ||
![]() |
32acfc0b9e | ||
![]() |
e3e8466c05 | ||
![]() |
b29c4d1aab | ||
![]() |
16c634aa5d | ||
![]() |
862927bc45 | ||
![]() |
722b7334a3 | ||
![]() |
45a8950e4c | ||
![]() |
d84e0b52a7 | ||
![]() |
05695ce4ba | ||
![]() |
4d08b4d83b | ||
![]() |
fb86713d03 | ||
![]() |
fb77d4b52a | ||
![]() |
baa7570d72 | ||
![]() |
d6c9c89a21 | ||
![]() |
9d54862439 | ||
![]() |
5724cac8df | ||
![]() |
22307a8a52 | ||
![]() |
0e3dd39c24 | ||
![]() |
ceeba6c696 | ||
![]() |
bf0cd08df3 | ||
![]() |
75166d9388 | ||
![]() |
7387cdf221 | ||
![]() |
d0e73e4996 | ||
![]() |
ddb37963cb | ||
![]() |
89939c52ff | ||
![]() |
36ede4b147 | ||
![]() |
1b56e3b3ca | ||
![]() |
9fe99c6e31 | ||
![]() |
9a9a09b54d | ||
![]() |
5824261262 | ||
![]() |
6dc4f7d96e | ||
![]() |
02b36249db | ||
![]() |
9122a2338a | ||
![]() |
a39605d7da | ||
![]() |
368c45bcb6 | ||
![]() |
6dff9dd748 | ||
![]() |
762c947780 | ||
![]() |
9795d8fd99 | ||
![]() |
c959cc6713 | ||
![]() |
4cc08384d5 | ||
![]() |
6a51aa5d1b | ||
![]() |
e9b8b54d5e | ||
![]() |
18e86e316a | ||
![]() |
675b99e45e | ||
![]() |
295c24f653 | ||
![]() |
e9a13bd6d4 | ||
![]() |
f275e7395d | ||
![]() |
43471266b3 | ||
![]() |
b327f6880c | ||
![]() |
d9580322ad | ||
![]() |
a98093b468 | ||
![]() |
0c2ab4fc6b | ||
![]() |
d8ceca5b31 | ||
![]() |
b5b9bb319e | ||
![]() |
b25c9d575d | ||
![]() |
0ec4279250 | ||
![]() |
bf4b7c1c7c | ||
![]() |
da2902b989 | ||
![]() |
fa4a204bf8 | ||
![]() |
c866f204c0 | ||
![]() |
a61d6e56bb | ||
![]() |
18ea68f461 | ||
![]() |
a6deafeaa2 | ||
![]() |
0cc329869b | ||
![]() |
c4931b1a06 | ||
![]() |
c8fb2f86d8 | ||
![]() |
d4d229006e | ||
![]() |
56262ac509 | ||
![]() |
606aa042bb | ||
![]() |
082b11b693 | ||
![]() |
b1c814c5cf | ||
![]() |
30341735a7 | ||
![]() |
4e1a594d64 | ||
![]() |
1a99f5dfb3 | ||
![]() |
d137c1a406 | ||
![]() |
dcc8df0543 | ||
![]() |
9b01dca510 | ||
![]() |
691c2b9dc7 | ||
![]() |
3cb62a3304 | ||
![]() |
5d147bed29 | ||
![]() |
93c346bc5f | ||
![]() |
8017b725cb | ||
![]() |
c46cd71c4a | ||
![]() |
3ebdd9d81c | ||
![]() |
e10260dc27 | ||
![]() |
e937401f69 | ||
![]() |
03aeedda70 | ||
![]() |
49bc9a6224 | ||
![]() |
d47bb484bc | ||
![]() |
561069aef7 | ||
![]() |
ea5e4186e6 | ||
![]() |
5531729308 | ||
![]() |
cb52600946 | ||
![]() |
5b0299c308 | ||
![]() |
425b165d31 | ||
![]() |
304c5cd9cb | ||
![]() |
0b35c866ae | ||
![]() |
4535fade9b | ||
![]() |
962aa1a23a | ||
![]() |
f8aa07c1a2 | ||
![]() |
8c055f84d1 | ||
![]() |
9dbbaeab6a | ||
![]() |
2fa3340770 | ||
![]() |
1d4a34351b | ||
![]() |
c1617a7aa0 | ||
![]() |
dda30f8d39 | ||
![]() |
91d9ae85be | ||
![]() |
498a28644f | ||
![]() |
dd030cc827 | ||
![]() |
069562f5b2 | ||
![]() |
8fe0b4ed02 | ||
![]() |
f0737b8566 | ||
![]() |
0abbf3fa51 | ||
![]() |
63582f50dc | ||
![]() |
6db3be4ede | ||
![]() |
2fba87601e | ||
![]() |
da689cb4ef | ||
![]() |
00c76d86ec | ||
![]() |
70228e81b4 | ||
![]() |
bb8d540135 | ||
![]() |
f13d39ddab | ||
![]() |
2769c82827 | ||
![]() |
50776a9a38 | ||
![]() |
8b71161057 | ||
![]() |
4440cc4405 | ||
![]() |
52d73af150 | ||
![]() |
bbb9b00cc2 | ||
![]() |
7205d2c58d | ||
![]() |
707fab47f8 | ||
![]() |
d0f70549b4 | ||
![]() |
8a16d51dca | ||
![]() |
ccc34fbe01 | ||
![]() |
9f4f6d9baa | ||
![]() |
c0b302ae9f | ||
![]() |
47df7fbb14 | ||
![]() |
7367c74562 | ||
![]() |
8b965a6ae8 | ||
![]() |
009be84331 | ||
![]() |
eb6159f933 | ||
![]() |
80e1f06141 | ||
![]() |
18bd913a85 | ||
![]() |
3fa12d1ad9 | ||
![]() |
7a01749112 | ||
![]() |
8e530aca66 | ||
![]() |
a9493490ea | ||
![]() |
f27c4b5d85 | ||
![]() |
3a94677d93 | ||
![]() |
904a59239f | ||
![]() |
e50e431ead | ||
![]() |
71ed04301f | ||
![]() |
a98043099e | ||
![]() |
9b1e5fafe6 | ||
![]() |
87b6308071 | ||
![]() |
69ace45be6 | ||
![]() |
e3c1d7be69 | ||
![]() |
8c4703e56c | ||
![]() |
ec55434336 | ||
![]() |
6ac3f668c2 | ||
![]() |
77b860f9ed | ||
![]() |
4b28070c3a | ||
![]() |
db858986a3 | ||
![]() |
8c5f57edd6 | ||
![]() |
0da3a34843 | ||
![]() |
b4be6085e6 | ||
![]() |
b6ba73297e | ||
![]() |
2ebce8cd2f | ||
![]() |
9d83285644 | ||
![]() |
f53d05a791 | ||
![]() |
17291852d4 | ||
![]() |
2fdbda26d0 | ||
![]() |
e7bc8ea3f5 | ||
![]() |
20eee1fe58 | ||
![]() |
ac29a3df01 | ||
![]() |
a5777451bc | ||
![]() |
3ddeb1f5cf | ||
![]() |
d0001160c5 | ||
![]() |
d0b151f97e | ||
![]() |
5e83b4480c | ||
![]() |
76f8dd42a5 | ||
![]() |
032b5a11be | ||
![]() |
74303711fe | ||
![]() |
77cb0c5109 | ||
![]() |
d679c4692f | ||
![]() |
722d64451a | ||
![]() |
5d0a600e70 | ||
![]() |
39f03939da | ||
![]() |
6de0bfcd14 | ||
![]() |
ab3274b57d | ||
![]() |
3e43de3ba5 | ||
![]() |
07713c11d1 | ||
![]() |
2766a3120f | ||
![]() |
fbbfd1fdf5 | ||
![]() |
001e441b12 | ||
![]() |
596be52ba1 | ||
![]() |
92bd54f9b3 | ||
![]() |
6e545a07bf | ||
![]() |
f072b25def | ||
![]() |
13fd3a6ceb | ||
![]() |
436dee45e1 | ||
![]() |
e718e5903b | ||
![]() |
c65f5718be | ||
![]() |
5764cc0788 | ||
![]() |
200bc0ad03 | ||
![]() |
75e1d87cad | ||
![]() |
d049b498ab | ||
![]() |
7c5d798c19 | ||
![]() |
9e21b01afd | ||
![]() |
0e965f125b | ||
![]() |
243a0fd678 | ||
![]() |
cd962b0fa0 | ||
![]() |
2338871205 | ||
![]() |
a921dcba7b | ||
![]() |
cd6365bfff | ||
![]() |
616894bdb8 | ||
![]() |
3e62ff55be | ||
![]() |
3ec6d7cc1f | ||
![]() |
e5ee7fbd40 | ||
![]() |
3850208d5d | ||
![]() |
adedc72d7c | ||
![]() |
416119b21d | ||
![]() |
b0eb5e2381 | ||
![]() |
fa5fa08746 | ||
![]() |
13924604fd | ||
![]() |
47f74927f4 | ||
![]() |
3820003079 | ||
![]() |
8c5dfc19fd | ||
![]() |
6b01eb88bd | ||
![]() |
a42e1618d8 | ||
![]() |
0020350ace | ||
![]() |
32cca5deaa | ||
![]() |
fc4b7fe5da | ||
![]() |
0cc6e5de73 | ||
![]() |
5c68f42a79 | ||
![]() |
163504e126 | ||
![]() |
7293d55ea0 | ||
![]() |
eaa347ebdc | ||
![]() |
b4695747e2 | ||
![]() |
39a0c3b00b | ||
![]() |
f76488f11d | ||
![]() |
0e62783d9b | ||
![]() |
ef9c673930 | ||
![]() |
b3f1fa4e04 | ||
![]() |
332551b15c | ||
![]() |
adc6392686 | ||
![]() |
3ea84709db | ||
![]() |
9b7a803302 | ||
![]() |
38fc8f5a79 | ||
![]() |
b8daf951c0 | ||
![]() |
563eb22ef3 | ||
![]() |
d0b85b361f | ||
![]() |
33842ad3cb | ||
![]() |
3b1acd2a09 | ||
![]() |
bb65829732 | ||
![]() |
2ccf978ad4 | ||
![]() |
88b6e3bf0f | ||
![]() |
0219b97031 | ||
![]() |
c4d155f3ec | ||
![]() |
922ce14809 | ||
![]() |
dbbc196ea8 | ||
![]() |
07749530ea | ||
![]() |
81f1ddb5e6 | ||
![]() |
541e298112 | ||
![]() |
f3bbb7a50e | ||
![]() |
a5e4f0f890 | ||
![]() |
c3ad3b5e12 | ||
![]() |
20537f01ba | ||
![]() |
6cac6fd6c2 | ||
![]() |
17c7ec58bb | ||
![]() |
880e69f752 | ||
![]() |
5c735e1282 | ||
![]() |
8e4fae2ef2 | ||
![]() |
d222fe24f8 | ||
![]() |
658ee54b0e | ||
![]() |
13de96e16e | ||
![]() |
53fe923152 | ||
![]() |
e8e0abbeb0 | ||
![]() |
405d607a99 | ||
![]() |
6ca899b2fb | ||
![]() |
dd9a9304ed | ||
![]() |
fb8206e065 | ||
![]() |
c08ba33ca2 | ||
![]() |
55fb445c35 | ||
![]() |
5aad6442e1 | ||
![]() |
7dce5cc62b | ||
![]() |
2cec4bdfc4 | ||
![]() |
454e392dee | ||
![]() |
5317c6024d | ||
![]() |
0a95ebc4d9 | ||
![]() |
0c7055232c | ||
![]() |
d1225f55b8 | ||
![]() |
643e9ae96b | ||
![]() |
91f0b42a5c | ||
![]() |
4abb9edbef | ||
![]() |
d2a112f35c | ||
![]() |
82de4dea4b | ||
![]() |
d7b0e9d47b | ||
![]() |
635c4c164b | ||
![]() |
7cc79a1765 | ||
![]() |
bc7c325d4f | ||
![]() |
cba8e70485 | ||
![]() |
095a098182 | ||
![]() |
48870602f6 | ||
![]() |
39753c8604 | ||
![]() |
5d8e05ced6 | ||
![]() |
32605843ca | ||
![]() |
09920bd1c1 | ||
![]() |
9456cd2330 | ||
![]() |
5b9763f164 | ||
![]() |
ffbea1564e | ||
![]() |
8378ba034d | ||
![]() |
79c49eacf9 | ||
![]() |
dd80b35c6d | ||
![]() |
2aced19d4f | ||
![]() |
43f3a67e6d | ||
![]() |
0f1c21e5eb | ||
![]() |
c7eeb1fb9e | ||
![]() |
39e529952c | ||
![]() |
cc13b0b054 | ||
![]() |
6450b68d42 | ||
![]() |
5571c26fcd | ||
![]() |
7bf395ab47 | ||
![]() |
eb21f4647e | ||
![]() |
f04a6773bf | ||
![]() |
7870f026d7 | ||
![]() |
54730b5a42 | ||
![]() |
5927fd1129 | ||
![]() |
5c6d7aedd7 | ||
![]() |
9ddb6d828a | ||
![]() |
24d45be4c0 | ||
![]() |
912c547f9e | ||
![]() |
b12cb3c6c2 | ||
![]() |
d66d52eeb6 | ||
![]() |
4135a82fbf | ||
![]() |
c64697b3e4 | ||
![]() |
1253f998ef | ||
![]() |
7f54da56de | ||
![]() |
7092ebf0b4 | ||
![]() |
caddfb6b9f | ||
![]() |
09bdfc8926 | ||
![]() |
38db0ff3e0 | ||
![]() |
5971f28ec9 | ||
![]() |
2358760939 | ||
![]() |
a806a260b6 | ||
![]() |
69a0ddce0e | ||
![]() |
612bec8777 | ||
![]() |
9433827788 | ||
![]() |
07c0410e0d | ||
![]() |
879d519d37 | ||
![]() |
30ac2a60bc | ||
![]() |
1bc84988ee | ||
![]() |
117261663f | ||
![]() |
36ea99ac36 | ||
![]() |
a1bed6a265 | ||
![]() |
888032fe4a | ||
![]() |
6f826dd919 | ||
![]() |
570abbe880 | ||
![]() |
414168b8f2 | ||
![]() |
eb24c33d49 | ||
![]() |
bf20a5adfe | ||
![]() |
5f48894f1e | ||
![]() |
f436357195 | ||
![]() |
28059c1574 | ||
![]() |
182cafaaeb | ||
![]() |
e3d94da3e8 | ||
![]() |
364317f65b | ||
![]() |
a00ba3643c | ||
![]() |
94ab46a3e2 | ||
![]() |
22ba3ca0f8 | ||
![]() |
f3496fc515 | ||
![]() |
5456b3076f | ||
![]() |
78a64d9cf1 | ||
![]() |
a143d5a4f6 | ||
![]() |
32dfc8ce4d | ||
![]() |
090d8df5a5 | ||
![]() |
f952a8a29d | ||
![]() |
14bdcb9c45 | ||
![]() |
ab7c478556 | ||
![]() |
cb6c3562ba | ||
![]() |
53fa1564b7 | ||
![]() |
2d2cee8fd6 | ||
![]() |
285fb013ef | ||
![]() |
2eeffd10a3 | ||
![]() |
d57041ee0e | ||
![]() |
6bc73d36e2 | ||
![]() |
1448512a40 | ||
![]() |
622a98e3c3 | ||
![]() |
fb6d9d5230 | ||
![]() |
8e28529bce | ||
![]() |
0f96bcc87b | ||
![]() |
9af7de1eef | ||
![]() |
eac21c75a3 | ||
![]() |
7015078967 | ||
![]() |
23dc93d193 | ||
![]() |
c1b9a7263f | ||
![]() |
7b88070648 | ||
![]() |
cb1542037a | ||
![]() |
a230fbbac5 | ||
![]() |
915e9989d2 | ||
![]() |
71288dc4e5 | ||
![]() |
fae3dbfd2b | ||
![]() |
716915bdb5 | ||
![]() |
3730671a99 | ||
![]() |
a9b3635294 | ||
![]() |
9f0b88403a | ||
![]() |
be0f30bd8a | ||
![]() |
ef2f119072 | ||
![]() |
7329edac0a | ||
![]() |
44c5502003 | ||
![]() |
ae2e5c6ad4 | ||
![]() |
4de9c00874 | ||
![]() |
bff9ba67d0 | ||
![]() |
5fd15c6231 | ||
![]() |
9aed913a29 | ||
![]() |
58acc07a86 | ||
![]() |
7e47397b7b | ||
![]() |
08a51e090e | ||
![]() |
1be23bd776 | ||
![]() |
443b997b19 | ||
![]() |
a0d9601e75 | ||
![]() |
304080db39 | ||
![]() |
53e4d8fe69 | ||
![]() |
8d420c9987 | ||
![]() |
5d9ef8a670 | ||
![]() |
9359bc4f8f | ||
![]() |
e3ed30c5ec | ||
![]() |
caaf050a70 | ||
![]() |
d949320841 | ||
![]() |
a402ef3ebc | ||
![]() |
e3e79a1a45 | ||
![]() |
71da3517d5 | ||
![]() |
1caa253ca6 | ||
![]() |
da0701ff09 | ||
![]() |
d9e745b832 | ||
![]() |
9aa9c20068 | ||
![]() |
c946faf9a5 | ||
![]() |
be7b57eabf | ||
![]() |
39ed7c0114 | ||
![]() |
9962a12f18 | ||
![]() |
fc24f674b2 | ||
![]() |
aa608b5737 | ||
![]() |
4f5b437685 | ||
![]() |
f04c22bcd4 | ||
![]() |
1d1d9ea2a7 | ||
![]() |
4a83e085e3 | ||
![]() |
b8c091428c | ||
![]() |
9a06fb2836 | ||
![]() |
631c81206a | ||
![]() |
6e771d0854 | ||
![]() |
a93f2bfe0d | ||
![]() |
bd8ba08d3a | ||
![]() |
e63149cf1e | ||
![]() |
540d2f44a0 | ||
![]() |
6983018fb3 | ||
![]() |
c9558997ff | ||
![]() |
702fd7e8c9 | ||
![]() |
ad7a4be945 | ||
![]() |
4012ba9a6e | ||
![]() |
c420390255 | ||
![]() |
cd66dabdbf | ||
![]() |
0dad01beb0 | ||
![]() |
5bfa5776af | ||
![]() |
912b4b77f0 | ||
![]() |
374b36af53 | ||
![]() |
327b03e374 | ||
![]() |
36b3f5e9b9 | ||
![]() |
f67baeec2f | ||
![]() |
edb6b59e2d | ||
![]() |
3137da9a96 | ||
![]() |
ea3e0689c4 | ||
![]() |
3013b756b4 | ||
![]() |
ee13f000e8 | ||
![]() |
adb3f65781 | ||
![]() |
43eb42f688 | ||
![]() |
81c8318f01 | ||
![]() |
fe3f5c1874 | ||
![]() |
8efbde1a0b | ||
![]() |
2ac3d39dc5 | ||
![]() |
675cb6548e | ||
![]() |
586ac9e938 | ||
![]() |
139296a88a | ||
![]() |
4d4a3a91e3 | ||
![]() |
dae17c29e3 | ||
![]() |
361f18a8fe | ||
![]() |
f035616d5e | ||
![]() |
e404c135e5 | ||
![]() |
9b70c9aa1a | ||
![]() |
2062ad0f38 | ||
![]() |
b728c20711 | ||
![]() |
d200ac07eb | ||
![]() |
84ad656a12 | ||
![]() |
c28c12a88c | ||
![]() |
816dd522f3 | ||
![]() |
68d3d0659f | ||
![]() |
ef2315df34 | ||
![]() |
c842cae201 | ||
![]() |
87d6c98bc1 | ||
![]() |
c1be0a612b | ||
![]() |
bad95d5053 | ||
![]() |
9083efd5f7 | ||
![]() |
3e06e35f1f | ||
![]() |
226f98f5d8 | ||
![]() |
0b713864fd | ||
![]() |
ebbe657917 | ||
![]() |
68c9e35e97 | ||
![]() |
00e8a9eea4 | ||
![]() |
29cd188b8b | ||
![]() |
a07301c774 | ||
![]() |
b053582193 | ||
![]() |
f17271221b | ||
![]() |
5c0c4ed3f6 | ||
![]() |
c179c4021a | ||
![]() |
98140cac40 | ||
![]() |
94ac9bc5bd | ||
![]() |
7ac6eefe31 | ||
![]() |
61ceeea1c4 | ||
![]() |
d2cced0369 | ||
![]() |
c078352ffb | ||
![]() |
1526ad48f6 | ||
![]() |
262890fad7 | ||
![]() |
1615ee4a0a | ||
![]() |
adb1ee4434 | ||
![]() |
f1cfba4eb5 | ||
![]() |
1118bd9372 | ||
![]() |
1127bd626a | ||
![]() |
4151ae71a0 | ||
![]() |
d24e232329 | ||
![]() |
0e19a2fa1d | ||
![]() |
3f9a8aacd2 | ||
![]() |
46b1175028 | ||
![]() |
c75c0afb37 | ||
![]() |
4e3fa11f46 | ||
![]() |
f79d752c9d | ||
![]() |
0cf2ac96ab | ||
![]() |
ac7060f333 | ||
![]() |
fa4dbaed00 | ||
![]() |
ca3d59d3ab | ||
![]() |
0e7a528697 | ||
![]() |
f987fdbd86 | ||
![]() |
ff1d7ad741 | ||
![]() |
552b90bd41 | ||
![]() |
6587c5927f | ||
![]() |
d649c3ce7b | ||
![]() |
070d64fe8d | ||
![]() |
b9fc3c5764 | ||
![]() |
2ef12d742a | ||
![]() |
e8ac85968c | ||
![]() |
5430711e59 | ||
![]() |
eec578621a | ||
![]() |
35be9dfbd7 | ||
![]() |
a21bc77a82 | ||
![]() |
7add15bf26 | ||
![]() |
8b32031edc | ||
![]() |
9439d1037b | ||
![]() |
6cc30d4c1c | ||
![]() |
4c9b48b943 | ||
![]() |
dc6ac4f694 | ||
![]() |
438967bf29 | ||
![]() |
5d58c4c857 | ||
![]() |
829b03a154 | ||
![]() |
4f3ee7330c | ||
![]() |
b300faf040 | ||
![]() |
9e67bb781e | ||
![]() |
7c8e502633 | ||
![]() |
86861aef46 | ||
![]() |
0737d82843 | ||
![]() |
0152a4ec1e | ||
![]() |
d774095e49 | ||
![]() |
09687f5096 | ||
![]() |
e6c1f72508 | ||
![]() |
0fea8768bc | ||
![]() |
d4187e4249 | ||
![]() |
df3d9c057d | ||
![]() |
88023e95e2 | ||
![]() |
d4760c901b | ||
![]() |
2000bd62d8 | ||
![]() |
423e5be239 | ||
![]() |
80e2e1424d | ||
![]() |
d9e62e69a2 | ||
![]() |
5962dc318e | ||
![]() |
5bd77256b0 | ||
![]() |
e36a1c81eb | ||
![]() |
41522306e3 | ||
![]() |
13f3f3133f | ||
![]() |
ce501e02ff | ||
![]() |
eeaad29f66 | ||
![]() |
5f8d77da62 | ||
![]() |
34d75375ad | ||
![]() |
db312a6d90 | ||
![]() |
248b1a567b | ||
![]() |
f1d06a2492 | ||
![]() |
4e135c84aa | ||
![]() |
25246a6442 | ||
![]() |
1743050af3 |
354 changed files with 40125 additions and 21216 deletions
299
CHANGELOG
299
CHANGELOG
|
@ -1,6 +1,305 @@
|
|||
my little forum changelog
|
||||
-------------------------
|
||||
|
||||
20250323.1 (2025-03-23)
|
||||
-----------------------
|
||||
|
||||
- feature: add database entries for uploaded images that was uploaded before the upload management was introduced, add new icons for it as SVG
|
||||
- change: change the appearance of the sidebar toggle in its heading, add new icons for it as SVG
|
||||
- change: replace a few occurences of JS-based focus setting to form fields with the corresponding HTML attributes
|
||||
- change: all index columns and columns, that stores indexes as foreign keys are unsigned now, this doubles their value range
|
||||
- change: new appearance of the templates for login, registration and sending forgotten passwords
|
||||
- fix: added INTL time format strings to all language files according the languages own rules when known
|
||||
- fix: remove the emtying of a search field when setting the focus to the field
|
||||
- fix: display MySQL errors in the upgrade script, was broken before
|
||||
- fix: a user list, restricted to logged-in users, was still displayed after users logout
|
||||
- fix: several errors in the HTML structure in the posting form template
|
||||
|
||||
20241215.1 (2024-12-15)
|
||||
-----------------------
|
||||
|
||||
- change: use modern form elements and field types, where it is appropriate
|
||||
- change: set autofocus into the first input element of a form after loading the page, where it is appropriate
|
||||
- change: add attribute required for form fields, that must be completed, this might prevent unnecessarily sending form contents
|
||||
- change: rearrange the text input field and the formatting buttons in the posting form
|
||||
- change: make the posting form behaviour better on mobile devices and for screen-reader programs
|
||||
- change: rework of the popups for uploading images for use in postings and also the form for uploading avatar images
|
||||
- change: reformatting of the thread tree items with breaking points to behave better in narrow viewports
|
||||
- change: move the no-text icon from the end of the subject to the icon list after the metadata (author and date)
|
||||
- change: set the posting date into a time element, enhances the machine readability
|
||||
- fix: broken SQL query for selecting the postings of a specified category on a thread overview page
|
||||
- fix: make images of type WebP appear in the uploaded images gallery in the upload images popup
|
||||
- fix: restrict the sidebar in narrow viewports to its width
|
||||
- fix: prevent the use of unhidden passwords for the AI training of browser vendors
|
||||
- fix: added forgotten writing direction aware formatting for form elements
|
||||
- fix: take the time of a posting and the time of registration of a user into account, when checking for a username collision
|
||||
- fix: do not check for a username collision when an administrator or moderatior edits a posting of an unregistered forum user
|
||||
- fix: remove tabindex attributes from form elements which caused a weird tab order on the posting form page
|
||||
|
||||
20240827.1 (2024-08-27)
|
||||
-----------------------
|
||||
|
||||
- change: rewrite the styling (CSS) to support languages, written from right to left
|
||||
- change: far better support of displaying the forum on mobile devices
|
||||
- change: translate "Sidebar" to "Barre laterale" in italian language
|
||||
- fix: display hours in 24-hours-format in german language
|
||||
- fix: display date and time according to the syntax of the PHP DateTimeInterface in arabic language
|
||||
- fix: include the column mlf2_entries.last_reply into the select, which is used in the ORDER-BY-clause
|
||||
- fix: a few issues in the upgrade script
|
||||
|
||||
20240729.1 (2024-07-29)
|
||||
-----------------------
|
||||
|
||||
- feature: lazy loading of images in forum entries, that are not in the viewport when loading a page with entries
|
||||
- feature: add BB-codes [ins], [del] and [s], mainly intended to mark subsequent changes
|
||||
- change: new upgrade script, from now on it is possible to use also version 2.4.19 as starting point of an upgrade
|
||||
- change: apply database performance enhancements, this was provided by @joeiacoponi1 (thank you)
|
||||
- change: enhancements and corrections in a few translations (simplified chinese, traditional chinese, danish, english, french, spanish)
|
||||
- change: add new language arabic, this has been contributed by Abdul Salam in the project forum
|
||||
- change: unify the use of the pagination link lists (from now on they are shown above and below the page content, where in use)
|
||||
- change: set the new source URL for the MathJax CDN, that is recommended by the project
|
||||
- change: remove the spam prevention method Bad Behavior because the projects seems to be dead since a longer time
|
||||
- change: all tables use now the charset utf8mb4, the previously in some cases used utf8 (a.k.a. utf8mb3) will be deprecated by MySQL in one of the next server main versions
|
||||
- change: use the SameSite attribute in cookies
|
||||
- fix: resize the columns mlf2_useronline.ip and mlf2_logincontrol.ip to 128 bytes, mlf2_useronline.ip was 15 bytes long and caused HTTP-500-errors in case of visitors with IPv6
|
||||
- fix: the mouse cursor should show up as pointer when hovering buttons
|
||||
- fix: prevent passwords being sent for spell checking to Google when the content of a password field is shown as plain text
|
||||
- fix: a few occurences of dates and times, that did not follow the new time formatting
|
||||
- fix: add missing strings for the administration of the Bayes based spam prevention filter (B8)
|
||||
- fix: correct a few errors in the HTML-structure of several templates
|
||||
- fix: replace function imagerotate with imageflip in the captcha class because imagerotate failed to work in some cases
|
||||
- fix: check for existince of a given category before using it in the template
|
||||
|
||||
20220803.1 (2022-08-03)
|
||||
-----------------------
|
||||
|
||||
- feature: support the upload of WebP-images
|
||||
- change: semantic HTML-elements on several places and modern CSS-rules (flexboxes instead floating boxes here and there)
|
||||
- fix: remove outdated query partsthat tried to access column mlf2_entries.email_notifications
|
||||
- fix: ensure, that suígnatures are reliably positioned under all content of a forum entry
|
||||
- fix: putting the cursor into the empty search field in the page header and pressing [Enter] led to a PHP warning
|
||||
- fix: (partially) When classifying entries in locked threads the get unlocked sometimes, happens more seldom now but there is a remaining corner case to inspect
|
||||
- fix: wrong order of altering the column mlf2_userdata.user_email, defining the unique-key for this column before changing its charset to utf8 (without 'mb4') leads to the error of a to long index in some MySQL-versions
|
||||
- fix: remove multiple definitions of unique indexes for the columns mlf2_userdata.user_name and mlf2_userdata.user_email in the installation and update scripts, the indexes does not break the structure but they are superfluous
|
||||
|
||||
20220529.1 (2022-05-29)
|
||||
-----------------------
|
||||
|
||||
- feature: show an icon to admins and mods for entries that are not classified as ham or spam, if spam detection service B8 or Akismet is activated
|
||||
- change: first overhaul of the main section of forum pages, affects mainly the main views (thread listings) and the administration start page
|
||||
- fix: when deleting a user delete also the notification switch in the entries table, normally we use the subscriptions table for this but in forums with entries that was handled with the old subscription handling it may be possible, that there are old subscriptions for registered users left
|
||||
|
||||
20220517.1 (2022-05-17)
|
||||
-----------------------
|
||||
|
||||
- fixed: the feature inactivity notification sent an unlimited number of e-mails, what caused the project domain to get blacklisted; to prevent this for external forum operators, the number of e-mails is now limited to 5 per daily action
|
||||
- fixed: because of the fixed height of the page header the user menu was inaccessible on narrow viewports since the change from XHTML 1.0 to HTML (5)
|
||||
- the column `mlf2_userdata.user_email` was to large for using an index with charset utf8mb4 on MySQL 5.5 and 5.6, reset it to charset utf8 (3 byte chars only)
|
||||
|
||||
20220509.1 (2022-05-09)
|
||||
-----------------------
|
||||
|
||||
- feature: stick the page footer to the bottom of the viewport with the help of a CSS-flexbox
|
||||
- changed: removed CSS-fixes for Internet Explorers 6 and 7 (RIP)
|
||||
- changed: replaced main block elements (<div>) for the page with semantic HTML-elements
|
||||
- fixed: a syntax error that prevented the update script from working (PR #597)
|
||||
- fixed: a wrong used English word (a IMHO typical false friend for native German speakers)
|
||||
|
||||
20220508.1 (2022-05-08)
|
||||
-----------------------
|
||||
|
||||
- feature: provide a forum wide setting to store a target name for breaking out of a frame or iframe (_self, _parent, _top or a given name of a target frame)
|
||||
- feature: add BB-code tags for marking text as right-to-left or as left-to-right written
|
||||
- feature: unify the HTML-structure of a user name to make it possible to style the HTML-element of the user name in every place with the same CSS-rules
|
||||
- feature: provide a user setting to make it possible for users to open links in a forum entry in a new browser window or tab
|
||||
- feature: request a reaction of an inactive user or delete the account after an additional waiting time
|
||||
- featurette: provide a back-to-top-link on every page and every single forum entry
|
||||
- changed: minimal PHP version 7.3
|
||||
- changed: compatibility up to PHP 8.1
|
||||
- changed: removed the compatibility to ancient browsers down to IE6 from the JavaScript sources
|
||||
- updated: upgrade of the external modules, where one was available
|
||||
- updated: overhaul of the swedish language file
|
||||
- added: language file for Traditional Chinese
|
||||
- fixed: database table columns for user names and e-mail-addresses are set to be unique to prevent the use of similar user names (in the meaning of the MySQL-database-system) or the double use of e-mail-addresses
|
||||
|
||||
2.4.24 (2020-10-12)
|
||||
-------------------
|
||||
- fixed: broken layout of the links to the RSS-feed of a single thread in thread.inc.tpl and thread_linear.inc.tpl
|
||||
- fixed: unintended text-transform: lowercase; for the link to top of the page in the options of an entry
|
||||
- added: add classes for the user type to the thread tree below the entry in the single-entry-view
|
||||
|
||||
2.4.23 (2020-09-30)
|
||||
-------------------
|
||||
- fixed: wrong formatting of the link for a threads own RSS-feed, got broken by the work on formatting the RSS-links in the page footer
|
||||
- fixed: the non-English and non-German strings for the to-top-of-page-links had a broken comment part
|
||||
|
||||
2.4.22 (2020-09-29)
|
||||
-------------------
|
||||
- fixed: broken backup restoring function for the entries table, rework of the backup function for better code readability
|
||||
- fixed: corrected file size computation for the list of backup files; very small file sizes (up to a few hundred bytes) was shown as "0.00 MB" instead i.e. "0.0006 MB"
|
||||
- fixed: remove of since PHP 7.2 deprecated function each(), replaced with foreach()
|
||||
- fixed: wrong key name for error message in admin area about an incorrect e-mail-address
|
||||
- added: link to top of the page in the page footer and in the options menu of every entry
|
||||
- added: backup function for subscriptions and tags
|
||||
- added: natural sorting of the tag list, makes sorting case insensitive
|
||||
|
||||
2.4.21 (2020-04-25)
|
||||
-------------------
|
||||
- fixed: regex for e-mail-validation followed a lazy syntax style, that invalidated with PRCE2. which was introduced with PHP 7.3; because of that one was unable to register a new account when running MLF 2.4.x under PHP 7.3 or newer
|
||||
- fixed: image URLs in the RSS-feed was specified with only the local, relative path on the domain, we do need a complete URl with protocol, domain and path because the feed reader requests the feed from outside the domain
|
||||
|
||||
2.4.99.3 (2019-09-24)
|
||||
---------------------
|
||||
|
||||
- fixed: show spam entries in the thread tree not for authors of spammy postings
|
||||
- fixed: delete the new tables when uninstalling the forum
|
||||
|
||||
2.4.99.2 (2019-08-08)
|
||||
---------------------
|
||||
|
||||
- feature: send the notification mail about a new entry after an entry was manually classified as ham
|
||||
- feature: tags can be inserted not only by admins and moderators but also from unregistered and registered users from now on (optional setting)
|
||||
- feature: e-mails can be sent with a SMTP-class or via PHP's own mail()-function
|
||||
- feature: a regsitered user can decide, if he is contactable for the forum team, for all registered users or for all users and visitors of a forum
|
||||
- fixed: the column size of mlf2_tags.tag exceeded the possible index size (768 bytes) when the charset of the column is utf8mb4, limit the column size to 128 chars
|
||||
- changed: create all tables with the engine InnoDB
|
||||
- changed: list the spam entries in the main view with all elements for manipulation instead listing the entries in the search view
|
||||
- changed: when an entry was detected as spam redirect the user to the single-entry-view because the notification can be placed reproducible inside the viewport
|
||||
|
||||
2.4.99.1 (2019-06-01)
|
||||
---------------------
|
||||
|
||||
- feature: restrict access to the user list to the forum team (administrators and moderators)
|
||||
- feature: allow topics to be pinned/sticked to the certain category or to all categories
|
||||
- feature: change the charset of most of the tables to support 4-byte-characters, i.e. emojis
|
||||
- fixed: unify mail encoding, was different depending of the checked characters
|
||||
- fixed: added a CSRF-token to posting delete function calls
|
||||
- fixed: relative pathes in the src-attribute of images in the RSS feed made the images inaccessible in the feed
|
||||
- changed: the quote-message-link is now a button
|
||||
|
||||
2.4.20 (2019-05-15)
|
||||
-------------------
|
||||
- fixed: call for a removed function in the JS-code
|
||||
- fixed: inconsistend mail encoding, depended on an input string and could therefore result in wrong encoding, now fixed to the encoding, provided in the language file (normally UTF-8)
|
||||
- fixed: missing CSRF-token in case of deleting postings
|
||||
|
||||
2.4.99.0 (2019-02-11)
|
||||
---------------------
|
||||
|
||||
- feature: upload management page in the admin area, list all uploaded images, delete images groupwise
|
||||
- feature: information about the user who uploads a new image gets stored in a database table
|
||||
- feature: Bayes based spam filter
|
||||
- feature: optional TeX support through MathJax library (has to be linked manually)
|
||||
- removed: optional TeX support through the Google online service, service got abandoned
|
||||
- removed: flash button and flash bb-code
|
||||
- fixed: replace while loops with deprecated PHP-function "each" with foreach loops
|
||||
|
||||
2.4.19.1 (2019-02-07)
|
||||
---------------------
|
||||
- fixed: reading the setting next_daily_action failed because of checking for a wrong structure, caused HTTP-status 500 every when and then
|
||||
- fixed: function mysqli_fetch_all is not available in every PHP-installation, caused error messages, HTTP-status 500 or white pages in such cases
|
||||
|
||||
2.4.19 (2019-02-03)
|
||||
-------------------
|
||||
- fixed: when editing a posting, an activated subscription can not be saved in the database because of a syntax error on the database query
|
||||
- fixed: images, included in a posting, got elongated in the Ajax-preview of a posting
|
||||
- changed: a few settings moved to the table mlf2_temp_infos because they are no settings at all
|
||||
|
||||
2.4.18.1 (2019-01-14)
|
||||
---------------------
|
||||
- fixed: table name in install.sql MUST NOT be surrounded by backticks, this makes the prefix replacement during installation impossible; this is only relevant during first installation
|
||||
|
||||
2.4.18 (2019-01-13)
|
||||
-------------------
|
||||
- fixed: unregistered users was not able to subscribe to their own postings because of field user_id being NOT NULL in the subscriptions table
|
||||
- fixed: because of failing subscriptions of unregistered users for thread opening postings the thread in itself was broken and not deletable
|
||||
- fixed: sending e-mails over the contact form failed because of forgotten function call for form time handling
|
||||
- fixed: deleting a posting with subscriptions left orphaned subscriptions because they got not removed from the database
|
||||
- fixed: the check for password strength failed when more than one char in a category was required and these chars did not follow one after the other
|
||||
- fixed: if one used the thumbnail funtion to include an image to a posting, the image got the right width but was elongated to the complete possible height of the posting.
|
||||
- change: the default protocol, used in the JS-prompts for links and images when creating a posting is from now on "https://" instead "http://"
|
||||
- change: changed the language strings, key: show_spam_link, for english and german language, led to danger of confusion ("show spam (no. of entries)" vs. "list spam") (enahncement for admins and mods)
|
||||
- change: the update script disables the forum during the database operations of the update and reenables it afterwards (admin only feature), at the moment it got enabled before one updates the files and folders; @admins: please check the status after an update in the settings page
|
||||
|
||||
2.4.17 (2019-01-06)
|
||||
-------------------
|
||||
- fixed: set the decimal point as fix char because different decimal separators (i.e. comma in german language) causes errors in floating number operations in PHP
|
||||
- fixed: the checkbox for the Flash-bb-code-setting got reintroduced (will definitely get removed with version 2.5, change was removed by accident in the 2.4.x-branch)
|
||||
- fixed: remove the confirm-password-field from the form for change ones own password, function was removed for the other forms in versions 2.4.16
|
||||
- feature: minimal and maximal time between requesting a form and sending the filled form back to the forum-server as separate settings for posting form, e-mail form and registration form
|
||||
- feature: a user is from now on able to close her/his own forum account, until now this was only possible for the admin/forum operator
|
||||
- feature: a by the registered users granted acceptance to the terms of use and/or the data privacy statement can be recalled and a newly acceptance can be enforced for the case of changes in the terms of use and/or the data privacy statement
|
||||
- feature: further possible requirements for password quality (enforce a number of lowercase and/or capital letters, ciphers and/or "special" chars), disabled by default
|
||||
- change: removed the JS-function to create the bb-code [msg] for forum entries, it needed a blacklist of not covered exceptions that was incomplete; entries will from now on handled as [link] or [url] like all other links; existing msg-bb-codes will still get interpreted
|
||||
- change: not selected checkboxes and radio buttons in the settings forms of the admin panel will not grayed out from now on, was a misleading UI-feature because the form fields looked like disabled but was still accessible
|
||||
|
||||
2.4.16 (2018-12-07)
|
||||
-------------------
|
||||
- fixed: do not create a list item for a non existing bookmark tag for the users bookmark list
|
||||
- fixed: errorneous use of a hardcoded table name that led to failing read attempts of a users subscriptions
|
||||
|
||||
2.4.15 (2018-11-30)
|
||||
-------------------
|
||||
- fixed: entries could not be edited
|
||||
- fixed: subscribung to or unsubscribing from an entry was not possible when saving the edit of an entry
|
||||
|
||||
2.4.14 (2018-11-26)
|
||||
-------------------
|
||||
- fixed: several forms in the admin area lacked the CSRF-token
|
||||
- fixed: remove underscores from "data privacy statement" in the language files
|
||||
- fixed: removed the workaround of setting the language to en-us in the turkish language file, underlying problem was solved with PHP5.2
|
||||
- feature: add a checkbox to make the password visible for input verification during registration, remove therefore the second password field
|
||||
- feature: add a unsubscribe link to the e-mails with a notification about a new reply
|
||||
- feature: add a new table to store the subscriptions independent from the entry in itself
|
||||
- feature: allow SVG-graphics as smilies, graphics have to be uploaded per FTP
|
||||
- update: danish language file updated by project-forum-user Tommy Nillson
|
||||
- update: norwegian language file updated by Github-user @flatnick
|
||||
|
||||
2.4.13 (2018-08-12)
|
||||
-------------------
|
||||
- fixed: icon for Ajax-preview of an entry was not displayed, if the entry is locked
|
||||
- fixed: reordering registration-form fields because firefox users could be unable to register dependent from the browser settings (prefilled form fields)
|
||||
- fixed: status of the checkbox for accepting the data privacy statement got lost when previewing the entry
|
||||
- fixed: display data privacy statement in a popup like the terms of use in case of an entry from an unregistered user
|
||||
- fixed: missing fields for the dates of the acceptance of the terms of use and the data privacy statement in the backup script for the user data
|
||||
- fixed: set a birthday date in single quotes in the backup script for the user data
|
||||
- fixed: remove field mlf2_entries.tags from the backup script for the forum entries because it does no longer exist
|
||||
- fixed: masked an occurence of single quotes in the german language file
|
||||
- fixed: set the forums own e-mail-address as sender of an e-mail in every case, set a possibly given divergent address as Reply-To-header; prevents not sending e-mails because of not matching domain names (forum domain versus domain part of an e-mail-address)
|
||||
|
||||
2.4.12 (2018-06-29)
|
||||
-------------------
|
||||
- fixed array of update targets for versions 2.4.10 and 2.4.11 because versions from 2.3.5 to 2.3.7 got no update of the table structure
|
||||
|
||||
2.4.11 (2018-06-25)
|
||||
-------------------
|
||||
- fixed: used the wrong setting for the terms-of-use-URL in the new template user_agreement.inc.tpl because of a copy'n'paste error, one was unable to read the terms of use before accepting it
|
||||
- fixed: a lost underscore in the admin template
|
||||
|
||||
2.4.10 (2018-06-13)
|
||||
-------------------
|
||||
- fixed: the russian language had a few syntax errors, introduced with the reformatting of the language files (2.4.7)
|
||||
- fixed: the version check in the admin panel was broken, when the update was executed before the forum itself found the new version on Github
|
||||
- fixed: the meta element for the charset definition moved to top of the title to apply also for the title
|
||||
- feature: make it possible to force an agreement to a data privacy statement in the same manner as with the terms of rules
|
||||
- feature: store the date of the agreement (data privacy statement and/or terms of use) with the users data
|
||||
- feature: enforce a new agreement to adata privacy statement and/or terms of use with the deletion of the timestamp of the old agreement (no user interface yet!)
|
||||
- change: actualised Bad Behavior from 2.2.19 to version 2.2.20
|
||||
- change: actualised GesHi from 1.0.8.11 to version 1.0.9
|
||||
- change: actualised Smarty from 3.1.30 to version 3.1.32
|
||||
- change: because of the minimal system requirement for Bad Behavior the minimal MySQL version raises to 5.0
|
||||
|
||||
2.4.9 (2018-04-13)
|
||||
------------------
|
||||
- fixed: use the function get_avatar also in the admin panel, used before only the code for the old file name scheme whcih leads to only displaying avatars with names in this old name scheme
|
||||
- fixed: avatar field in the user data form of the admin panel had no label because of missing string in the language files
|
||||
- fixed: adapt changed URL-parameter behaviour for folding threads to the JS-sources, didn't work with the switch instead the toggle
|
||||
- fixed: changed long date format for german language to month as number with leading zero, out written month name "März" can cause encoding problem on some servers
|
||||
- fixed: the deletion of entries about read postings was broken in the case of deletion after X days, used the old and removed setting name read_state_expiration_date instead read_state_expiration_value
|
||||
- added: sentence about automatic generation of e-mails to inform about new entries
|
||||
- added: make the mouse cursor a hand (pointer) when hovering over a (visible) label element
|
||||
- added: put pixel dimensions of uploaded images into the HTMl source, when included in entries, prevents page jumping during load process for only this case(!)
|
||||
|
||||
2.4.8 (2018-02-18)
|
||||
------------------
|
||||
- fixed double closing tag of a select in the admin.inc.tpl
|
||||
|
|
158
README.md
158
README.md
|
@ -1,20 +1,160 @@
|
|||
my little forum
|
||||
===============
|
||||
# my little forum
|
||||
|
||||
<a href="https://mylittleforum.net/">my little forum</a> is a simple PHP and MySQL based internet forum that displays the messages in classical threaded view (tree structure). It is Open Source licensed under the GNU General Public License. The main claim of this web forum is simplicity. Furthermore it should be easy to install and run on a standard server configuration with PHP and MySQL.
|
||||
[my little forum](https://mylittleforum.net/) is a simple PHP and MySQL based internet forum that displays the messages in classical threaded view (tree structure). It is Open Source licensed under the GNU General Public License. The main claim of this web forum is simplicity. Furthermore it should be easy to install and run on a standard server configuration with PHP and MySQL.
|
||||
|
||||
* <a href="https://github.com/ilosuna/mylittleforum/wiki">More about my little forum</a>
|
||||
* [More about my little forum](https://github.com/My-Little-Forum/mylittleforum/wiki)
|
||||
* [Demo and project discussion forum](https://mylittleforum.net/forum/)
|
||||
|
||||
System requirements
|
||||
-------------------
|
||||
## System requirements
|
||||
|
||||
* Webserver with PHP >= 5.4 and MySQL >= 4.1
|
||||
- Webserver with PHP >= 7.3
|
||||
- MySQL >= 5.7.7 or MariaDB >= 10.2.2
|
||||
|
||||
Installation
|
||||
------------
|
||||
## Features
|
||||
|
||||
### General
|
||||
|
||||
- thread based forum script
|
||||
- optional restriction of access to writing and/or reading entries to registered users only
|
||||
- user management
|
||||
- categories
|
||||
- forum script is highly configurable
|
||||
- theming support, using [Smarty](https://www.smarty.net/) as template language
|
||||
- data storage in a MySQL or MariaDB database
|
||||
- currently 14 available languages (more or less complete) with the strings for the user interface
|
||||
- arabic (beta)
|
||||
- simplified chinese
|
||||
- traditional chinese
|
||||
- croatian
|
||||
- danish
|
||||
- english (default if not set otherwise during the installation)
|
||||
- french
|
||||
- german
|
||||
- italian
|
||||
- norwegian
|
||||
- russian
|
||||
- spanish
|
||||
- swedish
|
||||
- tamil
|
||||
- turkish
|
||||
- since version 20220508.1 (2.5.0) the forum can store the whole utf-8-range including emojis 🎉
|
||||
- formatting of entries with BB-codes, most BB-codes are accessible by buttons, the system is extendable
|
||||
- common text formatting (bold, italic, strike through and so on)
|
||||
- coloured text, text size
|
||||
- links
|
||||
- images
|
||||
- code exapmles
|
||||
- preformatted text
|
||||
- mathematical formulas, realised with LaTex (optional with including the MathJax library)
|
||||
|
||||
### Main views
|
||||
|
||||
- paginated main view with a configurable count of threads per page
|
||||
- general and user based configuration for a thread view or a table view, second looking more message board like
|
||||
- optional list of latest X entries
|
||||
- optional tag cloud
|
||||
- management functions for administrators and moderators
|
||||
|
||||
### Forum entries
|
||||
|
||||
- allowing or forbidding creation of forum posts by unregistered users (restricting it to registered users only)
|
||||
- allowing or forbidding time based editing of forum posts after their initial saving
|
||||
- displaying the time of the last editing and the editors user name of a posting, optionally hiding it in case of editing by a moderator or administrator
|
||||
|
||||
### Entry view
|
||||
|
||||
- three possible views of forum entries
|
||||
- single entry view with the thread structure shown like in the main views below the entry
|
||||
- nested entry view with all entries of the thread indented according to their thread nesting level
|
||||
- flat entry view ordered by their posting dates like in a message board
|
||||
|
||||
### Categories
|
||||
|
||||
- optional creation of categories
|
||||
- restricting access to certain categories to registered users or to administrators and moderators
|
||||
- management of categories
|
||||
- sorting of the existing categories for the selection in the user interface
|
||||
- renaming a category
|
||||
- deleting an category
|
||||
- changing the access restrictions
|
||||
|
||||
### Spam prevention
|
||||
|
||||
- optional Bayed based content categorisation as ham or spam for forum posts and/or e-mails, to be sent over the contact form (*local service*)
|
||||
- ~~optional spam prevention with Bad behavior (*local service*)~~ removed with version 20240729.1 because the project is dead
|
||||
- optional bad word list (*local service*)
|
||||
- optional blacklist for certain IPs and IP-ranges (*local service*)
|
||||
- optional blacklist for user agents (*local service*)
|
||||
- optional check of e-mail-addresses during the registration process with Stop Forum Spam (*external service*)
|
||||
- optional content check of forum posts and/or e-mails, to be sent over the contact form, with Akismet (*external service*)
|
||||
- perform the activated checks only for content of unregistered visitors or also for content of registered users (if check is applicable)
|
||||
|
||||
### User account management
|
||||
|
||||
- optional user registration
|
||||
- options to registering an account by one self or by restricting the registration to be done by an administrator
|
||||
- enforcement of a consent to the terms of use and/or the privacy policy, date of consent will be saved with the user data
|
||||
- enforcement of a renewed consent in case of changes in one of these documents
|
||||
- in general three possible user ranks (beside unregistered visitors) with different permissions and restrictions
|
||||
- registered user
|
||||
- moderator
|
||||
- administrator
|
||||
- user profile with optional …
|
||||
- … avatar
|
||||
- … signature
|
||||
- … profile information
|
||||
- … website
|
||||
- … location
|
||||
- … birthday
|
||||
- … sex/gender
|
||||
- technical user settings
|
||||
- password
|
||||
- e-mail-address
|
||||
- deleting the account
|
||||
- extent of e-mail-contact
|
||||
- user is contactable only by the forum team
|
||||
- user is contactable by all registered users
|
||||
- or the whole forum audience
|
||||
- user based category selection (if categories are defined)
|
||||
- user based choice of the user interface language
|
||||
- user based choice of the time zone
|
||||
- user based choice of how links are opened
|
||||
- open all links based on the forum setting (set by the forum administrator)
|
||||
- open all links in the currently active browser window/tab
|
||||
- open only links to external sites in a new browser window/tab
|
||||
- open all links in a new browser window/tab
|
||||
- for moderators and administrators: e-mail-notification about new forum posts and/or registration of new users
|
||||
- for administrators: separate user management list with the following functions
|
||||
- adding new users
|
||||
- editing the data of a single user
|
||||
- deleting single users
|
||||
- deleting uxsers according to definable criteria
|
||||
- reset previous consents to the terms of use and/or the privacy policy because of changes in one or the other document
|
||||
|
||||
### Additional pages
|
||||
|
||||
- creation of website pages as supplement to the forum, in example a help page, the terms of use or the privacy policy
|
||||
- formatting the pages content with HTML and the CSS rules of the applied forum theme
|
||||
- pages have a fix URL and a link can optionally be displayed in the user menu
|
||||
|
||||
## Installation
|
||||
|
||||
1. Unzip the script package.
|
||||
2. Upload the complete folder "forum" to your server.
|
||||
3. Depending on your server configuration the write permissions of the subdirectory templates_c (CHMOD 770, 775 or 777) and the file config/db_settings.php (CHMOD 666) might need to be changed in order that they are writable by the script.
|
||||
4. Run the installation script by accessing yourdomain.tld/forum/install/ in your web browser and follow the instructions.
|
||||
5. Remove the directory "install" from your installation of My Little Forum.
|
||||
6. Change the write permissions for config/db_settings.php to (CHMOD 440), what prevents reading the files content for unauthorised users
|
||||
|
||||
## Upgrade
|
||||
|
||||
1. Download the new package.
|
||||
2. Unzip the script package.
|
||||
3. Upload the folder "update" into the main folder of the forum installation.
|
||||
4. Upload the file "config/VERSION" to the folder "config" of the forum installation. An existing file VERSION will be overwritten.
|
||||
5. Login as forum administrator and go to the admin area
|
||||
6. Open the link "Update", you will see a list of available update script files below the instructions. It is possible, that there are more than one items listed, because old, outdated update files never got deleted from the server.
|
||||
7. Open the link to the currently valid update script.
|
||||
8. Insert the password of your administrator account to confirm the run of the update script.
|
||||
9. On the following page you'll get the success message for step one of the update (database operations) or an error message. In case of success you'll see a list of all script files that changed between your and the new version. You have to load up all the listed files and directories to your webspace (this is because not every file got altered with every version). After loading all changed files and directories of the new version to your webspace, you are done. If you encountered errors, please report it instantaneously [in the project forum](https://mylittleforum.net/forum/) or open an [issue on Github](https://github.com/My-Little-Forum/mylittleforum/issues).
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
2.4.8
|
||||
20250323.1
|
45
config/b8_config.php
Normal file
45
config/b8_config.php
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
if (!defined('IN_INDEX')) {
|
||||
header('Location: ../index.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
/** config for b8 filter **/
|
||||
$B8_CONFIG_LEXER = array(
|
||||
'min_size' => 3,
|
||||
'max_size' => 30,
|
||||
'allow_numbers' => FALSE,
|
||||
'get_html' => TRUE,
|
||||
'get_uris' => TRUE,
|
||||
'get_bbcode' => FALSE
|
||||
);
|
||||
|
||||
$B8_CONFIG_DEGENERATOR = array(
|
||||
'encoding' => isset($lang['charset']) ? $lang['charset'] : 'UTF-8',
|
||||
'multibyte' => function_exists('mb_strtolower') && function_exists('mb_strtoupper') && function_exists('mb_substr')
|
||||
);
|
||||
|
||||
/** config for new b8 version **/
|
||||
$B8_CONFIG_DATABASE_TYPE = array(
|
||||
'storage' => 'mysql'
|
||||
);
|
||||
|
||||
$B8_CONFIG_STORAGE = array(
|
||||
'resource' => new mysqli($db_settings['host'], $db_settings['user'], $db_settings['password'], $db_settings['database']),
|
||||
'table' => $db_settings['b8_wordlist_table']
|
||||
);
|
||||
|
||||
/** config for old b8 version **/
|
||||
$B8_CONFIG_DATABASE = array(
|
||||
'storage' => 'mysqli'
|
||||
);
|
||||
|
||||
$B8_CONFIG_AUTHENTICATION = array(
|
||||
'database' => $db_settings['database'],
|
||||
'table_name' => $db_settings['b8_wordlist_table'],
|
||||
'host' => $db_settings['host'],
|
||||
'user' => $db_settings['user'],
|
||||
'pass' => $db_settings['password']
|
||||
);
|
||||
/** config for b8 filter **/
|
||||
?>
|
|
@ -11,7 +11,7 @@ $db_settings['user'] = '';
|
|||
// Database password:
|
||||
$db_settings['password'] = '';
|
||||
|
||||
// Database tables (normally not necessary to edit):
|
||||
// Database tables (normally not necessary to edit):
|
||||
$db_settings['settings_table'] = 'mlf2_settings';
|
||||
$db_settings['forum_table'] = 'mlf2_entries';
|
||||
$db_settings['category_table'] = 'mlf2_categories';
|
||||
|
@ -29,4 +29,9 @@ $db_settings['temp_infos_table'] = 'mlf2_temp_infos';
|
|||
$db_settings['tags_table'] = 'mlf2_tags';
|
||||
$db_settings['bookmark_tags_table'] = 'mlf2_bookmark_tags';
|
||||
$db_settings['entry_tags_table'] = 'mlf2_entry_tags';
|
||||
$db_settings['subscriptions_table'] = 'mlf2_subscriptions';
|
||||
$db_settings['b8_wordlist_table'] = 'mlf2_b8_wordlist';
|
||||
$db_settings['b8_rating_table'] = 'mlf2_b8_rating';
|
||||
$db_settings['akismet_rating_table'] = 'mlf2_akismet_rating';
|
||||
$db_settings['uploads_table'] = 'mlf2_uploads';
|
||||
?>
|
||||
|
|
23
config/php_mailer.php
Normal file
23
config/php_mailer.php
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
if (!defined('IN_INDEX')) {
|
||||
header('Location: ../index.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
/** config for PHPMailer **/
|
||||
// Please read https://github.com/PHPMailer/PHPMailer/blob/master/src/PHPMailer.php
|
||||
// for further configuration properties
|
||||
$PHP_MAILER_CONFIG = array(
|
||||
'Mailer' => 'smtp', // 'smtp', 'mail', 'sendmail' or 'qmail'
|
||||
'Port' => '587', // well-known ports are 25 (default), 587 (TLS) or 465 (SSL)
|
||||
'SMTPSecure' => 'tls', // '', 'tls' or 'ssl'
|
||||
'ContentType' => 'text/plain', // 'text/plain' or 'text/html'
|
||||
'Encoding' => 'quoted-printable', // '8bit', '7bit', 'binary', 'base64', and 'quoted-printable'
|
||||
'CharSet' => 'utf-8', // 'iso-8859-1' or 'utf-8'
|
||||
'SMTPAuth' => true, // true, for SMTP authentication via username/password
|
||||
'Host' => 'smtp.example.org',
|
||||
'Username' => 'mail@example.org',
|
||||
'Password' => 'secret password'
|
||||
);
|
||||
/** config for PHPMailer **/
|
||||
?>
|
|
@ -12,13 +12,17 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
|
||||
if (isset($_GET['delete_page'])) $action = 'delete_page';
|
||||
if (isset($_GET['edit_page'])) $action = 'edit_page';
|
||||
if (isset($_POST['delete_page_submit'])) $action = 'delete_page_submit';
|
||||
if (isset($_POST['edit_page_submit'])) $action = 'edit_page_submit';
|
||||
if (isset($_GET['move_up_page']) || isset($_GET['move_down_page'])) $action = 'move_page';
|
||||
if (isset($_GET['move_up_smiley']) || isset($_GET['move_down_smiley'])) $action = 'move_smiley';
|
||||
if (isset($_GET['move_up_category']) || isset($_GET['move_down_category'])) $action = 'move_category';
|
||||
|
||||
if (isset($_POST['delete_page_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token'])
|
||||
$action = 'delete_page_submit';
|
||||
|
||||
if (isset($_POST['edit_page_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token'])
|
||||
$action = 'edit_page_submit';
|
||||
|
||||
if (isset($_POST['new_category'])) {
|
||||
if (isset($_POST['new_category']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$new_category = trim($_POST['new_category']);
|
||||
$new_category = str_replace('"', '\'', $new_category);
|
||||
$accession = intval($_POST['accession']);
|
||||
|
@ -39,7 +43,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('errors',$errors);
|
||||
}
|
||||
}
|
||||
$action='categories';
|
||||
$action='categories';
|
||||
}
|
||||
|
||||
if (isset($_GET['edit_user'])) {
|
||||
|
@ -48,12 +52,16 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$field = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
|
||||
if (trim($field['birthday']) == '' || $field['birthday'] == '0000-00-00') $user_birthday = '';
|
||||
else {
|
||||
$year = my_substr($field['birthday'], 0, 4, $lang['charset']);
|
||||
$month = my_substr($field['birthday'], 5, 2, $lang['charset']);
|
||||
$day = my_substr($field['birthday'], 8, 2, $lang['charset']);
|
||||
$user_birthday = $year.'-'.$month.'-'.$day;
|
||||
if (!empty($row['birthday'])) {
|
||||
if (trim($field['birthday']) == '' || $field['birthday'] == '0000-00-00') $user_birthday = '';
|
||||
else {
|
||||
$year = my_substr($field['birthday'], 0, 4, $lang['charset']);
|
||||
$month = my_substr($field['birthday'], 5, 2, $lang['charset']);
|
||||
$day = my_substr($field['birthday'], 8, 2, $lang['charset']);
|
||||
$user_birthday = $year.'-'.$month.'-'.$day;
|
||||
}
|
||||
} else {
|
||||
$user_birthday = '';
|
||||
}
|
||||
// timezones:
|
||||
if (function_exists('date_default_timezone_set') && $time_zones = get_timezones()) {
|
||||
|
@ -94,12 +102,11 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('user_view', intval($field["user_view"]));
|
||||
$smarty->assign('new_posting_notification', intval($field["new_posting_notification"]));
|
||||
$smarty->assign('new_user_notification', intval($field["new_user_notification"]));
|
||||
if (trim($field['activate_code']) != '') $smarty->assign('inactive', true);
|
||||
if (!empty($field['activate_code'])) $smarty->assign('inactive', true);
|
||||
|
||||
if (file_exists('images/avatars/'.$edit_user_id.'.jpg')) $avatar['image'] = 'images/avatars/'.$edit_user_id.'.jpg';
|
||||
elseif(file_exists('images/avatars/'.$edit_user_id.'.png')) $avatar['image'] = 'images/avatars/'.$edit_user_id.'.png';
|
||||
elseif(file_exists('images/avatars/'.$edit_user_id.'.gif')) $avatar['image'] = 'images/avatars/'.$edit_user_id.'.gif';
|
||||
if(isset($avatar)) {
|
||||
$avatarInfo = getAvatar($edit_user_id);
|
||||
$avatar['image'] = $avatarInfo === false ? false : $avatarInfo[2];
|
||||
if (isset($avatar) && $avatar['image'] !== false) {
|
||||
$image_info = getimagesize($avatar['image']);
|
||||
$avatar['width'] = $image_info[0];
|
||||
$avatar['height'] = $image_info[1];
|
||||
|
@ -111,21 +118,21 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
if (isset($_POST['edit_user_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
// import posted data:
|
||||
$edit_user_id = intval($_POST['edit_user_id']);
|
||||
$edit_user_name = trim($_POST['edit_user_name']);
|
||||
$edit_user_name = (!empty($_POST['edit_user_name'])) ? trim($_POST['edit_user_name']) : '';
|
||||
$edit_user_type = intval($_POST['edit_user_type']);
|
||||
$user_email = trim($_POST['user_email']);
|
||||
$user_email = (!empty($_POST['edit_user_name'])) ? trim($_POST['user_email']) : '';
|
||||
$email_contact = (isset($_POST['email_contact'])) ? 1 : 0;
|
||||
$user_real_name = trim($_POST['user_real_name']);
|
||||
$user_birthday = trim($_POST['user_birthday']);
|
||||
$user_real_name = (!empty($_POST['edit_user_name'])) ? trim($_POST['user_real_name']) : '';
|
||||
$user_birthday = (!empty($_POST['edit_user_name'])) ? trim($_POST['user_birthday']) : '';
|
||||
$gender = (isset($_POST['user_gender'])) ? intval($_POST['user_gender']) : 0;
|
||||
if ($gender !=0 && $gender !=1 && $gender !=2) $gender = 0;
|
||||
$user_hp = trim($_POST['user_hp']);
|
||||
$user_location = trim($_POST['user_location']);
|
||||
$profile = trim($_POST['profile']);
|
||||
$signature = trim($_POST['signature']);
|
||||
$user_hp = (!empty($_POST['user_hp'])) ? trim($_POST['user_hp']) : '';
|
||||
$user_location = (!empty($_POST['user_location'])) ? trim($_POST['user_location']) : '';
|
||||
$profile = (!empty($_POST['profile'])) ? trim($_POST['profile']) : '';
|
||||
$signature = (!empty($_POST['signature'])) ? trim($_POST['signature']) : '';
|
||||
if (isset($_POST['user_view'])) $user_view = intval($_POST['user_view']);
|
||||
else $user_view = $settings['default_view'];
|
||||
$user_time_difference = trim($_POST['user_time_difference']);
|
||||
$user_time_difference = (!empty($_POST['user_time_difference'])) ? trim($_POST['user_time_difference']) : '';
|
||||
if (isset($_POST['new_posting_notification'])) $new_posting_notification = trim($_POST['new_posting_notification']);
|
||||
else $new_posting_notification = 0;
|
||||
if (isset($_POST['new_user_notification'])) $new_user_notification = trim($_POST['new_user_notification']);
|
||||
|
@ -175,11 +182,10 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (file_exists('images/avatars/'.$edit_user_id.'.jpg')) $avatar['image'] = 'images/avatars/'.$edit_user_id.'.jpg';
|
||||
elseif(file_exists('images/avatars/'.$edit_user_id.'.png')) $avatar['image'] = 'images/avatars/'.$edit_user_id.'.png';
|
||||
elseif(file_exists('images/avatars/'.$edit_user_id.'.gif')) $avatar['image'] = 'images/avatars/'.$edit_user_id.'.gif';
|
||||
if (isset($avatar)) {
|
||||
|
||||
$avatarInfo = getAvatar($edit_user_id);
|
||||
$avatar['image'] = $avatarInfo === false ? false : $avatarInfo[2];
|
||||
if (isset($avatar) && $avatar['image'] !== false) {
|
||||
$image_info = getimagesize($avatar['image']);
|
||||
$avatar['width'] = $image_info[0];
|
||||
$avatar['height'] = $image_info[1];
|
||||
|
@ -251,19 +257,13 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$queryUserDataEdit .= ", email_contact=". intval($email_contact) .", user_hp='". mysqli_real_escape_string($connid, $user_hp) ."', user_location='". mysqli_real_escape_string($connid, $user_location) ."', profile='". mysqli_real_escape_string($connid, $profile) ."', signature='". mysqli_real_escape_string($connid, $signature) ."', last_login=last_login, registered=registered, new_posting_notification=". intval($new_posting_notification) .", new_user_notification=". intval($new_user_notification) .", language='". mysqli_real_escape_string($connid, $user_language) ."', time_zone='". mysqli_real_escape_string($connid, $user_time_zone) ."', time_difference=". intval($time_difference) .", theme='". mysqli_real_escape_string($connid, $user_theme) ."' WHERE user_id=". $edit_user_id;
|
||||
@mysqli_query($connid, $queryUserDataEdit) or raise_error('database_error', mysqli_error($connid));
|
||||
@mysqli_query($connid, "DELETE FROM ".$db_settings['userdata_cache_table']." WHERE cache_id = ". $edit_user_id);
|
||||
|
||||
if (isset($_POST['delete_avatar'])) {
|
||||
$uploaded_avatars_path = 'images/avatars/';
|
||||
if (file_exists($uploaded_avatars_path.$edit_user_id.'.jpg')) {
|
||||
@chmod($uploaded_avatars_path.$edit_user_id.'.jpg', 0777);
|
||||
@unlink($uploaded_avatars_path.$edit_user_id.'.jpg');
|
||||
}
|
||||
if (file_exists($uploaded_avatars_path.$edit_user_id.'.png')) {
|
||||
@chmod($uploaded_avatars_path.$edit_user_id.'.png', 0777);
|
||||
@unlink($uploaded_avatars_path.$edit_user_id.'.png');
|
||||
}
|
||||
if(file_exists($uploaded_avatars_path.$edit_user_id.'.gif')) {
|
||||
@chmod($uploaded_avatars_path.$edit_user_id.'.gif', 0777);
|
||||
@unlink($uploaded_avatars_path.$edit_user_id.'.gif');
|
||||
$avatarInfo = getAvatar($edit_user_id);
|
||||
$avatar['image'] = $avatarInfo === false ? false : $avatarInfo[2];
|
||||
if (isset($avatar) && $avatar['image'] !== false && file_exists($avatar['image'])) {
|
||||
@chmod($avatar['image'], 0777);
|
||||
@unlink($avatar['image']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -330,7 +330,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('category_name', $field['category']);
|
||||
|
||||
if (count($categories) > 1) {
|
||||
while (list($key, $val) = each($categories)) {
|
||||
foreach ($categories as $key => $val) {
|
||||
if ($key != $field['id']) $move_categories[$key] = $val;
|
||||
}
|
||||
$smarty->assign('move_categories', $move_categories);
|
||||
|
@ -345,9 +345,9 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$action='delete_category';
|
||||
}
|
||||
|
||||
if (isset($_POST['edit_category_submit'])) {
|
||||
if (isset($_POST['edit_category_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$id = intval($_POST['id']);
|
||||
$category = trim($_POST['category']);
|
||||
$category = (!empty($_POST['category'])) ? trim($_POST['category']) : '';
|
||||
$category = str_replace('"', '\'', $category);
|
||||
$accession = intval($_POST['accession']);
|
||||
// does this category already exist?
|
||||
|
@ -389,7 +389,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
exit;
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_category_submit'])) {
|
||||
if (isset($_POST['delete_category_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$category_id = intval($_POST['category_id']);
|
||||
if ($category_id > 0) {
|
||||
// delete category from category table:
|
||||
|
@ -445,7 +445,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
else $action = 'user';
|
||||
}
|
||||
|
||||
if (isset($_POST['user_delete_entries']) && isset($_POST['delete_confirmed'])) {
|
||||
if (isset($_POST['user_delete_entries']) && isset($_POST['delete_confirmed']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$user_delete_entries = intval($_POST['user_delete_entries']);
|
||||
$result = mysqli_query($connid, "SELECT id FROM ".$db_settings['forum_table']." WHERE user_id = ". $user_delete_entries) or raise_error('database_error', mysqli_error($connid));
|
||||
while ($data = mysqli_fetch_array($result)) {
|
||||
|
@ -469,99 +469,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['download_backup_file'])) {
|
||||
$file = 'backup/'.$_GET['download_backup_file'];
|
||||
if (check_filename($_GET['download_backup_file']) && file_exists($file)) {
|
||||
$len = filesize($file);
|
||||
$fh = @fopen($file, "r");
|
||||
if (!$fh) return false;
|
||||
$data = fread($fh, $len);
|
||||
fclose($fh);
|
||||
header("Content-Type: text/plain; charset=".$lang['charset']);
|
||||
header("Content-Disposition: attachment; filename=".$_GET['download_backup_file']);
|
||||
header("Accept-Ranges: bytes");
|
||||
header("Content-Length: ".$len);
|
||||
echo $data;
|
||||
exit;
|
||||
} else {
|
||||
$errors[] = 'error_file_doesnt_exist';
|
||||
$smarty->assign('errors', $errors);
|
||||
$action = 'backup';
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_selected_backup_files']) && empty($_POST['delete_backup_files'])) $action = 'backup';
|
||||
|
||||
if (isset($_REQUEST['delete_backup_files'])) {
|
||||
if (empty($_REQUEST['delete_backup_files_confirm'])) {
|
||||
$action = 'delete_backup_files_confirm';
|
||||
} else {
|
||||
foreach ($_REQUEST['delete_backup_files'] as $backup_file) {
|
||||
if (!@unlink('backup/'.$backup_file)) $error = true;
|
||||
}
|
||||
if (isset($error)) {
|
||||
$errors[] = 'error_delete_backup_file';
|
||||
$smarty->assign('errors', $errors);
|
||||
$action = 'backup';
|
||||
} else {
|
||||
header('Location: index.php?mode=admin&action=backup');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['restore'])) {
|
||||
$file = 'backup/'.$_GET['restore'];
|
||||
if (check_filename($_GET['restore']) && file_exists($file)) {
|
||||
$backup_file = $_GET['restore'];
|
||||
if (ini_get('safe_mode')) $smarty->assign('safe_mode_warning', true);
|
||||
$action = 'restore';
|
||||
} else {
|
||||
$errors[] = 'error_file_doesnt_exist';
|
||||
$smarty->assign('errors', $errors);
|
||||
$action = 'backup';
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_REQUEST['restore_submit'])) {
|
||||
if ($_POST['backup_file'] == '' || !file_exists('backup/'.$_POST['backup_file']) || !check_filename($_POST['backup_file'])) $errors[] = 'error_file_doesnt_exist';
|
||||
if (empty($errors)) {
|
||||
if (empty($_POST['restore_password']) || $_POST['restore_password'] == '') $errors[] = 'error_password_wrong';
|
||||
if (empty($errors)) {
|
||||
$result = mysqli_query($connid, "SELECT user_pw FROM ".$db_settings['userdata_table']." WHERE user_id=". intval($_SESSION[$settings['session_prefix'].'user_id']) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) != 1) raise_error('database_error', mysqli_error($connid));
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (!is_pw_correct($_POST['restore_password'], $data['user_pw'])) $errors[] = 'error_password_wrong';
|
||||
if (empty($errors)) {
|
||||
if (!restore_backup('backup/'.$_POST['backup_file'])) {
|
||||
$errors[] = 'error_restore_mysql';
|
||||
$smarty->assign('mysql_error',$error_message);
|
||||
}
|
||||
if(empty($errors)) {
|
||||
header('Location: index.php?mode=admin&action=backup&msg=restore_backup_ok');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($errors)) {
|
||||
$backup_file = $_POST['backup_file'];
|
||||
$smarty->assign('errors', $errors);
|
||||
$action = 'restore';
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['create_backup'])) {
|
||||
$mode = intval($_GET['create_backup']);
|
||||
if (!create_backup_file($mode)) $errors[] = 'error_create_backup_file';
|
||||
if (empty($errors)) {
|
||||
header('Location: index.php?mode=admin&action=backup&msg=backup_file_created');
|
||||
exit;
|
||||
}
|
||||
else $smarty->assign('errors', $errors);
|
||||
$action = 'backup';
|
||||
}
|
||||
|
||||
if (isset($_GET['run_update'])) {
|
||||
$file = 'update/'.$_GET['run_update'];
|
||||
if(check_filename($_GET['run_update']) && file_exists($file)) {
|
||||
|
@ -574,7 +481,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($_POST['update_file_submit'])) {
|
||||
if (isset($_POST['update_file_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($_POST['update_file_submit'] == '' || !file_exists('update/'.$_POST['update_file_submit']) || !check_filename($_POST['update_file_submit'])) {
|
||||
$errors[] = 'error_file_doesnt_exist';
|
||||
$smarty->assign('errors', $errors);
|
||||
|
@ -627,7 +534,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($_POST['clear_userdata']) && isset($_POST['logins']) && isset($_POST['days'])) {
|
||||
if (isset($_POST['clear_userdata']) && isset($_POST['logins']) && isset($_POST['days']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$logins = intval($_POST['logins']);
|
||||
$days = intval($_POST['days']);
|
||||
|
||||
|
@ -650,7 +557,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
|
||||
if (isset($_POST['email_list'])) $action = "email_list";
|
||||
|
||||
if (isset($_POST['delete_confirmed'])) {
|
||||
if (isset($_POST['delete_confirmed']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['selected_confirmed'])) {
|
||||
$selected_confirmed = $_POST['selected_confirmed'];
|
||||
for ($x=0; $x<count($selected_confirmed); $x++) {
|
||||
|
@ -668,7 +575,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
@mysqli_query($connid, "UPDATE ".$db_settings['forum_table']." SET time = time, last_reply = last_reply, edited_by = 0 WHERE edited_by = ". intval($selected_confirmed[$x]) ." AND user_id = ". intval($selected_confirmed[$x]));
|
||||
|
||||
// set user_id = 0
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['forum_table']." SET time = time, last_reply = last_reply, user_id = 0, email_notification = 0 WHERE user_id = ". intval($selected_confirmed[$x]));
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['forum_table']." SET time = time, last_reply = last_reply, user_id = 0 WHERE user_id = ". intval($selected_confirmed[$x]));
|
||||
|
||||
@mysqli_query($connid, "DELETE FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($selected_confirmed[$x]));
|
||||
@mysqli_query($connid, "DELETE FROM ".$db_settings['userdata_cache_table']." WHERE cache_id = ". intval($selected_confirmed[$x]));
|
||||
|
@ -678,18 +585,11 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
@mysqli_free_result($delete_result);
|
||||
|
||||
// delete avatar:
|
||||
$uploaded_avatars_path = 'images/avatars/';
|
||||
if (file_exists($uploaded_avatars_path.intval($selected_confirmed[$x]).'.jpg')) {
|
||||
@chmod($uploaded_avatars_path.intval($selected_confirmed[$x]).'.jpg', 0777);
|
||||
@unlink($uploaded_avatars_path.intval($selected_confirmed[$x]).'.jpg');
|
||||
}
|
||||
if (file_exists($uploaded_avatars_path.intval($selected_confirmed[$x]).'.png')) {
|
||||
@chmod($uploaded_avatars_path.intval($selected_confirmed[$x]).'.png', 0777);
|
||||
@unlink($uploaded_avatars_path.intval($selected_confirmed[$x]).'.png');
|
||||
}
|
||||
if (file_exists($uploaded_avatars_path.intval($selected_confirmed[$x]).'.gif')) {
|
||||
@chmod($uploaded_avatars_path.intval($selected_confirmed[$x]).'.gif', 0777);
|
||||
@unlink($uploaded_avatars_path.intval($selected_confirmed[$x]).'.gif');
|
||||
$avatarInfo = getAvatar(intval($selected_confirmed[$x]));
|
||||
$avatar['image'] = $avatarInfo === false ? false : $avatarInfo[2];
|
||||
if (isset($avatar) && $avatar['image'] !== false && file_exists($avatar['image'])) {
|
||||
@chmod($avatar['image'], 0777);
|
||||
@unlink($avatar['image']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -729,6 +629,8 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$field = mysqli_fetch_array($user_result);
|
||||
mysqli_free_result($user_result);
|
||||
|
||||
$smarty->configLoad($settings['language_file'], 'emails');
|
||||
$lang = $smarty->getConfigVars();
|
||||
$lang['admin_activate_user_email_text'] = str_replace("[name]", htmlspecialchars($field['user_name']), $lang['admin_activate_user_email_text']);
|
||||
$lang['admin_activate_user_email_text'] = str_replace("[login_link]", $settings['forum_address']."index.php?mode=login", $lang['admin_activate_user_email_text']);
|
||||
if (!my_mail(htmlspecialchars($field['user_email']), $lang['admin_activate_user_email_subj'], $lang['admin_activate_user_email_text'])) {
|
||||
|
@ -738,7 +640,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
exit;
|
||||
}
|
||||
|
||||
if (isset($_POST['reset_forum_confirmed']) || isset($_POST['uninstall_forum_confirmed'])) {
|
||||
if ((isset($_POST['reset_forum_confirmed']) || isset($_POST['uninstall_forum_confirmed'])) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (empty($_POST['confirm_pw'])) $errors[] = 'error_password_wrong';
|
||||
|
||||
if (empty($errors)) {
|
||||
|
@ -810,6 +712,30 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
echo 'Deleting table <strong>'.$db_settings['temp_infos_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['temp_infos_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
echo 'Deleting table <strong>'.$db_settings['akismet_rating_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['akismet_rating_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
echo 'Deleting table <strong>'.$db_settings['b8_rating_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['b8_rating_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
echo 'Deleting table <strong>'.$db_settings['b8_wordlist_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['b8_wordlist_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
echo 'Deleting table <strong>'.$db_settings['bookmark_tags_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['bookmark_tags_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
echo 'Deleting table <strong>'.$db_settings['entry_tags_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['entry_tags_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
echo 'Deleting table <strong>'.$db_settings['tags_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['tags_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
echo 'Deleting table <strong>'.$db_settings['subscriptions_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['subscriptions_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
echo 'Deleting table <strong>'.$db_settings['uploads_table'].'</strong>... ';
|
||||
if (@mysqli_query($connid, "DROP TABLE ".$db_settings['uploads_table'])) echo '<b style="color:green;">OK</b>'; else echo '<b style="color:red;">FAILED</b> ('. mysqli_error($connid) .')';
|
||||
echo '</pre>';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
@ -819,7 +745,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($_POST['settings_submit'])) {
|
||||
if (isset($_POST['settings_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
// not checked checkboxes:
|
||||
if (empty($_POST['show_if_edited'])) $_POST['show_if_edited'] = 0;
|
||||
if (empty($_POST['dont_reg_edit_by_admin'])) $_POST['dont_reg_edit_by_admin'] = 0;
|
||||
|
@ -827,7 +753,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
if (empty($_POST['smilies'])) $_POST['smilies'] = 0;
|
||||
if (empty($_POST['bbcode'])) $_POST['bbcode'] = 0;
|
||||
if (empty($_POST['bbcode_img'])) $_POST['bbcode_img'] = 0;
|
||||
if (empty($_POST['bbcode_flash'])) $_POST['bbcode_flash'] = 0;
|
||||
if (empty($_POST['tag_cloud'])) $_POST['tag_cloud'] = 0;
|
||||
if (empty($_POST['avatars'])) $_POST['avatars'] = 0;
|
||||
if (empty($_POST['autolink'])) $_POST['autolink'] = 0;
|
||||
|
@ -835,13 +760,15 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
if (empty($_POST['count_users_online'])) $_POST['count_users_online'] = 0;
|
||||
if (empty($_POST['rss_feed'])) $_POST['rss_feed'] = 0;
|
||||
if (empty($_POST['terms_of_use_agreement'])) $_POST['terms_of_use_agreement'] = 0;
|
||||
if (empty($_POST['data_privacy_agreement'])) $_POST['data_privacy_agreement'] = 0;
|
||||
if (empty($_POST['forum_enabled'])) $_POST['forum_enabled'] = 0;
|
||||
if (empty($_POST['user_edit_if_no_replies'])) $_POST['user_edit_if_no_replies'] = 0;
|
||||
if (empty($_POST['time_zone'])) $_POST['time_zone'] = '';
|
||||
if (empty($_POST['read_state_expiration_method'])) $_POST['read_state_expiration_method'] = 0;
|
||||
$_POST['last_changes'] = TIMESTAMP;
|
||||
|
||||
while(list($key, $val) = each($settings)) {
|
||||
if (!empty($_POST['link_open_target']) && (!preg_match("/^[a-z]{1}[a-z0-9\-\_]{1,254}$/iu", $_POST['link_open_target']) && !in_array($_POST['link_open_target'], ['_self', '_parent', '_top']))) {
|
||||
unset($_POST['link_open_target']);
|
||||
}
|
||||
foreach ($settings as $key => $val) {
|
||||
if (isset($_POST[$key])) mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". mysqli_real_escape_string($connid, $_POST[$key]) ."' WHERE name = '". mysqli_real_escape_string($connid, $key) ."' LIMIT 1");
|
||||
}
|
||||
if (isset($_POST['clear_cache'])) {
|
||||
|
@ -851,6 +778,9 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
if ($settings['autologin'] == 1 && isset($_POST['autologin']) && $_POST['autologin'] == 0) {
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET auto_login_code = ''");
|
||||
}
|
||||
$qSetChangeTime = "INSERT INTO " . $db_settings['temp_infos_table'] . " (name, value, time)
|
||||
VALUES ('last_changes', UNIX_TIMESTAMP(NOW()), NOW()) ON DUPLICATE KEY UPDATE value = UNIX_TIMESTAMP(NOW()), time = NOW()";
|
||||
mysqli_query($connid, $qSetChangeTime);
|
||||
if (isset($_POST['return_to']) and $_POST['return_to'] === 'advanced_settings') {
|
||||
header("Location: index.php?mode=admin&action=advanced_settings&saved=true");
|
||||
} else {
|
||||
|
@ -860,15 +790,11 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
|
||||
if (isset($_POST['register_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$ar_username = $_POST['ar_username'];
|
||||
$ar_email = $_POST['ar_email'];
|
||||
$ar_pw = $_POST['ar_pw'];
|
||||
$ar_pw_conf = $_POST['ar_pw_conf'];
|
||||
if (isset($_POST['ar_send_userdata']) && $_POST['ar_send_userdata'] != '') $ar_send_userdata = true;
|
||||
$ar_username = trim($ar_username);
|
||||
$ar_email = trim($ar_email);
|
||||
$ar_pw = trim($ar_pw);
|
||||
$ar_pw_conf = trim($ar_pw_conf);
|
||||
$ar_username = (!empty($_POST['ar_username'])) ? trim($_POST['ar_username']) : '';
|
||||
$ar_email = (!empty($_POST['ar_email'])) ? trim($_POST['ar_email']) : '';
|
||||
$ar_pw = (!empty($_POST['ar_pw'])) ? trim($_POST['ar_pw']) : '';
|
||||
if (isset($_POST['ar_send_userdata']) && trim($_POST['ar_send_userdata']) != '') $ar_send_userdata = true;
|
||||
|
||||
// look if form complete
|
||||
if ($ar_username == '' or $ar_email == '') $errors[] = 'error_form_uncomplete';
|
||||
|
||||
|
@ -878,17 +804,17 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
if (mysqli_num_rows($name_result) > 0) $errors[] = 'user_name_already_exists';
|
||||
mysqli_free_result($name_result);
|
||||
|
||||
if (!is_valid_email($ar_email)) $errors[] = 'error_email_wrong';
|
||||
if (($ar_pw == "" or $ar_pw_conf == "") && !isset($ar_send_userdata)) $errors[] = 'error_send_userdata';
|
||||
if (!is_valid_email($ar_email))
|
||||
$errors[] = 'admin_reg_error_email_wrong';
|
||||
if ($ar_pw == "" && !isset($ar_send_userdata))
|
||||
$errors[] = 'error_send_userdata';
|
||||
|
||||
if (my_strlen($ar_username, $lang['charset']) > $settings['name_maxlength'])
|
||||
$errors[] = $lang['name_marking'] . " " .$lang['error_username_too_long'];
|
||||
if (my_strlen($ar_username, $lang['charset']) > $settings['username_maxlength'])
|
||||
$errors[] = 'error_name_too_long';
|
||||
|
||||
$too_long_word = too_long_word($ar_username, $settings['name_word_maxlength']);
|
||||
if ($too_long_word)
|
||||
$errors[] = 'error_word_too_long';
|
||||
if ($ar_pw_conf != $ar_pw)
|
||||
$errors[] = 'error_pw_conf_uneven';
|
||||
}
|
||||
// save user if no errors:
|
||||
if (empty($errors)) {
|
||||
|
@ -922,11 +848,12 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($_POST['spam_protection_submit'])) $action = 'spam_protection_submit';
|
||||
if (isset($_POST['spam_protection_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token'])
|
||||
$action = 'spam_protection_submit';
|
||||
|
||||
if (isset($_POST['add_smiley'])) {
|
||||
if (isset($_POST['add_smiley']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (!file_exists('images/smilies/'.$_POST['add_smiley'])) $errors[] = 'smiley_file_doesnt_exist';
|
||||
if (trim($_POST['smiley_code']) == '') $errors[] = 'smiley_code_empty';
|
||||
if (!empty($_POST['smiley_code']) && trim($_POST['smiley_code']) == '') $errors[] = 'smiley_code_empty';
|
||||
|
||||
if(empty($errors)) {
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['smilies_table']);
|
||||
|
@ -975,15 +902,15 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$action = 'edit_smiley';
|
||||
}
|
||||
|
||||
if (isset($_POST['edit_smiley_submit'])) {
|
||||
if (isset($_POST['edit_smiley_submit']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$id = intval($_POST['id']);
|
||||
$file = trim($_POST['file']);
|
||||
$code_1 = trim($_POST['code_1']);
|
||||
$code_2 = trim($_POST['code_2']);
|
||||
$code_3 = trim($_POST['code_3']);
|
||||
$code_4 = trim($_POST['code_4']);
|
||||
$code_5 = trim($_POST['code_5']);
|
||||
$title = trim($_POST['title']);
|
||||
$file = (!empty($_POST['file'])) ? trim($_POST['file']) : '';
|
||||
$code_1 = (!empty($_POST['code_1'])) ? trim($_POST['code_1']) : '';
|
||||
$code_2 = (!empty($_POST['code_2'])) ? trim($_POST['code_2']) : '';
|
||||
$code_3 = (!empty($_POST['code_3'])) ? trim($_POST['code_3']) : '';
|
||||
$code_4 = (!empty($_POST['code_4'])) ? trim($_POST['code_4']) : '';
|
||||
$code_5 = (!empty($_POST['code_5'])) ? trim($_POST['code_5']) : '';
|
||||
$title = (!empty($_POST['title'])) ? trim($_POST['title']) : '';
|
||||
|
||||
if (!file_exists('images/smilies/'.$file)) $errors[] = 'smiley_file_doesnt_exist';
|
||||
if ($code_1 == '' && $code_2 == '' && $code_3 == '' && $code_4 == '' && $code_5 == '') $errors[] = 'smiley_code_empty';
|
||||
|
@ -1009,6 +936,154 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
die();
|
||||
}
|
||||
|
||||
if (isset($_GET['action']) and $_GET['action'] == 'reset_tou') {
|
||||
mysqli_query($connid, "UPDATE ". $db_settings['userdata_table'] ." SET tou_accepted = NULL");
|
||||
header("location: index.php?mode=admin&action=user");
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_GET['action']) and $_GET['action'] == 'reset_dps') {
|
||||
mysqli_query($connid, "UPDATE ". $db_settings['userdata_table'] ." SET dps_accepted = NULL");
|
||||
header("location: index.php?mode=admin&action=user");
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_selected_uploads']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['manage_uploads'])) {
|
||||
$selected = $_POST['manage_uploads'];
|
||||
$selected_uploads_count = count($selected);
|
||||
for ($x=0; $x<$selected_uploads_count; $x++) {
|
||||
$selected_uploads[$x]['name'] = htmlspecialchars($selected[$x]);
|
||||
}
|
||||
$action = 'delete_uploads';
|
||||
}
|
||||
else $action = 'list_uploads';
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_uploads_confirmed']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['selected_confirmed'])) {
|
||||
foreach ($_POST['selected_confirmed'] as $upload_rm) {
|
||||
$qDelUploadEntry = "DELETE FROM ". $db_settings['uploads_table'] ."
|
||||
WHERE pathname = '". mysqli_real_escape_string($connid, $upload_rm) ."'";
|
||||
$rDelUploadEntry = mysqli_query($connid, $qDelUploadEntry);
|
||||
if ($rDelUploadEntry !== false) {
|
||||
$path_rm = 'images/uploaded/'. $upload_rm;
|
||||
if (file_exists($path_rm)) {
|
||||
@chmod($path_rm, 0777);
|
||||
@unlink($path_rm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
header("location: index.php?mode=admin&action=list_uploads");
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_POST['record_selected_uploads']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['manage_uploads'])) {
|
||||
$selected = $_POST['manage_uploads'];
|
||||
$selected_uploads_count = count($selected);
|
||||
$rec_row = [];
|
||||
for ($x = 0; $x < $selected_uploads_count; $x++) {
|
||||
// search for the first occurence of the image in a posting,
|
||||
// determine the ID of the posting author,
|
||||
// assume that it's the uploader
|
||||
$qUploadName = "SELECT
|
||||
user_id
|
||||
FROM ". $db_settings['forum_table'] ."
|
||||
WHERE text LIKE '%". mysqli_real_escape_string($connid, $selected[$x]) ."%'
|
||||
ORDER BY time ASC
|
||||
LIMIT 1";
|
||||
$rUploadName = mysqli_query($connid, $qUploadName);
|
||||
if ($rUploadName !== false && mysqli_num_rows($rUploadName) == 1) {
|
||||
$row = mysqli_fetch_assoc($rUploadName);
|
||||
$uploadAuthor = intval($row['user_id']);
|
||||
if ($uploadAuthor <= 0)
|
||||
$uploadAuthor = "Null";
|
||||
} else {
|
||||
$uploadAuthor = "Null";
|
||||
}
|
||||
// generate a row insert block for use in a statement to inserting multiple rows at once
|
||||
$tstamp_temp = substr($selected[$x], 0, 14);
|
||||
$tstamp = substr($tstamp_temp, 0, 4) ."-". substr($tstamp_temp, 4, 2) ."-". substr($tstamp_temp, 6, 2) ." ". substr($tstamp_temp, 8, 2) .":". substr($tstamp_temp, 10, 2) .":" .substr($tstamp_temp, 12, 2);
|
||||
$rec_row[] = "(". $uploadAuthor .", '". mysqli_real_escape_string($connid, $selected[$x]) ."', '". mysqli_real_escape_string($connid, $tstamp) ."')";
|
||||
}
|
||||
$qInsertUploadData = "INSERT INTO `". $db_settings['uploads_table'] ."` (`uploader`, `pathname`, `tstamp`)
|
||||
VALUES ". join(",\n", $rec_row) ."
|
||||
ON DUPLICATE KEY UPDATE `pathname` = `pathname`";
|
||||
$rInsertUploadData = mysqli_query($connid, $qInsertUploadData);
|
||||
}
|
||||
$filterString = (isset($_POST['filter']) && in_array($_POST['filter'], ['not-managed-images', 'managed-images'])) ? '&filter='. urlencode($_POST['filter']) : '';
|
||||
header("location: index.php?mode=admin&action=list_uploads". $filterString);
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_GET['action']) and $_GET['action'] == 'list_uploads') {
|
||||
$images = [];
|
||||
$listed = [];
|
||||
$rUploadList = mysqli_query($connid, "SELECT pathname FROM ". $db_settings['uploads_table']);
|
||||
if ($rUploadList !== false && mysqli_num_rows($rUploadList) > 0) {
|
||||
while ($row = mysqli_fetch_assoc($rUploadList)) {
|
||||
$listed[] = $row['pathname'];
|
||||
}
|
||||
}
|
||||
|
||||
$uploaded_images_path = 'images/uploaded/';
|
||||
$browse_images = (isset($_GET['browse_images']) && $_GET['browse_images'] > 0) ? intval($_GET['browse_images']) : 1;
|
||||
$i = 0;
|
||||
$handle = opendir($uploaded_images_path);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.(gif|png|jpe?g|svg|webp)$/i', $file)) {
|
||||
$images[$i]['number'] = $i;
|
||||
$images[$i]['pathname'] = $file;
|
||||
if (empty($listed) || (!empty($listed) && !in_array($file, $listed))) {
|
||||
$images[$i]['status'] = 0;
|
||||
} else {
|
||||
$images[$i]['status'] = 1;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
unset($i, $listed);
|
||||
|
||||
if ($images) {
|
||||
if (isset($_GET['filter']) && in_array($_GET['filter'], ['not-managed-images', 'managed-images'])) {
|
||||
if ($_GET['filter'] == 'not-managed-images') {
|
||||
$liveFilter['criterium'] = 'status';
|
||||
$liveFilter['value'] = 0;
|
||||
} else {
|
||||
$liveFilter['criterium'] = 'status';
|
||||
$liveFilter['value'] = 1;
|
||||
}
|
||||
$filter = $_GET['filter'];
|
||||
$images = filter2DArrayWithKeyNValue($images, $liveFilter['criterium'], $liveFilter['value']);
|
||||
}
|
||||
$sort_array = [];
|
||||
foreach ($images as $image) {
|
||||
$sort_array[] = $image['pathname'];
|
||||
}
|
||||
array_multisort($sort_array, SORT_DESC, $images);
|
||||
unset($sort_array);
|
||||
$page_browse['total_items'] = count($images);
|
||||
$page_browse['items_per_page'] = $settings['uploads_per_page'];
|
||||
$total_pages = ceil($page_browse['total_items'] / $page_browse['items_per_page']);
|
||||
$page_browse['page'] = isset($_GET['page']) ? intval($_GET['page']) : 1;
|
||||
$page_browse['page'] = ($page_browse['page'] > $total_pages) ? $total_pages : $page_browse['page'];
|
||||
$page_browse['page'] = ($page_browse['page'] < 1) ? 1 : $page_browse['page'];
|
||||
$page_browse['browse_array'][] = ($page_browse['page'] > 5) ? 0 : 1;
|
||||
for ($browse = $page_browse['page'] - 3; $browse < $page_browse['page'] + 4; $browse++) {
|
||||
if ($browse > 1 && $browse < $total_pages) $page_browse['browse_array'][] = $browse;
|
||||
}
|
||||
if ($page_browse['page'] < $total_pages - 4) $page_browse['browse_array'][] = 0;
|
||||
if ($total_pages > 1) $page_browse['browse_array'][] = $total_pages;
|
||||
$page_browse['next_page'] = ($page_browse['page'] < $total_pages) ? $page_browse['page'] + 1 : 0;
|
||||
$page_browse['previous_page'] = ($page_browse['page'] > 1) ? $page_browse['page'] - 1 : 0;
|
||||
$start = $page_browse['page'] * $page_browse['items_per_page'] - $page_browse['items_per_page'];
|
||||
}
|
||||
$action = 'list_uploads';
|
||||
}
|
||||
|
||||
if (empty($action)) $action='main';
|
||||
$smarty->assign('action', $action);
|
||||
|
||||
|
@ -1111,9 +1186,9 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$ul = ($page-1) * $settings['users_per_page'];
|
||||
|
||||
if (isset($search_user)) {
|
||||
$result = @mysqli_query($connid, "SELECT user_id, user_name COLLATE utf8_general_ci AS user_name, user_type, user_email, logins, UNIX_TIMESTAMP(last_login + INTERVAL ". $time_difference ." MINUTE) AS last_login_time, UNIX_TIMESTAMP(registered + INTERVAL ". $time_difference ." MINUTE) AS registered_time, user_lock, activate_code FROM ".$db_settings['userdata_table']." WHERE concat(lower(user_name),lower(user_email)) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%' ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page']));
|
||||
$result = @mysqli_query($connid, "SELECT user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, logins, UNIX_TIMESTAMP(last_login + INTERVAL ". $time_difference ." MINUTE) AS last_login_time, UNIX_TIMESTAMP(registered + INTERVAL ". $time_difference ." MINUTE) AS registered_time, user_lock, activate_code FROM ".$db_settings['userdata_table']." WHERE concat(lower(user_name),lower(user_email)) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%' ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page']));
|
||||
} else {
|
||||
$result = @mysqli_query($connid, "SELECT user_id, user_name COLLATE utf8_general_ci AS user_name, user_type, user_email, logins, UNIX_TIMESTAMP(last_login + INTERVAL ". $time_difference ." MINUTE) AS last_login_time, UNIX_TIMESTAMP(registered + INTERVAL ". $time_difference ." MINUTE) AS registered_time, user_lock, activate_code FROM ".$db_settings['userdata_table']." ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page']));
|
||||
$result = @mysqli_query($connid, "SELECT user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, logins, UNIX_TIMESTAMP(last_login + INTERVAL ". $time_difference ." MINUTE) AS last_login_time, UNIX_TIMESTAMP(registered + INTERVAL ". $time_difference ." MINUTE) AS registered_time, user_lock, activate_code FROM ".$db_settings['userdata_table']." ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page']));
|
||||
}
|
||||
$result_count = mysqli_num_rows($result);
|
||||
|
||||
|
@ -1155,9 +1230,9 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$userdata[$i]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
$userdata[$i]['user_email'] = htmlspecialchars($row['user_email']);
|
||||
$userdata[$i]['user_type'] = intval($row['user_type']);
|
||||
$userdata[$i]['registered_time'] = htmlspecialchars($row['registered_time']);
|
||||
$userdata[$i]['registered_time'] = htmlspecialchars(format_time($lang['time_format'], $row['registered_time']));
|
||||
$userdata[$i]['logins'] = intval($row['logins']);
|
||||
$userdata[$i]['last_login_time'] = htmlspecialchars($row['last_login_time']);
|
||||
$userdata[$i]['last_login_time'] = htmlspecialchars(format_time($lang['time_format'], $row['last_login_time']));
|
||||
$userdata[$i]['user_lock'] = $row['user_lock'];
|
||||
if ($row['activate_code'] != '') $userdata[$i]['inactive'] = true;
|
||||
$i++;
|
||||
|
@ -1180,19 +1255,22 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('breadcrumbs',$breadcrumbs);
|
||||
$smarty->assign('subnav_location','subnav_settings');
|
||||
if (isset($_GET['saved'])) $smarty->assign('saved', true);
|
||||
|
||||
$rGetSettingsEdit = mysqli_query($connid, "SELECT name, value FROM " . $db_settings['settings_table']);
|
||||
while ($line = mysqli_fetch_assoc($rGetSettingsEdit)) {
|
||||
$settings_array[$line['name']] = $line['value'];
|
||||
}
|
||||
$smarty->assign('edSet', $settings_array);
|
||||
// languages
|
||||
$languages = get_languages(true);
|
||||
if (isset($languages) && count($languages) > 1) {
|
||||
$smarty->assign('languages', $languages);
|
||||
}
|
||||
|
||||
// themes
|
||||
$themes = get_themes(true);
|
||||
if(isset($themes) && count($themes) > 1) {
|
||||
$smarty->assign('themes', $themes);
|
||||
}
|
||||
|
||||
if (isset($settings['time_difference'])) $std = $settings['time_difference']; else $std = 0;
|
||||
|
||||
$std = (isset($settings['time_difference'])) ? intval($settings['time_difference']) : 0;
|
||||
// time zones:
|
||||
if(function_exists('date_default_timezone_set') && $time_zones = get_timezones()) {
|
||||
$smarty->assign('time_zones', $time_zones);
|
||||
|
@ -1206,17 +1284,17 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_advanced_settings');
|
||||
if (isset($_GET['saved'])) $smarty->assign('saved', true);
|
||||
|
||||
$settings_sorted = $settings;
|
||||
ksort($settings_sorted);
|
||||
|
||||
$rGetSettingsEdit = mysqli_query($connid, "SELECT name, value FROM " . $db_settings['settings_table'] ." ORDER BY name ASC");
|
||||
while ($line = mysqli_fetch_assoc($rGetSettingsEdit)) {
|
||||
$settings_array[$line['name']] = $line['value'];
|
||||
}
|
||||
$i=0;
|
||||
while(list($key, $val) = each($settings_sorted)) {
|
||||
$settings_sorted_array[$i]['key'] = $key;
|
||||
$settings_sorted_array[$i]['val'] = $val;
|
||||
foreach ($settings_array as $key => $val) {
|
||||
$settings_sorted[$i]['key'] = $key;
|
||||
$settings_sorted[$i]['val'] = $val;
|
||||
$i++;
|
||||
}
|
||||
$smarty->assign('settings_sorted',$settings_sorted_array);
|
||||
$smarty->assign('settings_sorted',$settings_sorted);
|
||||
break;
|
||||
case "delete_users":
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=admin';
|
||||
|
@ -1247,59 +1325,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_edit_category');
|
||||
break;
|
||||
case "backup":
|
||||
if (isset($_GET['msg'])) {
|
||||
switch ($_GET['msg']) {
|
||||
case 'backup_file_created': $smarty->assign('message', 'backup_file_created'); break;
|
||||
case 'restore_backup_ok': $smarty->assign('message', 'restore_backup_ok'); break;
|
||||
}
|
||||
}
|
||||
$fp = opendir('backup/');
|
||||
while ($file = readdir($fp)) {
|
||||
if (preg_match('/\.sql$/i', $file)) {
|
||||
$files[$file] = filemtime('backup/'.$file);
|
||||
}
|
||||
}
|
||||
closedir($fp);
|
||||
|
||||
if (isset($files)) {
|
||||
arsort($files); // order by date
|
||||
$i = 0;
|
||||
while(list($key, $val) = each($files)) {
|
||||
$backup_files[$i]['file'] = htmlspecialchars($key);
|
||||
$backup_files[$i]['date'] = $val;
|
||||
$backup_files[$i]['size'] = number_format(filesize('backup/'.$key) / 1048576,2) .' MB';
|
||||
$i++;
|
||||
}
|
||||
$smarty->assign('backup_files',$backup_files);
|
||||
}
|
||||
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=admin';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_admin_area';
|
||||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_backup');
|
||||
break;
|
||||
case 'delete_backup_files_confirm':
|
||||
$smarty->assign('delete_backup_files', $_REQUEST['delete_backup_files']);
|
||||
$smarty->assign('file_number', count($_REQUEST['delete_backup_files']));
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=admin';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_admin_area';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=admin&action=backup';
|
||||
$breadcrumbs[1]['linkname'] = 'subnav_backup';
|
||||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_delete_backup_file');
|
||||
break;
|
||||
case 'restore':
|
||||
$smarty->assign('backup_file', $backup_file);
|
||||
$smarty->assign('backup_file_date', filemtime('backup/'.$backup_file));
|
||||
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=admin';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_admin_area';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=admin&action=backup';
|
||||
$breadcrumbs[1]['linkname'] = 'subnav_backup';
|
||||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_restore');
|
||||
break;
|
||||
case 'update':
|
||||
if ($fp=@opendir('update/')) {
|
||||
$i = 0;
|
||||
|
@ -1386,13 +1411,16 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('captcha_email', $settings['captcha_email']);
|
||||
$smarty->assign('captcha_register', $settings['captcha_register']);
|
||||
$smarty->assign('stop_forum_spam', $settings['stop_forum_spam']);
|
||||
$smarty->assign('bad_behavior', $settings['bad_behavior']);
|
||||
$smarty->assign('akismet_key', $settings['akismet_key']);
|
||||
$smarty->assign('akismet_entry_check', $settings['akismet_entry_check']);
|
||||
$smarty->assign('akismet_mail_check', $settings['akismet_mail_check']);
|
||||
$smarty->assign('akismet_check_registered', $settings['akismet_check_registered']);
|
||||
$smarty->assign('save_spam', $settings['save_spam']);
|
||||
$smarty->assign('auto_delete_spam', $settings['auto_delete_spam']);
|
||||
$smarty->assign('spam_check_registered', $settings['spam_check_registered']);
|
||||
$smarty->assign('b8_entry_check', $settings['b8_entry_check']);
|
||||
$smarty->assign('b8_mail_check', $settings['b8_mail_check']);
|
||||
$smarty->assign('b8_auto_training', $settings['b8_auto_training']);
|
||||
$smarty->assign('b8_spam_probability_threshold', $settings['b8_spam_probability_threshold']);
|
||||
break;
|
||||
case "smilies":
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=admin';
|
||||
|
@ -1407,7 +1435,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
|
||||
$fp = opendir('images/smilies/');
|
||||
while ($file = readdir($fp)) {
|
||||
if (preg_match('/\.gif$/i', $file) || preg_match('/\.png$/i', $file) || preg_match('/\.jpg$/i', $file)) {
|
||||
if (preg_match('/\.(gif|png|jpg|svg)$/i', $file)) {
|
||||
$smiley_files[] = $file;
|
||||
}
|
||||
}
|
||||
|
@ -1429,11 +1457,11 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
|
||||
unset($codes);
|
||||
if (trim($line['code_1']) != '') $codes[] = $line['code_1'];
|
||||
if (trim($line['code_2']) != '') $codes[] = $line['code_2'];
|
||||
if (trim($line['code_3']) != '') $codes[] = $line['code_3'];
|
||||
if (trim($line['code_4']) != '') $codes[] = $line['code_4'];
|
||||
if (trim($line['code_5']) != '') $codes[] = $line['code_5'];
|
||||
if (!empty($line['code_1']) && trim($line['code_1']) != '') $codes[] = $line['code_1'];
|
||||
if (!empty($line['code_2']) && trim($line['code_2']) != '') $codes[] = $line['code_2'];
|
||||
if (!empty($line['code_3']) && trim($line['code_3']) != '') $codes[] = $line['code_3'];
|
||||
if (!empty($line['code_4']) && trim($line['code_4']) != '') $codes[] = $line['code_4'];
|
||||
if (!empty($line['code_5']) && trim($line['code_5']) != '') $codes[] = $line['code_5'];
|
||||
$codes_disp = implode(' ',$codes);
|
||||
|
||||
$smilies[$i]['id'] = $line['id'];
|
||||
|
@ -1464,7 +1492,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
|
||||
$fp = opendir('images/smilies/');
|
||||
while ($smiley_file = readdir($fp)) {
|
||||
if (preg_match('/\.gif$/i', $smiley_file) || preg_match('/\.png$/i', $smiley_file) || preg_match('/\.jpg$/i', $smiley_file)) {
|
||||
if (preg_match('/\.(gif|png|jpg|svg)$/i', $smiley_file)) {
|
||||
$smiley_files[] = $smiley_file;
|
||||
}
|
||||
}
|
||||
|
@ -1496,16 +1524,20 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('subnav_location', 'subnav_reset_uninstall');
|
||||
break;
|
||||
case 'spam_protection_submit':
|
||||
$akismet_key = trim($_POST['akismet_key']);
|
||||
$akismet_key = (!empty($_POST['akismet_key'])) ? trim($_POST['akismet_key']) : '';
|
||||
if (empty($_POST['stop_forum_spam'])) $stop_forum_spam = 0; else $stop_forum_spam = 1;
|
||||
if (empty($_POST['bad_behavior'])) $bad_behavior = 0; else $bad_behavior = 1;
|
||||
if (isset($_POST['captcha_posting'])) $captcha_posting = intval($_POST['captcha_posting']); else $captcha_posting = 0;
|
||||
if (isset($_POST['captcha_email'])) $captcha_email = intval($_POST['captcha_email']); else $captcha_email = 0;
|
||||
if (isset($_POST['captcha_register'])) $captcha_register = intval($_POST['captcha_register']); else $captcha_register = 0;
|
||||
if (empty($_POST['akismet_entry_check'])) $akismet_entry_check = 0; else $akismet_entry_check = 1;
|
||||
if (empty($_POST['akismet_mail_check'])) $akismet_mail_check = 0; else $akismet_mail_check = 1;
|
||||
if (empty($_POST['akismet_check_registered'])) $akismet_check_registered = 0; else $akismet_check_registered = 1;
|
||||
if (empty($_POST['save_spam'])) $save_spam = 0; else $save_spam = 1;
|
||||
if (empty($_POST['spam_check_registered'])) $spam_check_registered = 0; else $spam_check_registered = 1;
|
||||
if (empty($_POST['b8_entry_check'])) $b8_entry_check = 0; else $b8_entry_check = 1;
|
||||
if (empty($_POST['b8_mail_check'])) $b8_mail_check = 0; else $b8_mail_check = 1;
|
||||
if (empty($_POST['b8_auto_training'])) $b8_auto_training = 0; else $b8_auto_training = 1;
|
||||
if (isset($_POST['b8_spam_probability_threshold'])) $b8_spam_probability_threshold = intval($_POST['b8_spam_probability_threshold']);
|
||||
$b8_spam_probability_threshold = min(100, max(0, $b8_spam_probability_threshold));
|
||||
|
||||
// check akismet API key:
|
||||
if ($akismet_key != '') {
|
||||
|
@ -1525,33 +1557,36 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
|
||||
// banists:
|
||||
if (trim($_POST['banned_ips']) != '') {
|
||||
if (!empty($_POST['banned_ips']) && trim($_POST['banned_ips']) != '') {
|
||||
$banned_ips_array = preg_split('/\015\012|\015|\012/',$_POST['banned_ips']);
|
||||
foreach ($banned_ips_array as $banned_ip) {
|
||||
if (trim($banned_ip) != '') $banned_ips_array_checked[] = trim($banned_ip);
|
||||
if (!empty($banned_ip) && trim($banned_ip) != '') $banned_ips_array_checked[] = trim($banned_ip);
|
||||
}
|
||||
$banned_ips_array_checked = array_unique($banned_ips_array_checked);
|
||||
natcasesort($banned_ips_array_checked);
|
||||
$banned_ips = implode("\n", $banned_ips_array_checked);
|
||||
if (is_ip_banned($_SERVER['REMOTE_ADDR'], $banned_ips_array_checked)) $errors[] = 'error_own_ip_banned';
|
||||
}
|
||||
else $banned_ips = '';
|
||||
|
||||
if (trim($_POST['banned_user_agents']) != '') {
|
||||
if (!empty($_POST['banned_user_agents']) && trim($_POST['banned_user_agents']) != '') {
|
||||
$banned_user_agents_array = preg_split('/\015\012|\015|\012/', $_POST['banned_user_agents']);
|
||||
foreach ($banned_user_agents_array as $banned_user_agent) {
|
||||
if (trim($banned_user_agent) != '') $banned_user_agents_array_checked[] = trim($banned_user_agent);
|
||||
if (!empty($banned_user_agent) && trim($banned_user_agent) != '') $banned_user_agents_array_checked[] = trim($banned_user_agent);
|
||||
}
|
||||
$banned_user_agents_array_checked = array_unique($banned_user_agents_array_checked);
|
||||
natcasesort($banned_user_agents_array_checked);
|
||||
$banned_user_agents = implode("\n", $banned_user_agents_array_checked);
|
||||
if (is_user_agent_banned($_SERVER['HTTP_USER_AGENT'], $banned_user_agents_array_checked)) $errors[] = 'error_own_user_agent_banned';
|
||||
}
|
||||
else $banned_user_agents = '';
|
||||
|
||||
if (trim($_POST['not_accepted_words']) != '') {
|
||||
if (!empty($_POST['not_accepted_words']) && trim($_POST['not_accepted_words']) != '') {
|
||||
$not_accepted_words_array = preg_split('/\015\012|\015|\012/',$_POST['not_accepted_words']);
|
||||
foreach ($not_accepted_words_array as $not_accepted_word) {
|
||||
if (trim($not_accepted_word) != '') $not_accepted_words_array_checked[] = trim($not_accepted_word);
|
||||
if (!empty($not_accepted_word) && trim($not_accepted_word) != '') $not_accepted_words_array_checked[] = trim($not_accepted_word);
|
||||
}
|
||||
$not_accepted_words_array_checked = array_unique($not_accepted_words_array_checked);
|
||||
natcasesort($not_accepted_words_array_checked);
|
||||
$not_accepted_words = implode("\n", $not_accepted_words_array_checked);
|
||||
}
|
||||
|
@ -1562,20 +1597,23 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $captcha_email) ."' WHERE name = 'captcha_email'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $captcha_register) ."' WHERE name = 'captcha_register'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $stop_forum_spam) ."' WHERE name = 'stop_forum_spam'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $bad_behavior) ."' WHERE name = 'bad_behavior'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $akismet_key) ."' WHERE name = 'akismet_key'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($akismet_entry_check) ."' WHERE name = 'akismet_entry_check'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($akismet_mail_check) ."' WHERE name = 'akismet_mail_check'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($akismet_check_registered) ."' WHERE name = 'akismet_check_registered'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($save_spam)."' WHERE name = 'save_spam'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($_POST['auto_delete_spam']) ."' WHERE name = 'auto_delete_spam'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['banlists_table']." SET list = '". mysqli_real_escape_string($connid, $banned_ips) ."' WHERE name = 'ips'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['banlists_table']." SET list = '". mysqli_real_escape_string($connid, $banned_user_agents) ."' WHERE name = 'user_agents'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['banlists_table']." SET list = '". mysqli_real_escape_string($connid, $not_accepted_words) ."' WHERE name = 'words'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($spam_check_registered) ."' WHERE name = 'spam_check_registered'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($b8_entry_check) ."' WHERE name = 'b8_entry_check'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($b8_mail_check) ."' WHERE name = 'b8_mail_check'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($b8_auto_training) ."' WHERE name = 'b8_auto_training'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($b8_spam_probability_threshold) ."' WHERE name = 'b8_spam_probability_threshold'");
|
||||
|
||||
if (trim($banned_ips) == '' && trim($banned_user_agents) == '') $access_permission_checks = 0;
|
||||
if ((!empty($banned_ips) && trim($banned_ips) == '') && (!empty($banned_user_agents) && trim($banned_user_agents) == '')) $access_permission_checks = 0;
|
||||
else $access_permission_checks = 1;
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". mysqli_real_escape_string($connid, $access_permission_checks) ."' WHERE name = 'access_permission_checks'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['temp_infos_table']." SET value = '". intval($access_permission_checks) ."' WHERE name = 'access_permission_checks'");
|
||||
|
||||
header("Location: index.php?mode=admin&action=spam_protection&saved=true");
|
||||
exit;
|
||||
|
@ -1585,16 +1623,19 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('captcha_email', $captcha_email);
|
||||
$smarty->assign('captcha_register', $captcha_register);
|
||||
$smarty->assign('stop_forum_spam', $stop_forum_spam);
|
||||
$smarty->assign('bad_behavior', $bad_behavior);
|
||||
$smarty->assign('akismet_key', htmlspecialchars($akismet_key));
|
||||
$smarty->assign('akismet_entry_check', $akismet_entry_check);
|
||||
$smarty->assign('akismet_mail_check', $akismet_mail_check);
|
||||
$smarty->assign('akismet_check_registered', $akismet_check_registered);
|
||||
$smarty->assign('save_spam', $save_spam);
|
||||
$smarty->assign('auto_delete_spam', $_POST['auto_delete_spam']);
|
||||
$smarty->assign('banned_ips', htmlspecialchars($_POST['banned_ips']));
|
||||
$smarty->assign('banned_user_agents', htmlspecialchars($_POST['banned_user_agents']));
|
||||
$smarty->assign('not_accepted_words', htmlspecialchars($_POST['not_accepted_words']));
|
||||
$smarty->assign('spam_check_registered', $spam_check_registered);
|
||||
$smarty->assign('b8_entry_check', $b8_entry_check);
|
||||
$smarty->assign('b8_mail_check', $b8_mail_check);
|
||||
$smarty->assign('b8_auto_training', $b8_auto_training);
|
||||
$smarty->assign('b8_spam_probability_threshold', $b8_spam_probability_threshold);
|
||||
$smarty->assign('errors', $errors);
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=admin';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_admin_area';
|
||||
|
@ -1750,6 +1791,30 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
}
|
||||
exit;
|
||||
break;
|
||||
case 'list_uploads':
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=admin';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_admin_area';
|
||||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_list_uploads');
|
||||
if ($images) {
|
||||
$smarty->assign('user_page_browse', $page_browse);
|
||||
$smarty->assign('pagination', pagination($total_pages, $page_browse['page'], 3));
|
||||
$smarty->assign('images_per_page', $page_browse['items_per_page']);
|
||||
$smarty->assign('images', $images);
|
||||
if (isset($start)) $smarty->assign('start', $start);
|
||||
if (isset($filter)) $smarty->assign('filter', $filter);
|
||||
}
|
||||
break;
|
||||
case 'delete_uploads':
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=admin';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_admin_area';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=admin&action=list_uploads';
|
||||
$breadcrumbs[1]['linkname'] = 'subnav_list_uploads';
|
||||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_confirm_delete_uploads');
|
||||
$smarty->assign('selected_uploads', $selected_uploads);
|
||||
$smarty->assign('selected_uploads_count', $selected_uploads_count);
|
||||
break;
|
||||
}
|
||||
|
||||
// show the version number of the installation
|
||||
|
@ -1773,7 +1838,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
mysqli_free_result($lastVersionURI);
|
||||
|
||||
if ($lastVC !== NULL) {
|
||||
$smarty->assign('latest_release_uri', $lastVU == NULL ? "https://github.com/ilosuna/mylittleforum/releases/latest" : htmlspecialchars($lastVU['uri']));
|
||||
$smarty->assign('latest_release_uri', $lastVU == NULL ? "https://github.com/My-Little-Forum/mylittleforum/releases/latest" : htmlspecialchars($lastVU['uri']));
|
||||
$smarty->assign('latest_release_version', htmlspecialchars($lastVC['version']));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,10 @@ if (empty($_SESSION[$settings['session_prefix'].'user_id']) && isset($_COOKIE[$s
|
|||
$auto_login_code = substr($_COOKIE[$settings['session_prefix'].'auto_login'], 0, 50);
|
||||
$auto_login_id = intval(substr($_COOKIE[$settings['session_prefix'].'auto_login'], 50));
|
||||
if (isset($auto_login_id) && $auto_login_id > 0 && isset($auto_login_code) && trim($auto_login_code) != '') {
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name, user_pw, user_type, UNIX_TIMESTAMP(last_login) AS last_login, UNIX_TIMESTAMP(last_logout) AS last_logout, thread_order, user_view, sidebar, fold_threads, thread_display, category_selection, auto_login_code, activate_code, language, time_zone, time_difference, theme FROM ". $db_settings['userdata_table'] ." WHERE user_id = ". intval($auto_login_id)) or raise_error('database_error', mysqli_error($connid));
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name, user_pw, user_type, UNIX_TIMESTAMP(last_login) AS last_login, UNIX_TIMESTAMP(last_logout) AS last_logout, thread_order, user_view, sidebar, fold_threads, thread_display, category_selection, browser_window_target, auto_login_code, activate_code, language, time_zone, time_difference, theme FROM ". $db_settings['userdata_table'] ." WHERE user_id = ". intval($auto_login_id)) or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
$feld = mysqli_fetch_array($result);
|
||||
if (strlen($feld['auto_login_code']) == 50 && $auto_login_code == $feld['auto_login_code'] && trim($feld['activate_code'] == '')) {
|
||||
if (strlen($feld['auto_login_code']) == 50 && $auto_login_code == $feld['auto_login_code'] && empty($feld['activate_code'])) {
|
||||
$user_id = $feld['user_id'];
|
||||
$user_name = $feld['user_name'];
|
||||
$user_type = $feld['user_type'];
|
||||
|
@ -21,6 +21,7 @@ if (empty($_SESSION[$settings['session_prefix'].'user_id']) && isset($_COOKIE[$s
|
|||
$usersettings['sidebar'] = $feld['sidebar'];
|
||||
$usersettings['fold_threads'] = $feld['fold_threads'];
|
||||
$usersettings['thread_display'] = $feld['thread_display'];
|
||||
$usersettings['browser_window_target'] = $feld['browser_window_target'];
|
||||
$usersettings['page'] = 1;
|
||||
$usersettings['category'] = 0;
|
||||
$usersettings['latest_postings'] = 1;
|
||||
|
@ -65,24 +66,22 @@ if (empty($_SESSION[$settings['session_prefix'].'user_id']) && isset($_COOKIE[$s
|
|||
$_SESSION[$settings['session_prefix'].'user_type'] = $user_type;
|
||||
$_SESSION[$settings['session_prefix'].'usersettings'] = $usersettings;
|
||||
|
||||
@mysqli_query($connid, "UPDATE ". $db_settings['userdata_table'] ." SET logins=logins+1, last_login=NOW(), last_logout=NOW(), user_ip='". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."', pwf_code='', language='". mysqli_real_escape_string($connid, $language_update) ."', time_zone='". mysqli_real_escape_string($connid, $time_zone_update) ."', theme='". mysqli_real_escape_string($connid, $theme_update) ."' WHERE user_id=". intval($user_id));
|
||||
@mysqli_query($connid, "UPDATE ". $db_settings['userdata_table'] ." SET logins=logins+1, last_login=NOW(), last_logout=NOW(), `inactivity_notification` = FALSE, user_ip='". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."', pwf_code='', language='". mysqli_real_escape_string($connid, $language_update) ."', time_zone='". mysqli_real_escape_string($connid, $time_zone_update) ."', theme='". mysqli_real_escape_string($connid, $theme_update) ."' WHERE user_id=". intval($user_id));
|
||||
|
||||
// auto delete spam:
|
||||
if ($user_type > 0 && $settings['auto_delete_spam'] > 0) @mysqli_query($connid, "DELETE FROM ". $db_settings['forum_table'] ." WHERE time < (NOW() - INTERVAL ". intval($settings['auto_delete_spam']) ." HOUR) AND spam = 1");
|
||||
setcookie($settings['session_prefix'].'auto_login', $_COOKIE[$settings['session_prefix'].'auto_login'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'auto_login', $_COOKIE[$settings['session_prefix'].'auto_login'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
if ($db_settings['useronline_table'] != "") {
|
||||
@mysqli_query($connid, "DELETE FROM ". $db_settings['useronline_table'] ." WHERE ip = '". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."'");
|
||||
}
|
||||
} else {
|
||||
if ($settings['temp_block_ip_after_repeated_failed_logins'] > 0) count_failed_logins();
|
||||
setcookie($settings['session_prefix'].'auto_login', '', 0);
|
||||
setcookie($settings['session_prefix'].'auto_login', '', cookie_options(0));
|
||||
}
|
||||
} else {
|
||||
if ($settings['temp_block_ip_after_repeated_failed_logins'] > 0) count_failed_logins();
|
||||
setcookie($settings['session_prefix'].'auto_login', '', 0);
|
||||
setcookie($settings['session_prefix'].'auto_login', '', cookie_options(0));
|
||||
}
|
||||
} else {
|
||||
if($settings['temp_block_ip_after_repeated_failed_logins'] > 0) count_failed_logins();
|
||||
setcookie($settings['session_prefix'].'auto_login','',0);
|
||||
setcookie($settings['session_prefix'].'auto_login','', cookie_options(0));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ if ($settings['avatars'] > 0 && isset($_SESSION[$settings['session_prefix'].'use
|
|||
$filename = $avatarInfo === false ? false : $avatarInfo[1];
|
||||
|
||||
// remove existing avatar
|
||||
if (isset($_GET['delete'])) {
|
||||
if (isset($_POST['delete'])) {
|
||||
if ($filename !== false && file_exists($uploaded_images_path.$filename)) {
|
||||
@chmod($uploaded_images_path.$filename, 0777);
|
||||
@unlink($uploaded_images_path.$filename);
|
||||
|
@ -30,7 +30,6 @@ if ($settings['avatars'] > 0 && isset($_SESSION[$settings['session_prefix'].'use
|
|||
|
||||
if(empty($errors)) {
|
||||
if($_FILES['probe']['size'] > $settings['avatar_max_filesize']*1000 || $image_info[0] > $settings['avatar_max_width'] || $image_info[1] > $settings['avatar_max_height']) {
|
||||
#$compression = 10;
|
||||
$width = $image_info[0];
|
||||
$height = $image_info[1];
|
||||
|
||||
|
|
16
includes/b8.inc.php
Normal file
16
includes/b8.inc.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
if (!defined('IN_INDEX')) {
|
||||
header('Location: ../index.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
// include B8 php resources
|
||||
require 'modules/b8/b8.php';
|
||||
|
||||
// include config
|
||||
require 'config/b8_config.php';
|
||||
|
||||
// create instance
|
||||
//$B8_BAYES_FILTER = new b8($B8_CONFIG_DATABASE_TYPE, $B8_CONFIG_AUTHENTICATION, $B8_CONFIG_LEXER, $B8_CONFIG_DEGENERATOR);
|
||||
$B8_BAYES_FILTER = new b8\b8($B8_CONFIG_DATABASE_TYPE, $B8_CONFIG_STORAGE, $B8_CONFIG_LEXER, $B8_CONFIG_DEGENERATOR);
|
||||
?>
|
|
@ -26,7 +26,14 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
|||
if ($filter !== false) {
|
||||
// split search query at spaces, but not between double quotes:
|
||||
$help_pattern = '[!/*/~/?]'; // pattern to hide spaces between quotes
|
||||
$x_filter = preg_replace_callback("#\"(.+?)\"#is", create_function('$string', 'global $help_pattern; return str_replace(" ",$help_pattern,$string[1]);'), $filter);
|
||||
$x_filter = preg_replace_callback(
|
||||
"#\"(.+?)\"#is",
|
||||
function ($string) {
|
||||
global $help_pattern;
|
||||
return str_replace(" ", $help_pattern,$string[1]);
|
||||
},
|
||||
$filter
|
||||
);
|
||||
$x_filter_array = explode(' ', my_strtolower($x_filter, $lang['charset']));
|
||||
foreach($x_filter_array as $item)
|
||||
$filter_array[] = mysqli_real_escape_string($connid, str_replace($help_pattern, ' ', $item));
|
||||
|
@ -58,17 +65,18 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
|||
|
||||
while ($row = mysqli_fetch_array($bookmark_result)) {
|
||||
$tag = $row['tag'];
|
||||
$tags_array = false;
|
||||
if (!is_null($tag)) {
|
||||
if (my_strpos($tag, ' ', 0, $lang['charset']))
|
||||
$tag_escaped='"'.$tag.'"';
|
||||
else
|
||||
$tag_escaped = $tag;
|
||||
|
||||
if (my_strpos($tag, ' ', 0, $lang['charset']))
|
||||
$tag_escaped='"'.$tag.'"';
|
||||
else
|
||||
$tag_escaped = $tag;
|
||||
|
||||
$tags_array = [
|
||||
'escaped' => urlencode($tag_escaped),
|
||||
'display' => htmlspecialchars($tag),
|
||||
];
|
||||
|
||||
$tags_array = [
|
||||
'escaped' => urlencode($tag_escaped),
|
||||
'display' => htmlspecialchars($tag),
|
||||
];
|
||||
}
|
||||
$bookmarkdata[$row['bid']]['subject'] = htmlspecialchars($row['subject']);
|
||||
$bookmarkdata[$row['bid']]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
$bookmarkdata[$row['bid']]['user_id'] = intval($row['user_id']);
|
||||
|
@ -77,7 +85,8 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
|||
$bookmarkdata[$row['bid']]['bookmark_time'] = format_time($lang['time_format_full'], $row['bookmark_time']);
|
||||
$bookmarkdata[$row['bid']]['posting_time'] = format_time($lang['time_format_full'], $row['disp_time']);
|
||||
$bookmarkdata[$row['bid']]['reply_time'] = format_time($lang['time_format_full'], $row['reply_time']);
|
||||
$bookmarkdata[$row['bid']]['tags'][] = $tags_array;
|
||||
if ($tags_array !== false)
|
||||
$bookmarkdata[$row['bid']]['tags'][] = $tags_array;
|
||||
}
|
||||
|
||||
mysqli_free_result($bookmark_result);
|
||||
|
|
|
@ -1,95 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* creates a backup file with buffering every 500 lines
|
||||
* in order to prevent timeout or exhausting memory size
|
||||
*/
|
||||
class Backup
|
||||
{
|
||||
var $start_time;
|
||||
var $check_time;
|
||||
var $file;
|
||||
var $dump = '';
|
||||
var $queries = 0;
|
||||
var $max_queries = 300;
|
||||
var $errors = Array();
|
||||
|
||||
function Backup()
|
||||
{
|
||||
@set_time_limit(30);
|
||||
$this->start_time = time();
|
||||
$this->check_time = $this->start_time;
|
||||
}
|
||||
|
||||
function set_max_queries($max_queries=500)
|
||||
{
|
||||
$this->max_queries = $max_queries;
|
||||
}
|
||||
|
||||
function set_file($file)
|
||||
{
|
||||
$this->file = $file;
|
||||
}
|
||||
|
||||
function assign($data)
|
||||
{
|
||||
#$this->dump .= utf8_encode($data);
|
||||
$this->dump .= $data;
|
||||
$this->queries++;
|
||||
|
||||
$now = time();
|
||||
if(($now-25) >= $this->check_time)
|
||||
{
|
||||
$this->check_time = $now;
|
||||
@set_time_limit(30);
|
||||
}
|
||||
|
||||
if($this->queries >= $this->max_queries)
|
||||
{
|
||||
// buffer:
|
||||
if(!$this->save()) $buffering_failed = true;
|
||||
$this->queries = 0;
|
||||
}
|
||||
|
||||
if(empty($buffering_failed))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function save()
|
||||
{
|
||||
if($this->dump != '')
|
||||
{
|
||||
if(empty($this->file))
|
||||
{
|
||||
$this->file = 'backup_'.date("YmdHis").'.sql';
|
||||
}
|
||||
if($handle = @fopen($this->file, 'a+'))
|
||||
{
|
||||
#flock($fp, 2);
|
||||
@fwrite($handle, $this->dump);
|
||||
#flock($fp, 3);
|
||||
@fclose($handle);
|
||||
$this->dump = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$write_error = true;
|
||||
}
|
||||
}
|
||||
if(empty($write_error))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errors[] = 'write_error';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -9,42 +9,44 @@ if (empty($_SESSION[$settings['session_prefix'].'user_id']) && $settings['captch
|
|||
$captcha = new Captcha();
|
||||
}
|
||||
|
||||
if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
|
||||
else $action = 'main';
|
||||
if (isset($_REQUEST['action']))
|
||||
$action = $_REQUEST['action'];
|
||||
else
|
||||
$action = 'main';
|
||||
|
||||
if(isset($_POST['message_submit'])) $action = 'message_submit';
|
||||
if(isset($_POST['message_submit']))
|
||||
$action = 'message_submit';
|
||||
|
||||
$isUser = isset($_SESSION[$settings['session_prefix'].'user_type']) && isset($_SESSION[$settings['session_prefix'].'user_id']);
|
||||
$isModOrAdmin = $isUser && ($_SESSION[$settings['session_prefix'].'user_type'] == 1 || $_SESSION[$settings['session_prefix'].'user_type'] == 2);
|
||||
|
||||
switch($action) {
|
||||
case 'main':
|
||||
// sender:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
$result = @mysqli_query($connid, "SELECT user_email FROM ".$db_settings['userdata_table']." WHERE user_id = '".intval($_SESSION[$settings['session_prefix'].'user_id'])."' LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$data = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
$smarty->assign('sender_email', htmlspecialchars($data['user_email']));
|
||||
} else {
|
||||
$smarty->assign('sender_email', '');
|
||||
}
|
||||
// set timestamp for SPAM protection
|
||||
setReceiptTimestamp();
|
||||
|
||||
// sender id
|
||||
$smarty->assign('user_id', isset($_SESSION[$settings['session_prefix'].'user_id']) ? intval($_SESSION[$settings['session_prefix'].'user_id']) : FALSE);
|
||||
|
||||
if (isset($_REQUEST['id'])) {
|
||||
// contact by entry:
|
||||
$result = @mysqli_query($connid, "SELECT user_id, name, email FROM ".$db_settings['forum_table']." WHERE id = ".intval($_REQUEST['id'])." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$result = @mysqli_query($connid, "SELECT user_id AS recipient_user_id, name, email FROM ".$db_settings['forum_table']." WHERE id = ".intval($_REQUEST['id'])." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) != 1) {
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
$data = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if ($data['user_id'] > 0) {
|
||||
if ($data['recipient_user_id'] > 0) {
|
||||
// registered user, get data from userdata table:
|
||||
$result = @mysqli_query($connid, "SELECT user_name, email_contact FROM ".$db_settings['userdata_table']." WHERE user_id = ".intval($data['user_id'])." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$result = @mysqli_query($connid, "SELECT user_name, email_contact FROM ".$db_settings['userdata_table']." WHERE user_id = ".intval($data['recipient_user_id'])." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$userdata = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if ($userdata['email_contact'] != 1) {
|
||||
$smarty->assign('error_message', 'impossible_to_contact');
|
||||
} else {
|
||||
if ($isModOrAdmin || $isUser && $userdata['email_contact'] > 0 || $userdata['email_contact'] == 2) {
|
||||
$smarty->assign('recipient_name', htmlspecialchars($userdata['user_name']));
|
||||
$smarty->assign('recipient_user_id', intval($data['user_id']));
|
||||
$smarty->assign('recipient_user_id', intval($data['recipient_user_id']));
|
||||
} else {
|
||||
$smarty->assign('error_message', 'impossible_to_contact');
|
||||
}
|
||||
} else {
|
||||
// not registered user, get data from forum table:
|
||||
|
@ -55,48 +57,69 @@ switch($action) {
|
|||
$smarty->assign('id', intval($_REQUEST['id']));
|
||||
}
|
||||
}
|
||||
} elseif (isset($_REQUEST['user_id'])) {
|
||||
$result = @mysqli_query($connid, "SELECT user_name, email_contact FROM ".$db_settings['userdata_table']." WHERE user_id = '".intval($_REQUEST['user_id'])."' LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
} elseif (isset($_REQUEST['recipient_user_id'])) {
|
||||
$result = @mysqli_query($connid, "SELECT user_name, email_contact FROM ".$db_settings['userdata_table']." WHERE user_id = '".intval($_REQUEST['recipient_user_id'])."' LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if(mysqli_num_rows($result) != 1) {
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
$userdata = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if ($userdata['email_contact'] != 1) {
|
||||
$smarty->assign('error_message', 'impossible_to_contact');
|
||||
} else {
|
||||
if ($isModOrAdmin || $isUser && $userdata['email_contact'] > 0 || $userdata['email_contact'] == 2) {
|
||||
$smarty->assign('recipient_name', htmlspecialchars($userdata['user_name']));
|
||||
$smarty->assign('recipient_user_id', intval($_REQUEST['user_id']));
|
||||
$smarty->assign('recipient_user_id', intval($_REQUEST['recipient_user_id']));
|
||||
} else {
|
||||
$smarty->assign('error_message', 'impossible_to_contact');
|
||||
}
|
||||
}
|
||||
$_SESSION[$settings['session_prefix'].'formtime'] = TIMESTAMP;
|
||||
break;
|
||||
case 'message_submit':
|
||||
if (isset($_POST['id'])) $id = intval($_POST['id']);
|
||||
if (isset($_POST['user_id'])) $user_id = intval($_POST['user_id']);
|
||||
if (isset($_POST['sender_email'])) $sender_email = trim(preg_replace("/\r/", "", $_POST['sender_email']));
|
||||
if (isset($_POST['text'])) $text = trim($_POST['text']);
|
||||
if (isset($_POST['subject'])) $subject = trim($_POST['subject']);
|
||||
if (isset($_POST['id']))
|
||||
$id = intval($_POST['id']);
|
||||
if (isset($_POST['recipient_user_id']))
|
||||
$recipient_user_id = intval($_POST['recipient_user_id']);
|
||||
if (isset($_POST['text']) && !empty($_POST['text']))
|
||||
$text = trim($_POST['text']);
|
||||
if (isset($_POST['subject']) && !empty($_POST['subject']))
|
||||
$subject = trim($_POST['subject']);
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
$result = @mysqli_query($connid, "SELECT user_email FROM ".$db_settings['userdata_table']." WHERE user_id = '".intval($_SESSION[$settings['session_prefix'].'user_id'])."' LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$data = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
$sender_email = $data['user_email']; // email of reg. user taken from profil
|
||||
$confirmation_mail_to_sender = isset($_POST['confirmation_email']) && intval($_POST['confirmation_email']) == 1 ? TRUE : FALSE;
|
||||
}
|
||||
else {
|
||||
$sender_email = $_POST['sender_email'];
|
||||
$confirmation_mail_to_sender = FALSE;
|
||||
}
|
||||
$sender_email = trim(preg_replace("/\r/", "", $sender_email));
|
||||
|
||||
// check form session and time used to complete the form:
|
||||
if (empty($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if (empty($_SESSION[$settings['session_prefix'].'formtime'])) $errors[] = 'error_invalid_form';
|
||||
else {
|
||||
$time_need = TIMESTAMP - intval($_SESSION[$settings['session_prefix'].'formtime']);
|
||||
if ($time_need < 10) $errors[] = 'error_form_sent_too_fast';
|
||||
elseif ($time_need > 10800) $errors[] = 'error_form_sent_too_slow';
|
||||
unset($_SESSION[$settings['session_prefix'].'formtime']);
|
||||
}
|
||||
setReceiptTimestamp();
|
||||
// if (empty($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if (!isset($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference']) || intval($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference']) <= 0)
|
||||
$errors[] = 'error_invalid_form';
|
||||
else {
|
||||
if ($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference'] < $settings['min_email_time'])
|
||||
$errors[] = 'error_form_sent_too_fast';
|
||||
elseif ($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference'] > $settings['max_email_time'])
|
||||
$errors[] = 'error_form_sent_too_slow';
|
||||
}
|
||||
|
||||
if (empty($errors)) {
|
||||
if (empty($sender_email) || $sender_email == '') $errors[] = 'error_message_no_email';
|
||||
elseif (!is_valid_email($sender_email)) $errors[] = 'error_email_invalid';
|
||||
if (empty($subject) || $subject == '') $errors[] = 'error_message_no_subject';
|
||||
if (empty($text) || $text == '') $errors[] = 'error_message_no_text';
|
||||
if (my_strlen($subject, $lang['charset']) > $settings['email_subject_maxlength']) $errors[] = 'error_email_subject_too_long';
|
||||
if (my_strlen($text, $lang['charset']) > $settings['email_text_maxlength']) $errors[] = 'error_email_text_too_long';
|
||||
if (empty($sender_email) || $sender_email == '')
|
||||
$errors[] = 'error_message_no_email';
|
||||
elseif (!is_valid_email($sender_email))
|
||||
$errors[] = 'error_email_invalid';
|
||||
if (empty($subject) || $subject == '')
|
||||
$errors[] = 'error_message_no_subject';
|
||||
if (empty($text) || $text == '')
|
||||
$errors[] = 'error_message_no_text';
|
||||
if (my_strlen($subject, $lang['charset']) > $settings['email_subject_maxlength'])
|
||||
$errors[] = 'error_email_subject_too_long';
|
||||
if (my_strlen($text, $lang['charset']) > $settings['email_text_maxlength'])
|
||||
$errors[] = 'error_email_text_too_long';
|
||||
$smarty->assign('text_length', my_strlen($text,$lang['charset']));
|
||||
}
|
||||
|
||||
|
@ -126,15 +149,17 @@ switch($action) {
|
|||
unset($_SESSION['captcha_session']);
|
||||
}
|
||||
|
||||
// Akismet spam check:
|
||||
if (empty($errors) && $settings['akismet_key'] != '' && $settings['akismet_mail_check'] == 1) {
|
||||
if (empty($_SESSION[$settings['session_prefix'].'user_id']) || isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] == 0 && $settings['akismet_check_registered'] == 1) {
|
||||
// Spam check:
|
||||
if (empty($errors) && (empty($_SESSION[$settings['session_prefix'].'user_id']) || isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] == 0 && $settings['spam_check_registered'] == 1)) {
|
||||
$mail_parts = explode("@", $sender_email);
|
||||
$sender_name = $mail_parts[0];
|
||||
$check_mail['author'] = $mail_parts[0];
|
||||
$check_mail['email'] = $sender_email;
|
||||
$check_mail['body'] = $text;
|
||||
|
||||
// Akismet spam check:
|
||||
if ($settings['akismet_key'] != '' && $settings['akismet_mail_check'] == 1) {
|
||||
require('modules/akismet/akismet.class.php');
|
||||
$mail_parts = explode("@", $sender_email);
|
||||
$sender_name = $mail_parts[0];
|
||||
$check_mail['author'] = $mail_parts[0];
|
||||
$check_mail['email'] = $sender_email;
|
||||
$check_mail['body'] = $text;
|
||||
$akismet = new Akismet($settings['forum_address'], $settings['akismet_key'], $check_mail);
|
||||
// test for errors
|
||||
if ($akismet->errorsExist()) {
|
||||
|
@ -149,83 +174,108 @@ switch($action) {
|
|||
} else {
|
||||
// No errors, check for spam
|
||||
if ($akismet->isSpam()) {
|
||||
$errors[] = 'error_spam_suspicion';
|
||||
$errors[] = 'error_email_spam_suspicion';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// B8 spam check:
|
||||
if ($settings['b8_mail_check'] == 1) {
|
||||
try {
|
||||
$check_text = implode("\r\n", $check_mail);
|
||||
$b8_spam_probability = 100.0 * $B8_BAYES_FILTER->classify($check_text);
|
||||
if ($b8_spam_probability > intval($settings['b8_spam_probability_threshold']))
|
||||
$errors[] = 'error_email_spam_suspicion';
|
||||
}
|
||||
catch(Exception $e) {
|
||||
raise_error('database_error', $e->getMessage()); // What should we do here?
|
||||
$b8_spam = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($id)) {
|
||||
// get email address from entry:
|
||||
$result = @mysqli_query($connid, "SELECT user_id, name, email FROM ".$db_settings['forum_table']." WHERE id = ".intval($id)." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if(mysqli_num_rows($result) != 1) {
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
$data = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if ($data['user_id'] > 0) {
|
||||
// registered user, get data from userdata table:
|
||||
$result = @mysqli_query($connid, "SELECT user_email, email_contact FROM ".$db_settings['userdata_table']." WHERE user_id = ".intval($data['user_id'])." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (empty($errors)) {
|
||||
if (isset($id)) {
|
||||
// get email address from entry:
|
||||
$result = @mysqli_query($connid, "SELECT user_id AS recipient_user_id, name, email FROM ".$db_settings['forum_table']." WHERE id = ".intval($id)." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if(mysqli_num_rows($result) != 1) {
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
$data = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if ($data['recipient_user_id'] > 0) {
|
||||
// registered user, get data from userdata table:
|
||||
$result = @mysqli_query($connid, "SELECT user_email, email_contact FROM ".$db_settings['userdata_table']." WHERE user_id = ".intval($data['recipient_user_id'])." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$userdata = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if ($isModOrAdmin || $isUser && $userdata['email_contact'] > 0 || $userdata['email_contact'] == 2) {
|
||||
$smarty->assign('recipient_name', htmlspecialchars($userdata['user_name']));
|
||||
$recipient_email = $data['user_email'];
|
||||
} else {
|
||||
$errors[] = TRUE;
|
||||
$smarty->assign('error_message', 'impossible_to_contact');
|
||||
}
|
||||
} else {
|
||||
// not registered user, get data from forum table:
|
||||
if ($data['email'] == '') {
|
||||
$errors[] = TRUE;
|
||||
$smarty->assign('error_message','impossible_to_contact');
|
||||
} else {
|
||||
$recipient_name = htmlspecialchars($data['name']);
|
||||
$recipient_email = $data['email'];
|
||||
$smarty->assign('recipient_name', $recipient_name);
|
||||
}
|
||||
}
|
||||
} elseif (isset($recipient_user_id)) {
|
||||
$result = @mysqli_query($connid, "SELECT user_name, user_email, email_contact FROM ".$db_settings['userdata_table']." WHERE user_id = '".intval($recipient_user_id)."' LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) != 1) {
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
$userdata = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if ($userdata['email_contact'] != 1) {
|
||||
if ($isModOrAdmin || $isUser && $userdata['email_contact'] > 0 || $userdata['email_contact'] == 2) {
|
||||
$recipient_name = htmlspecialchars($userdata['user_name']);
|
||||
$recipient_email = $userdata['user_email'];
|
||||
$smarty->assign('recipient_name', $recipient_name);
|
||||
} else {
|
||||
$errors[] = TRUE;
|
||||
$smarty->assign('error_message', 'impossible_to_contact');
|
||||
} else {
|
||||
$smarty->assign('recipient_name', htmlspecialchars($userdata['user_name']));
|
||||
$recipient_email = $data['user_email'];
|
||||
}
|
||||
} else {
|
||||
// not registered user, get data from forum table:
|
||||
if ($data['email'] == '') {
|
||||
$errors[] = TRUE;
|
||||
$smarty->assign('error_message','impossible_to_contact');
|
||||
} else {
|
||||
$recipient_name = htmlspecialchars($data['name']);
|
||||
$recipient_email = $data['email'];
|
||||
$smarty->assign('recipient_name', $recipient_name);
|
||||
}
|
||||
$recipient_name = $settings['forum_name'];
|
||||
$recipient_email = $settings['forum_email'];
|
||||
}
|
||||
} elseif (isset($user_id)) {
|
||||
$result = @mysqli_query($connid, "SELECT user_name, user_email, email_contact FROM ".$db_settings['userdata_table']." WHERE user_id = '".intval($user_id)."' LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) != 1) {
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
$userdata = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if ($userdata['email_contact'] != 1) {
|
||||
$errors[] = TRUE;
|
||||
$smarty->assign('error_message', 'impossible_to_contact');
|
||||
} else {
|
||||
$recipient_name = htmlspecialchars($userdata['user_name']);
|
||||
$recipient_email = $userdata['user_email'];
|
||||
$smarty->assign('recipient_name', $recipient_name);
|
||||
}
|
||||
} else {
|
||||
$recipient_name = $settings['forum_name'];
|
||||
$recipient_email = $settings['forum_email'];
|
||||
}
|
||||
|
||||
if (empty($errors)) {
|
||||
// load e-mail strings from default language file:
|
||||
$smarty->configLoad($settings['language_file'], 'emails');
|
||||
$lang = $smarty->getConfigVars();
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_name'])) $emailbody = str_replace("[user]", $_SESSION[$settings['session_prefix'].'user_name'], $lang['contact_email_txt_user']);
|
||||
else $emailbody = $lang['contact_email_txt'];
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_name']))
|
||||
$emailbody = str_replace("[user]", $_SESSION[$settings['session_prefix'].'user_name'], $lang['contact_email_txt_user']);
|
||||
else
|
||||
$emailbody = $lang['contact_email_txt'];
|
||||
$emailbody = str_replace("[message]", $text, $emailbody);
|
||||
$emailbody = str_replace("[forum_address]", $settings['forum_address'], $emailbody);
|
||||
if (!my_mail($recipient_email, $subject, $emailbody, $sender_email)) $errors[] = 'mail_error';
|
||||
if (!my_mail($recipient_email, $subject, $emailbody, $sender_email))
|
||||
$errors[] = 'mail_error';
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && $confirmation_mail_to_sender && !my_mail($sender_email, $subject, $emailbody, $sender_email))
|
||||
$errors[] = 'mail_error';
|
||||
}
|
||||
if (isset($errors)) {
|
||||
$_SESSION[$settings['session_prefix'].'formtime'] = TIMESTAMP - 7; // 7 seconds credit (form already sent)
|
||||
$smarty->assign('errors',$errors);
|
||||
if (isset($id)) $smarty->assign('id', intval($id));
|
||||
if (isset($user_id)) $smarty->assign('recipient_user_id', intval($user_id));
|
||||
if (isset($sender_email)) $smarty->assign('sender_email', htmlspecialchars($sender_email));
|
||||
if (isset($text)) $smarty->assign('text', htmlspecialchars($text));
|
||||
if (isset($subject)) $smarty->assign('subject', htmlspecialchars($subject));
|
||||
if (isset($id))
|
||||
$smarty->assign('id', intval($id));
|
||||
if (isset($recipient_user_id))
|
||||
$smarty->assign('recipient_user_id', intval($recipient_user_id));
|
||||
if (isset($sender_email))
|
||||
$smarty->assign('sender_email', htmlspecialchars($sender_email));
|
||||
if (isset($text))
|
||||
$smarty->assign('text', htmlspecialchars($text));
|
||||
if (isset($subject))
|
||||
$smarty->assign('subject', htmlspecialchars($subject));
|
||||
} else {
|
||||
$smarty->assign('sent', TRUE);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ if (!defined('IN_INDEX')) {
|
|||
exit;
|
||||
}
|
||||
|
||||
setcookie($settings['session_prefix'].'userdata', '', 0);
|
||||
setcookie($settings['session_prefix'].'userdata', '', cookie_options(0));
|
||||
|
||||
if (isset($_POST['method']) && $_POST['method'] == 'ajax') exit;
|
||||
|
||||
|
|
|
@ -27,28 +27,32 @@
|
|||
$tmp_user_id = 0;
|
||||
}
|
||||
|
||||
$isUser = isset($_SESSION[$settings['session_prefix'].'user_type']) && isset($_SESSION[$settings['session_prefix'].'user_id']);
|
||||
$isModOrAdmin = $isUser && ($_SESSION[$settings['session_prefix'].'user_type'] == 1 || $_SESSION[$settings['session_prefix'].'user_type'] == 2);
|
||||
|
||||
if (isset($id) && $id > 0) {
|
||||
$result = @mysqli_query($connid, "SELECT ft.id, ft.pid, ft.tid, ft.user_id, UNIX_TIMESTAMP(ft.time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited + INTERVAL " . $time_difference . " MINUTE) AS edit_time,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited) as etime, UNIX_TIMESTAMP(edited + INTERVAL " . $time_difference . " MINUTE) AS edit_time,
|
||||
UNIX_TIMESTAMP(edited - INTERVAL " . $settings['edit_delay'] . " MINUTE) AS edited_diff, edited_by, name, email,
|
||||
subject, hp, location, ip, text, cache_text, show_signature, category, locked, views, spam, spam_check_status, edit_key,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, rst.user_id AS req_user
|
||||
subject, hp, location, ip, text, cache_text, show_signature, category, locked, views, edit_key,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, rst.user_id AS req_user,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id=ft.id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id=ft.user_id
|
||||
LEFT JOIN " . $db_settings['userdata_cache_table'] . " ON " . $db_settings['userdata_cache_table'] . ".cache_id=" . $db_settings['userdata_table'] . ".user_id
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id = ft.id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ft.user_id
|
||||
LEFT JOIN " . $db_settings['userdata_cache_table'] . " ON " . $db_settings['userdata_cache_table'] . ".cache_id = " . $db_settings['userdata_table'] . ".user_id
|
||||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = ft.id
|
||||
WHERE ft.id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
/*
|
||||
LEFT JOIN ".$db_settings['entry_tags_table']." ON ".$db_settings['entry_tags_table'].".`bid` = ft.`id`
|
||||
LEFT JOIN ".$db_settings['tags_table']." ON ".$db_settings['entry_tags_table'].".`tid` = ".$db_settings['tags_table'].".`id`
|
||||
*/
|
||||
|
||||
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
$entrydata = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
|
||||
$entrydata['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $entrydata['time']);
|
||||
$entrydata['edit_ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $entrydata['etime']);
|
||||
$entrydata['formated_time'] = format_time($lang['time_format_full'], $entrydata['disp_time']);
|
||||
$entrydata['tags'] = getEntryTags($id);
|
||||
|
||||
|
@ -70,11 +74,13 @@
|
|||
$rstatus = save_read_status($connid, $user_id, $id);
|
||||
}
|
||||
|
||||
if ($entrydata['req_user'] !== NULL and is_numeric($entrydata['req_user'])) {
|
||||
if ($entrydata['req_user'] !== NULL and is_numeric($entrydata['req_user']))
|
||||
$entrydata['is_read'] = true;
|
||||
} else {
|
||||
else
|
||||
$entrydata['is_read'] = false;
|
||||
}
|
||||
|
||||
$entrydata['spam'] = $entrydata['akismet_spam'] || $entrydata['b8_spam'] ? 1 : 0;
|
||||
|
||||
$smarty->assign('is_read', $entrydata['is_read']);
|
||||
|
||||
if (isset($settings['count_views']) && $settings['count_views'] == 1)
|
||||
|
@ -94,11 +100,10 @@
|
|||
}
|
||||
|
||||
$entrydata['email'] = $entrydata['user_email'];
|
||||
#$entrydata['email_contact'] = $userdata['email_contact'];
|
||||
$entrydata['location'] = $entrydata['user_location'];
|
||||
$entrydata['hp'] = $entrydata['user_hp'];
|
||||
} else
|
||||
$entrydata['email_contact'] = 1;
|
||||
$entrydata['email_contact'] = 2;
|
||||
} else {
|
||||
header("Location: index.php");
|
||||
exit;
|
||||
|
@ -129,15 +134,19 @@
|
|||
exit;
|
||||
}
|
||||
|
||||
// thread-data:
|
||||
// Select data for thread-tree
|
||||
$thread = $entrydata['tid'];
|
||||
if ($entrydata['spam'] == 1)
|
||||
$display_spam_query_and = '';
|
||||
$result = mysqli_query($connid, "SELECT id, pid, tid, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, subject, category, marked, text, spam, rst.user_id AS req_user FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id=ft.user_id
|
||||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
WHERE tid = " . $thread . $display_spam_query_and . " ORDER BY time ASC");
|
||||
// Override spam variable, which was set in main.inc.php, to display current message in tree
|
||||
if ($entrydata['spam'] == 1 && isset($id)) {
|
||||
$spam_sql_and .= " OR ft.id = " . intval($id);
|
||||
}
|
||||
$entry_sql =
|
||||
"SELECT ft.id, ft.pid, ft.tid, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL " . $time_difference . " MINUTE) AS disp_time, UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, user_type, subject, category, marked, text, rst.user_id AS req_user, " . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, " . $db_settings['b8_rating_table'] . ".spam AS b8_spam, " . $db_settings['akismet_rating_table'] . ".spam_check_status AS akismet_checked, " . $db_settings['b8_rating_table'] . ".training_type AS b8_checked
|
||||
FROM " . $db_settings['forum_table'] . " AS ft LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ft.user_id LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . " LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = ft.id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN (SELECT eid AS id FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid AS id FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id
|
||||
WHERE tid = " . $thread . $spam_sql_and . " ORDER BY time ASC";
|
||||
$result = mysqli_query($connid, $entry_sql);
|
||||
|
||||
if (!$result)
|
||||
raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
|
@ -149,8 +158,10 @@
|
|||
$data['name'] = htmlspecialchars($data['user_name']);
|
||||
} else
|
||||
$data['name'] = htmlspecialchars($data['name']);
|
||||
|
||||
$data['subject'] = htmlspecialchars($data['subject']);
|
||||
$data['formated_time'] = format_time($lang['time_format'], $data['disp_time']);
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
|
||||
// set read or new status of messages
|
||||
$data = getMessageStatus($data, $last_visit);
|
||||
|
@ -161,13 +172,21 @@
|
|||
|
||||
if (isset($categories[$data['category']]) && $categories[$data['category']] != '')
|
||||
$data['category_name'] = $categories[$data["category"]];
|
||||
$data_array[$data['id']] = $data;
|
||||
$child_array[$data['pid']][] = $data['id'];
|
||||
if ($data['pid'] == $id)
|
||||
$direct_replies[] = $data['id'];
|
||||
$last = $data['id'];
|
||||
if ($data['pid'] > $last)
|
||||
$last = $data['id'];
|
||||
// set key 'not_classified_spam_ham' to decide, if an mod or admin should get notified about need of classification with an icon
|
||||
if ((isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] >= 1) && (($settings['akismet_entry_check'] == 1 && $data['akismet_checked'] == 0) || ($settings['b8_entry_check'] == 1 && $data['b8_checked'] == 0))) {
|
||||
$data['not_classified_spam_ham'] = 1;
|
||||
} else {
|
||||
$data['not_classified_spam_ham'] = 0;
|
||||
}
|
||||
// flag spam
|
||||
$data['spam'] = $data['akismet_spam'] || $data['b8_spam'] ? 1 : 0;
|
||||
$data_array[$data['id']] = $data;
|
||||
$child_array[$data['pid']][] = $data['id'];
|
||||
}
|
||||
if (isset($child_array)) {
|
||||
$smarty->assign('child_array', $child_array);
|
||||
|
@ -180,9 +199,9 @@
|
|||
}
|
||||
if ($entrydata['id'] != $thread_items[0])
|
||||
$smarty->assign('link_rel_first', 'index.php?id=' . $thread_items[0]);
|
||||
if (isset($thread_items[$current_key - 1]))
|
||||
if (isset($current_key) && isset($thread_items[$current_key - 1]))
|
||||
$smarty->assign('link_rel_prev', 'index.php?id=' . $thread_items[$current_key - 1]);
|
||||
if (isset($thread_items[$current_key + 1]))
|
||||
if (isset($current_key) && isset($thread_items[$current_key + 1]))
|
||||
$smarty->assign('link_rel_next', 'index.php?id=' . $thread_items[$current_key + 1]);
|
||||
if ($entrydata['id'] != $thread_items[$thread_items_count - 1])
|
||||
$smarty->assign('link_rel_last', 'index.php?id=' . $thread_items[$thread_items_count - 1]);
|
||||
|
@ -193,7 +212,7 @@
|
|||
|
||||
// tags:
|
||||
if (isset($entrydata['tags']) && $entrydata['tags']) {
|
||||
$tags_array = false;
|
||||
$tags_array = array();
|
||||
$i = 0;
|
||||
foreach ($entrydata['tags'] as $tag) {
|
||||
if (my_strpos($tag, ' ', 0, $lang['charset']))
|
||||
|
@ -206,9 +225,9 @@
|
|||
$keywords[] = htmlspecialchars($tag);
|
||||
$i++;
|
||||
}
|
||||
if (isset($tags_array))
|
||||
if (isset($tags_array) && !empty($tags_array))
|
||||
$smarty->assign('tags', $tags_array);
|
||||
if (isset($keywords))
|
||||
if (isset($keywords) && !empty($keywords))
|
||||
$smarty->assign('keywords', implode(', ', $keywords));
|
||||
}
|
||||
$category = $category;
|
||||
|
@ -231,6 +250,7 @@
|
|||
|
||||
$smarty->assign('user_type', htmlspecialchars($entrydata['user_type']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($entrydata['disp_time']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars($entrydata['ISO_time']));
|
||||
$smarty->assign('formated_time', htmlspecialchars($entrydata['formated_time']));
|
||||
$smarty->assign('locked', htmlspecialchars($entrydata['locked']));
|
||||
|
||||
|
@ -258,7 +278,7 @@
|
|||
$smarty->assign('views', $entrydata['views']);
|
||||
}
|
||||
$smarty->assign('ip', $entrydata['ip']);
|
||||
if ($entrydata['spam'] == 1)
|
||||
if ($entrydata['akismet_spam'] == 1 || $entrydata['b8_spam'] == 1)
|
||||
$smarty->assign('spam', true);
|
||||
if (isset($categories[$entrydata["category"]]) && $categories[$entrydata['category']] != '') {
|
||||
$smarty->assign('category_name', $categories[$entrydata["category"]]);
|
||||
|
@ -270,7 +290,7 @@
|
|||
$entrydata['hp'] = add_http_if_no_protocol($entrydata['hp']);
|
||||
$smarty->assign('hp', $entrydata["hp"]);
|
||||
}
|
||||
if ($entrydata['email'] != '' && $entrydata["email_contact"] == 1)
|
||||
if ($entrydata['email'] != '' && ($isModOrAdmin || $isUser && $entrydata['email_contact'] > 0 || $entrydata['email_contact'] == 2))
|
||||
$smarty->assign('email', true);
|
||||
if ($entrydata['location'] != '')
|
||||
$smarty->assign('location', htmlspecialchars($entrydata['location']));
|
||||
|
@ -285,6 +305,7 @@
|
|||
if ($entrydata["edited_diff"] > 0 && $entrydata["edited_diff"] > $entrydata["time"] && $settings['show_if_edited'] == 1) {
|
||||
$smarty->assign('edited', true);
|
||||
$smarty->assign('edit_time', htmlspecialchars($entrydata['edit_time']));
|
||||
$smarty->assign('edit_ISO_time', htmlspecialchars($entrydata['edit_ISO_time']));
|
||||
$entrydata['formated_edit_time'] = format_time($lang['time_format_full'], $entrydata['edit_time']);
|
||||
$smarty->assign('formated_edit_time', htmlspecialchars($entrydata['formated_edit_time']));
|
||||
|
||||
|
@ -339,12 +360,16 @@
|
|||
else
|
||||
$options['add_bookmark'] = true;
|
||||
}
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && $entrydata['spam'] == 0 && $entrydata['spam_check_status'] > 0)
|
||||
$options['report_spam'] = true;
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $entrydata['spam'] == 1)
|
||||
$options['flag_ham'] = true;
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
if (($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && $entrydata['akismet_spam'] == 0 && $entrydata['spam_check_status'] > 0) || ($settings['b8_entry_check'] == 1 && $entrydata['b8_spam'] == 0 || $entrydata['training_type'] == 0))
|
||||
$options['report_spam'] = true;
|
||||
if (($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && $entrydata['akismet_spam'] == 1 && $entrydata['spam_check_status'] > 0) || ($settings['b8_entry_check'] == 1 && $entrydata['b8_spam'] == 1 || $entrydata['training_type'] == 0))
|
||||
$options['flag_ham'] = true;
|
||||
}
|
||||
|
||||
if (isset($options))
|
||||
$smarty->assign('options', $options);
|
||||
$smarty->assign('subtemplate', 'entry.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
|
||||
?>
|
File diff suppressed because it is too large
Load diff
|
@ -37,8 +37,8 @@ if (isset($_GET['page'])) {
|
|||
}
|
||||
if (empty($page)) $page = 1;
|
||||
|
||||
if ($thread_order == 0) $db_thread_order = 'time';
|
||||
else $db_thread_order = 'last_reply';
|
||||
if ($thread_order == 0) $db_thread_order = 'ft.time';
|
||||
else $db_thread_order = 'ft.last_reply';
|
||||
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['current_page'] = $page;
|
||||
|
||||
|
@ -48,41 +48,73 @@ $ul = ($page - 1) * $settings['threads_per_page'];
|
|||
// database request
|
||||
if ($categories == false) {
|
||||
// no categories defined
|
||||
$result = mysqli_query($connid, "SELECT id, tid FROM ".$db_settings['forum_table']." WHERE pid = 0". $display_spam_query_and ." ORDER BY sticky DESC, ". $db_thread_order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['threads_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} elseif (is_array($categories) && $category <= 0) {
|
||||
// there are categories and all categories or category selection should be shown
|
||||
if (isset($category_selection_query) && $category == -1) {
|
||||
// category selection
|
||||
$category_ids_query = $category_selection_query;
|
||||
$pid_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table']." WHERE pid = 0". $display_spam_query_and ." AND category IN (". $category_ids_query .")");
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
}
|
||||
$result = mysqli_query($connid, "SELECT id, tid FROM ".$db_settings['forum_table']." WHERE pid = 0". $display_spam_query_and ." AND category IN (". $category_ids_query .") ORDER BY sticky DESC, ". $db_thread_order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['threads_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} elseif (is_array($categories) && $category > 0) {
|
||||
// there are categories and only one category should be shown
|
||||
if (in_array($category, $category_ids)) {
|
||||
$result=mysqli_query($connid, "SELECT id, tid FROM ".$db_settings['forum_table']." WHERE category = '". mysqli_real_escape_string($connid, $category) ."' AND pid = 0". $display_spam_query_and ." ORDER BY sticky DESC, ". $db_thread_order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['threads_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
// how many entries?
|
||||
$pid_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table']." WHERE pid = 0". $display_spam_query_and ." AND category = '". mysqli_real_escape_string($connid, $category) ."'");
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
} else {
|
||||
$page_threads_and = "";
|
||||
}
|
||||
elseif (is_array($categories)) {
|
||||
$page_threads_and = "";
|
||||
|
||||
if ($category > 0 && !in_array($category, $category_ids)) { // $category_ids defined in main.inc.php
|
||||
// invalid category
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
// there are categories and only one category should be shown
|
||||
elseif ($category > 0 && in_array($category, $category_ids)) {
|
||||
// how many entries?
|
||||
$page_threads_and = " AND (sticky = 2 OR category = '". mysqli_real_escape_string($connid, $category) ."') ";
|
||||
}
|
||||
// there are categories and all categories or category selection should be shown
|
||||
elseif ($category == -1 && isset($category_selection_query)) { // $category_selection_query defined in main.inc.php
|
||||
// category selection
|
||||
$category_ids_query = $category_selection_query; // overwrite $category_ids_query, originally defined in main.inc.php
|
||||
$page_threads_and = " AND (sticky = 2 OR category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")) ";
|
||||
}
|
||||
elseif ($category == 0 && isset($category_ids_query)) { // $category_ids_query defined in main.inc.php
|
||||
// show all categories (restricted to user type)
|
||||
$page_threads_and = " AND (sticky = 2 OR category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")) ";
|
||||
}
|
||||
|
||||
if (!empty($page_threads_and)) {
|
||||
$pid_result_sql =
|
||||
"SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN (SELECT eid AS id FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid AS id FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id
|
||||
WHERE pid = 0";
|
||||
$display_pid_result = $pid_result_sql . $spam_sql_and . $page_threads_and; // $spam_sql_and defined in main.inc.php
|
||||
|
||||
$pid_result = mysqli_query($connid, $display_pid_result);
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
}
|
||||
}
|
||||
|
||||
$display_page_threads =
|
||||
"SELECT DISTINCT ft.tid, ft.sticky, ft.time, ft.last_reply FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN (SELECT id, tid FROM " . $db_settings['forum_table'] . " INNER JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['forum_table'] . ".id = " . $db_settings['akismet_rating_table'] . ".eid WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT id, tid FROM " . $db_settings['forum_table'] . " INNER JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['forum_table'] . ".id = " . $db_settings['b8_rating_table'] .".eid WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) spam_list ON spam_list.tid = ft.id
|
||||
WHERE ft.pid = 0";
|
||||
|
||||
if ($show_spam) {
|
||||
$page_spam = " AND spam_list.id IS NOT NULL";
|
||||
} else {
|
||||
$page_spam = " AND IFNULL(spam_list.id, 0) <> ft.tid";
|
||||
}
|
||||
|
||||
$page_threads_SQL = $display_page_threads . $page_spam . $page_threads_and . " ORDER BY sticky DESC, ". $db_thread_order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['threads_per_page']);
|
||||
$result = mysqli_query($connid, $page_threads_SQL) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
$result_count = @mysqli_num_rows($result);
|
||||
if ($result_count > 0) {
|
||||
while ($zeile = mysqli_fetch_array($result)) {
|
||||
$thread_result = @mysqli_query($connid, "SELECT id, pid, tid, ft.user_id, user_type, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, subject, IF(text='',true,false) AS no_text, category, views, marked, locked, sticky, spam, rst.user_id AS req_user
|
||||
FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id
|
||||
LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
WHERE tid = ".$zeile['tid'].$display_spam_query_and."
|
||||
ORDER BY ft.time ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
if ($show_spam) $thread_spam = "";
|
||||
else $thread_spam = " AND spam_list.id IS NULL";
|
||||
|
||||
$thread_result_sql =
|
||||
"SELECT DISTINCT ft.id, ft.pid, ft.tid, ft.user_id, user_type, ft.time AS rawtime, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, subject, IF(text='',true,false) AS no_text, category, views, marked, locked, sticky, rst.user_id AS req_user, " . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, " . $db_settings['b8_rating_table'] . ".spam AS b8_spam, " . $db_settings['akismet_rating_table'] . ".spam_check_status AS akismet_checked, " . $db_settings['b8_rating_table'] . ".training_type AS b8_checked
|
||||
FROM ".$db_settings['forum_table']." AS ft LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ." LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = ft.id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN (SELECT ".$db_settings['forum_table'].".id, ".$db_settings['forum_table'].".tid FROM ".$db_settings['forum_table']." INNER JOIN " . $db_settings['akismet_rating_table'] . " ON ".$db_settings['forum_table'].".id = " . $db_settings['akismet_rating_table'] . ".eid WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT ".$db_settings['forum_table'].".id, ".$db_settings['forum_table'].".tid FROM ".$db_settings['forum_table']." INNER JOIN " . $db_settings['b8_rating_table'] . " ON ".$db_settings['forum_table'].".id = " . $db_settings['b8_rating_table'] . ".eid WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id
|
||||
WHERE ft.tid = ".$zeile['tid'] . $thread_spam . "
|
||||
ORDER BY rawtime ASC";
|
||||
$thread_result = @mysqli_query($connid, $thread_result_sql) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
// put result into arrays:
|
||||
while ($data = mysqli_fetch_array($thread_result)) {
|
||||
|
@ -101,15 +133,25 @@ if ($result_count > 0) {
|
|||
if (!$data['user_name']) $data['name'] = $lang['unknown_user'];
|
||||
else $data['name'] = htmlspecialchars($data['user_name']);
|
||||
}
|
||||
else $data['name'] = htmlspecialchars($data['name']);
|
||||
else
|
||||
$data['name'] = htmlspecialchars($data['name']);
|
||||
|
||||
$data['subject'] = htmlspecialchars($data['subject']);
|
||||
if (isset($categories[$data['category']]) && $categories[$data['category']] != '') $data['category_name']=$categories[$data['category']];
|
||||
if (isset($categories[$data['category']]) && $categories[$data['category']] != '')
|
||||
$data['category_name']=$categories[$data['category']];
|
||||
// set read or new status of messages
|
||||
$data = getMessageStatus($data, $last_visit, $fold_threads);
|
||||
// convert formated time to a utf-8:
|
||||
$data['formated_time'] = format_time($lang['time_format'], $data['timestamp']);
|
||||
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
// set key 'not_classified_spam_ham' to decide, if an mod or admin should get notified about need of classification with an icon
|
||||
if ((isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] >= 1) && (($settings['akismet_entry_check'] == 1 && $data['akismet_checked'] == 0) || ($settings['b8_entry_check'] == 1 && $data['b8_checked'] == 0))) {
|
||||
$data['not_classified_spam_ham'] = 1;
|
||||
} else {
|
||||
$data['not_classified_spam_ham'] = 0;
|
||||
}
|
||||
// flag spam
|
||||
$data['spam'] = $data['akismet_spam'] || $data['b8_spam'] ? 1 : 0;
|
||||
if ($data['pid'] == 0) $threads[] = $data['id'];
|
||||
$data_array[$data['id']] = $data;
|
||||
$child_array[$data['pid']][] = $data['id'];
|
||||
|
@ -121,30 +163,22 @@ if ($result_count > 0) {
|
|||
|
||||
// latest postings:
|
||||
if ($settings['latest_postings'] > 0) {
|
||||
$latest_postings_body_sql =
|
||||
"SELECT ft.id, ft.pid, ft.tid, name, user_name, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, rst.user_id AS req_user, rst.time AS read_time
|
||||
FROM ".$db_settings['forum_table']." AS ft LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
LEFT JOIN (SELECT eid AS id FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid AS id FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id WHERE spam_list.id IS NULL";
|
||||
$latest_postings_order_by_sql = " ORDER BY ft.time DESC LIMIT " . $settings['latest_postings'];
|
||||
if ($categories == false) {
|
||||
$latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, rst.user_id AS req_user
|
||||
FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id
|
||||
LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
WHERE spam = 0
|
||||
ORDER BY ft.time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error', mysqli_error($connid));
|
||||
$latest_postings_category_sql = "";
|
||||
} else {
|
||||
if ($category > 0) {
|
||||
$latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, rst.user_id AS req_user
|
||||
FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id
|
||||
LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
WHERE spam = 0 AND category = ". intval($category) ."
|
||||
ORDER BY ft.time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error', mysqli_error($connid));
|
||||
$latest_postings_category_sql = " AND category = " . intval($category);
|
||||
} else {
|
||||
$latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, rst.user_id AS req_user
|
||||
FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id
|
||||
LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
WHERE spam = 0 AND category IN (". $category_ids_query .")
|
||||
ORDER BY ft.time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error', mysqli_error($connid));
|
||||
$latest_postings_category_sql = " AND category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")";
|
||||
}
|
||||
}
|
||||
$latest_postings_sql = $latest_postings_body_sql . $latest_postings_category_sql . $latest_postings_order_by_sql;
|
||||
$latest_postings_result = @mysqli_query($connid, $latest_postings_sql) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
if (mysqli_num_rows($latest_postings_result) > 0) {
|
||||
$i = 0;
|
||||
|
@ -201,7 +235,6 @@ $page_count = ceil($total_threads / $settings['threads_per_page']);
|
|||
$subnav_link = array('mode'=>'posting', 'title'=>'new_topic_link_title', 'name'=>'new_topic_link');
|
||||
|
||||
if (isset($data_array)) $smarty->assign('data', $data_array);
|
||||
#if (isset($tree)) $smarty->assign("tree", $tree);
|
||||
if (isset($threads)) {
|
||||
$smarty->assign("threads", $threads);
|
||||
$smarty->assign('replies', $replies);
|
||||
|
@ -232,9 +265,18 @@ if ($page < $page_count) {
|
|||
$smarty->assign('link_rel_last', 'index.php?mode=index&page='.$page_count.$cqsa);
|
||||
}
|
||||
|
||||
if ($total_spam > 0 && !isset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam'])) $smarty->assign('show_spam_link', true);
|
||||
elseif($total_spam > 0 && isset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam'])) $smarty->assign('hide_spam_link',true);
|
||||
if ($total_spam > 0) $smarty->assign('delete_spam_link', true);
|
||||
// check if SPAM exists and show a link to switch between HAM and SPAM threads
|
||||
if ($total_spam > 0) {
|
||||
if (!isset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam']))
|
||||
$smarty->assign('show_spam_link', true);
|
||||
else //if(isset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam']))
|
||||
$smarty->assign('hide_spam_link',true);
|
||||
$smarty->assign('delete_spam_link', true);
|
||||
}
|
||||
// if no SPAM exists but the option to show SPAM threads is enabled, remove this option
|
||||
elseif(isset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam'])) {
|
||||
unset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam']);
|
||||
}
|
||||
|
||||
$smarty->assign("subnav_link", $subnav_link);
|
||||
if ($user_view == 1) $smarty->assign('subtemplate', 'index_table.inc.tpl');
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
<?php
|
||||
if (!defined('IN_INDEX')) {
|
||||
header('Location: ../index.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($settings['bbcode_flash'] == 1) $template = 'insert_flash.tpl';
|
||||
?>
|
|
@ -30,10 +30,10 @@ header('Content-type: application/javascript');
|
|||
|
||||
?>var lang = new Array();
|
||||
<?php if ($settings['ajax_preview']): ?>
|
||||
lang["ajax_preview_title"] = "<?php echo addslashes($lang['ajax_preview_title']); ?>";
|
||||
lang["close"] = "<?php echo addslashes($lang['close']); ?>";
|
||||
lang["no_text"] = "<?php echo addslashes($lang['no_text']); ?>";
|
||||
lang["reply_link"] = "<?php echo addslashes($lang['reply_link']); ?>";
|
||||
lang["ajax_preview_title"] = "<?php echo addslashes($lang['ajax_preview_title']); ?>";
|
||||
lang["close"] = "<?php echo addslashes($lang['close']); ?>";
|
||||
lang["no_text"] = "<?php echo addslashes($lang['no_text']); ?>";
|
||||
lang["reply_link"] = "<?php echo addslashes($lang['reply_link']); ?>";
|
||||
<?php endif; ?>
|
||||
lang["fold_threads"] = "<?php echo addslashes($lang['fold_threads']); ?>";
|
||||
lang["fold_threads_linktitle"] = "<?php echo addslashes($lang['fold_threads_linktitle']); ?>";
|
||||
|
@ -43,43 +43,43 @@ lang["expand_fold_thread_linktitle"] = "<?php echo addslashes($lang['expand_
|
|||
lang["fold_posting_title"] = "<?php echo addslashes($lang['fold_posting_title']); ?>";
|
||||
lang["fold_postings"] = "<?php echo addslashes($lang['fold_postings']); ?>";
|
||||
lang["fold_postings_title"] = "<?php echo addslashes($lang['fold_postings_title']); ?>";
|
||||
lang["show_password_title"] = "<?php echo addslashes($lang['show_password_title']); ?>";
|
||||
lang["hide_password_title"] = "<?php echo addslashes($lang['hide_password_title']); ?>";
|
||||
<?php if(isset($user_type) && $user_type >= 0): ?>
|
||||
lang["drag_and_drop_title"] = "<?php echo addslashes($lang['drag_and_drop_title']); ?>";
|
||||
lang["drag_and_drop_title"] = "<?php echo addslashes($lang['drag_and_drop_title']); ?>";
|
||||
<?php endif; ?>
|
||||
<?php if($settings['entries_by_users_only']==0 || isset($user_type)): ?>
|
||||
lang["quote_label"] = "<?php echo addslashes($lang['quote_label']); ?>";
|
||||
lang["quote_title"] = "<?php echo addslashes($lang['quote_title']); ?>";
|
||||
<?php if($settings['bbcode']): ?>
|
||||
lang["bbcode_link_text"] = "<?php echo addslashes($lang['bbcode_link_text']); ?>";
|
||||
lang["bbcode_link_url"] = "<?php echo addslashes($lang['bbcode_link_url']); ?>";
|
||||
lang["bbcode_image_url"] = "<?php echo addslashes($lang['bbcode_image_url']); ?>";
|
||||
<?php if($settings['bbcode_tex']): ?>
|
||||
<?php endif; ?>
|
||||
lang["bbcode_tex_code"] = "<?php echo addslashes($lang['bbcode_tex_code']); ?>";
|
||||
<?php endif; ?>
|
||||
<?php if($settings['smilies']): ?>
|
||||
lang["more_smilies_label"] = "<?php echo addslashes($lang['more_smilies_label']); ?>";
|
||||
lang["more_smilies_title"] = "<?php echo addslashes($lang['more_smilies_title']); ?>";
|
||||
<?php endif; ?>
|
||||
lang["error_no_name"] = "<?php echo addslashes($lang['error_no_name']); ?>";
|
||||
lang["error_no_subject"] = "<?php echo addslashes($lang['error_no_subject']); ?>";
|
||||
lang["error_no_text"] = "<?php echo addslashes($lang['error_no_text']); ?>";
|
||||
lang["terms_of_use_error_posting"] = "<?php echo addslashes($lang['terms_of_use_error_posting']); ?>";
|
||||
lang["quote_label"] = "<?php echo addslashes($lang['quote_label']); ?>";
|
||||
lang["quote_title"] = "<?php echo addslashes($lang['quote_title']); ?>";
|
||||
<?php if($settings['bbcode']): ?>
|
||||
lang["bbcode_link_text"] = "<?php echo addslashes($lang['bbcode_link_text']); ?>";
|
||||
lang["bbcode_link_url"] = "<?php echo addslashes($lang['bbcode_link_url']); ?>";
|
||||
lang["bbcode_image_url"] = "<?php echo addslashes($lang['bbcode_image_url']); ?>";
|
||||
<?php endif; ?>
|
||||
<?php if($settings['bbcode_latex'] && !empty($settings['bbcode_latex_uri'])): ?>
|
||||
lang["bbcode_tex_code"] = "<?php echo addslashes($lang['bbcode_tex_code']); ?>";
|
||||
<?php endif; ?>
|
||||
<?php if($settings['smilies']): ?>
|
||||
lang["more_smilies_label"] = "<?php echo addslashes($lang['more_smilies_label']); ?>";
|
||||
lang["more_smilies_title"] = "<?php echo addslashes($lang['more_smilies_title']); ?>";
|
||||
<?php endif; ?>
|
||||
lang["error_no_name"] = "<?php echo addslashes($lang['error_no_name']); ?>";
|
||||
lang["error_no_subject"] = "<?php echo addslashes($lang['error_no_subject']); ?>";
|
||||
lang["error_no_text"] = "<?php echo addslashes($lang['error_no_text']); ?>";
|
||||
lang["terms_of_use_error_posting"] = "<?php echo addslashes($lang['terms_of_use_error_posting']); ?>";
|
||||
<?php endif; ?>
|
||||
<?php if(isset($user_type) && $user_type==0 && $settings['user_edit']>0 || !isset($user_type) && $settings['user_edit']==2): ?>
|
||||
lang["delete_posting_confirm"] = "<?php echo addslashes($lang['delete_posting_confirm']); ?>";
|
||||
lang["delete_posting_confirm"] = "<?php echo addslashes($lang['delete_posting_confirm']); ?>";
|
||||
<?php elseif(isset($user_type) && $user_type>0): ?>
|
||||
lang["delete_posting_confirm"] = "<?php echo addslashes($lang['delete_posting_replies_confirm']); ?>";
|
||||
lang["delete_posting_confirm"] = "<?php echo addslashes($lang['delete_posting_replies_confirm']); ?>";
|
||||
<?php endif; ?>
|
||||
<?php if(isset($user_type) && $user_type>0): ?>
|
||||
lang["mark_linktitle"] = "<?php echo addslashes($lang['mark_linktitle']); ?>";
|
||||
lang["unmark_linktitle"] = "<?php echo addslashes($lang['unmark_linktitle']); ?>";
|
||||
lang["mark_linktitle"] = "<?php echo addslashes($lang['mark_linktitle']); ?>";
|
||||
lang["unmark_linktitle"] = "<?php echo addslashes($lang['unmark_linktitle']); ?>";
|
||||
<?php endif; ?>
|
||||
<?php if(isset($user_type) && $user_type==2): ?>
|
||||
lang["check_all"] = "<?php echo addslashes($lang['check_all']); ?>";
|
||||
lang["uncheck_all"] = "<?php echo addslashes($lang['uncheck_all']); ?>";
|
||||
lang["delete_backup_confirm"] = "<?php echo addslashes($lang['delete_backup_confirm']); ?>";
|
||||
lang["delete_sel_backup_confirm"] = "<?php echo addslashes($lang['delete_sel_backup_confirm']); ?>";
|
||||
lang["check_all"] = "<?php echo addslashes($lang['check_all']); ?>";
|
||||
lang["uncheck_all"] = "<?php echo addslashes($lang['uncheck_all']); ?>";
|
||||
<?php endif; ?>
|
||||
|
||||
var settings = new Array();
|
||||
|
@ -103,10 +103,6 @@ settings["ajax_preview_onmouseover"] = <?php echo ($settings['ajax_preview']
|
|||
settings["upload_popup_width"] = <?php echo $theme_config['upload_popup_width']; ?>;
|
||||
settings["upload_popup_height"] = <?php echo $theme_config['upload_popup_height']; ?>;
|
||||
<?php endif; ?>
|
||||
<?php if ($settings['bbcode_flash']): ?>
|
||||
settings["flash_popup_width"] = <?php echo $theme_config['flash_popup_width']; ?>;
|
||||
settings["flash_popup_height"] = <?php echo $theme_config['flash_popup_height']; ?>;
|
||||
<?php endif; ?>
|
||||
<?php if (isset($user_type) && $settings['avatars']): ?>
|
||||
settings["avatar_popup_width"] = <?php echo $theme_config['avatar_popup_width']; ?>;
|
||||
settings["avatar_popup_height"] = <?php echo $theme_config['avatar_popup_height']; ?>;
|
||||
|
@ -116,6 +112,27 @@ settings["mark_process_image"] = "<?php echo $theme_config['mark_proce
|
|||
settings["marked_image"] = "<?php echo $theme_config['marked_image']; ?>";
|
||||
settings["unmarked_image"] = "<?php echo $theme_config['unmarked_image']; ?>";
|
||||
<?php endif; ?>
|
||||
<?php if (!empty($settings['link_open_target']) && (in_array($settings['link_open_target'], ['_self', '_parent', '_top']) || preg_match("/^[a-z]{1}[a-z0-9\-\_]{1,254}$/iu", $settings['link_open_target']))): ?>
|
||||
settings["forum_based_link_target"] = "<?php echo $settings['link_open_target']; ?>";
|
||||
<?php else: ?>
|
||||
settings["forum_based_link_target"] = "";
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (isset ($_SESSION[$settings['session_prefix'].'usersettings']['browser_window_target'])): ?>
|
||||
var user_settings = new Array();
|
||||
<?php if ($_SESSION[$settings['session_prefix'].'usersettings']['browser_window_target'] == 1): ?>
|
||||
user_settings["open_links_in_new_window"] = "NONE";
|
||||
<?php elseif ($_SESSION[$settings['session_prefix'].'usersettings']['browser_window_target'] == 2): ?>
|
||||
user_settings["open_links_in_new_window"] = "EXTERNAL";
|
||||
<?php elseif ($_SESSION[$settings['session_prefix'].'usersettings']['browser_window_target'] == 3): ?>
|
||||
user_settings["open_links_in_new_window"] = "ALL";
|
||||
<?php else: ?>
|
||||
user_settings["open_links_in_new_window"] = "DEFAULT";
|
||||
<?php endif; ?>
|
||||
<?php else: ?>
|
||||
var user_settings = new Array();
|
||||
user_settings["open_links_in_new_window"] = "DEFAULT";
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if(isset($theme_config['preload'])): ?>
|
||||
var preload = new Array();
|
||||
|
|
|
@ -6,6 +6,8 @@ if(!defined('IN_INDEX')) {
|
|||
|
||||
if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
|
||||
if (isset($_POST['pwf_submit'])) $action = 'pw_forgotten_submitted';
|
||||
if (isset($_POST['sort_of_agreement']) && $_POST['sort_of_agreement'] === 'dps_agreement') $action = 'dps_agreement';
|
||||
if (isset($_POST['sort_of_agreement']) && $_POST['sort_of_agreement'] === 'tou_agreement') $action = 'tou_agreement';
|
||||
|
||||
// import posted or got username and password:
|
||||
if (isset($_POST['username']) && trim($_POST['username']) != '') $request_username = $_POST['username'];
|
||||
|
@ -44,11 +46,11 @@ if ($settings['temp_block_ip_after_repeated_failed_logins'] > 0) {
|
|||
switch ($action) {
|
||||
case "do_login":
|
||||
if (isset($request_username) && isset($request_userpw)) {
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name, user_pw, user_type, UNIX_TIMESTAMP(last_login) AS last_login, UNIX_TIMESTAMP(last_logout) AS last_logout, thread_order, user_view, sidebar, fold_threads, thread_display, category_selection, auto_login_code, activate_code, language, time_zone, time_difference, theme FROM ".$db_settings['userdata_table']." WHERE lower(user_name) = '". mysqli_real_escape_string($connid, my_strtolower($request_username, $lang['charset'])) ."'") or raise_error('database_error', mysqli_error($connid));
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name, user_pw, user_type, UNIX_TIMESTAMP(last_login) AS last_login, UNIX_TIMESTAMP(last_logout) AS last_logout, thread_order, user_view, sidebar, fold_threads, thread_display, browser_window_target, category_selection, auto_login_code, activate_code, language, time_zone, time_difference, theme, tou_accepted, dps_accepted FROM ".$db_settings['userdata_table']." WHERE lower(user_name) = '". mysqli_real_escape_string($connid, my_strtolower($request_username, $lang['charset'])) ."'") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
$feld = mysqli_fetch_array($result);
|
||||
if (is_pw_correct($request_userpw, $feld['user_pw'])) {
|
||||
if (trim($feld["activate_code"]) != '') {
|
||||
if (!empty($feld["activate_code"]) && trim($feld["activate_code"]) != '') {
|
||||
header("location: index.php?mode=login&login_message=account_not_activated");
|
||||
exit;
|
||||
}
|
||||
|
@ -60,10 +62,10 @@ switch ($action) {
|
|||
$auto_login_code = $feld['auto_login_code'];
|
||||
}
|
||||
$auto_login_code_cookie = $auto_login_code . intval($feld['user_id']);
|
||||
setcookie($settings['session_prefix'].'auto_login', $auto_login_code_cookie, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'auto_login', $auto_login_code_cookie, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
$save_auto_login = true;
|
||||
} else {
|
||||
setcookie($settings['session_prefix'].'auto_login', '', 0);
|
||||
setcookie($settings['session_prefix'].'auto_login', '', cookie_options(0));
|
||||
}
|
||||
$user_id = $feld["user_id"];
|
||||
$user_name = $feld["user_name"];
|
||||
|
@ -77,6 +79,7 @@ switch ($action) {
|
|||
$usersettings['page'] = 1;
|
||||
$usersettings['category'] = 0;
|
||||
$usersettings['latest_postings'] = 1;
|
||||
$usersettings['browser_window_target'] = $feld['browser_window_target'];
|
||||
if (!is_null($feld['category_selection'])) {
|
||||
$category_selection = explode(',',$feld['category_selection']);
|
||||
$usersettings['category_selection'] = $category_selection;
|
||||
|
@ -119,19 +122,20 @@ switch ($action) {
|
|||
$_SESSION[$settings['session_prefix'].'usersettings'] = $usersettings;
|
||||
|
||||
if(isset($save_auto_login)) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET logins = logins + 1, last_login = NOW(), last_logout = NOW(), user_ip = '". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."', auto_login_code = '". mysqli_real_escape_string($connid, $auto_login_code) ."', pwf_code = '', language = '". mysqli_real_escape_string($connid, $language_update) ."', time_zone = '". mysqli_real_escape_string($connid, $time_zone_update) ."', theme = '". mysqli_real_escape_string($connid, $theme_update) ."' WHERE user_id = ". intval($user_id));
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET logins = logins + 1, last_login = NOW(), last_logout = NOW(), inactivity_notification = FALSE, user_ip = '". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."', auto_login_code = '". mysqli_real_escape_string($connid, $auto_login_code) ."', pwf_code = '', language = '". mysqli_real_escape_string($connid, $language_update) ."', time_zone = '". mysqli_real_escape_string($connid, $time_zone_update) ."', theme = '". mysqli_real_escape_string($connid, $theme_update) ."' WHERE user_id = ". intval($user_id));
|
||||
} else {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET logins = logins + 1, last_login = NOW(), last_logout = NOW(), user_ip = '". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."', pwf_code = '', language = '". mysqli_real_escape_string($connid, $language_update) ."', time_zone = '". mysqli_real_escape_string($connid, $time_zone_update) ."', theme = '". mysqli_real_escape_string($connid, $theme_update) ."' WHERE user_id = ".intval($user_id));
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET logins = logins + 1, last_login = NOW(), last_logout = NOW(), inactivity_notification = FALSE, user_ip = '". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."', pwf_code = '', language = '". mysqli_real_escape_string($connid, $language_update) ."', time_zone = '". mysqli_real_escape_string($connid, $time_zone_update) ."', theme = '". mysqli_real_escape_string($connid, $theme_update) ."' WHERE user_id = ".intval($user_id));
|
||||
}
|
||||
|
||||
// auto delete spam:
|
||||
if ($user_type > 0 && $settings['auto_delete_spam'] > 0) @mysqli_query($connid, "DELETE FROM ".$db_settings['forum_table']." WHERE time < (NOW() - INTERVAL ".$settings['auto_delete_spam']." HOUR) AND spam = 1");
|
||||
|
||||
if ($db_settings['useronline_table'] != "") {
|
||||
@mysqli_query($connid, "DELETE FROM ".$db_settings['useronline_table']." WHERE ip = '". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."'");
|
||||
}
|
||||
|
||||
if (isset($_SESSION[$settings['session_prefix'].'last_visited_uri'])) {
|
||||
if ($settings['data_privacy_agreement'] == 1 && $feld['dps_accepted'] === NULL) {
|
||||
$redir = 'index.php?mode=login&action=dps';
|
||||
} else if ($settings['terms_of_use_agreement'] == 1 && $feld['tou_accepted'] === NULL) {
|
||||
$redir = 'index.php?mode=login&action=tou';
|
||||
} else if (isset($_SESSION[$settings['session_prefix'].'last_visited_uri'])) {
|
||||
$redir = $_SESSION[$settings['session_prefix'].'last_visited_uri'];
|
||||
} else if (isset($_POST['back']) && isset($_POST['id'])) {
|
||||
$redir = 'index.php?mode='.$_POST['back'].'&id='.$_POST['id'].'&back=entry';
|
||||
|
@ -166,8 +170,116 @@ switch ($action) {
|
|||
header("location: index.php");
|
||||
exit;
|
||||
break;
|
||||
case "dps":
|
||||
// the user has to accept (again) the data privacy statement
|
||||
if ($settings['data_privacy_agreement'] == 1 && isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
// user is logged in and accepting of the data privacy statement is necessary
|
||||
$resultDPS = mysqli_query($connid, "SELECT dps_accepted, tou_accepted FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or raise_error('database_error', mysqli_error($connid));
|
||||
$feld = mysqli_fetch_assoc($resultDPS);
|
||||
if ($feld['dps_accepted'] === NULL) {
|
||||
// display the form for accepting the data privacy statement
|
||||
$action = 'show_dps';
|
||||
} else {
|
||||
// data privacy statement was accepted before, redirect
|
||||
if ($settings['terms_of_use_agreement'] == 1 && $feld['tou_accepted'] === NULL) {
|
||||
$redir = 'index.php?mode=login&action=tou';
|
||||
} else if (isset($_SESSION[$settings['session_prefix'].'last_visited_uri'])) {
|
||||
$redir = $_SESSION[$settings['session_prefix'].'last_visited_uri'];
|
||||
} else {
|
||||
$redir = 'index.php';
|
||||
}
|
||||
header('Location: '.$redir);
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
// redirect to the index view
|
||||
header("location: index.php");
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
case "tou":
|
||||
// the user has to accept (again) the terms of use
|
||||
if ($settings['terms_of_use_agreement'] == 1 && isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
// user is logged in and accepting of the terms of use agreement is necessary
|
||||
$resultTOU = mysqli_query($connid, "SELECT dps_accepted, tou_accepted FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or raise_error('database_error', mysqli_error($connid));
|
||||
$feld = mysqli_fetch_assoc($resultTOU);
|
||||
if ($feld['tou_accepted'] === NULL) {
|
||||
// display the form for accepting the terms of use agreement
|
||||
$action = 'show_tou';
|
||||
} else {
|
||||
// terms of use agreement was accepted before, redirect
|
||||
if ($settings['data_privacy_agreement'] == 1 && $feld['dps_accepted'] === NULL) {
|
||||
$redir = 'index.php?mode=login&action=dps';
|
||||
} else if (isset($_SESSION[$settings['session_prefix'].'last_visited_uri'])) {
|
||||
$redir = $_SESSION[$settings['session_prefix'].'last_visited_uri'];
|
||||
} else {
|
||||
$redir = 'index.php';
|
||||
}
|
||||
header('Location: '.$redir);
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
// redirect to the index view
|
||||
header("location: index.php");
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
case "dps_agreement":
|
||||
if ($settings['data_privacy_agreement'] == 1 && isset($_POST['agreed']) && isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
$resultDPS = mysqli_query($connid, "SELECT dps_accepted, tou_accepted FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or raise_error('database_error', mysqli_error($connid));
|
||||
$feld = mysqli_fetch_assoc($resultDPS);
|
||||
if ($feld['dps_accepted'] === NULL) {
|
||||
$writeDPS = mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET dps_accepted = NOW() WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
// data privacy statement got accepted, redirect
|
||||
if ($settings['terms_of_use_agreement'] == 1 && $feld['tou_accepted'] === NULL) {
|
||||
$redir = 'index.php?mode=login&action=tou';
|
||||
} else if (isset($_SESSION[$settings['session_prefix'].'last_visited_uri'])) {
|
||||
$redir = $_SESSION[$settings['session_prefix'].'last_visited_uri'];
|
||||
} else {
|
||||
$redir = 'index.php';
|
||||
}
|
||||
header('Location: '.$redir);
|
||||
exit;
|
||||
} else {
|
||||
if (isset($_SESSION[$settings['session_prefix'].'last_visited_uri'])) {
|
||||
$redir = $_SESSION[$settings['session_prefix'].'last_visited_uri'];
|
||||
} else {
|
||||
$redir = 'index.php';
|
||||
}
|
||||
header('Location: '.$redir);
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
case "tou_agreement":
|
||||
if ($settings['terms_of_use_agreement'] == 1 && isset($_POST['agreed']) && isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
$resultTOU = mysqli_query($connid, "SELECT dps_accepted, tou_accepted FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or raise_error('database_error', mysqli_error($connid));
|
||||
$feld = mysqli_fetch_assoc($resultTOU);
|
||||
if ($feld['tou_accepted'] === NULL) {
|
||||
$writeTOU = mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET tou_accepted = NOW() WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
// terms of use got accepted, redirect
|
||||
if ($settings['data_privacy_agreement'] == 1 && $feld['dps_accepted'] === NULL) {
|
||||
$redir = 'index.php?mode=login&action=dps';
|
||||
} else if (isset($_SESSION[$settings['session_prefix'].'last_visited_uri'])) {
|
||||
$redir = $_SESSION[$settings['session_prefix'].'last_visited_uri'];
|
||||
} else {
|
||||
$redir = 'index.php';
|
||||
}
|
||||
header('Location: '.$redir);
|
||||
exit;
|
||||
} else {
|
||||
if (isset($_SESSION[$settings['session_prefix'].'last_visited_uri'])) {
|
||||
$redir = $_SESSION[$settings['session_prefix'].'last_visited_uri'];
|
||||
} else {
|
||||
$redir = 'index.php';
|
||||
}
|
||||
header('Location: '.$redir);
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
case "pw_forgotten_submitted":
|
||||
if (trim($_POST['pwf_email']) == '') $error = true;
|
||||
if (!empty($_POST['pwf_email']) && trim($_POST['pwf_email']) == '') $error = true;
|
||||
if (empty($error)) {
|
||||
$pwf_result = @mysqli_query($connid, "SELECT user_id, user_name, user_email FROM ".$db_settings['userdata_table']." WHERE user_email = '". mysqli_real_escape_string($connid, $_POST['pwf_email']) ."' LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($pwf_result) != 1) $error = true;
|
||||
|
@ -202,7 +314,7 @@ switch ($action) {
|
|||
if (!$pwf_result) raise_error('database_error', mysqli_error($connid));
|
||||
$field = mysqli_fetch_array($pwf_result);
|
||||
mysqli_free_result($pwf_result);
|
||||
if (trim($field['pwf_code']) != '' && $field['user_id'] == $_GET['activate'] && is_pw_correct($_GET['code'],$field['pwf_code'])) {
|
||||
if (!empty($field['pwf_code']) && trim($field['pwf_code']) != '' && $field['user_id'] == $_GET['activate'] && is_pw_correct($_GET['code'],$field['pwf_code'])) {
|
||||
// generate new password:
|
||||
if ($settings['min_pw_length'] < 8) $pwl = 8;
|
||||
else $pwl = $settings['min_pw_length'];
|
||||
|
@ -262,5 +374,17 @@ switch($action) {
|
|||
$smarty->assign('subtemplate', 'login.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
break;
|
||||
case "show_dps":
|
||||
$smarty->assign('show_dps_page', true);
|
||||
$smarty->assign('subnav_location', 'subnav_accept_dps');
|
||||
$smarty->assign('subtemplate', 'user_agreement.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
break;
|
||||
case "show_tou":
|
||||
$smarty->assign('show_tou_page', true);
|
||||
$smarty->assign('subnav_location', 'subnav_accept_tou');
|
||||
$smarty->assign('subtemplate', 'user_agreement.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
break;
|
||||
}
|
||||
?>
|
||||
|
|
33
includes/mailer.inc.php
Normal file
33
includes/mailer.inc.php
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
if (!defined('IN_INDEX')) {
|
||||
header('Location: ../index.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
//Import the PHPMailer class into the global namespace
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
use PHPMailer\PHPMailer\SMTP;
|
||||
//use PHPMailer\PHPMailer\OAuthTokenProvider;
|
||||
//use PHPMailer\PHPMailer\OAuth;
|
||||
//use PHPMailer\PHPMailer\POP3;
|
||||
|
||||
// include php resources
|
||||
require 'modules/phpmailer/PHPMailer.php';
|
||||
require 'modules/phpmailer/Exception.php';
|
||||
require 'modules/phpmailer/SMTP.php';
|
||||
//require 'modules/phpmailer/OAuthTokenProvider.php';
|
||||
//require 'modules/phpmailer/OAuth.php';
|
||||
//require 'modules/phpmailer/POP3.php';
|
||||
|
||||
// include config
|
||||
require 'config/php_mailer.php';
|
||||
|
||||
// create instance
|
||||
$PHP_MAILER = new PHPMailer();
|
||||
|
||||
// add specified properties
|
||||
foreach($PHP_MAILER_CONFIG as $key => $value) {
|
||||
$PHP_MAILER->set($key, $value);
|
||||
}
|
||||
?>
|
|
@ -4,18 +4,6 @@ if (!defined('IN_INDEX')) {
|
|||
exit;
|
||||
}
|
||||
|
||||
// stripslashes on GPC if magic_quotes_gpc is enabled:
|
||||
if (get_magic_quotes_gpc()) {
|
||||
function stripslashes_deep($value) {
|
||||
$value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
|
||||
return $value;
|
||||
}
|
||||
$_POST = array_map('stripslashes_deep', $_POST);
|
||||
$_GET = array_map('stripslashes_deep', $_GET);
|
||||
$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
|
||||
$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
|
||||
}
|
||||
|
||||
// database connection:
|
||||
$connid = connect_db($db_settings['host'], $db_settings['user'], $db_settings['password'], $db_settings['database']);
|
||||
|
||||
|
@ -36,11 +24,6 @@ if (!isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_COOKIE[$
|
|||
include('includes/auto_login.inc.php');
|
||||
}
|
||||
|
||||
// Bad Behavior check:
|
||||
if ($settings['bad_behavior'] == 1 && !isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
require_once("modules/bad-behavior/bad-behavior-generic.php");
|
||||
}
|
||||
|
||||
// access permission checks for not registered users:
|
||||
if ($settings['access_permission_checks'] == 1 && !isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
// look if IP or user agent is banned:
|
||||
|
@ -50,11 +33,11 @@ if ($settings['access_permission_checks'] == 1 && !isset($_SESSION[$settings['se
|
|||
if ($data['name'] == 'user_agents') $user_agents = $data['list'];
|
||||
}
|
||||
mysqli_free_result($ip_result);
|
||||
if (isset($ips) && trim($ips) != '') {
|
||||
if (isset($ips) && !empty($ips) && trim($ips) != '') {
|
||||
$banned_ips = explode("\n",$ips);
|
||||
if (is_ip_banned($_SERVER['REMOTE_ADDR'], $banned_ips)) raise_error('403');
|
||||
}
|
||||
if (isset($user_agents) && trim($user_agents) != '') {
|
||||
if (isset($user_agents) && !empty($user_agents) && trim($user_agents) != '') {
|
||||
$banned_user_agents = explode("\n", $user_agents);
|
||||
if (is_user_agent_banned($_SERVER['HTTP_USER_AGENT'], $banned_user_agents)) raise_error('403');
|
||||
}
|
||||
|
@ -96,7 +79,7 @@ if (function_exists('date_default_timezone_set')) {
|
|||
}
|
||||
|
||||
// do daily actions:
|
||||
daily_actions(TIMESTAMP);
|
||||
//daily_actions(TIMESTAMP);
|
||||
|
||||
$categories = get_categories();
|
||||
$category_ids = get_category_ids($categories);
|
||||
|
@ -125,13 +108,13 @@ if (empty($_SESSION[$settings['session_prefix'].'usersettings'])) {
|
|||
$usersettings['page'] = 1;
|
||||
$usersettings['category'] = 0;
|
||||
$_SESSION[$settings['session_prefix'].'usersettings'] = $usersettings;
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
}
|
||||
|
||||
if (isset($_REQUEST['toggle_sidebar'])) {
|
||||
if (empty($_SESSION[$settings['session_prefix'].'usersettings']['sidebar'])) $_SESSION[$settings['session_prefix'].'usersettings']['sidebar'] = 1;
|
||||
else $_SESSION[$settings['session_prefix'].'usersettings']['sidebar'] = 0;
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
// update database for registered users:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, sidebar = ". intval($_SESSION[$settings['session_prefix'].'usersettings']['sidebar']) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id']));
|
||||
|
@ -151,14 +134,13 @@ if (isset($_GET['thread_order']) && isset($_SESSION[$settings['session_prefix'].
|
|||
if ($thread_order != $_SESSION[$settings['session_prefix'].'usersettings']['thread_order']) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['page'] = 1;
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'] = $thread_order;
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$thread_order.'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$thread_order.'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) @mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, thread_order = ". intval($thread_order) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id']));
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET['toggle_view']) && in_array($_GET['toggle_view'], array(0, 1))) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['user_view'] = intval($_GET['toggle_view']);
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'],TIMESTAMP+(3600*24*$settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP+(3600*24*$settings['cookie_validity_days'])));
|
||||
// update database for registered users:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, user_view = ". intval($_SESSION[$settings['session_prefix'].'usersettings']['user_view']) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or die(mysqli_error($connid));
|
||||
|
@ -169,7 +151,7 @@ if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET[
|
|||
}
|
||||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET['toggle_thread_display']) && in_array($_GET['toggle_thread_display'], array(0, 1)) && isset($_GET['id'])) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'] = intval($_GET['toggle_thread_display']);
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
// update database for registered users:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, thread_display = ". intval($_SESSION[$settings['session_prefix'].'usersettings']['thread_display']) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or die(mysqli_error($connid));
|
||||
|
@ -180,7 +162,7 @@ if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET[
|
|||
|
||||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET['fold_threads']) && in_array($_GET['fold_threads'], array(0, 1))) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'] = intval($_GET['fold_threads']);
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
// update database for registered users:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, fold_threads = ". intval($_SESSION[$settings['session_prefix'].'usersettings']['fold_threads']) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or die(mysqli_error($connid));
|
||||
|
@ -195,8 +177,8 @@ if(isset($_GET['refresh'])) {
|
|||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']['newtime'])) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['newtime'] = TIMESTAMP;
|
||||
}
|
||||
setcookie($settings['session_prefix'].'last_visit', TIMESTAMP.".".TIMESTAMP, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'read', '', 0);
|
||||
setcookie($settings['session_prefix'].'last_visit', TIMESTAMP.".".TIMESTAMP, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
setcookie($settings['session_prefix'].'read', '', cookie_options(0));
|
||||
header('location: index.php?mode=index');
|
||||
exit;
|
||||
}
|
||||
|
@ -217,10 +199,11 @@ if (empty($_SESSION[$settings['session_prefix'].'user_id']) && $settings['rememb
|
|||
if ($c_last_visit[1] < (TIMESTAMP - 600)) {
|
||||
$c_last_visit[0] = $c_last_visit[1];
|
||||
$c_last_visit[1] = TIMESTAMP;
|
||||
setcookie($settings['session_prefix'].'last_visit', $c_last_visit[0].".".$c_last_visit[1], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'last_visit', $c_last_visit[0].".".$c_last_visit[1], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
}
|
||||
}
|
||||
else setcookie($settings['session_prefix'].'last_visit', TIMESTAMP.".".TIMESTAMP, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
else
|
||||
setcookie($settings['session_prefix'].'last_visit', TIMESTAMP.".".TIMESTAMP, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
}
|
||||
|
||||
if (isset($c_last_visit)) $last_visit = intval($c_last_visit[0]); else $last_visit = TIMESTAMP;
|
||||
|
@ -236,38 +219,49 @@ if (isset($category_ids) && isset($_SESSION[$settings['session_prefix'].'userset
|
|||
if (!empty($category_selection)) $category_selection_query = implode(', ', $category_selection);
|
||||
}
|
||||
|
||||
// show spam?
|
||||
$display_spam_query_and = ' AND spam = 0';
|
||||
$display_spam_query_where = ' WHERE spam = 0';
|
||||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam'])) {
|
||||
$display_spam_query_and = '';
|
||||
$display_spam_query_where = '';
|
||||
}
|
||||
|
||||
// count postings, threads, users and users online:
|
||||
if ($categories == false) {
|
||||
// no categories defined
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table']." WHERE pid = 0".$display_spam_query_and);
|
||||
list($total_threads) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table'].$display_spam_query_where);
|
||||
list($total_postings) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
} else {
|
||||
// there are categories
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table']." WHERE pid = 0".$display_spam_query_and." AND category IN (".$category_ids_query.")");
|
||||
list($total_threads) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table']." WHERE category IN (".$category_ids_query.")".$display_spam_query_and);
|
||||
list($total_postings) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
}
|
||||
// count spam:
|
||||
$count_spam_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table']." WHERE spam = 1");
|
||||
$count_spam_sql =
|
||||
"SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " AS ft INNER JOIN (SELECT eid FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.eid = ft.id";
|
||||
|
||||
$count_spam_result = mysqli_query($connid, $count_spam_sql);
|
||||
list($total_spam) = mysqli_fetch_row($count_spam_result);
|
||||
mysqli_free_result($count_spam_result);
|
||||
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = ''");
|
||||
// show spam? NOTE: variables are used in several php files, i.e. index.inc.php, thread.inc.php, entry.inc.php
|
||||
$show_spam = false;
|
||||
$spam_sql_and = " AND spam_list.id IS NULL";
|
||||
|
||||
if ($total_spam > 0 && isset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam'])) {
|
||||
$show_spam = true;
|
||||
$spam_sql_and = " AND spam_list.id IS NOT NULL";
|
||||
}
|
||||
|
||||
// count postings, threads, users and users online:
|
||||
$total_threads_postings_body =
|
||||
"SELECT COUNT(DISTINCT ft.id) FROM " . $db_settings['forum_table'] . " AS ft LEFT JOIN (SELECT ".$db_settings['forum_table'].".id, ".$db_settings['forum_table'].".tid FROM ".$db_settings['forum_table']." INNER JOIN " . $db_settings['akismet_rating_table'] . " ON ".$db_settings['forum_table'].".id = " . $db_settings['akismet_rating_table'] . ".eid WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT ".$db_settings['forum_table'].".id, ".$db_settings['forum_table'].".tid FROM ".$db_settings['forum_table']." INNER JOIN " . $db_settings['b8_rating_table'] . " ON ".$db_settings['forum_table'].".id = " . $db_settings['b8_rating_table'] . ".eid WHERE " . $db_settings['b8_rating_table'] . ".spam = 1)";
|
||||
$threads_check_sql = " AND pid = 0";
|
||||
if ($show_spam) {
|
||||
$spam_totals = " AS spam_list ON spam_list.tid = ft.tid WHERE spam_list.id IS NOT NULL";
|
||||
} else {
|
||||
$spam_totals = " AS spam_list ON spam_list.id = ft.id WHERE spam_list.id IS NULL";
|
||||
}
|
||||
if ($categories == false) {
|
||||
$total_postings_category = "";
|
||||
} else {
|
||||
// there are categories
|
||||
$total_postings_category = " AND category IN (" . $category_ids_query . ")";
|
||||
}
|
||||
$total_threads_sql = $total_threads_postings_body . $spam_totals . $total_postings_category . $threads_check_sql;
|
||||
$count_result = mysqli_query($connid, $total_threads_sql);
|
||||
list($total_threads) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
|
||||
$total_postings_sql = $total_threads_postings_body . $spam_totals . $total_postings_category;
|
||||
$count_result = mysqli_query($connid, $total_postings_sql);
|
||||
list($total_postings) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['userdata_table'] . " WHERE activate_code = ''");
|
||||
list($registered_users) = mysqli_fetch_row($count_result);
|
||||
|
||||
if ($settings['count_users_online'] > 0) {
|
||||
|
|
|
@ -16,7 +16,7 @@ if (isset($category_selection)) {
|
|||
$reordered_categories[$cat] = $categories[$cat];
|
||||
}
|
||||
// add not selected categories to $reordered_categories:
|
||||
while (list($key) = each($categories)) {
|
||||
foreach ($categories as $key => $val) {
|
||||
if (empty($reordered_categories[$key]))
|
||||
$reordered_categories[$key] = $categories[$key];
|
||||
}
|
||||
|
@ -44,9 +44,25 @@ if (isset($_POST['p_category']))
|
|||
else
|
||||
$p_category = 0;
|
||||
|
||||
$isUser = isset($_SESSION[$settings['session_prefix'].'user_type']) && isset($_SESSION[$settings['session_prefix'].'user_id']);
|
||||
$isModOrAdmin = $isUser && ($_SESSION[$settings['session_prefix'].'user_type'] == 1 || $_SESSION[$settings['session_prefix'].'user_type'] == 2);
|
||||
|
||||
// determine mode:
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
// registered user
|
||||
// enforce the agreement to the data privacy statement or terms of use
|
||||
$resultAGR = mysqli_query($connid, "SELECT dps_accepted, tou_accepted FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or raise_error('database_error', mysqli_error($connid));
|
||||
$feld = mysqli_fetch_assoc($resultAGR);
|
||||
if ($settings['data_privacy_agreement'] == 1 && $feld['dps_accepted'] === NULL) {
|
||||
header('Location: index.php?mode=login&action=dps');
|
||||
exit;
|
||||
} else if ($settings['terms_of_use_agreement'] == 1 && $feld['tou_accepted'] === NULL) {
|
||||
header('Location: index.php?mode=login&action=tou');
|
||||
exit;
|
||||
}
|
||||
@mysqli_free_result($resultAGR);
|
||||
unset($feld);
|
||||
//select the mode
|
||||
if ($posting_mode == 1) {
|
||||
// edit
|
||||
if (isset($_GET['edit']))
|
||||
|
@ -98,6 +114,8 @@ if (isset($_GET['manage_postings']))
|
|||
$action = 'manage_postings';
|
||||
if (isset($_GET['delete_spam']))
|
||||
$action = 'delete_spam';
|
||||
if (isset($_GET['unsubscribe']))
|
||||
$action = 'unsubscribe';
|
||||
if (isset($_POST['report_spam_submit']) || isset($_POST['report_spam_delete_submit']))
|
||||
$action = 'report_spam_submit';
|
||||
if (isset($_POST['report_flag_ham_submit']) || isset($_POST['flag_ham_submit']))
|
||||
|
@ -136,7 +154,7 @@ if (isset($_POST['delete_submit'])) {
|
|||
$action = 'delete_posting_confirmed';
|
||||
}
|
||||
|
||||
if (isset($_POST['move_posting_submit']) && isset($_POST['move_posting']) && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
if (isset($_POST['move_posting_submit']) && isset($_POST['move_posting']) && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$original_thread_result = @mysqli_query($connid, "SELECT tid, pid FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($_POST['move_posting']) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$o_data = mysqli_fetch_array($original_thread_result);
|
||||
mysqli_free_result($original_thread_result);
|
||||
|
@ -267,7 +285,7 @@ if (isset($_POST['mark_submit']) && isset($_SESSION[$settings['session_prefix']
|
|||
exit;
|
||||
}
|
||||
|
||||
if (isset($_POST['lock_submit']) && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
if (isset($_POST['lock_submit']) && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['lock_mode'])) {
|
||||
switch ($_POST['lock_mode']) {
|
||||
case 1:
|
||||
|
@ -287,6 +305,24 @@ if (isset($_POST['lock_submit']) && isset($_SESSION[$settings['session_prefix']
|
|||
exit;
|
||||
}
|
||||
|
||||
if ($action == 'unsubscribe' and !empty($_GET['unsubscribe'])) {
|
||||
$resultUnsubscribe = mysqli_query($connid, "DELETE FROM " . $db_settings['subscriptions_table'] . " WHERE unsubscribe_code = '" . mysqli_real_escape_string($connid, $_GET['unsubscribe']). "' LIMIT 1");
|
||||
if ($resultUnsubscribe === true) {
|
||||
$action = 'unsubscribed';
|
||||
} else {
|
||||
$action = 'unsubscribe-error';
|
||||
}
|
||||
}
|
||||
|
||||
// generate the variable input field names
|
||||
$fname_user = hash("sha256", 'user_name' . $_SESSION['csrf_token']);
|
||||
$fname_email = hash("sha256", 'user_email' . $_SESSION['csrf_token']);
|
||||
$fname_phone = hash("sha256", 'phone' . $_SESSION['csrf_token']);
|
||||
$fname_repemail = hash("sha256", 'repeat_email' . $_SESSION['csrf_token']);
|
||||
$fname_hp = hash("sha256", 'hp' . $_SESSION['csrf_token']);
|
||||
$fname_loc = hash("sha256", 'location' . $_SESSION['csrf_token']);
|
||||
$fname_subject = hash("sha256", 'subject' . $_SESSION['csrf_token']);
|
||||
|
||||
switch ($action) {
|
||||
case 'bookmark_posting':
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
|
@ -357,6 +393,8 @@ switch ($action) {
|
|||
header('Location: index.php?mode=login&login_message=registered_users_only' . $back);
|
||||
exit;
|
||||
} else {
|
||||
// set timestamp for SPAM protection
|
||||
setReceiptTimestamp();
|
||||
if ($id == 0) {
|
||||
// new posting
|
||||
$link_name = 'back_to_index_link';
|
||||
|
@ -456,8 +494,17 @@ switch ($action) {
|
|||
$smarty->assign('id', intval($id));
|
||||
$smarty->assign('back', htmlspecialchars($back));
|
||||
$smarty->assign('action', htmlspecialchars($action));
|
||||
$smarty->assign('fld_user_name', $fname_user);
|
||||
$smarty->assign('fld_user_email', $fname_email);
|
||||
$smarty->assign('fld_phone', $fname_phone);
|
||||
$smarty->assign('fld_repeat_email', $fname_repemail);
|
||||
$smarty->assign('fld_hp', $fname_hp);
|
||||
$smarty->assign('fld_location', $fname_loc);
|
||||
$smarty->assign('fld_subject', $fname_subject);
|
||||
if ($settings['terms_of_use_agreement'] == 1 && empty($_SESSION[$settings['session_prefix'] . 'user_id']))
|
||||
$smarty->assign('terms_of_use_agreement', true);
|
||||
if ($settings['data_privacy_agreement'] == 1 && empty($_SESSION[$settings['session_prefix'] . 'user_id']))
|
||||
$smarty->assign('data_privacy_agreement', true);
|
||||
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_id']) || $settings['email_notification_unregistered'] == 1)
|
||||
$smarty->assign('provide_email_notification', true);
|
||||
|
@ -465,14 +512,10 @@ switch ($action) {
|
|||
$smarty->assign('provide_sticky', true);
|
||||
|
||||
$smarty->assign("subnav_link", $subnav_link);
|
||||
$_SESSION[$settings['session_prefix'] . 'formtime'] = TIMESTAMP;
|
||||
$smarty->assign('subtemplate', 'posting.inc.tpl');
|
||||
}
|
||||
break;
|
||||
case 'posting_submitted':
|
||||
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token'])
|
||||
die('No authorisation!');
|
||||
|
||||
if ($settings['forum_readonly'] == 1) {
|
||||
$subnav_link = array(
|
||||
'mode' => 'index',
|
||||
|
@ -483,7 +526,7 @@ switch ($action) {
|
|||
$smarty->assign('no_authorisation', 'no_auth_readonly');
|
||||
$smarty->assign('subtemplate', 'posting.inc.tpl');
|
||||
}
|
||||
elseif ($settings['entries_by_users_only'] != 0 && empty($_SESSION[$settings['session_prefix'] . 'user_name'])) {
|
||||
elseif ($settings['entries_by_users_only'] != 0 && empty($_SESSION[$settings['session_prefix'] . 'user_name']) || !isset($_POST['csrf_token']) || $_POST['csrf_token'] != $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['text'])) {
|
||||
$smarty->assign('no_authorisation', 'no_auth_session_expired');
|
||||
$smarty->assign('text', htmlspecialchars($_POST['text']));
|
||||
|
@ -494,16 +537,19 @@ switch ($action) {
|
|||
$smarty->assign('subtemplate', 'posting.inc.tpl');
|
||||
}
|
||||
// Honeypot - using 'default' error behavior; $_POST['name']) indicates a form for non-registered users
|
||||
elseif (isset($_POST['name']) && (!isset($_POST['repeat_email']) || !empty($_POST['repeat_email']) || !isset($_POST['phone']) || !empty($_POST['phone']))) {
|
||||
elseif (isset($_POST[$fname_user]) && (!isset($_POST[$fname_repemail]) || !empty($_POST[$fname_repemail]) || !isset($_POST[$fname_phone]) || !empty($_POST[$fname_phone]))) {
|
||||
$smarty->assign('no_authorisation', 'no_auth_readonly');
|
||||
$smarty->assign('subtemplate', 'posting.inc.tpl');
|
||||
}
|
||||
else {
|
||||
if (!isset($_POST['preview'])) // ignore preview mode
|
||||
setReceiptTimestamp();
|
||||
|
||||
if (isset($_POST['posting_mode']))
|
||||
$posting_mode = intval($_POST['posting_mode']);
|
||||
else
|
||||
$posting_mode = 0;
|
||||
|
||||
|
||||
// clear edit keys
|
||||
if ($settings['user_edit'] == 2 && $settings['edit_max_time_period'] > 0) {
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = edited, edit_key = '' WHERE time < (NOW() - INTERVAL " . intval($settings['edit_max_time_period']) . " MINUTE)");
|
||||
|
@ -512,21 +558,25 @@ switch ($action) {
|
|||
// import, trim and complete data:
|
||||
$uniqid = isset($_POST['uniqid']) ? trim($_POST['uniqid']) : '';
|
||||
$pid = isset($_POST['pid']) ? intval($_POST['pid']) : 0;
|
||||
$subject = isset($_POST['subject']) ? trim($_POST['subject']) : '';
|
||||
$subject = isset($_POST[$fname_subject]) ? trim($_POST[$fname_subject]) : '';
|
||||
$text = isset($_POST['text']) ? trim($_POST['text']) : '';
|
||||
$email_notification = isset($_POST['email_notification']) && intval($_POST['email_notification'] == 1) ? 1 : 0;
|
||||
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
|
||||
$hp = isset($_POST['hp']) ? trim($_POST['hp']) : '';
|
||||
$location = isset($_POST['location']) ? trim($_POST['location']) : '';
|
||||
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
|
||||
$email = isset($_POST[$fname_email]) ? trim($_POST[$fname_email]) : '';
|
||||
$hp = isset($_POST[$fname_hp]) ? trim($_POST[$fname_hp]) : '';
|
||||
$location = isset($_POST[$fname_loc]) ? trim($_POST[$fname_loc]) : '';
|
||||
$name = isset($_POST[$fname_user]) ? trim($_POST[$fname_user]) : '';
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$setcookie = isset($_POST['setcookie']) && intval($_POST['setcookie'] == 1) ? 1 : 0;
|
||||
$terms_of_use_agree = isset($_POST['terms_of_use_agree']) && intval($_POST['terms_of_use_agree'] == 1) ? 1 : 0;
|
||||
$data_privacy_agree = isset($_POST['data_privacy_statement_agree']) && intval($_POST['data_privacy_statement_agree'] == 1) ? 1 : 0;
|
||||
} else {
|
||||
$show_signature = isset($_POST['show_signature']) && intval($_POST['show_signature'] == 1) ? 1 : 0;
|
||||
}
|
||||
|
||||
$sticky = isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && isset($_POST['sticky']) && intval($_POST['sticky'] == 1) ? 1 : 0;
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && isset($_POST['sticky']) && in_array(intval($_POST['sticky']), array(0, 1, 2))) {
|
||||
$sticky = intval($_POST['sticky']);
|
||||
} else {
|
||||
$sticky = 0;
|
||||
}
|
||||
if ($id != 0 && $posting_mode == 0 || $posting_mode == 1 && $pid > 0) {
|
||||
// get category of parent posting:
|
||||
$c_result = @mysqli_query($connid, "SELECT category FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
|
@ -551,16 +601,15 @@ switch ($action) {
|
|||
|
||||
if (empty($errors)) {
|
||||
// check form session and time used to complete the form:
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'formtime']))
|
||||
//if (!isset($_POST['preview']) && empty($_SESSION[$settings['session_prefix'] . 'user_id'])) { // ignore preview mode AND reg. users
|
||||
if (!isset($_POST['preview'])) { // ignore preview mode
|
||||
if (!isset($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference']) || intval($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference']) <= 0)
|
||||
$errors[] = 'error_invalid_form';
|
||||
else {
|
||||
$time_need = TIMESTAMP - intval($_SESSION[$settings['session_prefix'] . 'formtime']);
|
||||
if ($time_need < 10)
|
||||
if ($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference'] < $settings['min_posting_time'])
|
||||
$errors[] = 'error_form_sent_too_fast';
|
||||
elseif ($time_need > 10800)
|
||||
elseif ($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference'] > $settings['max_posting_time'])
|
||||
$errors[] = 'error_form_sent_too_slow';
|
||||
unset($_SESSION[$settings['session_prefix'] . 'formtime']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -677,7 +726,17 @@ switch ($action) {
|
|||
}
|
||||
|
||||
// check data:
|
||||
if (isset($_POST['tags']) && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && ($_SESSION[$settings['session_prefix'] . 'user_type'] > 0)) {
|
||||
/* Tags
|
||||
0 == Off
|
||||
1 == Admins/Mods
|
||||
2 == reg. Users
|
||||
3 == everyone
|
||||
*/
|
||||
if (isset($_POST['tags']) && isset($settings['tags']) && $settings['tags'] > 0 &&
|
||||
(($settings['tags'] > 2) ||
|
||||
($settings['tags'] == 2 && isset($_SESSION[$settings['session_prefix'] . 'user_type'])) ||
|
||||
($settings['tags'] == 1 && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && ($_SESSION[$settings['session_prefix'] . 'user_type'] > 0))
|
||||
)) {
|
||||
$tagStr = trim($_POST['tags']);
|
||||
$tagsArray = array_filter(array_map('trim', explode(',', $tagStr)), function($value) { return $value !== ''; });
|
||||
|
||||
|
@ -695,7 +754,7 @@ switch ($action) {
|
|||
|
||||
|
||||
if ($posting_mode == 1) {
|
||||
$edit_result = mysqli_query($connid, "SELECT tid, pid, name, user_id, email, hp, location, subject, text, category, email_notification, show_signature, sticky, locked, UNIX_TIMESTAMP(time) AS time, edit_key FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
$edit_result = mysqli_query($connid, "SELECT tid, pid, name, user_id, email, hp, location, subject, text, category, show_signature, sticky, locked, UNIX_TIMESTAMP(time) AS time, edit_key FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
$field = mysqli_fetch_array($edit_result);
|
||||
mysqli_free_result($edit_result);
|
||||
$pid = $field['pid'];
|
||||
|
@ -721,18 +780,27 @@ switch ($action) {
|
|||
if ($id == 0 && $categories != false && empty($categories[$p_category]))
|
||||
$errors[] = 'error_invalid_category';
|
||||
|
||||
// name reserved?
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name FROM " . $db_settings['userdata_table'] . " WHERE lower(user_name) = '" . mysqli_real_escape_string($connid, my_strtolower($name, $lang['charset'])) . "'") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$errors[] = 'error_name_reserved';
|
||||
} elseif (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (isset($posting_user_id) && $data['user_id'] != $posting_user_id)
|
||||
$errors[] = 'error_name_reserved';
|
||||
}
|
||||
if ($posting_mode == 1 && !empty($field['time'])) {
|
||||
$posting_time = intval($field['time']);
|
||||
} else {
|
||||
$posting_time = time();
|
||||
}
|
||||
if (!$isModOrAdmin) {
|
||||
// name reserved?
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name FROM " . $db_settings['userdata_table'] . "
|
||||
WHERE lower(user_name) = '" . mysqli_real_escape_string($connid, my_strtolower($name, $lang['charset'])) . "'
|
||||
AND registered < FROM_UNIXTIME(". $posting_time .")") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$errors[] = 'error_name_reserved';
|
||||
} elseif (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (isset($posting_user_id) && $data['user_id'] != $posting_user_id)
|
||||
$errors[] = 'error_name_reserved';
|
||||
}
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
|
||||
// check for not accepted words:
|
||||
$joined_message = my_strtolower($name . ' ' . $email . ' ' . $hp . ' ' . $location . ' ' . $subject . ' ' . $text, $lang['charset']);
|
||||
|
@ -811,6 +879,8 @@ switch ($action) {
|
|||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
if ($settings['terms_of_use_agreement'] == 1 && $terms_of_use_agree != 1)
|
||||
$errors[] = 'terms_of_use_error_posting';
|
||||
if ($settings['data_privacy_agreement'] == 1 && $data_privacy_agree != 1)
|
||||
$errors[] = 'data_priv_statement_error_post';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -826,17 +896,22 @@ switch ($action) {
|
|||
unset($_SESSION['captcha_session']);
|
||||
}
|
||||
|
||||
// default values for flagging spam:
|
||||
$spam = 0;
|
||||
$spam_check_status = 0;
|
||||
// default Akismet values for flagging spam:
|
||||
$akismet_spam = 0;
|
||||
$akismet_spam_check_status = 0;
|
||||
|
||||
// Akismet spam check:
|
||||
if (empty($errors) && $settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && isset($_POST['save_entry'])) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id']) || isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] == 0 && $settings['akismet_check_registered'] == 1) {
|
||||
require('modules/akismet/akismet.class.php');
|
||||
// default B8 values for flagging spam:
|
||||
$b8_spam = 0; // 0 == HAM, 1 == SPAM
|
||||
$b8_spam_rating = 0; // 0 == no decision, 1 == learn(ed) ham, 2 == learn(ed) spam
|
||||
|
||||
// Akismet and B8 spam check:
|
||||
if (empty($errors) && isset($_POST['save_entry'])) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id']) || isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $settings['spam_check_registered'] == 1) {
|
||||
$is_mod_or_admin = isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0;
|
||||
// fetch user data if registered user:
|
||||
$check_posting = [];
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$akismet_userdata_result = @mysqli_query($connid, "SELECT user_email, user_hp FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($_SESSION[$settings['session_prefix'] . 'user_id']) . " LIMIT 1") or die(mysqli_error($connid));
|
||||
$akismet_userdata_result = mysqli_query($connid, "SELECT user_email, user_hp FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($_SESSION[$settings['session_prefix'] . 'user_id']) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$akismet_userdata_data = mysqli_fetch_array($akismet_userdata_result);
|
||||
mysqli_free_result($akismet_userdata_result);
|
||||
if ($akismet_userdata_data['user_hp'] != '')
|
||||
|
@ -849,40 +924,97 @@ switch ($action) {
|
|||
}
|
||||
$check_posting['author'] = $name;
|
||||
$check_posting['body'] = $text;
|
||||
$akismet = new Akismet($settings['forum_address'], $settings['akismet_key'], $check_posting);
|
||||
// test for errors
|
||||
if ($akismet->errorsExist()) {
|
||||
// returns true if any errors exist
|
||||
if ($akismet->isError(AKISMET_INVALID_KEY)) {
|
||||
if ($settings['save_spam'] == 0)
|
||||
$errors[] = 'error_akismet_api_key';
|
||||
else
|
||||
$spam_check_status = 3;
|
||||
} elseif ($akismet->isError(AKISMET_RESPONSE_FAILED)) {
|
||||
if ($settings['save_spam'] == 0)
|
||||
$errors[] = 'error_akismet_connection';
|
||||
else
|
||||
$spam_check_status = 2;
|
||||
} elseif ($akismet->isError(AKISMET_SERVER_NOT_FOUND)) {
|
||||
if ($settings['save_spam'] == 0)
|
||||
$errors[] = 'error_akismet_connection';
|
||||
else
|
||||
$spam_check_status = 2;
|
||||
}
|
||||
} else {
|
||||
// No errors, check for spam
|
||||
if ($akismet->isSpam()) {
|
||||
if ($settings['save_spam'] == 0)
|
||||
$errors[] = 'error_spam_suspicion';
|
||||
else
|
||||
$spam = 1;
|
||||
|
||||
// check only postings of users
|
||||
if ($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && !$is_mod_or_admin) {
|
||||
require('modules/akismet/akismet.class.php');
|
||||
$akismet = new Akismet($settings['forum_address'], $settings['akismet_key'], $check_posting);
|
||||
// test for errors
|
||||
if ($akismet->errorsExist()) {
|
||||
// returns true if any errors exist
|
||||
if ($akismet->isError(AKISMET_INVALID_KEY)) {
|
||||
if ($settings['save_spam'] == 0)
|
||||
$errors[] = 'error_akismet_api_key';
|
||||
else
|
||||
$akismet_spam_check_status = 3;
|
||||
} elseif ($akismet->isError(AKISMET_RESPONSE_FAILED)) {
|
||||
if ($settings['save_spam'] == 0)
|
||||
$errors[] = 'error_akismet_connection';
|
||||
else
|
||||
$akismet_spam_check_status = 2;
|
||||
} elseif ($akismet->isError(AKISMET_SERVER_NOT_FOUND)) {
|
||||
if ($settings['save_spam'] == 0)
|
||||
$errors[] = 'error_akismet_connection';
|
||||
else
|
||||
$akismet_spam_check_status = 2;
|
||||
}
|
||||
} else {
|
||||
$spam_check_status = 1;
|
||||
// No errors, check for spam
|
||||
if ($akismet->isSpam()) {
|
||||
if ($settings['save_spam'] == 0)
|
||||
$errors[] = 'error_spam_suspicion';
|
||||
else
|
||||
$akismet_spam = 1;
|
||||
} else {
|
||||
$akismet_spam_check_status = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($settings['b8_entry_check'] == 1) {
|
||||
try {
|
||||
// unlearn edited posting to avoid redundantly training data
|
||||
if ($posting_mode == 1) { // edited posting
|
||||
$b8_spam_or_ham_result = mysqli_query($connid, "SELECT `training_type` FROM `" . $db_settings['b8_rating_table'] . "` WHERE `eid` = " . intval($id) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$b8_spam_or_ham_data = mysqli_fetch_array($b8_spam_or_ham_result);
|
||||
mysqli_free_result($b8_spam_or_ham_result);
|
||||
|
||||
if (isset($b8_spam_or_ham_data['training_type']) && $b8_spam_or_ham_data['training_type'] != 0) { // 0 == no decision, 1 == learn(ed) ham, 2 == learn(ed) spam
|
||||
$original_unedited_posting = [];
|
||||
$original_unedited_posting['author'] = empty($field['name']) ? $name : $field['name'];
|
||||
$original_unedited_posting['email'] = $field['email'];
|
||||
$original_unedited_posting['website'] = $field['hp'];
|
||||
$original_unedited_posting['body'] = $field['text'];
|
||||
$original_unedited_text = implode("\r\n", $original_unedited_posting);
|
||||
|
||||
if ($b8_spam_or_ham_data['training_type'] == 1) // original (unedited) entry was flaged as HAM
|
||||
$B8_BAYES_FILTER->unlearn($original_unedited_text, b8\b8::HAM);
|
||||
elseif ($b8_spam_or_ham_data['training_type'] == 2) // original (unedited) entry was flaged as SPAM
|
||||
$B8_BAYES_FILTER->unlearn($original_unedited_text, b8\b8::SPAM);
|
||||
}
|
||||
}
|
||||
|
||||
$check_text = implode("\r\n", $check_posting);
|
||||
$b8_spam_probability = 100.0 * $B8_BAYES_FILTER->classify($check_text);
|
||||
// postings of admins/mods are always HAM, postings of users are checked
|
||||
$b8_spam = $b8_spam_probability > intval($settings['b8_spam_probability_threshold']) && !$is_mod_or_admin;
|
||||
$b8_ham = $b8_spam_probability <= (100.0 - intval($settings['b8_spam_probability_threshold'])) || $is_mod_or_admin;
|
||||
|
||||
if ($settings['b8_auto_training'] == 1) {
|
||||
if ($b8_spam) {
|
||||
$b8_spam_rating = 2; // SPAM
|
||||
$B8_BAYES_FILTER->learn($check_text, b8\b8::SPAM);
|
||||
}
|
||||
elseif ($b8_ham) {
|
||||
$b8_spam_rating = 1; // HAM
|
||||
$B8_BAYES_FILTER->learn($check_text, b8\b8::HAM);
|
||||
}
|
||||
else
|
||||
$b8_spam_rating = 0; // No Decision
|
||||
}
|
||||
|
||||
// check, if SPAM should stored to DB
|
||||
if ($b8_spam && $settings['save_spam'] == 0)
|
||||
$errors[] = 'error_spam_suspicion';
|
||||
}
|
||||
catch(Exception $e) {
|
||||
raise_error('database_error', $e->getMessage()); // What should we do here?
|
||||
$b8_spam = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // end check data
|
||||
|
||||
|
||||
if (empty($errors)) {
|
||||
// save new posting:
|
||||
if (isset($_POST['save_entry']) && $posting_mode == 0) {
|
||||
|
@ -897,26 +1029,39 @@ switch ($action) {
|
|||
$edit_key = '';
|
||||
$edit_key_hash = '';
|
||||
}
|
||||
|
||||
// Akismet *OR* B8 flagged entry as SPAM
|
||||
$spam = $akismet_spam == 1 || $b8_spam == 1 ? 1 : 0;
|
||||
$locked = $spam == 0 ? 0 : 1;
|
||||
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_id']))
|
||||
$savename = '';
|
||||
else
|
||||
$savename = $name;
|
||||
|
||||
@mysqli_query($connid, "INSERT INTO " . $db_settings['forum_table'] . " (pid, tid, uniqid, time, last_reply, user_id, name, subject, email, hp, location, ip, text, show_signature, email_notification, category, locked, sticky, spam, spam_check_status, edit_key) VALUES (" . intval($id) . ", " . intval($thread) . ", '" . mysqli_real_escape_string($connid, $uniqid) . "', NOW(), NOW()," . intval($user_id) . ", '" . mysqli_real_escape_string($connid, $savename) . "', '" . mysqli_real_escape_string($connid, $subject) . "', '" . mysqli_real_escape_string($connid, $email) . "', '" . mysqli_real_escape_string($connid, $hp) . "', '" . mysqli_real_escape_string($connid, $location) . "', '" . mysqli_real_escape_string($connid, $_SERVER["REMOTE_ADDR"]) . "', '" . mysqli_real_escape_string($connid, $text) . "', " . intval($show_signature) . ", " . intval($email_notification) . ", " . intval($p_category) . ", " . intval($locked) . ", " . intval($sticky) . ", " . intval($spam) . ", " . intval($spam_check_status) . ", '" . mysqli_real_escape_string($connid, $edit_key_hash) . "')") or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
@mysqli_query($connid, "INSERT INTO " . $db_settings['forum_table'] . " (pid, tid, uniqid, time, last_reply, user_id, name, subject, email, hp, location, ip, text, show_signature, category, locked, sticky, edit_key) VALUES (" . intval($id) . ", " . intval($thread) . ", '" . mysqli_real_escape_string($connid, $uniqid) . "', NOW(), NOW()," . intval($user_id) . ", '" . mysqli_real_escape_string($connid, $savename) . "', '" . mysqli_real_escape_string($connid, $subject) . "', '" . mysqli_real_escape_string($connid, $email) . "', '" . mysqli_real_escape_string($connid, $hp) . "', '" . mysqli_real_escape_string($connid, $location) . "', '" . mysqli_real_escape_string($connid, $_SERVER["REMOTE_ADDR"]) . "', '" . mysqli_real_escape_string($connid, $text) . "', " . intval($show_signature) . ", " . intval($p_category) . ", " . intval($locked) . ", " . intval($sticky) . ", '" . mysqli_real_escape_string($connid, $edit_key_hash) . "')") or raise_error('database_error', mysqli_error($connid));
|
||||
$newID = mysqli_insert_id($connid);
|
||||
|
||||
if ($id == 0) {
|
||||
// new thread, set thread id:
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET tid = id, time = time WHERE id = LAST_INSERT_ID()") or raise_error('database_error', mysqli_error($connid));
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET tid = id, time = time WHERE id = " . intval($newID)) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
// reply, set last reply:
|
||||
if ($id != 0 && $spam == 0) {
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = NOW() WHERE tid = " . $thread) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
if (intval($newID) > 0) {
|
||||
// save spam rating
|
||||
@mysqli_query($connid, "INSERT INTO " . $db_settings['akismet_rating_table'] . " (`eid`, `spam`, `spam_check_status`) VALUES (" . intval($newID) . ", " . intval($akismet_spam) . ", " . intval($akismet_spam_check_status) . ")") or raise_error('database_error', mysqli_error($connid));
|
||||
@mysqli_query($connid, "INSERT INTO " . $db_settings['b8_rating_table'] . " (`eid`, `spam`, `training_type`) VALUES (" . intval($newID) . ", " . intval($b8_spam) . ", " . intval($b8_spam_rating) . ")") or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
if (intval($email_notification) === 1 and intval($newID) > 0) {
|
||||
@mysqli_query($connid, "INSERT INTO " .$db_settings['subscriptions_table']. " (user_id, eid, unsubscribe_code, tstamp) VALUES (" . ($user_id > 0 ? intval($user_id) : "NULL") . ", " . intval($newID) . ", UUID(), NOW());") or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
// get last entry:
|
||||
$result_new = mysqli_query($connid, "SELECT tid, pid, id FROM " . $db_settings['forum_table'] . " WHERE id = LAST_INSERT_ID()");
|
||||
$result_new = mysqli_query($connid, "SELECT tid, pid, id FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($newID));
|
||||
$new_data = mysqli_fetch_array($result_new);
|
||||
mysqli_free_result($result_new);
|
||||
|
||||
|
@ -953,9 +1098,10 @@ switch ($action) {
|
|||
// set userdata cookie:
|
||||
if ($settings['remember_userdata'] && isset($setcookie) && $setcookie == 1) {
|
||||
$cookie_data = urlencode($name) . '|' . urlencode($email) . '|' . urlencode($hp) . '|' . urlencode($location);
|
||||
setcookie($settings['session_prefix'] . 'userdata', $cookie_data, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'] . 'userdata', $cookie_data, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
}
|
||||
if (isset($back) && $back == 'thread')
|
||||
// If the posting is classified as SPAM, redirect the user to the single entry view, which contains the SPAM warning message
|
||||
if (isset($back) && $back == 'thread' && $spam == 0)
|
||||
header('Location: index.php?mode=thread&id=' . $new_data['id'] . '#p' . $new_data['id']);
|
||||
else
|
||||
header('Location: index.php?id=' . $new_data['id']);
|
||||
|
@ -971,6 +1117,9 @@ switch ($action) {
|
|||
$p_category = intval($field['category']);
|
||||
}
|
||||
|
||||
// Akismet *OR* B8 flagged entry as SPAM
|
||||
$spam = $akismet_spam == 1 || $b8_spam == 1 ? 1 : 0;
|
||||
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] == 2 && $settings['dont_reg_edit_by_admin'] == 1 || isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] == 1 && $settings['dont_reg_edit_by_mod'] == 1 || ($field['text'] == $text && $field['subject'] == $subject && ($field['user_id'] > 0 || $field['name'] == $name && $field['location'] == $location) && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && ($_SESSION[$settings['session_prefix'] . 'user_type'] == 2 && $settings['dont_reg_edit_by_admin'] == 1 || $_SESSION[$settings['session_prefix'] . 'user_type'] == 1 && $settings['dont_reg_edit_by_mod'] == 1))) {
|
||||
// unnoticed editing for admins and mods
|
||||
$edited_query = 'edited';
|
||||
|
@ -988,16 +1137,35 @@ switch ($action) {
|
|||
|
||||
if ($field['user_id'] > 0) {
|
||||
// posting of a registered user edited
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = " . $edited_query . ", edited_by = " . $edited_by_query . ", subject = '" . mysqli_real_escape_string($connid, $subject) . "', category = " . intval($p_category) . ", email = '" . mysqli_real_escape_string($connid, $email) . "', hp = '" . mysqli_real_escape_string($connid, $hp) . "', location = '" . mysqli_real_escape_string($connid, $location) . "', text = '" . mysqli_real_escape_string($connid, $text) . "', email_notification = " . intval($email_notification) . ", show_signature = " . intval($show_signature) . " " . ((isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) ? ", sticky = " . intval($sticky) : "") . " WHERE id = " . intval($id));
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = " . $edited_query . ", edited_by = " . $edited_by_query . ", subject = '" . mysqli_real_escape_string($connid, $subject) . "', category = " . intval($p_category) . ", email = '" . mysqli_real_escape_string($connid, $email) . "', hp = '" . mysqli_real_escape_string($connid, $hp) . "', location = '" . mysqli_real_escape_string($connid, $location) . "', text = '" . mysqli_real_escape_string($connid, $text) . "', show_signature = " . intval($show_signature) . " " . ((isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) ? ", sticky = " . intval($sticky) : "") . " WHERE id = " . intval($id));
|
||||
// save new of posting tags:
|
||||
if (isset($tagsArray) && $tagsArray)
|
||||
setEntryTags($id, $tagsArray);
|
||||
if (isset($tagsArray) && $tagsArray) {
|
||||
setEntryTags($id, $tagsArray);
|
||||
}
|
||||
// save status of email notification
|
||||
if ($email_notification == 1) {
|
||||
@mysqli_query($connid, "INSERT INTO " . $db_settings['subscriptions_table'] . " (user_id, eid, unsubscribe_code, tstamp) VALUES (" . intval($field['user_id']) . ", " . intval($id) . ", UUID(), NOW()) ON DUPLICATE KEY UPDATE eid = eid, user_id = user_id") or die(mysqli_error($connid));
|
||||
} else {
|
||||
@mysqli_query($connid, "DELETE FROM " . $db_settings['subscriptions_table'] . " WHERE eid = " . intval($id) . " AND user_id = " . intval($field['user_id'])) or die(mysqli_error($connid));
|
||||
}
|
||||
} else {
|
||||
// posting of a not registed user edited
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = " . $edited_query . ", edited_by = " . intval($edited_by_query) . ", name = '" . mysqli_real_escape_string($connid, $name) . "', subject = '" . mysqli_real_escape_string($connid, $subject) . "', category = " . intval($p_category) . ", email = '" . mysqli_real_escape_string($connid, $email) . "', hp = '" . mysqli_real_escape_string($connid, $hp) . "', location = '" . mysqli_real_escape_string($connid, $location) . "', text = '" . mysqli_real_escape_string($connid, $text) . "', email_notification = " . intval($email_notification) . ", show_signature = " . intval($show_signature) . ", locked = " . $locked_query . ", sticky = " . intval($sticky) . ", spam = " . intval($spam) . ", spam_check_status = " . intval($spam_check_status) . " WHERE id = " . intval($id)) or die(mysqli_error($connid));
|
||||
if (isset($tagsArray) && $tagsArray)
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = " . $edited_query . ", edited_by = " . intval($edited_by_query) . ", name = '" . mysqli_real_escape_string($connid, $name) . "', subject = '" . mysqli_real_escape_string($connid, $subject) . "', category = " . intval($p_category) . ", email = '" . mysqli_real_escape_string($connid, $email) . "', hp = '" . mysqli_real_escape_string($connid, $hp) . "', location = '" . mysqli_real_escape_string($connid, $location) . "', text = '" . mysqli_real_escape_string($connid, $text) . "', show_signature = " . intval($show_signature) . ", locked = " . $locked_query . ", sticky = " . intval($sticky) . " WHERE id = " . intval($id)) or die(mysqli_error($connid));
|
||||
if (isset($tagsArray) && $tagsArray) {
|
||||
setEntryTags($id, $tagsArray);
|
||||
}
|
||||
// save status of email notification
|
||||
if ($email_notification == 1) {
|
||||
@mysqli_query($connid, "INSERT INTO " . $db_settings['subscriptions_table'] . " (user_id, eid, unsubscribe_code, tstamp) VALUES (NULL, " . intval($id) . ", UUID(), NOW()) ON DUPLICATE KEY UPDATE eid = eid, user_id = user_id") or die(mysqli_error($connid));
|
||||
} else {
|
||||
@mysqli_query($connid, "DELETE FROM " . $db_settings['subscriptions_table'] . " WHERE eid = " . intval($id) . " AND user_id IS NULL") or die(mysqli_error($connid));
|
||||
}
|
||||
}
|
||||
|
||||
// save spam rating
|
||||
@mysqli_query($connid, "REPLACE INTO " . $db_settings['akismet_rating_table'] . " (`eid`, `spam`, `spam_check_status`) VALUES (" . intval($id) . ", " . intval($b8_spam) . ", " . intval($b8_spam_rating) . ")");
|
||||
@mysqli_query($connid, "REPLACE INTO " . $db_settings['b8_rating_table'] . " (`eid`, `spam`, `training_type`) VALUES (" . intval($id) . ", " . intval($b8_spam) . ", " . intval($b8_spam_rating) . ")");
|
||||
|
||||
$category_update_result = mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = edited, category = " . intval($p_category) . " WHERE tid = " . intval($field['tid']));
|
||||
@mysqli_query($connid, "DELETE FROM " . $db_settings['entry_cache_table'] . " WHERE cache_id = " . intval($id));
|
||||
header('location: index.php?mode=' . $back . '&id=' . $id);
|
||||
|
@ -1012,14 +1180,14 @@ switch ($action) {
|
|||
$pr_result = @mysqli_query($connid, "SELECT email_contact, user_hp, user_location, signature FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($posting_user_id) . " LIMIT 1") or die(mysqli_error($connid));
|
||||
$pr_data = mysqli_fetch_array($pr_result);
|
||||
mysqli_free_result($pr_result);
|
||||
if ($pr_data['email_contact'] != 0)
|
||||
if ($isModOrAdmin || $isUser && $pr_data['email_contact'] > 0 || $pr_data['email_contact'] == 2)
|
||||
$smarty->assign('email', true);
|
||||
if (trim($pr_data['user_hp']) != '') {
|
||||
if (!empty($pr_data['user_hp']) && trim($pr_data['user_hp']) != '') {
|
||||
$smarty->assign('preview_hp', htmlspecialchars(add_http_if_no_protocol($pr_data['user_hp'])));
|
||||
}
|
||||
if (trim($pr_data['user_location']) != '')
|
||||
if (!empty($pr_data['user_location']) && trim($pr_data['user_location']) != '')
|
||||
$smarty->assign('preview_location', htmlspecialchars($pr_data['user_location']));
|
||||
if (trim($pr_data['signature']) != '')
|
||||
if (!empty($pr_data['signature']) && trim($pr_data['signature']) != '')
|
||||
$smarty->assign('preview_signature', signature_format($pr_data['signature']));
|
||||
if ($pr_data['signature'] != '') {
|
||||
$smarty->assign('signature', true);
|
||||
|
@ -1028,7 +1196,7 @@ switch ($action) {
|
|||
$smarty->assign('provide_email_notification', true);
|
||||
} else {
|
||||
$smarty->assign('email', htmlspecialchars($email));
|
||||
if (trim($hp) != '') {
|
||||
if (!empty($hp) && trim($hp) != '') {
|
||||
$smarty->assign('preview_hp', htmlspecialchars(add_http_if_no_protocol($hp)));
|
||||
}
|
||||
$smarty->assign('hp', htmlspecialchars($hp));
|
||||
|
@ -1042,16 +1210,27 @@ switch ($action) {
|
|||
// current time:
|
||||
list($preview_time) = mysqli_fetch_row(mysqli_query($connid, "SELECT UNIX_TIMESTAMP(NOW() + INTERVAL " . $time_difference . " MINUTE)"));
|
||||
$smarty->assign('preview_timestamp', $preview_time);
|
||||
$preview_formated_time = format_time($lang['time_format_full'], $preview_time);
|
||||
$preview_ISO_time = format_time('YYYY-MM-dd HH:mm:ss', $posting_time);
|
||||
$smarty->assign('preview_ISO_time', $preview_ISO_time);
|
||||
$preview_formated_time = format_time($lang['time_format_full'], $posting_time);
|
||||
$smarty->assign('preview_formated_time', $preview_formated_time);
|
||||
$smarty->assign('uniqid', htmlspecialchars($uniqid));
|
||||
$smarty->assign('posting_mode', intval($posting_mode));
|
||||
$smarty->assign('fld_user_name', $fname_user);
|
||||
$smarty->assign('fld_user_email', $fname_email);
|
||||
$smarty->assign('fld_phone', $fname_phone);
|
||||
$smarty->assign('fld_repeat_email', $fname_repemail);
|
||||
$smarty->assign('fld_hp', $fname_hp);
|
||||
$smarty->assign('fld_location', $fname_loc);
|
||||
$smarty->assign('fld_subject', $fname_subject);
|
||||
$smarty->assign('id', intval($id));
|
||||
$smarty->assign('pid', intval($pid));
|
||||
$smarty->assign('back', htmlspecialchars($back));
|
||||
$smarty->assign('name', htmlspecialchars($name));
|
||||
$smarty->assign('subject', htmlspecialchars($subject));
|
||||
$smarty->assign('text', htmlspecialchars($text));
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']))
|
||||
$smarty->assign('user_type', htmlspecialchars($_SESSION[$settings['session_prefix'] . 'user_type']));
|
||||
if (isset($_POST['repeat_email']))
|
||||
$smarty->assign('honey_pot_email', htmlspecialchars($_POST['repeat_email']));
|
||||
if (isset($_POST['phone']))
|
||||
|
@ -1070,9 +1249,12 @@ switch ($action) {
|
|||
$smarty->assign("terms_of_use_agreement", true);
|
||||
if (isset($terms_of_use_agree))
|
||||
$smarty->assign('terms_of_use_agree', intval($terms_of_use_agree));
|
||||
if ($settings['data_privacy_agreement'] == 1 && empty($_SESSION[$settings['session_prefix'] . 'user_id']))
|
||||
$smarty->assign("data_privacy_agreement", true);
|
||||
if (isset($data_privacy_agree))
|
||||
$smarty->assign('data_privacy_statement_agree', intval($data_privacy_agree));
|
||||
$smarty->assign('preview_text', $preview_text);
|
||||
$smarty->assign('preview_subject', htmlspecialchars($subject));
|
||||
$_SESSION[$settings['session_prefix'] . 'formtime'] = TIMESTAMP - 7; // 7 seconds credit for preview
|
||||
$smarty->assign('subtemplate', 'posting.inc.tpl');
|
||||
}
|
||||
|
||||
|
@ -1094,6 +1276,13 @@ switch ($action) {
|
|||
$smarty->assign('uniqid', htmlspecialchars($uniqid));
|
||||
$smarty->assign('back', htmlspecialchars($back));
|
||||
$smarty->assign('posting_mode', intval($posting_mode));
|
||||
$smarty->assign('fld_user_name', $fname_user);
|
||||
$smarty->assign('fld_user_email', $fname_email);
|
||||
$smarty->assign('fld_phone', $fname_phone);
|
||||
$smarty->assign('fld_repeat_email', $fname_repemail);
|
||||
$smarty->assign('fld_hp', $fname_hp);
|
||||
$smarty->assign('fld_location', $fname_loc);
|
||||
$smarty->assign('fld_subject', $fname_subject);
|
||||
if (isset($name))
|
||||
$smarty->assign('name', htmlspecialchars($name));
|
||||
$smarty->assign('email', htmlspecialchars($email));
|
||||
|
@ -1117,7 +1306,10 @@ switch ($action) {
|
|||
$smarty->assign("terms_of_use_agreement", true);
|
||||
if (isset($terms_of_use_agree))
|
||||
$smarty->assign('terms_of_use_agree', intval($terms_of_use_agree));
|
||||
$_SESSION[$settings['session_prefix'] . 'formtime'] = TIMESTAMP - 7; // 7 seconds credit (form already sent)
|
||||
if ($settings['data_privacy_agreement'] == 1 && empty($_SESSION[$settings['session_prefix'] . 'user_id']))
|
||||
$smarty->assign("data_privacy_agreement", true);
|
||||
if (isset($data_privacy_agree))
|
||||
$smarty->assign('data_privacy_statement_agree', intval($data_privacy_agree));
|
||||
$smarty->assign('subtemplate', 'posting.inc.tpl');
|
||||
}
|
||||
}
|
||||
|
@ -1136,7 +1328,7 @@ switch ($action) {
|
|||
}
|
||||
|
||||
$id = intval($_GET['edit']);
|
||||
$edit_result = @mysqli_query($connid, "SELECT tid, pid, name, user_name, " . $db_settings['forum_table'] . ".user_id, email, hp, location, subject, UNIX_TIMESTAMP(time) AS time, text, category, email_notification, show_signature, sticky, locked, edit_key
|
||||
$edit_result = @mysqli_query($connid, "SELECT tid, pid, name, user_name, " . $db_settings['forum_table'] . ".user_id, email, hp, location, subject, UNIX_TIMESTAMP(time) AS time, text, category, show_signature, sticky, locked, edit_key
|
||||
FROM " . $db_settings['forum_table'] . "
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = " . $db_settings['forum_table'] . ".user_id
|
||||
WHERE id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
|
@ -1155,6 +1347,17 @@ switch ($action) {
|
|||
$field = mysqli_fetch_array($edit_result);
|
||||
$field['tags'] = getEntryTags($id);
|
||||
mysqli_free_result($edit_result);
|
||||
// check for notification
|
||||
if ($field['user_id'] > 0) {
|
||||
$subscription = @mysqli_query($connid, "SELECT eid FROM " . $db_settings['subscriptions_table'] . " WHERE eid = " . intval($id) . " AND user_id = " . intval($field['user_id'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} else {
|
||||
$subscription = @mysqli_query($connid, "SELECT eid FROM " . $db_settings['subscriptions_table'] . " WHERE eid = " . intval($id) . " AND user_id IS NULL") or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
if (mysqli_num_rows($subscription) == 1) {
|
||||
$field['email_notification'] = 1;
|
||||
} else {
|
||||
$field['email_notification'] = 0;
|
||||
}
|
||||
|
||||
// authorisatin check:
|
||||
$authorization = get_edit_authorization($id, $field['user_id'], $field['edit_key'], $field['time'], $field['locked']);
|
||||
|
@ -1182,6 +1385,13 @@ switch ($action) {
|
|||
|
||||
$smarty->assign('id', intval($id));
|
||||
$smarty->assign('pid', intval($field['pid']));
|
||||
$smarty->assign('fld_user_name', $fname_user);
|
||||
$smarty->assign('fld_user_email', $fname_email);
|
||||
$smarty->assign('fld_phone', $fname_phone);
|
||||
$smarty->assign('fld_repeat_email', $fname_repemail);
|
||||
$smarty->assign('fld_hp', $fname_hp);
|
||||
$smarty->assign('fld_location', $fname_loc);
|
||||
$smarty->assign('fld_subject', $fname_subject);
|
||||
$smarty->assign('name', htmlspecialchars($field['name']));
|
||||
$smarty->assign('email', htmlspecialchars($field['email']));
|
||||
$smarty->assign('hp', htmlspecialchars($field['hp']));
|
||||
|
@ -1196,6 +1406,8 @@ switch ($action) {
|
|||
$smarty->assign('posting_mode', 1);
|
||||
if ($settings['terms_of_use_agreement'] == 1 && empty($_SESSION[$settings['session_prefix'] . 'user_id']))
|
||||
$smarty->assign("terms_of_use_agreement", true);
|
||||
if ($settings['data_privacy_agreement'] == 1 && empty($_SESSION[$settings['session_prefix'] . 'user_id']))
|
||||
$smarty->assign("data_privacy_agreement", true);
|
||||
}
|
||||
|
||||
if ($field['user_id'] > 0) {
|
||||
|
@ -1266,7 +1478,7 @@ switch ($action) {
|
|||
$field = mysqli_fetch_array($delete_check_result);
|
||||
mysqli_free_result($delete_check_result);
|
||||
$authorization = get_edit_authorization(intval($_REQUEST['delete_posting']), $field['user_id'], $field['edit_key'], $field['time'], $field['locked']);
|
||||
if ($authorization['delete'] == true) {
|
||||
if ($authorization['delete'] == true && isset($_REQUEST['csrf_token']) && $_REQUEST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_REQUEST['back'])) {
|
||||
$result = @mysqli_query($connid, "SELECT pid FROM " . $db_settings['forum_table'] . " WHERE id=" . intval($_REQUEST['delete_posting']) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
|
@ -1315,7 +1527,7 @@ switch ($action) {
|
|||
$smarty->assign('subtemplate', 'posting_delete_marked.inc.tpl');
|
||||
break;
|
||||
case 'delete_marked_submit':
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$result = mysqli_query($connid, "SELECT id FROM " . $db_settings['forum_table'] . " WHERE marked = 1") or raise_error('database_error', mysqli_error($connid));
|
||||
while ($data = mysqli_fetch_array($result)) {
|
||||
delete_posting_recursive($data['id']);
|
||||
|
@ -1398,8 +1610,13 @@ switch ($action) {
|
|||
$smarty->assign('subtemplate', 'posting_delete_spam.inc.tpl');
|
||||
break;
|
||||
case 'delete_spam_submit':
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
$result = mysqli_query($connid, "SELECT id FROM " . $db_settings['forum_table'] . " WHERE spam = 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$result = mysqli_query($connid, "SELECT id
|
||||
FROM " . $db_settings['forum_table'] . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
WHERE (" . $db_settings['akismet_rating_table'] . ".spam = 1 OR " . $db_settings['b8_rating_table'] . ".spam = 1) ") or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
while ($data = mysqli_fetch_array($result)) {
|
||||
delete_posting_recursive($data['id']);
|
||||
}
|
||||
|
@ -1410,9 +1627,16 @@ switch ($action) {
|
|||
break;
|
||||
case 'report_spam':
|
||||
$id = intval($_GET['report_spam']);
|
||||
$delete_result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time, user_id, name, subject, category, spam, spam_check_status FROM " . $db_settings['forum_table'] . " WHERE id = " . $id . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$field = mysqli_fetch_array($delete_result);
|
||||
if (mysqli_num_rows($delete_result) == 1) {
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
user_id, name, subject, category,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
WHERE id = " . $id . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$field = mysqli_fetch_array($result);
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
// fetch user data if registered user:
|
||||
if ($field['user_id'] > 0) {
|
||||
$userdata_result = @mysqli_query($connid, "SELECT user_name FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($field['user_id']) . " LIMIT 1") or die(mysqli_error($connid));
|
||||
|
@ -1427,9 +1651,12 @@ switch ($action) {
|
|||
$smarty->assign('pid', intval($field['pid']));
|
||||
$smarty->assign('name', htmlspecialchars($field['name']));
|
||||
$smarty->assign('subject', htmlspecialchars($field['subject']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($field['disp_time']));
|
||||
$smarty->assign('spam', intval($field['spam']));
|
||||
$smarty->assign('spam_check_status', intval($field['spam_check_status']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars(format_time('YYYY-MM-dd HH:mm:ss', $field['time'])));
|
||||
$smarty->assign('formated_time', htmlspecialchars(format_time($lang['time_format_full'], $field['disp_time'])));
|
||||
$smarty->assign('akismet_spam', intval($field['akismet_spam']));
|
||||
$smarty->assign('akismet_spam_check_status', intval($field['spam_check_status']));
|
||||
$smarty->assign('b8_spam', intval($field['b8_spam']));
|
||||
$smarty->assign('b8_training_type', intval($field['training_type']));
|
||||
$smarty->assign('back', $back);
|
||||
$smarty->assign('category', $category);
|
||||
$smarty->assign('posting_mode', 1);
|
||||
|
@ -1452,14 +1679,25 @@ switch ($action) {
|
|||
);
|
||||
$smarty->assign("subnav_link", $subnav_link);
|
||||
$smarty->assign('subtemplate', 'posting_report_spam.inc.tpl');
|
||||
mysqli_free_result($delete_result);
|
||||
mysqli_free_result($result);
|
||||
break;
|
||||
case 'report_spam_submit':
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
if ($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1) {
|
||||
$result = mysqli_query($connid, "SELECT user_id, name, email, hp, subject, location, text FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($id) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($settings['akismet_entry_check'] == 1 || $settings['b8_entry_check'] == 1) {
|
||||
$result = mysqli_query($connid, "SELECT tid, user_id, name, email, hp, subject, location, text,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
WHERE id = " . intval($id) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
// Update SPAM table
|
||||
@mysqli_query($connid, "REPLACE INTO " . $db_settings['akismet_rating_table'] . " (`eid`, `spam`, `spam_check_status`) VALUES (" . intval($id) . ", 1, 1)") or raise_error('database_error', mysqli_error($connid));
|
||||
@mysqli_query($connid, "REPLACE INTO " . $db_settings['b8_rating_table'] . " (`eid`, `spam`, `training_type`) VALUES (" . intval($id) . ", 1, 2)") or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
$check_posting = [];
|
||||
// fetch user data if registered user:
|
||||
if ($data['user_id'] > 0) {
|
||||
$akismet_userdata_result = @mysqli_query($connid, "SELECT user_name, user_email, user_hp FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($data['user_id']) . " LIMIT 1") or die(mysqli_error($connid));
|
||||
|
@ -1476,10 +1714,30 @@ switch ($action) {
|
|||
$check_posting['website'] = $data['hp'];
|
||||
}
|
||||
$check_posting['body'] = $data['text'];
|
||||
require('modules/akismet/akismet.class.php');
|
||||
$akismet = new Akismet($settings['forum_address'], $settings['akismet_key'], $check_posting);
|
||||
if (!$akismet->errorsExist()) {
|
||||
$akismet->submitSpam();
|
||||
|
||||
if ($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && ($data['akismet_spam'] != 1 || $data['spam_check_status'] == 0)) { // $data['spam_check_status'] != 0
|
||||
require('modules/akismet/akismet.class.php');
|
||||
$akismet = new Akismet($settings['forum_address'], $settings['akismet_key'], $check_posting);
|
||||
if (!$akismet->errorsExist()) {
|
||||
$akismet->submitSpam();
|
||||
}
|
||||
}
|
||||
|
||||
// 0 == no decision, 1 == learned ham, 2 == learned spam
|
||||
if ($settings['b8_entry_check'] == 1 && ($data['b8_spam'] != 1 || empty($data['training_type']))) { // b8 did not flag the entry as SPAM
|
||||
try {
|
||||
$check_text = implode("\r\n", $check_posting);
|
||||
if ($data['training_type'] == 1) // wrongly flaged as HAM, remove it
|
||||
$B8_BAYES_FILTER->unlearn($check_text, b8\b8::HAM);
|
||||
|
||||
$B8_BAYES_FILTER->learn($check_text, b8\b8::SPAM); // train for SPAM
|
||||
//$b8_spam_probability = $B8_BAYES_FILTER->classify($check_text);
|
||||
//$b8_spam = 1; // SPAM
|
||||
//$b8_spam_rating = 2; // SPAM
|
||||
}
|
||||
catch(Exception $e) {
|
||||
raise_error('database_error', $e->getMessage()); // What should we do here?
|
||||
}
|
||||
}
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
|
@ -1497,7 +1755,15 @@ switch ($action) {
|
|||
break;
|
||||
case 'flag_ham':
|
||||
$id = intval($_GET['flag_ham']);
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time, user_id, name, subject, category, spam, spam_check_status FROM " . $db_settings['forum_table'] . " WHERE id = " . $id . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
user_id, name, subject, category,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
WHERE id = " . $id . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
$field = mysqli_fetch_array($result);
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
// fetch user data if registered user:
|
||||
|
@ -1514,9 +1780,12 @@ switch ($action) {
|
|||
$smarty->assign('pid', intval($field['pid']));
|
||||
$smarty->assign('name', htmlspecialchars($field['name']));
|
||||
$smarty->assign('subject', htmlspecialchars($field['subject']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($field['disp_time']));
|
||||
$smarty->assign('spam', intval($field['spam']));
|
||||
$smarty->assign('spam_check_status', intval($field['spam_check_status']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars(format_time('YYYY-MM-dd HH:mm:ss', $field['time'])));
|
||||
$smarty->assign('formated_time', htmlspecialchars(format_time($lang['time_format_full'], $field['disp_time'])));
|
||||
$smarty->assign('akismet_spam', intval($field['akismet_spam']));
|
||||
$smarty->assign('akismet_spam_check_status', intval($field['spam_check_status']));
|
||||
$smarty->assign('b8_spam', intval($field['b8_spam']));
|
||||
$smarty->assign('b8_training_type', intval($field['training_type']));
|
||||
$smarty->assign('back', $back);
|
||||
$smarty->assign('category', $category);
|
||||
$smarty->assign('posting_mode', 1);
|
||||
|
@ -1542,17 +1811,30 @@ switch ($action) {
|
|||
mysqli_free_result($result);
|
||||
break;
|
||||
case 'flag_ham_submit':
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
$result = mysqli_query($connid, "SELECT tid, user_id, name, email, hp, subject, location, text FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($id) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$result = mysqli_query($connid, "SELECT tid, user_id, name, email, hp, subject, location, text, locked,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = " . $db_settings['forum_table'] . ".`id`
|
||||
WHERE id = " . intval($id) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = edited, locked = 0, spam = 0, spam_check_status = 0 WHERE id = " . intval($id));
|
||||
if ($data['locked'] == 1 && $data['spam_check_status'] == 0 && $data['training_type'] == 0) {
|
||||
// do nothing and leave the entry locked
|
||||
} else {
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = edited, locked = 0 WHERE id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
// Flag HAM in rating tables
|
||||
@mysqli_query($connid, "REPLACE INTO " . $db_settings['akismet_rating_table'] . " (`eid`, `spam`, `spam_check_status`) VALUES (" . intval($id) . ", 0, 1)") or raise_error('database_error', mysqli_error($connid));
|
||||
@mysqli_query($connid, "REPLACE INTO " . $db_settings['b8_rating_table'] . " (`eid`, `spam`, `training_type`) VALUES (" . intval($id) . ", 0, 1)") or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
// set last reply time of thread as it wasn't set in spam status:
|
||||
$last_reply_result = @mysqli_query($connid, "SELECT time FROM " . $db_settings['forum_table'] . " WHERE tid = " . intval($data['tid']) . " ORDER BY time DESC LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$field = mysqli_fetch_array($last_reply_result);
|
||||
mysqli_free_result($last_reply_result);
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = '" . $field['time'] . "' WHERE tid = " . intval($data['tid']));
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = '" . $field['time'] . "' WHERE tid = " . intval($data['tid'])) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
// load e-mail strings from language file:
|
||||
$smarty->configLoad($settings['language_file'], 'emails');
|
||||
|
@ -1560,31 +1842,59 @@ switch ($action) {
|
|||
if ($language_file != $settings['language_file'])
|
||||
setlocale(LC_ALL, $lang['locale']);
|
||||
|
||||
// send confirm mails as they haven't been seent in spam status: (2nd parameter "true" adds a delayed message)
|
||||
emailNotification2ParentAuthor($id, true);
|
||||
emailNotification2ModsAndAdmins($id, true);
|
||||
// check, if entry was flagged as spam, and send message (do not send messages if entry was flaged as ham)
|
||||
if (($settings['akismet_entry_check'] == 0 && $settings['b8_entry_check'] == 0) ||
|
||||
( ($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && $data['spam_check_status'] == 1 && $data['akismet_spam'] != 0) ||
|
||||
($settings['b8_entry_check'] == 1 && $data['b8_spam'] != 0) )) {
|
||||
|
||||
// send confirm mails as they haven't been seent in spam status: (2nd parameter "true" adds a delayed message)
|
||||
emailNotification2ParentAuthor($id, true);
|
||||
emailNotification2ModsAndAdmins($id, true);
|
||||
}
|
||||
|
||||
if (isset($_POST['report_flag_ham_submit']) && $settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1) {
|
||||
// fetch user data if registered user:
|
||||
if ($data['user_id'] > 0) {
|
||||
$akismet_userdata_result = @mysqli_query($connid, "SELECT user_name, user_email, user_hp FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($data['user_id']) . " LIMIT 1") or die(mysqli_error($connid));
|
||||
$akismet_userdata_data = mysqli_fetch_array($akismet_userdata_result);
|
||||
mysqli_free_result($akismet_userdata_result);
|
||||
$check_posting['author'] = $akismet_userdata_data['user_name'];
|
||||
if ($akismet_userdata_data['user_hp'] != '')
|
||||
$check_posting['website'] = $akismet_userdata_data['user_hp'];
|
||||
} else {
|
||||
$check_posting['author'] = $data['name'];
|
||||
if ($data['email'] != '')
|
||||
$check_posting['email'] = $data['email'];
|
||||
if ($data['hp'] != '')
|
||||
$check_posting['website'] = $data['hp'];
|
||||
}
|
||||
$check_posting['body'] = $data['text'];
|
||||
require('modules/akismet/akismet.class.php');
|
||||
$akismet = new Akismet($settings['forum_address'], $settings['akismet_key'], $check_posting);
|
||||
if (!$akismet->errorsExist()) {
|
||||
$akismet->submitHam();
|
||||
if (isset($_POST['report_flag_ham_submit'])) {
|
||||
if ($settings['akismet_entry_check'] == 1 || $settings['b8_entry_check'] == 1) {
|
||||
// fetch user data if registered user:
|
||||
$check_posting = [];
|
||||
if ($data['user_id'] > 0) {
|
||||
$akismet_userdata_result = @mysqli_query($connid, "SELECT user_name, user_email, user_hp FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($data['user_id']) . " LIMIT 1") or die(mysqli_error($connid));
|
||||
$akismet_userdata_data = mysqli_fetch_array($akismet_userdata_result);
|
||||
mysqli_free_result($akismet_userdata_result);
|
||||
$check_posting['author'] = $akismet_userdata_data['user_name'];
|
||||
if ($akismet_userdata_data['user_hp'] != '')
|
||||
$check_posting['website'] = $akismet_userdata_data['user_hp'];
|
||||
} else {
|
||||
$check_posting['author'] = $data['name'];
|
||||
if ($data['email'] != '')
|
||||
$check_posting['email'] = $data['email'];
|
||||
if ($data['hp'] != '')
|
||||
$check_posting['website'] = $data['hp'];
|
||||
}
|
||||
$check_posting['body'] = $data['text'];
|
||||
if ($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && $data['spam_check_status'] == 1) { // $data['spam_check_status'] != 0
|
||||
require('modules/akismet/akismet.class.php');
|
||||
$akismet = new Akismet($settings['forum_address'], $settings['akismet_key'], $check_posting);
|
||||
if (!$akismet->errorsExist())
|
||||
$akismet->submitHam();
|
||||
}
|
||||
|
||||
// 0 == no decision, 1 == learned ham, 2 == learned spam
|
||||
if ($settings['b8_entry_check'] == 1 && ($data['b8_spam'] != 0 || empty($data['training_type']))) { // b8 did not flag the entry as HAM
|
||||
try {
|
||||
$check_text = implode("\r\n", $check_posting);
|
||||
|
||||
if ($data['training_type'] == 2) // wrongly flaged as SPAM, remove it
|
||||
$B8_BAYES_FILTER->unlearn($check_text, b8\b8::SPAM);
|
||||
|
||||
$B8_BAYES_FILTER->learn($check_text, b8\b8::HAM); // train for HAM
|
||||
//$b8_spam_probability = $B8_BAYES_FILTER->classify($check_text);
|
||||
//$b8_spam = 0; // HAM
|
||||
//$b8_spam_rating = 1; // HAM
|
||||
}
|
||||
catch(Exception $e) {
|
||||
raise_error('database_error', $e->getMessage()); // What should we do here?
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
header('Location: index.php?id=' . $id);
|
||||
|
@ -1595,6 +1905,7 @@ switch ($action) {
|
|||
} else
|
||||
die('No authorisation!');
|
||||
break;
|
||||
|
||||
case 'lock':
|
||||
// lock/unlock posting if user is authorized:
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_id']) && $_SESSION[$settings['session_prefix'] . "user_type"] == 2 || isset($_GET['lock']) && isset($_SESSION[$settings['session_prefix'] . 'user_id']) && $_SESSION[$settings['session_prefix'] . "user_type"] == 1) {
|
||||
|
@ -1640,6 +1951,28 @@ switch ($action) {
|
|||
header("location: index.php?mode=" . $back . "&id=" . $id);
|
||||
exit;
|
||||
break;
|
||||
case 'unsubscribed':
|
||||
// subscription was quitted:
|
||||
$subnav_link = array(
|
||||
'mode' => 'index',
|
||||
'name' => 'forum_index_link',
|
||||
'title' => 'forum_index_link_title'
|
||||
);
|
||||
$smarty->assign("subnav_link", $subnav_link);
|
||||
$smarty->assign("unsubscribe_status", true);
|
||||
$smarty->assign('subtemplate', 'posting_unsubscribe.inc.tpl');
|
||||
break;
|
||||
case 'unsubscribe-error':
|
||||
// subscription was not quitted because of an error:
|
||||
$subnav_link = array(
|
||||
'mode' => 'index',
|
||||
'name' => 'forum_index_link',
|
||||
'title' => 'forum_index_link_title'
|
||||
);
|
||||
$smarty->assign("subnav_link", $subnav_link);
|
||||
$smarty->assign("unsubscribe_status", false);
|
||||
$smarty->assign('subtemplate', 'posting_unsubscribe.inc.tpl');
|
||||
break;
|
||||
}
|
||||
|
||||
// CAPTCHA:
|
||||
|
|
|
@ -25,13 +25,28 @@ if (isset($_POST['register_submit']))
|
|||
if (isset($_GET['key']))
|
||||
$action = 'activate';
|
||||
|
||||
$fname_user = hash("sha256", 'new_user_name' . $_SESSION['csrf_token']);
|
||||
$fname_email = hash("sha256", 'new_user_email' . $_SESSION['csrf_token']);
|
||||
$fname_pword = hash("sha256", 'reg_pw' . $_SESSION['csrf_token']);
|
||||
$fname_phone = hash("sha256", 'phone' . $_SESSION['csrf_token']);
|
||||
$fname_repemail = hash("sha256", 'repeat_email' . $_SESSION['csrf_token']);
|
||||
|
||||
switch ($action) {
|
||||
case 'main':
|
||||
// set timestamp for SPAM protection
|
||||
setReceiptTimestamp();
|
||||
if ($settings['register_mode'] < 2) {
|
||||
if ($settings['terms_of_use_agreement'] == 1)
|
||||
if ($settings['terms_of_use_agreement'] == 1)
|
||||
$smarty->assign("terms_of_use_agreement", true);
|
||||
if ($settings['data_privacy_agreement'] == 1)
|
||||
$smarty->assign("data_privacy_agreement", true);
|
||||
$smarty->assign('subnav_location', 'subnav_register');
|
||||
$smarty->assign('subtemplate', 'register.inc.tpl');
|
||||
$smarty->assign('fld_user_name', $fname_user);
|
||||
$smarty->assign('fld_user_email', $fname_email);
|
||||
$smarty->assign('fld_pword', $fname_pword);
|
||||
$smarty->assign('fld_phone', $fname_phone);
|
||||
$smarty->assign('fld_repeat_email', $fname_repemail);
|
||||
$template = 'main.tpl';
|
||||
} else {
|
||||
$smarty->assign('lang_section', 'register');
|
||||
|
@ -45,33 +60,56 @@ switch ($action) {
|
|||
if ($settings['register_mode'] > 1 || !isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token'])
|
||||
die('No authorisation!');
|
||||
else {
|
||||
$new_user_name = trim($_POST['new_user_name']);
|
||||
$new_user_email = trim($_POST['new_user_email']);
|
||||
|
||||
$reg_pw = $_POST['reg_pw'];
|
||||
$reg_pw_conf = $_POST['reg_pw_conf'];
|
||||
if (isset($_POST['terms_of_use_agree']) && $_POST['terms_of_use_agree'] == 1)
|
||||
$terms_of_use_agree = 1;
|
||||
else
|
||||
$terms_of_use_agree = 0;
|
||||
$new_user_name = (!empty($_POST[$fname_user])) ? trim($_POST[$fname_user]) : '';
|
||||
$new_user_email = (!empty($_POST[$fname_email])) ? trim($_POST[$fname_email]) : '';
|
||||
$reg_pw = $_POST[$fname_pword];
|
||||
$terms_of_use_agree = (isset($_POST['terms_of_use_agree']) && $_POST['terms_of_use_agree'] == 1) ? 1 : 0;
|
||||
$data_privacy_statement_agree = (isset($_POST['data_privacy_statement_agree']) && $_POST['data_privacy_statement_agree'] == 1) ? 1 : 0;
|
||||
|
||||
// form complete and are honey pot fields empty?
|
||||
if ($new_user_name == '' || $new_user_email == '' || $reg_pw == '' || $reg_pw_conf == '' || !isset($_POST['repeat_email']) || !empty($_POST['repeat_email']) || !isset($_POST['phone']) || !empty($_POST['phone']))
|
||||
if ($new_user_name == '' || $new_user_email == '' || $new_user_name == $new_user_email || $reg_pw == '' || !isset($_POST[$fname_repemail]) || !empty($_POST[$fname_repemail]) || !isset($_POST[$fname_phone]) || !empty($_POST[$fname_phone]))
|
||||
$errors[] = 'error_form_uncomplete';
|
||||
|
||||
if (empty($errors)) {
|
||||
setReceiptTimestamp();
|
||||
if (!isset($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference']) || intval($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference']) <= 0)
|
||||
$errors[] = 'error_invalid_form';
|
||||
else {
|
||||
if ($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference'] < $settings['min_register_time'])
|
||||
$errors[] = 'error_form_sent_too_fast';
|
||||
elseif ($_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference'] > $settings['max_register_time'])
|
||||
$errors[] = 'error_form_sent_too_slow';
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($errors)) {
|
||||
$min_password_length_by_restrictions = intval($settings['min_pw_digits']) + intval($settings['min_pw_lowercase_letters']) + intval($settings['min_pw_uppercase_letters']) + intval($settings['min_pw_special_characters']);
|
||||
// password too short?
|
||||
if (my_strlen($reg_pw, $lang['charset']) < $settings['min_pw_length'])
|
||||
if ($min_password_length_by_restrictions < intval($settings['min_pw_length']) && my_strlen($reg_pw, $lang['charset']) < intval($settings['min_pw_length']))
|
||||
$errors[] = 'error_password_too_short';
|
||||
// password and repeatet Password equal?
|
||||
if ($reg_pw != $reg_pw_conf) $errors[] = 'error_pw_conf_wrong';
|
||||
// see: http://php.net/manual/en/regexp.reference.unicode.php
|
||||
// \p{N} == numbers
|
||||
// [\p{Ll}\p{Lm}\p{Lo}] == lowercase, modifier, other letters
|
||||
// [\p{Lu}\p{Lt}] == uppercase, titlecase letters
|
||||
// [\p{S}\p{P}\p{Z}] == symbols, punctuations, separator
|
||||
// password contains numbers?
|
||||
if ($settings['min_pw_digits'] > 0 && !preg_match("/(?=(.*\p{N}){" . intval($settings['min_pw_digits']) . ",})/u", $reg_pw))
|
||||
$errors[] = 'error_pw_needs_digit';
|
||||
// password contains lowercase letter?
|
||||
if ($settings['min_pw_lowercase_letters'] > 0 && !preg_match("/(?=(.*[\p{Ll}\p{Lm}\p{Lo}]){" . intval($settings['min_pw_lowercase_letters']) . ",})/u", $reg_pw))
|
||||
$errors[] = 'error_pw_needs_lowercase_letter';
|
||||
// password contains uppercase letter?
|
||||
if ($settings['min_pw_uppercase_letters'] > 0 && !preg_match("/(?=(.*[\p{Lu}\p{Lt}]){" . intval($settings['min_pw_uppercase_letters']) . ",})/u", $reg_pw))
|
||||
$errors[] = 'error_pw_needs_uppercase_letter';
|
||||
// password contains special character?
|
||||
if ($settings['min_pw_special_characters'] > 0 && !preg_match("/(?=(.*[\p{S}\p{P}\p{Z}]){" . intval($settings['min_pw_special_characters']) . ",})/u", $reg_pw))
|
||||
$errors[] = 'error_pw_needs_special_character';
|
||||
// name too long?
|
||||
if (my_strlen($new_user_name, $lang['charset']) > $settings['username_maxlength'])
|
||||
$errors[] = 'error_name_too_long';
|
||||
// e-mail address too long?
|
||||
if (my_strlen($new_user_email, $lang['charset']) > $settings['email_maxlength'])
|
||||
$errors[] = 'error_email_too_long';
|
||||
|
||||
// word in username too long?
|
||||
$too_long_word = too_long_word($new_user_name,$settings['name_word_maxlength']);
|
||||
if ($too_long_word)
|
||||
|
@ -93,10 +131,12 @@ switch ($action) {
|
|||
if (!is_valid_email($new_user_email))
|
||||
$errors[] = 'error_email_wrong';
|
||||
|
||||
if ($settings['terms_of_use_agreement'] == 1 && $terms_of_use_agree != 1)
|
||||
if ($settings['terms_of_use_agreement'] == 1 && $terms_of_use_agree != 1)
|
||||
$errors[] = 'terms_of_use_error_register';
|
||||
if ($settings['data_privacy_agreement'] == 1 && $data_privacy_statement_agree != 1)
|
||||
$errors[] = 'data_priv_statement_error_reg';
|
||||
|
||||
if (contains_special_characters($new_user_name))
|
||||
if (contains_special_characters($new_user_name))
|
||||
$errors[] = 'error_username_invalid_chars';
|
||||
}
|
||||
|
||||
|
@ -113,11 +153,11 @@ switch ($action) {
|
|||
// CAPTCHA check:
|
||||
if (empty($errors) && empty($_SESSION[$settings['session_prefix'].'user_id']) && $settings['captcha_register'] > 0) {
|
||||
if ($settings['captcha_register'] == 2) {
|
||||
if (empty($_SESSION['captcha_session']) || empty($_POST['captcha_code']) || $captcha->check_captcha($_SESSION['captcha_session'], $_POST['captcha_code']) != true)
|
||||
if (empty($_SESSION['captcha_session']) || empty($_POST['captcha_code']) || $captcha->check_captcha($_SESSION['captcha_session'], $_POST['captcha_code']) != true)
|
||||
$errors[] = 'captcha_check_failed';
|
||||
}
|
||||
else {
|
||||
if (empty($_SESSION['captcha_session']) || empty($_POST['captcha_code']) || $captcha->check_math_captcha($_SESSION['captcha_session'][2], $_POST['captcha_code']) != true)
|
||||
if (empty($_SESSION['captcha_session']) || empty($_POST['captcha_code']) || $captcha->check_math_captcha($_SESSION['captcha_session'][2], $_POST['captcha_code']) != true)
|
||||
$errors[] = 'captcha_check_failed';
|
||||
}
|
||||
unset($_SESSION['captcha_session']);
|
||||
|
@ -128,11 +168,11 @@ switch ($action) {
|
|||
$pw_hash = generate_pw_hash($reg_pw);
|
||||
$activate_code = random_string(20);
|
||||
$activate_code_hash = generate_pw_hash($activate_code);
|
||||
if ($settings['register_mode'] == 1)
|
||||
if ($settings['register_mode'] == 1)
|
||||
$user_lock = 1;
|
||||
else
|
||||
else
|
||||
$user_lock = 0;
|
||||
@mysqli_query($connid, "INSERT INTO ".$db_settings['userdata_table']." (user_type, user_name, user_real_name, user_pw, user_email, user_hp, user_location, signature, profile, email_contact, last_login, last_logout, user_ip, registered, user_view, fold_threads, user_lock, auto_login_code, pwf_code, activate_code) VALUES (0, '". mysqli_real_escape_string($connid, $new_user_name) ."', '', '". mysqli_real_escape_string($connid, $pw_hash) ."', '". mysqli_real_escape_string($connid, $new_user_email) ."', '', '', '', '', ".$settings['default_email_contact'].", NULL, NOW(), '". mysqli_real_escape_string($connid, $_SERVER["REMOTE_ADDR"]) ."', NOW(), ". intval($settings['default_view']) .", ". intval($settings['fold_threads']) .", ". $user_lock .", '', '', '". mysqli_real_escape_string($connid, $activate_code_hash) ."')") or raise_error('database_error', mysqli_error($connid));
|
||||
@mysqli_query($connid, "INSERT INTO ".$db_settings['userdata_table']." (user_type, user_name, user_real_name, user_pw, user_email, user_hp, user_location, signature, profile, email_contact, last_login, last_logout, user_ip, registered, user_view, fold_threads, user_lock, auto_login_code, pwf_code, activate_code, tou_accepted, dps_accepted) VALUES (0, '". mysqli_real_escape_string($connid, $new_user_name) ."', '', '". mysqli_real_escape_string($connid, $pw_hash) ."', '". mysqli_real_escape_string($connid, $new_user_email) ."', '', '', '', '', ".$settings['default_email_contact'].", NULL, NOW(), '". mysqli_real_escape_string($connid, $_SERVER["REMOTE_ADDR"]) ."', NOW(), ". intval($settings['default_view']) .", ". intval($settings['fold_threads']) .", ". $user_lock .", '', '', '". mysqli_real_escape_string($connid, $activate_code_hash) ."', ". ($terms_of_use_agree == 1 ? "NOW()" : "NULL") .", ". ($data_privacy_statement_agree == 1 ? "NOW()" : "NULL") .")") or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
// get new user ID:
|
||||
$new_user_id_result = mysqli_query($connid, "SELECT user_id FROM ".$db_settings['userdata_table']." WHERE user_name = '". mysqli_real_escape_string($connid, $new_user_name) ."' LIMIT 1");
|
||||
|
@ -156,26 +196,32 @@ switch ($action) {
|
|||
$smarty->assign('subnav_location', 'subnav_register');
|
||||
$smarty->assign('subtemplate', 'info.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$smarty->assign('errors', $errors);
|
||||
if (isset($too_long_word))
|
||||
if (isset($too_long_word))
|
||||
$smarty->assign('word', $too_long_word);
|
||||
$smarty->assign('subnav_location', 'subnav_register');
|
||||
$smarty->assign('subtemplate', 'register.inc.tpl');
|
||||
$smarty->assign('fld_user_name', $fname_user);
|
||||
$smarty->assign('fld_user_email', $fname_email);
|
||||
$smarty->assign('fld_pword', $fname_pword);
|
||||
$smarty->assign('fld_phone', $fname_phone);
|
||||
$smarty->assign('fld_repeat_email', $fname_repemail);
|
||||
$smarty->assign('new_user_name', htmlspecialchars($new_user_name));
|
||||
$smarty->assign('new_user_email', htmlspecialchars($new_user_email));
|
||||
$smarty->assign('honey_pot_email', htmlspecialchars(isset($_POST['repeat_email']) ? $_POST['repeat_email'] : ''));
|
||||
$smarty->assign('honey_pot_phone', htmlspecialchars(isset($_POST['phone']) ? $_POST['phone'] : ''));
|
||||
if ($settings['terms_of_use_agreement'] == 1)
|
||||
$smarty->assign('honey_pot_email', htmlspecialchars(isset($_POST[$fname_repemail]) ? $_POST[$fname_repemail] : ''));
|
||||
$smarty->assign('honey_pot_phone', htmlspecialchars(isset($_POST[$fname_phone]) ? $_POST[$fname_phone] : ''));
|
||||
if ($settings['terms_of_use_agreement'] == 1)
|
||||
$smarty->assign("terms_of_use_agreement", true);
|
||||
if ($settings['data_privacy_agreement'] == 1)
|
||||
$smarty->assign("data_privacy_agreement", true);
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'activate':
|
||||
if (isset($_GET['id'])) $id = intval($_GET['id']); else $error = TRUE;
|
||||
if (isset($_GET['key'])) $key = trim($_GET['key']); else $error = TRUE;
|
||||
if (isset($_GET['key']) && !empty($_GET['key'])) $key = trim($_GET['key']); else $error = TRUE;
|
||||
if (empty($error)) {
|
||||
if ($id == 0) $error = TRUE;
|
||||
if ($key == '') $error = TRUE;
|
||||
|
@ -187,7 +233,7 @@ switch ($action) {
|
|||
mysqli_free_result($result);
|
||||
}
|
||||
if (empty($error)) {
|
||||
if (trim($data['activate_code']) == '') $error = true;
|
||||
if (!empty($data['activate_code']) && trim($data['activate_code']) == '') $error = true;
|
||||
}
|
||||
if (empty($error)) {
|
||||
if (is_pw_correct($key,$data['activate_code'])) {
|
||||
|
|
|
@ -24,17 +24,21 @@ if ($settings['rss_feed'] == 1 && $settings['forum_enabled'] == 1) {
|
|||
if ($categories == false) {
|
||||
$result = @mysqli_query($connid, "SELECT id, pid, ".$db_settings['forum_table'].".user_id, UNIX_TIMESTAMP(time + INTERVAL ".$time_difference." MINUTE) AS timestamp, UNIX_TIMESTAMP(time) AS pubdate_timestamp, name, user_name, subject, text, cache_text
|
||||
FROM ".$db_settings['forum_table']."
|
||||
LEFT JOIN ".$db_settings['entry_cache_table']." ON ".$db_settings['entry_cache_table'].".cache_id = id
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ".$db_settings['forum_table'].".user_id
|
||||
WHERE spam = 0".$query_addition."
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id = id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ".$db_settings['forum_table'].".user_id
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `".$db_settings['forum_table']."`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `".$db_settings['forum_table']."`.`id`
|
||||
WHERE (" . $db_settings['akismet_rating_table'] . ".spam = 0 AND " . $db_settings['b8_rating_table'] . ".spam = 0) ".$query_addition."
|
||||
ORDER BY time DESC LIMIT ".$settings['rss_feed_max_items']) or raise_error('database_error', mysqli_error($connid));
|
||||
if (!$result) raise_error('database_error', mysqli_error($connid));
|
||||
} else {
|
||||
$result = @mysqli_query($connid, "SELECT id, pid, ".$db_settings['forum_table'].".user_id, UNIX_TIMESTAMP(time + INTERVAL ".$time_difference." MINUTE) AS timestamp, UNIX_TIMESTAMP(time) AS pubdate_timestamp, name, user_name, category, subject, text, cache_text
|
||||
FROM ".$db_settings['forum_table']."
|
||||
LEFT JOIN ".$db_settings['entry_cache_table']." ON ".$db_settings['entry_cache_table'].".cache_id = id
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ".$db_settings['forum_table'].".user_id
|
||||
WHERE category IN (".$category_ids_query.") AND spam = 0".$query_addition."
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id = id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ".$db_settings['forum_table'].".user_id
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `".$db_settings['forum_table']."`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `".$db_settings['forum_table']."`.`id`
|
||||
WHERE category IN (".$category_ids_query.") AND (" . $db_settings['akismet_rating_table'] . ".spam = 0 AND " . $db_settings['b8_rating_table'] . ".spam = 0) ".$query_addition."
|
||||
ORDER BY time DESC LIMIT ".$settings['rss_feed_max_items']) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
$result_count = mysqli_num_rows($result);
|
||||
|
@ -50,7 +54,7 @@ if ($settings['rss_feed'] == 1 && $settings['forum_enabled'] == 1) {
|
|||
} else {
|
||||
$rss_items[$i]['text'] = $row['cache_text'];
|
||||
}
|
||||
|
||||
$rss_items[$i]['text'] = str_replace('src="images', 'src="'. htmlspecialchars($settings['forum_address']) .'images', $rss_items[$i]['text']);
|
||||
$rss_items[$i]['title'] = htmlspecialchars(filter_control_characters($row['subject']));
|
||||
|
||||
if ($categories != false && isset($categories[$row['category']]) && $categories[$row['category']] != '') $rss_items[$i]['category'] = $categories[$row['category']];
|
||||
|
|
|
@ -10,80 +10,7 @@ if (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
|||
$tmp_user_id = 0;
|
||||
}
|
||||
|
||||
if (isset($_GET['list_spam']) && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
// list spam postings:
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " WHERE spam = 1");
|
||||
list($search_results_count) = mysqli_fetch_row($count_result);
|
||||
$total_pages = ceil($search_results_count / $settings['search_results_per_page']);
|
||||
if (isset($_GET['page']))
|
||||
$page = intval($_GET['page']);
|
||||
else
|
||||
$page = 1;
|
||||
if ($page < 1)
|
||||
$page = 1;
|
||||
if ($page > $total_pages)
|
||||
$page = $total_pages;
|
||||
$ul = ($page - 1) * $settings['search_results_per_page'];
|
||||
// data for browse navigation:
|
||||
$page_browse['page'] = $page;
|
||||
$page_browse['total_items'] = $search_results_count;
|
||||
$page_browse['items_per_page'] = $settings['search_results_per_page'];
|
||||
$page_browse['browse_array'][] = 1;
|
||||
if ($page > 5)
|
||||
$page_browse['browse_array'][] = 0;
|
||||
for ($browse = $page - 3; $browse < $page + 4; $browse++) {
|
||||
if ($browse > 1 && $browse < $total_pages)
|
||||
$page_browse['browse_array'][] = $browse;
|
||||
}
|
||||
if ($page < $total_pages - 4)
|
||||
$page_browse['browse_array'][] = 0;
|
||||
if ($total_pages > 1)
|
||||
$page_browse['browse_array'][] = $total_pages;
|
||||
if ($page < $total_pages)
|
||||
$page_browse['next_page'] = $page + 1;
|
||||
else
|
||||
$page_browse['next_page'] = 0;
|
||||
if ($page > 1)
|
||||
$page_browse['previous_page'] = $page - 1;
|
||||
else
|
||||
$page_browse['previous_page'] = 0;
|
||||
$smarty->assign('page_browse', $page_browse);
|
||||
if ($search_results_count > 0) {
|
||||
$result = @mysqli_query($connid, "SELECT id, pid, tid, " . $db_settings['forum_table'] . ".user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, subject, IF(text='',true,false) AS no_text, category, marked, sticky
|
||||
FROM " . $db_settings['forum_table'] . "
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = " . $db_settings['forum_table'] . ".user_id
|
||||
WHERE spam = 1
|
||||
ORDER BY tid DESC, time ASC LIMIT " . $ul . ", " . $settings['search_results_per_page']) or die(mysqli_error($connid));
|
||||
$i = 0;
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$search_results[$i]['id'] = intval($row['id']);
|
||||
$search_results[$i]['pid'] = intval($row['pid']);
|
||||
|
||||
if ($row['user_id'] > 0) {
|
||||
if (!$row['user_name'])
|
||||
$search_results[$i]['name'] = $lang['unknown_user'];
|
||||
else
|
||||
$search_results[$i]['name'] = htmlspecialchars($row['user_name']);
|
||||
} else
|
||||
$search_results[$i]['name'] = htmlspecialchars($row['name']);
|
||||
$search_results[$i]['subject'] = htmlspecialchars($row['subject']);
|
||||
$search_results[$i]['timestamp'] = $row['timestamp'];
|
||||
$search_results[$i]['no_text'] = $row['no_text'];
|
||||
$search_results[$i]['formated_time'] = format_time($lang['time_format'], $row['timestamp']);
|
||||
if (isset($categories[$row["category"]]) && $categories[$row['category']] != '') {
|
||||
$search_results[$i]['category'] = $row["category"];
|
||||
$search_results[$i]['category_name'] = $categories[$row["category"]];
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
}
|
||||
$smarty->assign('search_results_count', $search_results_count);
|
||||
if (isset($search_results))
|
||||
$smarty->assign('search_results', $search_results);
|
||||
$smarty->assign('list_spam', true);
|
||||
$smarty->assign('subnav_location', 'subnav_list_spam');
|
||||
} elseif (isset($_GET['search'])) {
|
||||
if (isset($_GET['search'])) {
|
||||
// regular serach:
|
||||
$search = urldecode($_GET['search']);
|
||||
if (isset($_GET['p_category']))
|
||||
|
@ -96,11 +23,18 @@ if (isset($_GET['list_spam']) && isset($_SESSION[$settings['session_prefix'] . '
|
|||
$method = 'fulltext_or';
|
||||
else
|
||||
$method = 'fulltext';
|
||||
$search = trim($search);
|
||||
if (!empty($search)) $search = trim($search);
|
||||
|
||||
// split search query at spaces, but not between double quotes:
|
||||
$help_pattern = '[!/*/~/?]'; // pattern to hide spaces between quotes
|
||||
$x_search = preg_replace_callback("#\"(.+?)\"#is", create_function('$string', 'global $help_pattern; return str_replace(" ",$help_pattern,$string[1]);'), $search);
|
||||
$x_search = preg_replace_callback(
|
||||
"#\"(.+?)\"#is",
|
||||
function ($string) {
|
||||
global $help_pattern;
|
||||
return str_replace(" ", $help_pattern,$string[1]);
|
||||
},
|
||||
$search
|
||||
);
|
||||
|
||||
$x_search_array = explode(' ', my_strtolower($x_search, $lang['charset']));
|
||||
foreach ($x_search_array as $item) {
|
||||
|
@ -115,6 +49,7 @@ if (isset($_GET['list_spam']) && isset($_SESSION[$settings['session_prefix'] . '
|
|||
}
|
||||
$search_array = $stripped_search_array;
|
||||
}
|
||||
$search_string_array = array();
|
||||
foreach ($search_array as $item) {
|
||||
if (my_strpos($item, ' ', 0, CHARSET)) {
|
||||
$item = '"' . $item . '"';
|
||||
|
@ -124,29 +59,33 @@ if (isset($_GET['list_spam']) && isset($_SESSION[$settings['session_prefix'] . '
|
|||
$search = implode(' ', $search_string_array);
|
||||
|
||||
// search...
|
||||
$ham_filter = " (`" . $db_settings['akismet_rating_table'] . "`.`spam` = 0 AND `" . $db_settings['b8_rating_table'] . "`.`spam` = 0) ";
|
||||
if ($method == 'fulltext_or') {
|
||||
if (isset($p_category) && $p_category != 0)
|
||||
$search_string = "category = " . $p_category . " AND `spam` = 0 AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' OR `category` = " . $p_category . " AND `spam` = 0 AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%'";
|
||||
else
|
||||
$search_string = "`spam` = 0 AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' OR spam = 0 AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%'";
|
||||
// fulltext or
|
||||
$search_string = "CONCAT(LOWER(`subject`), LOWER(IF(`ft`.`user_id` > 0, (SELECT `user_name` FROM `" . $db_settings['userdata_table'] . "` WHERE `user_id` = `ft`.`user_id`), `name`)), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' OR " . $ham_filter . " AND CONCAT(LOWER(`subject`), LOWER(IF(`ft`.`user_id` > 0, (SELECT `user_name` FROM `" . $db_settings['userdata_table'] . "` WHERE `user_id` = `ft`.`user_id`), `name`)), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%'";
|
||||
} elseif ($method == 'tags') {
|
||||
if (isset($p_category) && $p_category != 0)
|
||||
$search_string = "(IFNULL(LOWER(`tag`), '') LIKE '%" . implode("%' OR IFNULL(LOWER(`tag`), '') LIKE '%", $search_array) . "%') AND `category` = " . $p_category . " AND `spam` = 0";
|
||||
else
|
||||
$search_string = "(IFNULL(LOWER(`tag`), '') LIKE '%" . implode("%' OR IFNULL(LOWER(`tag`), '') LIKE '%", $search_array) . "%') AND `spam` = 0 ";
|
||||
// tags
|
||||
$search_string = "(IFNULL(LOWER(`tag`), '') LIKE '%" . implode("%' OR IFNULL(LOWER(`tag`), '') LIKE '%", $search_array) . "%') ";
|
||||
} else {
|
||||
// fulltext
|
||||
if (isset($p_category) && $p_category != 0)
|
||||
$search_string = "CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%' AND `category` = " . $p_category . " AND `spam` = 0";
|
||||
else
|
||||
$search_string = "CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%' AND `spam` = 0";
|
||||
$search_string = "CONCAT(LOWER(`subject`), LOWER(IF(`ft`.`user_id` > 0, (SELECT `user_name` FROM `" . $db_settings['userdata_table'] . "` WHERE `user_id` = `ft`.`user_id`), `name`)), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' AND CONCAT(LOWER(`subject`), LOWER(IF(`ft`.`user_id` > 0, (SELECT `user_name` FROM `" . $db_settings['userdata_table'] . "` WHERE `user_id` = `ft`.`user_id`), `name`)), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%' ";
|
||||
}
|
||||
|
||||
$search_string = $ham_filter . " AND " . $search_string;
|
||||
|
||||
// restrict to category
|
||||
if (isset($p_category) && $p_category != 0)
|
||||
$search_string = "category = " . $p_category . " AND " . $search_string;
|
||||
|
||||
// count results:
|
||||
if ($search != '') {
|
||||
$sql = "SELECT COUNT(DISTINCT `" . $db_settings['forum_table'] . "`.`id`) FROM `" . $db_settings['forum_table'] . "`
|
||||
LEFT JOIN `" . $db_settings['entry_tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`bid` = `" . $db_settings['forum_table'] . "`.`id`
|
||||
LEFT JOIN `" . $db_settings['tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`tid` = `" . $db_settings['tags_table'] . "`.`id` WHERE ";
|
||||
$sql = "SELECT COUNT(DISTINCT `ft`.`id`)
|
||||
FROM `" . $db_settings['forum_table'] . "` AS `ft`
|
||||
LEFT JOIN `" . $db_settings['entry_tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`bid` = `ft`.`id`
|
||||
LEFT JOIN `" . $db_settings['tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`tid` = `" . $db_settings['tags_table'] . "`.`id`
|
||||
LEFT JOIN `" . $db_settings['akismet_rating_table'] . "` ON `" . $db_settings['akismet_rating_table'] . "`.`eid` = `ft`.`id`
|
||||
LEFT JOIN `" . $db_settings['b8_rating_table'] . "` ON `" . $db_settings['b8_rating_table'] . "`.`eid` = `ft`.`id`
|
||||
WHERE ";
|
||||
|
||||
if ($categories != false)
|
||||
$count_result = @mysqli_query($connid, $sql . $search_string . " AND `category` IN (" . $category_ids_query . ")");
|
||||
|
@ -202,6 +141,8 @@ if (isset($_GET['list_spam']) && isset($_SESSION[$settings['session_prefix'] . '
|
|||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
LEFT JOIN `" . $db_settings['entry_tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`bid` = `ft`.`id`
|
||||
LEFT JOIN `" . $db_settings['tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`tid` = `" . $db_settings['tags_table'] . "`.`id`
|
||||
LEFT JOIN `" . $db_settings['akismet_rating_table'] . "` ON `" . $db_settings['akismet_rating_table'] . "`.`eid` = `ft`.`id`
|
||||
LEFT JOIN `" . $db_settings['b8_rating_table'] . "` ON `" . $db_settings['b8_rating_table'] . "`.`eid` = `ft`.`id`
|
||||
WHERE " . $search_string . " AND category IN (" . $category_ids_query . ")
|
||||
ORDER BY tid DESC, time ASC LIMIT " . $ul . ", " . $settings['search_results_per_page']) or die(mysqli_error($connid));
|
||||
} else {
|
||||
|
@ -211,6 +152,8 @@ if (isset($_GET['list_spam']) && isset($_SESSION[$settings['session_prefix'] . '
|
|||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
LEFT JOIN `" . $db_settings['entry_tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`bid` = `ft`.`id`
|
||||
LEFT JOIN `" . $db_settings['tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`tid` = `" . $db_settings['tags_table'] . "`.`id`
|
||||
LEFT JOIN `" . $db_settings['akismet_rating_table'] . "` ON `" . $db_settings['akismet_rating_table'] . "`.`eid` = `ft`.`id`
|
||||
LEFT JOIN `" . $db_settings['b8_rating_table'] . "` ON `" . $db_settings['b8_rating_table'] . "`.`eid` = `ft`.`id`
|
||||
WHERE " . $search_string . "
|
||||
ORDER BY tid DESC, time ASC LIMIT " . $ul . ", " . $settings['search_results_per_page']) or die(mysqli_error($connid));
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<?php
|
||||
|
||||
|
||||
if (!defined('IN_INDEX')) {
|
||||
header('Location: ../index.php');
|
||||
exit;
|
||||
|
@ -34,6 +36,9 @@ if (isset($_GET['order']) && $_GET['order'] == 'last_reply')
|
|||
else
|
||||
$order = 'time';
|
||||
|
||||
$isUser = isset($_SESSION[$settings['session_prefix'].'user_type']) && isset($_SESSION[$settings['session_prefix'].'user_id']);
|
||||
$isModOrAdmin = $isUser && ($_SESSION[$settings['session_prefix'].'user_type'] == 1 || $_SESSION[$settings['session_prefix'].'user_type'] == 2);
|
||||
|
||||
// tid, subject and category of starting posting:
|
||||
$result = mysqli_query($connid, "SELECT tid, subject, category FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($id) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) != 1) {
|
||||
|
@ -60,21 +65,35 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time=time, last_reply=last_reply, edited=edited, views=views+1 WHERE tid=" . $id);
|
||||
|
||||
$smarty->assign('page_title', htmlspecialchars($data['subject']));
|
||||
$smarty->assign('category_name', $categories[$data["category"]]);
|
||||
if (isset($categories[$data['category']]) && $categories[$data['category']] != '')
|
||||
$smarty->assign('category_name', $categories[$data["category"]]);
|
||||
|
||||
if ($show_spam) {
|
||||
$thread_spam = " AS spam_list ON spam_list.tid = ft.tid WHERE spam_list.id IS NOT NULL";
|
||||
} else {
|
||||
$thread_spam = " AS spam_list ON spam_list.id = ft.id WHERE spam_list.id IS NULL";
|
||||
}
|
||||
|
||||
// get all postings of thread:
|
||||
$result = mysqli_query($connid, "SELECT id, pid, tid, ft.user_id, UNIX_TIMESTAMP(ft.time + INTERVAL " . intval($time_difference) . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(last_reply + INTERVAL " . intval($time_difference) . " MINUTE) AS last_reply,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited + INTERVAL " . intval($time_difference) . " MINUTE) AS e_time,
|
||||
UNIX_TIMESTAMP(edited - INTERVAL " . $settings['edit_delay'] . " MINUTE) AS edited_diff, edited_by, name, email,
|
||||
subject, hp, location, ip, text, cache_text, show_signature, views, spam, spam_check_status, category, locked, ip,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, edit_key, rst.user_id AS req_user
|
||||
FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id=ft.id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id=ft.user_id
|
||||
LEFT JOIN " . $db_settings['userdata_cache_table'] . " ON " . $db_settings['userdata_cache_table'] . ".cache_id=" . $db_settings['userdata_table'] . ".user_id
|
||||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
WHERE tid = " . $tid . $display_spam_query_and . " ORDER BY ft.time ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
$thread_sql =
|
||||
"SELECT ft.id, ft.pid, ft.tid, ft.user_id, UNIX_TIMESTAMP(ft.time + INTERVAL " . intval($time_difference) . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(last_reply + INTERVAL " . intval($time_difference) . " MINUTE) AS last_reply,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited) AS edited_time, UNIX_TIMESTAMP(edited + INTERVAL " . intval($time_difference) . " MINUTE) AS e_time,
|
||||
UNIX_TIMESTAMP(edited - INTERVAL " . $settings['edit_delay'] . " MINUTE) AS edited_diff, edited_by, name, email,
|
||||
subject, hp, location, ip, text, cache_text, show_signature, views, category, locked, ip,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, edit_key, rst.user_id AS req_user,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id = ft.id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ft.user_id
|
||||
LEFT JOIN " . $db_settings['userdata_cache_table'] . " ON " . $db_settings['userdata_cache_table'] . ".cache_id = " . $db_settings['userdata_table'] . ".user_id
|
||||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN (SELECT " . $db_settings['forum_table'] . ".id, " . $db_settings['forum_table'] . ".tid FROM " . $db_settings['forum_table'] . " INNER JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['forum_table'] . ".id = " . $db_settings['akismet_rating_table'] . ".eid WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT " . $db_settings['forum_table'] . ".id, " . $db_settings['forum_table'] . ".tid FROM " . $db_settings['forum_table'] . " INNER JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['forum_table'] . ".id = " . $db_settings['b8_rating_table'] . ".eid WHERE " . $db_settings['b8_rating_table'] . ".spam = 1)
|
||||
" . $thread_spam . " AND ft.tid = " . $tid . " ORDER BY ft.time ASC";
|
||||
$result = mysqli_query($connid, $thread_sql) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
while ($data = mysqli_fetch_array($result)) {
|
||||
|
@ -97,8 +116,9 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
if (isset($tags_array))
|
||||
$data['tags'] = $tags_array;
|
||||
}
|
||||
|
||||
$data['formated_time'] = format_time($lang['time_format_full'], $data['disp_time']);
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
|
||||
$ago['days'] = floor((TIMESTAMP - $data['time']) / 86400);
|
||||
$ago['hours'] = floor(((TIMESTAMP - $data['time']) / 3600) - ($ago['days'] * 24));
|
||||
$ago['minutes'] = floor(((TIMESTAMP - $data['time']) / 60) - ($ago['hours'] * 60 + $ago['days'] * 1440));
|
||||
|
@ -142,12 +162,13 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
$data["email_contact"] = 1;
|
||||
$data["email_contact"] = 2;
|
||||
}
|
||||
|
||||
if ($data['edited_diff'] > 0 && $data["edited_diff"] > $data["time"] && $settings['show_if_edited'] == 1) {
|
||||
$data['edited'] = true;
|
||||
$data['formated_edit_time'] = format_time($lang['time_format_full'], $data['e_time']);
|
||||
$data['ISO_edit_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['edited_time']);
|
||||
if ($data['user_id'] == $data['edited_by'])
|
||||
$data['edited_by'] = $data['name'];
|
||||
else {
|
||||
|
@ -172,7 +193,7 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
}
|
||||
|
||||
if (isset($data['signature']) && $data['signature'] != '' && $data["show_signature"] == 1) {
|
||||
// user has a signature and wants it to be displaed in this posting. Check if it's already cached:
|
||||
// user has a signature and wants it to be displayed in this posting. Check if it's already cached:
|
||||
if ($data['cache_signature'] != '') {
|
||||
$data['signature'] = $data['cache_signature'];
|
||||
} else {
|
||||
|
@ -185,7 +206,6 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
// cache signature:
|
||||
$xxx = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['userdata_cache_table'] . " WHERE cache_id=" . intval($data['user_id'])) or die(mysqli_error($connid));
|
||||
list($row_count) = mysqli_fetch_row($xxx);
|
||||
#echo 'row count: '.$row_count.' user_id: '.$data['user_id'].'<br />';
|
||||
if ($row_count == 1) {
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['userdata_cache_table'] . " SET cache_signature='" . mysqli_real_escape_string($connid, $data['signature']) . "' WHERE cache_id=" . intval($data['user_id']));
|
||||
} else {
|
||||
|
@ -203,7 +223,7 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
$data['hp'] = add_http_if_no_protocol($data['hp']);
|
||||
}
|
||||
|
||||
if ($data['email'] != '' && $data['email_contact'] == 1)
|
||||
if ($data['email'] != '' && ($isModOrAdmin || $isUser && $data['email_contact'] > 0 || $data['email_contact'] == 2))
|
||||
$data['email'] = true;
|
||||
else
|
||||
$data['email'] = false;
|
||||
|
@ -212,12 +232,11 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0) {
|
||||
$data['options']['move'] = true;
|
||||
$data['options']['lock'] = true;
|
||||
if (($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && $data['akismet_spam'] == 0 && $data['spam_check_status'] > 0) || ($settings['b8_entry_check'] == 1 && $data['b8_spam'] == 0 || $data['training_type'] == 0))
|
||||
$data['options']['report_spam'] = true;
|
||||
if (($settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && $data['akismet_spam'] == 1 && $data['spam_check_status'] > 0) || ($settings['b8_entry_check'] == 1 && $data['b8_spam'] == 1 || $data['training_type'] == 0))
|
||||
$data['options']['flag_ham'] = true;
|
||||
}
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $settings['akismet_key'] != '' && $settings['akismet_entry_check'] == 1 && $data['spam'] == 0 && $data['spam_check_status'] > 0)
|
||||
$data['options']['report_spam'] = true;
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $data['spam'] == 1)
|
||||
$data['options']['flag_ham'] = true;
|
||||
|
||||
if ($settings['count_views'] == 1) {
|
||||
$views = $data['views'] - 1; // this subtracts the first view by the author after posting
|
||||
if ($views < 0)
|
||||
|
@ -271,4 +290,5 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
$smarty->assign('subtemplate', 'thread_linear.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -12,9 +12,11 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
// upload:image:
|
||||
if (isset($_FILES['probe']) && $_FILES['probe']['size'] != 0 && !$_FILES['probe']['error']) {
|
||||
unset($errors);
|
||||
$user_id = (isset($_SESSION[$settings['session_prefix'].'user_id'])) ? intval($_SESSION[$settings['session_prefix'].'user_id']) : NULL;
|
||||
$image_info = getimagesize($_FILES['probe']['tmp_name']);
|
||||
|
||||
if (!is_array($image_info) || $image_info[2] != 1 && $image_info[2] != 2 && $image_info[2] != 3) $errors[] = 'invalid_file_format';
|
||||
$imageMIME = mime_content_type($_FILES['probe']['tmp_name']);
|
||||
if (!is_array($image_info) || !in_array($imageMIME, ['image/gif', 'image/jpeg', 'image/png', 'image/webp']))
|
||||
$errors[] = 'invalid_file_format';
|
||||
|
||||
if (empty($errors)) {
|
||||
if ($_FILES['probe']['size'] > $settings['upload_max_img_size'] * 1000 || $image_info[0] > $settings['upload_max_img_width'] || $image_info[1] > $settings['upload_max_img_height']) {
|
||||
|
@ -33,16 +35,14 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
$new_width = $width;
|
||||
$new_height = $height;
|
||||
}
|
||||
|
||||
$img_tmp_name = uniqid(rand()).'.tmp';
|
||||
|
||||
for ($compression = 100; $compression > 1; $compression = $compression - 10) {
|
||||
if(!resize_image($_FILES['probe']['tmp_name'], $uploaded_images_path.$img_tmp_name, $new_width, $new_height, $compression)) {
|
||||
if (!resize_image($_FILES['probe']['tmp_name'], $uploaded_images_path.$img_tmp_name, $new_width, $new_height, $compression)) {
|
||||
$file_size = $_FILES['probe']['size']; // @filesize($_FILES['probe']['tmp_name']);
|
||||
break;
|
||||
}
|
||||
$file_size = @filesize($uploaded_images_path.$img_tmp_name);
|
||||
if ($image_info[2] != 2 && $file_size > $settings['upload_max_img_size'] * 1000) break;
|
||||
if ($imageMIME != 'image/jpeg' && $file_size > $settings['upload_max_img_size'] * 1000) break;
|
||||
if ($file_size <= $settings['upload_max_img_size'] * 1000) break;
|
||||
}
|
||||
if ($file_size > $settings['upload_max_img_size'] * 1000) {
|
||||
|
@ -65,16 +65,19 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
|
||||
if (empty($errors)) {
|
||||
$filename = gmdate("YmdHis").uniqid('');
|
||||
switch($image_info[2]) {
|
||||
case 1:
|
||||
switch($imageMIME) {
|
||||
case 'image/gif':
|
||||
$filename .= '.gif';
|
||||
break;
|
||||
case 2:
|
||||
case 'image/jpeg':
|
||||
$filename .= '.jpg';
|
||||
break;
|
||||
case 3:
|
||||
case 'image/png':
|
||||
$filename .= '.png';
|
||||
break;
|
||||
case 'image/webp':
|
||||
$filename .= '.webp';
|
||||
break;
|
||||
}
|
||||
if (isset($img_tmp_name)) {
|
||||
@rename($uploaded_images_path.$img_tmp_name, $uploaded_images_path.$filename) or $errors[] = 'upload_error';
|
||||
|
@ -88,6 +91,10 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
}
|
||||
if (empty($errors)) {
|
||||
@chmod($uploaded_images_path.$filename, 0644);
|
||||
// $user_id can be NULL (see around line #15), because of that do not handle it with intval()
|
||||
// see therefore variable definition of $user_id around line 15 of this script
|
||||
$qSetUpload = "INSERT INTO " . $db_settings['uploads_table'] . " (uploader, pathname, tstamp) VALUES (". $user_id .", '" . mysqli_real_escape_string($connid, $filename) . "', NOW())";
|
||||
mysqli_query($connid, $qSetUpload);
|
||||
$smarty->assign('uploaded_file', $filename);
|
||||
} else {
|
||||
$smarty->assign('errors', $errors);
|
||||
|
@ -102,7 +109,7 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
$smarty->assign('delete', htmlspecialchars($_REQUEST['delete']));
|
||||
if (isset($_REQUEST['current'])) $smarty->assign('current', intval($_REQUEST['current']));
|
||||
} else {
|
||||
if (preg_match('/^([a-z0-9]+)\.(gif|jpg|png)$/', $_REQUEST['delete']) && file_exists($uploaded_images_path.$_REQUEST['delete'])) {
|
||||
if (preg_match('/^([a-z0-9]+)\.(gif|jpg|png|webp)$/', $_REQUEST['delete']) && file_exists($uploaded_images_path.$_REQUEST['delete'])) {
|
||||
@chmod($uploaded_images_path.$_REQUEST['delete'], 0777);
|
||||
@unlink($uploaded_images_path.$_REQUEST['delete']);
|
||||
}
|
||||
|
@ -120,7 +127,7 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
if ($browse_images < 1) $browse_images = 1;
|
||||
$handle = opendir($uploaded_images_path);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.jpg$/i', $file) || preg_match('/\.png$/i', $file) || preg_match('/\.gif$/i', $file)) {
|
||||
if (preg_match('/\.(gif|png|jpe?g|svg|webp)$/i', $file)) {
|
||||
$images[] = $file;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,111 +4,134 @@ if (!defined('IN_INDEX')) {
|
|||
exit;
|
||||
}
|
||||
|
||||
// only registered users have access to this section or user area is public:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_area_public'] == 1) {
|
||||
if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
|
||||
else $action = 'main';
|
||||
if (isset($_REQUEST['action']))
|
||||
$action = $_REQUEST['action'];
|
||||
else
|
||||
$action = 'main';
|
||||
|
||||
if (isset($_GET['user_lock'])) $action = 'user_lock';
|
||||
if (isset($_GET['show_user'])) $action = 'show_user';
|
||||
if (isset($_GET['show_posts'])) $action = 'show_posts';
|
||||
if (isset($_POST['edit_user_submit'])) $action = 'edit_userdata';
|
||||
if (isset($_POST['edit_pw_submit'])) $action = 'edit_pw_submitted';
|
||||
if (isset($_POST['edit_email_submit'])) $action = 'edit_email_submit';
|
||||
if (isset($_GET['user_lock']))
|
||||
$action = 'user_lock';
|
||||
if (isset($_GET['show_user']))
|
||||
$action = 'show_user';
|
||||
if (isset($_GET['show_posts']))
|
||||
$action = 'show_posts';
|
||||
if (isset($_POST['edit_user_submit']))
|
||||
$action = 'edit_userdata';
|
||||
if (isset($_POST['edit_pw_submit']))
|
||||
$action = 'edit_pw_submitted';
|
||||
if (isset($_POST['edit_email_submit']))
|
||||
$action = 'edit_email_submit';
|
||||
if (isset($_POST['remove_account_submit']))
|
||||
$action = 'remove_account_submitted';
|
||||
|
||||
if(isset($_REQUEST['id'])) $id = $_REQUEST['id'];
|
||||
if(isset($_REQUEST['id']))
|
||||
$id = $_REQUEST['id'];
|
||||
|
||||
$isUser = isset($_SESSION[$settings['session_prefix'].'user_type']) && isset($_SESSION[$settings['session_prefix'].'user_id']);
|
||||
$isModOrAdmin = $isUser && ($_SESSION[$settings['session_prefix'].'user_type'] == 1 || $_SESSION[$settings['session_prefix'].'user_type'] == 2);
|
||||
|
||||
// on action event main *AND* only team members ($settings['user_area_access'] = 0) or registered users ($settings['user_area_access'] = 1) have access to this section or the user area is public ($settings['user_area_access'] = 2):
|
||||
$hasUserAreaAccess = $action == 'main' && ($settings['user_area_access'] == 2 || ($settings['user_area_access'] == 1 && $isUser) || $isModOrAdmin);
|
||||
|
||||
if ($isUser || $hasUserAreaAccess) {
|
||||
switch($action) {
|
||||
case 'main':
|
||||
if (isset($_GET['search_user']) && trim($_GET['search_user']) != '') $search_user = trim($_GET['search_user']);
|
||||
|
||||
// count users and pages:
|
||||
if (isset($search_user)) {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = '' AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'");
|
||||
} else {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = ''");
|
||||
}
|
||||
list($total_users) = mysqli_fetch_row($user_count_result);
|
||||
mysqli_free_result($user_count_result);
|
||||
$total_pages = ceil($total_users / $settings['users_per_page']);
|
||||
|
||||
// who is online:
|
||||
if ($settings['count_users_online'] > 0) {
|
||||
$useronline_result = mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_name COLLATE utf8_general_ci AS user_name, ".$db_settings['useronline_table'].".user_id
|
||||
FROM ".$db_settings['useronline_table']."
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ".$db_settings['useronline_table'].".user_id
|
||||
WHERE ".$db_settings['useronline_table'].".user_id > 0
|
||||
ORDER BY user_name ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
if ($hasUserAreaAccess) {
|
||||
if (isset($_GET['search_user']) && trim($_GET['search_user']) != '') $search_user = trim($_GET['search_user']);
|
||||
|
||||
// count users and pages:
|
||||
if (isset($search_user)) {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = '' AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'");
|
||||
} else {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = ''");
|
||||
}
|
||||
list($total_users) = mysqli_fetch_row($user_count_result);
|
||||
mysqli_free_result($user_count_result);
|
||||
$total_pages = ceil($total_users / $settings['users_per_page']);
|
||||
|
||||
// who is online:
|
||||
if ($settings['count_users_online'] > 0) {
|
||||
$useronline_result = mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_name COLLATE utf8mb4_general_ci AS user_name, ".$db_settings['useronline_table'].".user_id
|
||||
FROM ".$db_settings['useronline_table']."
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ".$db_settings['useronline_table'].".user_id
|
||||
WHERE ".$db_settings['useronline_table'].".user_id > 0
|
||||
ORDER BY user_name ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
$i = 0;
|
||||
while($uid_field = mysqli_fetch_array($useronline_result)) {
|
||||
$useronline_array[] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['id'] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['name'] = htmlspecialchars($uid_field['user_name']);
|
||||
++$i;
|
||||
}
|
||||
mysqli_free_result($useronline_result);
|
||||
}
|
||||
|
||||
if (isset($users_online)) $smarty->assign('users_online', $users_online);
|
||||
|
||||
if (isset($_GET['page'])) $page = intval($_GET['page']); else $page = 1;
|
||||
if ($page > $total_pages) $page = $total_pages;
|
||||
if ($page < 1) $page = 1;
|
||||
|
||||
if (isset($_GET['order'])) $order = $_GET['order']; else $order='user_name';
|
||||
if ($order != 'user_id' && $order != 'user_name' && $order != 'user_email' && $order != 'user_type' && $order != 'registered' && $order != 'logins' && $order != 'last_login' && $order != 'user_lock' && $order != 'user_hp' && $order != 'email_contact' && $order != 'online') $order = 'user_name';
|
||||
if ($order == 'user_lock' && (empty($_SESSION[$settings['session_prefix'].'user_type']) || isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] < 1)) $order = 'user_name';
|
||||
if (isset($_GET['descasc'])) $descasc = $_GET['descasc']; else $descasc = "ASC";
|
||||
if ($descasc != 'DESC' && $descasc != 'ASC') $descasc = 'ASC';
|
||||
|
||||
$ul = ($page - 1) * $settings['users_per_page'];
|
||||
|
||||
// get userdata:
|
||||
$category_query_add = '';
|
||||
|
||||
if (isset($search_user)) {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ." AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} else {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ."
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while($uid_field = mysqli_fetch_array($useronline_result)) {
|
||||
$useronline_array[] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['id'] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['name'] = htmlspecialchars($uid_field['user_name']);
|
||||
++$i;
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$userdata[$i]['user_id'] = intval($row['user_id']);
|
||||
$userdata[$i]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
if ($isModOrAdmin || $isUser && $row['email_contact'] > 0 || $row['email_contact'] == 2)
|
||||
$userdata[$i]['user_email'] = TRUE;
|
||||
$userdata[$i]['user_hp'] = htmlspecialchars($row['user_hp']);
|
||||
if (!empty($userdata[$i]['user_hp']) && trim($userdata[$i]['user_hp']) != '') {
|
||||
$userdata[$i]['user_hp'] = add_http_if_no_protocol($userdata[$i]['user_hp']);
|
||||
}
|
||||
$userdata[$i]['user_type'] = intval($row['user_type']);
|
||||
$userdata[$i]['user_lock'] = $row['user_lock'];
|
||||
$i++;
|
||||
}
|
||||
mysqli_free_result($useronline_result);
|
||||
}
|
||||
|
||||
if (isset($users_online)) $smarty->assign('users_online', $users_online);
|
||||
|
||||
if (isset($_GET['page'])) $page = intval($_GET['page']); else $page = 1;
|
||||
if ($page > $total_pages) $page = $total_pages;
|
||||
if ($page < 1) $page = 1;
|
||||
|
||||
if (isset($_GET['order'])) $order = $_GET['order']; else $order='user_name';
|
||||
if ($order != 'user_id' && $order != 'user_name' && $order != 'user_email' && $order != 'user_type' && $order != 'registered' && $order != 'logins' && $order != 'last_login' && $order != 'user_lock' && $order != 'user_hp' && $order != 'email_contact' && $order != 'online') $order = 'user_name';
|
||||
if ($order == 'user_lock' && (empty($_SESSION[$settings['session_prefix'].'user_type']) || isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] < 1)) $order = 'user_name';
|
||||
if (isset($_GET['descasc'])) $descasc = $_GET['descasc']; else $descasc = "ASC";
|
||||
if ($descasc != 'DESC' && $descasc != 'ASC') $descasc = 'ASC';
|
||||
|
||||
$ul = ($page - 1) * $settings['users_per_page'];
|
||||
|
||||
// get userdata:
|
||||
$category_query_add = '';
|
||||
|
||||
if (isset($search_user)) {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ." AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} else {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ."
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$userdata[$i]['user_id'] = intval($row['user_id']);
|
||||
$userdata[$i]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
if ($row['email_contact'] == 1) $userdata[$i]['user_email'] = TRUE;
|
||||
$userdata[$i]['user_hp'] = htmlspecialchars($row['user_hp']);
|
||||
if (trim($userdata[$i]['user_hp']) != '') {
|
||||
$userdata[$i]['user_hp'] = add_http_if_no_protocol($userdata[$i]['user_hp']);
|
||||
mysqli_free_result($result);
|
||||
|
||||
$smarty->assign('pagination', pagination($total_pages, $page, 3));
|
||||
|
||||
if (isset($userdata)) $smarty->assign('userdata', $userdata);
|
||||
$smarty->assign('total_users',$total_users);
|
||||
|
||||
if (isset($search_user)) {
|
||||
$smarty->assign('search_user', htmlspecialchars($search_user));
|
||||
$smarty->assign('search_user_encoded', urlencode($search_user));
|
||||
}
|
||||
$userdata[$i]['user_type'] = intval($row['user_type']);
|
||||
$userdata[$i]['user_lock'] = $row['user_lock'];
|
||||
$i++;
|
||||
$smarty->assign('order', $order);
|
||||
$smarty->assign('descasc', $descasc);
|
||||
$smarty->assign('ul', $ul);
|
||||
$smarty->assign('page', $page);
|
||||
$smarty->assign('subnav_location', 'subnav_userarea');
|
||||
$smarty->assign('subtemplate', 'user.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
|
||||
$smarty->assign('pagination', pagination($total_pages, $page, 3));
|
||||
|
||||
if (isset($userdata)) $smarty->assign('userdata', $userdata);
|
||||
$smarty->assign('total_users',$total_users);
|
||||
|
||||
if (isset($search_user)) {
|
||||
$smarty->assign('search_user', htmlspecialchars($search_user));
|
||||
$smarty->assign('search_user_encoded', urlencode($search_user));
|
||||
else {
|
||||
header("Location: index.php");
|
||||
exit;
|
||||
}
|
||||
$smarty->assign('order', $order);
|
||||
$smarty->assign('descasc', $descasc);
|
||||
$smarty->assign('ul', $ul);
|
||||
$smarty->assign('page', $page);
|
||||
$smarty->assign('subnav_location', 'subnav_userarea');
|
||||
$smarty->assign('subtemplate', 'user.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
break;
|
||||
case 'user_lock':
|
||||
if (isset($_GET['page'])) {
|
||||
|
@ -158,7 +181,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
$month = my_substr($row['birthday'], 5, 2, $lang['charset']);
|
||||
$day = my_substr($row['birthday'], 8, 2, $lang['charset']);
|
||||
|
||||
$ystr = strrev(intval(strftime("%Y%m%d")) - intval($year.$month.$day));
|
||||
$ystr = strrev(intval(date("Ymd")) - intval($year.$month.$day));
|
||||
$years = intval(strrev(my_substr($ystr, 4, my_strlen($ystr, $lang['charset']), $lang['charset'])));
|
||||
|
||||
$smarty->assign('p_user_id', intval($row['user_id']));
|
||||
|
@ -173,8 +196,9 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
$smarty->assign('birthdate', $birthdate);
|
||||
$smarty->assign('years', $years);
|
||||
}
|
||||
if ($row['email_contact'] == 1) $smarty->assign('user_email', TRUE);
|
||||
if (trim($row['user_hp']) != '') {
|
||||
if ($isModOrAdmin || $isUser && $row['email_contact'] > 0 || $row['email_contact'] == 2)
|
||||
$smarty->assign('user_email', TRUE);
|
||||
if (!empty($row['user_hp']) && trim($row['user_hp']) != '') {
|
||||
$row['user_hp'] = add_http_if_no_protocol($row['user_hp']);
|
||||
}
|
||||
$smarty->assign('user_hp', htmlspecialchars($row['user_hp']));
|
||||
|
@ -190,6 +214,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
$smarty->assign('logins_per_day', number_format($row['logins'] / $days_registered, 2));
|
||||
$smarty->assign('postings_per_day', number_format($postings / $days_registered, 2));
|
||||
$smarty->assign('last_posting_id', intval($last_posting['id']));
|
||||
$smarty->assign('last_posting_formated_time', htmlspecialchars(format_time($lang['time_format_full'], $last_posting['disp_time'])));
|
||||
$smarty->assign('last_posting_time', $last_posting['disp_time']);
|
||||
$smarty->assign('last_posting_subject', htmlspecialchars($last_posting['subject']));
|
||||
|
||||
|
@ -264,15 +289,22 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
$smarty->assign('pagination', pagination($total_pages, $page, 3));
|
||||
|
||||
if ($user_postings_count > 0) {
|
||||
if ($categories == false) $result = @mysqli_query($connid, "SELECT id, pid, tid, user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL ".$time_difference." MINUTE) AS disp_time, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, marked, sticky FROM ".$db_settings['forum_table']." WHERE user_id = ". intval($id) ." ORDER BY time DESC LIMIT ". intval($ul) .", ". intval($settings['search_results_per_page']));
|
||||
else $result = @mysqli_query($connid, "SELECT id, pid, tid, user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL ".$time_difference." MINUTE) AS disp_time, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, marked, sticky FROM ".$db_settings['forum_table']." WHERE user_id = ". intval($id) ." AND category IN (". $category_ids_query .") ORDER BY time DESC LIMIT ". intval($ul) .", ". intval($settings['search_results_per_page']));
|
||||
$categories_restriction = $categories == false ? "" : " AND category IN (". $category_ids_query .") ";
|
||||
$spam_restriction = $isModOrAdmin ? "" : " AND `id` NOT IN (SELECT `eid` FROM `" . $db_settings['b8_rating_table'] . "` WHERE `spam` = 1 AND `eid` = `id`) AND `id` NOT IN (SELECT `eid` FROM `" . $db_settings['akismet_rating_table'] . "` WHERE `spam` = 1 AND `eid` = `id`) ";
|
||||
|
||||
$result = @mysqli_query($connid, "SELECT id, pid, tid, user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL ".$time_difference." MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, marked, sticky
|
||||
FROM `" . $db_settings['forum_table'] . "`
|
||||
WHERE user_id = ". intval($id) . " " . $categories_restriction . " " . $spam_restriction . "
|
||||
ORDER BY time DESC LIMIT ". intval($ul) .", ". intval($settings['search_results_per_page']));
|
||||
|
||||
$i = 0;
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$user_postings_data[$i]['id'] = intval($row['id']);
|
||||
$user_postings_data[$i]['pid'] = intval($row['pid']);
|
||||
$user_postings_data[$i]['name'] = htmlspecialchars($user_name);
|
||||
$user_postings_data[$i]['subject'] = htmlspecialchars($row['subject']);
|
||||
$user_postings_data[$i]['disp_time'] = $row['disp_time'];
|
||||
$user_postings_data[$i]['disp_time'] = format_time($lang['time_format_full'], $row['disp_time']);
|
||||
if (isset($categories[$row['category']]) && $categories[$row['category']] != '') {
|
||||
$user_postings_data[$i]['category'] = $row["category"];
|
||||
$user_postings_data[$i]['category_name'] = $categories[$row["category"]];
|
||||
|
@ -294,17 +326,21 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
$template = 'main.tpl';
|
||||
break;
|
||||
case 'edit_profile':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name, user_real_name, gender, birthday, user_email, email_contact, user_hp, user_location, signature, profile, new_posting_notification, new_user_notification, auto_login_code, language, time_zone, time_difference, theme FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name, user_real_name, gender, birthday, user_email, email_contact, user_hp, user_location, signature, profile, new_posting_notification, new_user_notification, browser_window_target, auto_login_code, language, time_zone, time_difference, theme FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$row = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
if (trim($row['birthday']) == '' || $row['birthday'] == '0000-00-00') $user_birthday = '';
|
||||
else {
|
||||
$year = my_substr($row['birthday'], 0, 4, $lang['charset']);
|
||||
$month = my_substr($row['birthday'], 5, 2, $lang['charset']);
|
||||
$day = my_substr($row['birthday'], 8, 2, $lang['charset']);
|
||||
$user_birthday = $year.'-'.$month.'-'.$day;
|
||||
if (!empty($row['birthday'])) {
|
||||
if (trim($row['birthday']) == '' || $row['birthday'] == '0000-00-00') $user_birthday = '';
|
||||
else {
|
||||
$year = my_substr($row['birthday'], 0, 4, $lang['charset']);
|
||||
$month = my_substr($row['birthday'], 5, 2, $lang['charset']);
|
||||
$day = my_substr($row['birthday'], 8, 2, $lang['charset']);
|
||||
$user_birthday = $year.'-'.$month.'-'.$day;
|
||||
}
|
||||
} else {
|
||||
$user_birthday = '';
|
||||
}
|
||||
|
||||
if (isset($category_selection)) $smarty->assign('category_selection', $category_selection);
|
||||
|
@ -351,7 +387,8 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
if ($time_difference_minutes > 0) $user_time_difference .= ':'.$time_difference_minutes;
|
||||
$smarty->assign('user_time_difference', $user_time_difference);
|
||||
|
||||
if (isset($_GET['msg'])) $smarty->assign('msg', htmlspecialchars($_GET['msg']));
|
||||
if (isset($_GET['msg']))
|
||||
$smarty->assign('msg', htmlspecialchars($_GET['msg']));
|
||||
$smarty->assign('user_name', htmlspecialchars($row['user_name']));
|
||||
$smarty->assign('user_real_name', htmlspecialchars($row['user_real_name']));
|
||||
$smarty->assign('user_gender', $row['gender']);
|
||||
|
@ -363,8 +400,18 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
$profile = htmlspecialchars($row['profile']);
|
||||
$smarty->assign('profile', htmlspecialchars($row['profile']));
|
||||
$smarty->assign('signature', htmlspecialchars($row['signature']));
|
||||
if ($row['auto_login_code'] != '') $smarty->assign('auto_login', 1);
|
||||
else $smarty->assign('auto_login', 0);
|
||||
if (intval($row['browser_window_target']) == 1)
|
||||
$smarty->assign('browser_link_open', 1);
|
||||
elseif (intval($row['browser_window_target']) == 2)
|
||||
$smarty->assign('browser_link_open', 2);
|
||||
elseif (intval($row['browser_window_target']) == 3)
|
||||
$smarty->assign('browser_link_open', 3);
|
||||
else
|
||||
$smarty->assign('browser_link_open', 0);
|
||||
if ($row['auto_login_code'] != '')
|
||||
$smarty->assign('auto_login', 1);
|
||||
else
|
||||
$smarty->assign('auto_login', 0);
|
||||
|
||||
if($settings['avatars'] > 0) {
|
||||
$avatarInfo = getAvatar($_SESSION[$settings['session_prefix'].'user_id']);
|
||||
|
@ -390,24 +437,26 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
}
|
||||
break;
|
||||
case 'edit_userdata':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']){
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']){
|
||||
$id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
if (empty($_POST['email_contact']))
|
||||
$email_contact = 0;
|
||||
if (isset($_POST['email_contact']))
|
||||
$email_contact = intval($_POST['email_contact']);
|
||||
else
|
||||
$email_contact = 1;
|
||||
$user_hp = trim($_POST['user_hp']);
|
||||
$user_real_name = trim($_POST['user_real_name']);
|
||||
$user_birthday = trim($_POST['user_birthday']);
|
||||
$email_contact = 0;
|
||||
if ($email_contact < 0 || $email_contact > 2)
|
||||
$email_contact = 0;
|
||||
$user_hp = (!empty($_POST['user_hp'])) ? trim($_POST['user_hp']) : '';
|
||||
$user_real_name = (!empty($_POST['user_real_name'])) ? trim($_POST['user_real_name']) : '';
|
||||
$user_birthday = (!empty($_POST['user_birthday'])) ? trim($_POST['user_birthday']) : '';
|
||||
if (isset($_POST['user_gender']))
|
||||
$gender = intval($_POST['user_gender']);
|
||||
else
|
||||
$gender = 0;
|
||||
if ($gender != 0 && $gender !=1 && $gender != 2)
|
||||
$gender = 0;
|
||||
$user_location = trim($_POST['user_location']);
|
||||
$profile = trim($_POST['profile']);
|
||||
$signature = trim($_POST['signature']);
|
||||
$user_location = (!empty($_POST['user_location'])) ? trim($_POST['user_location']) : '';
|
||||
$profile = (!empty($_POST['profile'])) ? trim($_POST['profile']) : '';
|
||||
$signature = (!empty($_POST['signature'])) ? trim($_POST['signature']) : '';
|
||||
|
||||
// time zone:
|
||||
$user_time_zone = '';
|
||||
|
@ -473,6 +522,10 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
} else {
|
||||
$auto_login = 0;
|
||||
}
|
||||
if (isset($_POST['browser_link_open']) and in_array($_POST['browser_link_open'], array(0, 1, 2, 3)))
|
||||
$browser_target = $_POST['browser_link_open'];
|
||||
else
|
||||
$browser_target = 0;
|
||||
|
||||
// check posted data:
|
||||
if (my_strlen($user_hp, $lang['charset']) > $settings['hp_maxlength']) $errors[] = 'error_hp_too_long';
|
||||
|
@ -572,11 +625,13 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
$smarty->assign('user_location', htmlspecialchars($user_location));
|
||||
$smarty->assign('profile', htmlspecialchars($profile));
|
||||
$smarty->assign('signature', htmlspecialchars($signature));
|
||||
if (isset($_POST['user_time_difference'])) $smarty->assign('user_time_difference', htmlspecialchars($_POST['user_time_difference']));
|
||||
if (isset($_POST['user_time_difference']))
|
||||
$smarty->assign('user_time_difference', htmlspecialchars($_POST['user_time_difference']));
|
||||
$smarty->assign('auto_login', $auto_login);
|
||||
$smarty->assign('new_posting_notification', $new_posting_notification);
|
||||
$smarty->assign('new_user_notification', $new_user_notification);
|
||||
if (isset($_POST['category_selection']) && is_array($_POST['category_selection'])) $smarty->assign('category_selection', $_POST['category_selection']);
|
||||
if (isset($_POST['category_selection']) && is_array($_POST['category_selection']))
|
||||
$smarty->assign('category_selection', $_POST['category_selection']);
|
||||
$smarty->assign('time_difference_array', $user_time_difference_array);
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
|
@ -588,12 +643,12 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
if (isset($category_selection_db)) {
|
||||
$queryUserDataEdit = "UPDATE ".$db_settings['userdata_table']." SET email_contact = ". intval($email_contact) .", user_hp = '". mysqli_real_escape_string($connid, $user_hp) ."', user_real_name = '". mysqli_real_escape_string($connid, $user_real_name) ."', gender = ". intval($gender) .", birthday = ";
|
||||
$queryUserDataEdit .= ($birthday !== NULL) ? "'". mysqli_real_escape_string($connid, $birthday) ."'" : "NULL";
|
||||
$queryUserDataEdit .= ", user_location = '". mysqli_real_escape_string($connid, $user_location) ."', profile = '". mysqli_real_escape_string($connid, $profile) ."', signature = '". mysqli_real_escape_string($connid, $signature) ."', user_view = ".intval($user_view) .", new_posting_notification = ". intval($new_posting_notification) .", new_user_notification = ". intval($new_user_notification) .", category_selection = '". mysqli_real_escape_string($connid, $category_selection_db) ."', language = '". mysqli_real_escape_string($connid, $user_language) ."', time_zone = '". mysqli_real_escape_string($connid, $user_time_zone) ."', time_difference = ". intval($user_time_difference) .", theme = '". mysqli_real_escape_string($connid, $user_theme) ."', last_login = last_login, last_logout = last_logout, registered = registered WHERE user_id = ". intval($id);
|
||||
$queryUserDataEdit .= ", user_location = '". mysqli_real_escape_string($connid, $user_location) ."', profile = '". mysqli_real_escape_string($connid, $profile) ."', signature = '". mysqli_real_escape_string($connid, $signature) ."', user_view = ".intval($user_view) .", new_posting_notification = ". intval($new_posting_notification) .", new_user_notification = ". intval($new_user_notification) .", browser_window_target = ". intval($browser_target) .", category_selection = '". mysqli_real_escape_string($connid, $category_selection_db) ."', language = '". mysqli_real_escape_string($connid, $user_language) ."', time_zone = '". mysqli_real_escape_string($connid, $user_time_zone) ."', time_difference = ". intval($user_time_difference) .", theme = '". mysqli_real_escape_string($connid, $user_theme) ."', last_login = last_login, last_logout = last_logout, registered = registered WHERE user_id = ". intval($id);
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['category_selection'] = $filtered_category_selection;
|
||||
} else {
|
||||
$queryUserDataEdit = "UPDATE ".$db_settings['userdata_table']." SET email_contact = ". intval($email_contact) .", user_hp = '". mysqli_real_escape_string($connid, $user_hp) ."', user_real_name = '". mysqli_real_escape_string($connid, $user_real_name) ."', gender = ". intval($gender) .", birthday = ";
|
||||
$queryUserDataEdit .= ($birthday !== NULL) ? "'". mysqli_real_escape_string($connid, $birthday) ."'" : "NULL";
|
||||
$queryUserDataEdit .= ", user_location = '". mysqli_real_escape_string($connid, $user_location) ."', profile = '". mysqli_real_escape_string($connid, $profile) ."', signature = '". mysqli_real_escape_string($connid, $signature) ."', user_view = ". intval($user_view) .", new_posting_notification = ". intval($new_posting_notification) .", new_user_notification = ". intval($new_user_notification) .", category_selection = NULL, language = '". mysqli_real_escape_string($connid, $user_language) ."', time_zone = '". mysqli_real_escape_string($connid, $user_time_zone) ."', time_difference = ". intval($user_time_difference) .", theme = '". mysqli_real_escape_string($connid, $user_theme) ."', last_login = last_login, last_logout = last_logout, registered = registered WHERE user_id = ". intval($id);
|
||||
$queryUserDataEdit .= ", user_location = '". mysqli_real_escape_string($connid, $user_location) ."', profile = '". mysqli_real_escape_string($connid, $profile) ."', signature = '". mysqli_real_escape_string($connid, $signature) ."', user_view = ". intval($user_view) .", new_posting_notification = ". intval($new_posting_notification) .", new_user_notification = ". intval($new_user_notification) .", browser_window_target = ". intval($browser_target) .", category_selection = NULL, language = '". mysqli_real_escape_string($connid, $user_language) ."', time_zone = '". mysqli_real_escape_string($connid, $user_time_zone) ."', time_difference = ". intval($user_time_difference) .", theme = '". mysqli_real_escape_string($connid, $user_theme) ."', last_login = last_login, last_logout = last_logout, registered = registered WHERE user_id = ". intval($id);
|
||||
unset($_SESSION[$settings['session_prefix'].'usersettings']['category_selection']);
|
||||
}
|
||||
@mysqli_query($connid, $queryUserDataEdit);
|
||||
|
@ -608,10 +663,10 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
$auto_login_code = $row['auto_login_code'];
|
||||
}
|
||||
$auto_login_code_cookie = $auto_login_code . intval($id);
|
||||
setcookie($settings['session_prefix'].'auto_login', $auto_login_code_cookie, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'auto_login', $auto_login_code_cookie, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, auto_login_code = '". mysqli_real_escape_string($connid, $auto_login_code) ."' WHERE user_id = ". intval($id));
|
||||
} else {
|
||||
setcookie($settings['session_prefix'].'auto_login', '', 0);
|
||||
setcookie($settings['session_prefix'].'auto_login', '', cookie_options(0));
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, auto_login_code = '' WHERE user_id = ". intval($id));
|
||||
}
|
||||
|
||||
|
@ -624,13 +679,72 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
else unset($_SESSION[$settings['session_prefix'].'usersettings']['time_difference']);
|
||||
if (!empty($user_theme)) $_SESSION[$settings['session_prefix'].'usersettings']['theme'] = $user_theme;
|
||||
else unset($_SESSION[$settings['session_prefix'].'usersettings']['theme']);
|
||||
if (!empty($browser_target)) $_SESSION[$settings['session_prefix'].'usersettings']['browser_window_target'] = $browser_target;
|
||||
else unset($_SESSION[$settings['session_prefix'].'usersettings']['browser_window_target']);
|
||||
header('Location: index.php?mode=user&action=edit_profile&msg=profile_saved');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'remove_account':
|
||||
if ($isUser) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = mysqli_query($connid, "SELECT `user_name` FROM `".$db_settings['userdata_table']."` WHERE `user_id` = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
$row = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
$smarty->assign('user_name', htmlspecialchars($row['user_name']));
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=user&action=edit_profile';
|
||||
$breadcrumbs[1]['linkname'] = 'subnav_userarea_edit_user';
|
||||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_userarea_remove_account');
|
||||
$smarty->assign('subtemplate', 'user_remove_account.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'remove_account_submitted':
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = @mysqli_query($connid, "SELECT `user_name`, `user_pw` FROM `".$db_settings['userdata_table']."` WHERE `user_id` = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
$row = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
$user_name = $row['user_name'];
|
||||
// checking password
|
||||
if (isset($_POST['user_password']) && is_pw_correct($_POST['user_password'], $row['user_pw'])) {
|
||||
// delete user, remove avatar, etc.
|
||||
deleteUser($user_id, $user_name);
|
||||
|
||||
$_SESSION[$settings['session_prefix'].'user_id'] = false;
|
||||
$_SESSION[$settings['session_prefix'].'user_name'] = '';
|
||||
$_SESSION[$settings['session_prefix'].'user_type'] = 0;
|
||||
$_SESSION['csrf_token'] = Null;
|
||||
setcookie($settings['session_prefix'].'userdata', '', cookie_options(0));
|
||||
|
||||
header('location: index.php?mode=index');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$errors[] = 'error_pw_wrong';
|
||||
$smarty->assign('errors', $errors);
|
||||
$smarty->assign('user_name', htmlspecialchars($user_name));
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=user&action=edit_profile';
|
||||
$breadcrumbs[1]['linkname'] = 'subnav_userarea_edit_user';
|
||||
$smarty->assign('breadcrumbs', $breadcrumbs);
|
||||
$smarty->assign('subnav_location', 'subnav_userarea_remove_account');
|
||||
$smarty->assign('subtemplate', 'user_remove_account.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'edit_pw':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=user&action=edit_profile';
|
||||
|
@ -642,21 +756,41 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
}
|
||||
break;
|
||||
case 'edit_pw_submitted':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$pw_result = mysqli_query($connid, "SELECT user_pw FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$field = mysqli_fetch_array($pw_result);
|
||||
mysqli_free_result($pw_result);
|
||||
|
||||
$old_pw = trim($_POST['old_pw']);
|
||||
$new_pw = trim($_POST['new_pw']);
|
||||
$new_pw_conf = trim($_POST['new_pw_conf']);
|
||||
|
||||
if ($old_pw == '' or $new_pw == '' or $new_pw_conf == '') $errors[] = 'error_form_uncomplete';
|
||||
|
||||
if (!isset($_POST['old_pw']) || !isset($_POST['new_pw']) || trim($_POST['old_pw']) == '' || trim($_POST['new_pw']) == '')
|
||||
$errors[] = 'error_form_uncomplete';
|
||||
else {
|
||||
if (!is_pw_correct($old_pw, $field['user_pw'])) $errors[] = 'error_old_pw_wrong';
|
||||
if ($new_pw_conf != $new_pw) $errors[] = 'error_pw_conf_uneven';
|
||||
if (my_strlen($new_pw, $lang['charset']) < $settings['min_pw_length']) $errors[] = 'error_new_pw_too_short';
|
||||
$old_pw = $_POST['old_pw'];
|
||||
$new_pw = $_POST['new_pw'];
|
||||
$min_new_password_length_by_restrictions = intval($settings['min_pw_digits']) + intval($settings['min_pw_lowercase_letters']) + intval($settings['min_pw_uppercase_letters']) + intval($settings['min_pw_special_characters']);
|
||||
// old password is wrong?
|
||||
if (!is_pw_correct($old_pw, $field['user_pw']))
|
||||
$errors[] = 'error_old_pw_wrong';
|
||||
// new password too short?
|
||||
if ($min_new_password_length_by_restrictions < intval($settings['min_pw_length']) && my_strlen($new_pw, $lang['charset']) < intval($settings['min_pw_length']))
|
||||
$errors[] = 'error_new_pw_too_short';
|
||||
// see: http://php.net/manual/en/regexp.reference.unicode.php
|
||||
// \p{N} == numbers
|
||||
// [\p{Ll}\p{Lm}\p{Lo}] == lowercase, modifier, other letters
|
||||
// [\p{Lu}\p{Lt}] == uppercase, titlecase letters
|
||||
// [\p{S}\p{P}\p{Z}] == symbols, punctuations, separator
|
||||
// new password contains numbers?
|
||||
if ($settings['min_pw_digits'] > 0 && !preg_match("/(?=(.*\p{N}){" . intval($settings['min_pw_digits']) . ",})/u", $new_pw))
|
||||
$errors[] = 'error_new_pw_needs_digit';
|
||||
// password contains lowercase letter?
|
||||
if ($settings['min_pw_lowercase_letters'] > 0 && !preg_match("/(?=(.*[\p{Ll}\p{Lm}\p{Lo}]){" . intval($settings['min_pw_lowercase_letters']) . ",})/u", $new_pw))
|
||||
$errors[] = 'error_new_pw_needs_lowercase_letter';
|
||||
// password contains uppercase letter?
|
||||
if ($settings['min_pw_uppercase_letters'] > 0 && !preg_match("/(?=(.*[\p{Lu}\p{Lt}]){" . intval($settings['min_pw_uppercase_letters']) . ",})/u", $new_pw))
|
||||
$errors[] = 'error_new_pw_needs_uppercase_letter';
|
||||
// password contains special character?
|
||||
if ($settings['min_pw_special_characters'] > 0 && !preg_match("/(?=(.*[\p{S}\p{P}\p{Z}]){" . intval($settings['min_pw_special_characters']) . ",})/u", $new_pw))
|
||||
$errors[] = 'error_new_pw_needs_special_character';
|
||||
}
|
||||
// Update, if no errors:
|
||||
if(empty($errors)) {
|
||||
|
@ -678,7 +812,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
}
|
||||
break;
|
||||
case 'edit_email':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=user&action=edit_profile';
|
||||
|
@ -690,21 +824,29 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
|
|||
}
|
||||
break;
|
||||
case 'edit_email_submit':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$new_email = trim($_POST['new_email']);
|
||||
$new_email_confirm = trim($_POST['new_email_confirm']);
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$new_email = (!empty($_POST['new_email'])) ? trim($_POST['new_email']) : '';
|
||||
$new_email_confirm = (!empty($_POST['new_email_confirm'])) ? trim($_POST['new_email_confirm']) : '';
|
||||
$pw_new_email = $_POST['pw_new_email'];
|
||||
// Check data:
|
||||
$email_result = @mysqli_query($connid, "SELECT user_id, user_name, user_pw, user_email FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id']) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$email_result = mysqli_query($connid, "SELECT `user_id`, `user_name`, `user_pw`, `user_email`, (SELECT COUNT(*) FROM `".$db_settings['userdata_table']."` WHERE `user_email` = '". mysqli_real_escape_string($connid, $new_email) ."') > 0 AS `email_collision` FROM `".$db_settings['userdata_table']."` WHERE `user_id` = ". intval($_SESSION[$settings['session_prefix'].'user_id']) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$data = mysqli_fetch_array($email_result);
|
||||
mysqli_free_result($email_result);
|
||||
if ($pw_new_email == '' || $new_email == '') $errors[] = 'error_form_uncompl';
|
||||
if ($pw_new_email == '' || $new_email == '')
|
||||
$errors[] = 'error_form_uncompl';
|
||||
if (empty($errors)) {
|
||||
if ($new_email != $new_email_confirm) $errors[] = 'error_email_confirmation';
|
||||
if (my_strlen($new_email, $lang['charset']) > $settings['email_maxlength']) $errors[] = 'error_email_too_long';
|
||||
if ($new_email == $data['user_email']) $errors[] = 'error_identic_email';
|
||||
if (!is_valid_email($new_email)) $errors[] = 'error_email_invalid';
|
||||
if (!is_pw_correct($pw_new_email, $data['user_pw'])) $errors[] = 'pw_wrong';
|
||||
if ($new_email != $new_email_confirm)
|
||||
$errors[] = 'error_email_confirmation';
|
||||
if (my_strlen($new_email, $lang['charset']) > $settings['email_maxlength'])
|
||||
$errors[] = 'error_email_too_long';
|
||||
if ($new_email == $data['user_email'])
|
||||
$errors[] = 'error_identic_email';
|
||||
if (!is_valid_email($new_email))
|
||||
$errors[] = 'error_email_invalid';
|
||||
if (!is_pw_correct($pw_new_email, $data['user_pw']))
|
||||
$errors[] = 'pw_wrong';
|
||||
if ($data['email_collision'] != 0)
|
||||
$errors[] = 'error_email_collision';
|
||||
}
|
||||
if (empty($errors)) {
|
||||
$smarty->configLoad($settings['language_file'], 'emails');
|
||||
|
|
29
index.php
29
index.php
|
@ -4,10 +4,10 @@
|
|||
* the messages in classical threaded view
|
||||
*
|
||||
* @author Mark Alexander Hoschek < alex at mylittleforum dot net >
|
||||
* @author Michael Lösler (https://github.com/derletztekick)
|
||||
* @author H. August (https://github.com/auge8472)
|
||||
* @copyright 2006-2018 Mark Alexander Hoschek
|
||||
* @version 2.4.8 (2018-02-18)
|
||||
* @author Michael Lösler (https://github.com/loesler)
|
||||
* @author Heiko August (https://github.com/auge8472)
|
||||
* @copyright 2006-2025 Mark Alexander Hoschek
|
||||
* @version 20250323.1 (2025-03-23)
|
||||
* @link https://mylittleforum.net/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
|
@ -17,7 +17,7 @@
|
|||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
|
@ -28,15 +28,17 @@ define('IN_INDEX', true);
|
|||
define('LANG_DIR', 'lang');
|
||||
define('THEMES_DIR', 'themes');
|
||||
|
||||
session_set_cookie_params(['samesite' => 'strict']);
|
||||
session_start();
|
||||
|
||||
include('config/db_settings.php');
|
||||
include('includes/mailer.inc.php');
|
||||
include('includes/functions.inc.php');
|
||||
include('includes/main.inc.php');
|
||||
|
||||
require('modules/smarty/Smarty.class.php');
|
||||
$smarty = new Smarty;
|
||||
$smarty->error_reporting = 'E_ALL & ~E_NOTICE';
|
||||
$smarty->error_reporting = '0'; //'E_ALL & ~E_NOTICE';
|
||||
$smarty->template_dir = THEMES_DIR;
|
||||
$smarty->assign('THEMES_DIR', THEMES_DIR);
|
||||
$smarty->assign('CSRF_TOKEN', $_SESSION['csrf_token']);
|
||||
|
@ -59,6 +61,9 @@ if ($lang['locale_charset'] != $lang['charset'])
|
|||
define('LOCALE_CHARSET', $lang['locale_charset']);
|
||||
@ini_set('default_charset', $lang['charset']);
|
||||
setlocale(LC_ALL, $lang['locale']);
|
||||
setlocale(LC_NUMERIC, "C");
|
||||
|
||||
include('includes/b8.inc.php');
|
||||
|
||||
$smarty->assign('settings', $settings);
|
||||
|
||||
|
@ -178,9 +183,6 @@ switch ($mode) {
|
|||
case 'upload_image':
|
||||
include('includes/upload_image.inc.php');
|
||||
break;
|
||||
case 'insert_flash':
|
||||
include('includes/insert_flash.inc.php');
|
||||
break;
|
||||
case 'avatar':
|
||||
include('includes/avatar.inc.php');
|
||||
break;
|
||||
|
@ -219,4 +221,13 @@ if (isset($_SESSION[$settings['session_prefix'] . 'usersettings']['theme']) && $
|
|||
}
|
||||
$smarty->assign('theme', $theme);
|
||||
$smarty->display($theme . '/' . $template);
|
||||
|
||||
// daily actions needs content from lang-file to create email
|
||||
// load e-mail strings from language file:
|
||||
$smarty->configLoad($settings['language_file'], 'emails');
|
||||
$lang = $smarty->getConfigVars();
|
||||
if ($language_file != $settings['language_file'])
|
||||
setlocale(LC_ALL, $lang['locale']);
|
||||
// do daily actions:
|
||||
daily_actions(TIMESTAMP);
|
||||
?>
|
|
@ -28,207 +28,225 @@ $default_settings['forum_name'] = 'my little forum';
|
|||
$default_settings['forum_address'] = ((isProtocolHTTPS() === true) ? 'https' : 'http') .'://'. $_SERVER['HTTP_HOST'] . substr(rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\'), 0, strrpos(rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\'), '/')) . '/';
|
||||
$default_settings['table_prefix'] = 'mlf2_';
|
||||
|
||||
// stripslashes on GPC if get_magic_quotes_gpc is enabled:
|
||||
if(get_magic_quotes_gpc())
|
||||
{
|
||||
function stripslashes_deep($value)
|
||||
{
|
||||
$value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
|
||||
return $value;
|
||||
}
|
||||
$_POST = array_map('stripslashes_deep', $_POST);
|
||||
$_GET = array_map('stripslashes_deep', $_GET);
|
||||
$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
|
||||
$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
|
||||
}
|
||||
function table_exists($table) {
|
||||
global $connid;
|
||||
$result = @mysqli_query($connid, "SHOW TABLES");
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
if ($table == $row[0]) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function table_exists($table)
|
||||
{
|
||||
global $connid;
|
||||
$result = @mysqli_query($connid, "SHOW TABLES");
|
||||
while($row = mysqli_fetch_array($result))
|
||||
{
|
||||
if($table==$row[0]) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* parses the relavant language file parts for the installation script
|
||||
*
|
||||
* the function reads the language file like a ini-file
|
||||
* this function comes without multiline support (no e-mail templates)
|
||||
* the code is based on the function in a comment on the
|
||||
* manual page for the PHP-function parse_ini_string
|
||||
* https://www.php.net/manual/de/function.parse-ini-string.php#111845
|
||||
*
|
||||
*/
|
||||
function my_parse_ini_file($path) {
|
||||
if (empty($path)) return false;
|
||||
|
||||
$lines = file($path);
|
||||
$ret = Array();
|
||||
$inside_section = false;
|
||||
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line);
|
||||
if (!$line || $line[0] == "#" || $line[0] == ";") continue;
|
||||
|
||||
if ($line[0] == "[" && $endIdx = strpos($line, "]")) {
|
||||
$inside_section = substr($line, 1, $endIdx-1);
|
||||
continue;
|
||||
}
|
||||
if (!strpos($line, '=')) continue;
|
||||
$tmp = explode("=", $line, 2);
|
||||
|
||||
$key = rtrim($tmp[0]);
|
||||
$value = ltrim($tmp[1]);
|
||||
if (preg_match("/^\".*\"$/", $value) || preg_match("/^'.*'$/", $value)) {
|
||||
$value = mb_substr($value, 1, mb_strlen($value) - 2);
|
||||
}
|
||||
$value = stripslashes($value);
|
||||
|
||||
if ($inside_section) {
|
||||
$t = preg_match("^\[(.*?)\]^", $key, $matches);
|
||||
if (!empty($matches) && isset($matches[0])) {
|
||||
$arr_name = preg_replace('#\[(.*?)\]#is', '', $key);
|
||||
if (!isset($ret[$inside_section][$arr_name]) || !is_array($ret[$inside_section][$arr_name])) {
|
||||
$ret[$inside_section][$arr_name] = array();
|
||||
}
|
||||
if (isset($matches[1]) && !empty($matches[1])) {
|
||||
$ret[$inside_section][$arr_name][$matches[1]] = $value;
|
||||
} else {
|
||||
$ret[$inside_section][$arr_name][] = $value;
|
||||
}
|
||||
} else {
|
||||
if (isset($ret[$inside_section][$key])) {
|
||||
if (!is_array($ret[$inside_section][$key])) {
|
||||
$atmp = $ret[$inside_section][$key];
|
||||
$ret[$inside_section][$key] = [];
|
||||
$ret[$inside_section][$key][] = $atmp;
|
||||
$ret[$inside_section][$key][] = $value;
|
||||
} else {
|
||||
$ret[$inside_section][$key][] = $value;
|
||||
}
|
||||
} else {
|
||||
$ret[$inside_section][$key] = $value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isset($ret[$key])) {
|
||||
if (!is_array($ret[$key])) {
|
||||
$atmp = $ret[$key];
|
||||
$ret[$key] = [];
|
||||
$ret[$key][] = $atmp;
|
||||
$ret[$key][] = $value;
|
||||
} else {
|
||||
$ret[$key][] = $value;
|
||||
}
|
||||
} else {
|
||||
$ret[$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// check version:
|
||||
if(!file_exists('../config/VERSION')) {
|
||||
die('Error in line '.__LINE__.': Missing the file config/VERSION.');
|
||||
} else {
|
||||
$newVersion = file_get_contents('../config/VERSION');
|
||||
if (empty($newVersion)) die('Error in line '.__LINE__.': No value for the script version in the file config/VERSION.');
|
||||
else $newVersion = trim($newVersion);
|
||||
}
|
||||
$newVersion = trim(file_get_contents('../config/VERSION'));
|
||||
|
||||
if(isset($_POST['language_file'])) $language_file = $_POST['language_file'];
|
||||
if (isset($_POST['language_file'])) $language_file = $_POST['language_file'];
|
||||
|
||||
// try to connect to the database...
|
||||
if($connid = @mysqli_connect($db_settings['host'], $db_settings['user'], $db_settings['password']))
|
||||
{
|
||||
if(@mysqli_select_db($connid, $db_settings['database']))
|
||||
{
|
||||
@mysqli_query($connid, 'SET NAMES utf8');
|
||||
if(table_exists($db_settings['forum_table']))
|
||||
{
|
||||
// the forum seems to be installed
|
||||
header('Location: ../');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
// try to connect to the database …
|
||||
if (!empty($db_settings['database']) && $connid = @mysqli_connect($db_settings['host'], $db_settings['user'], $db_settings['password'], $db_settings['database'])) {
|
||||
@mysqli_query($connid, 'SET NAMES utf8');
|
||||
if (table_exists($db_settings['forum_table'])) {
|
||||
// the forum seems to be installed
|
||||
header('Location: ../');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// language already selected?
|
||||
if(empty($language_file))
|
||||
{
|
||||
// get available languages:
|
||||
$handle=opendir('../lang/');
|
||||
while ($file = readdir($handle))
|
||||
{
|
||||
if(strrchr($file, ".")==".lang")
|
||||
{
|
||||
$file_array[] = $file;
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
natcasesort($file_array);
|
||||
$i=0;
|
||||
foreach($file_array as $file)
|
||||
{
|
||||
$language_files[$i]['file'] = $file;
|
||||
$language_files[$i]['language'] = ucfirst(str_replace(".lang","",$file));
|
||||
$language_parts = explode('.', $language_files[$i]['language']);
|
||||
if(isset($language_parts[1])) $language_files[$i]['language'] = $language_parts[0].' ('.$language_parts[1].')';
|
||||
$i++;
|
||||
}
|
||||
|
||||
if(empty($language_files)) die('No language file available.');
|
||||
elseif(count($language_files)==1)
|
||||
{
|
||||
// there's only one language file so take this one:
|
||||
$language_file = $language_files[0]['file'];
|
||||
}
|
||||
else
|
||||
{
|
||||
// there are several language files so let the user choose one:
|
||||
$action = 'choose_language';
|
||||
}
|
||||
}
|
||||
|
||||
// set provisional language file:
|
||||
if(empty($language_file)) $language_file = 'english.lang';
|
||||
|
||||
if(isset($language_file))
|
||||
{
|
||||
|
||||
if(!file_exists('../lang/'.$language_file) && isset($language_files[0]['file'])) $language_file = $language_files[0]['file'];
|
||||
if(!file_exists('../lang/'.$language_file)) die('Language file not available.');
|
||||
|
||||
// quick & dirty method to get the config vars without smarty (prevents
|
||||
// creation of a compiled template which would only be used once for the
|
||||
// installation - doesn't get multi-line-strings properly!):
|
||||
$config_file = file('../lang/'.$language_file);
|
||||
foreach($config_file as $line)
|
||||
{
|
||||
$line = trim($line);
|
||||
if($line!='' && $line[0]!='[')
|
||||
{
|
||||
$line_parts = explode('=',$line,2);
|
||||
if(isset($line_parts[1]))
|
||||
{
|
||||
$key = trim($line_parts[0]);
|
||||
if(isset($lang[$key]))
|
||||
{
|
||||
if(is_array($lang[$key]))
|
||||
{
|
||||
$lang[$key][] = trim($line_parts[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang[$key] = array($lang[$key]);
|
||||
$lang[$key][] = trim($line_parts[1]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang[$key] = trim($line_parts[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(empty($language_file)) {
|
||||
// get available languages:
|
||||
$handle = opendir('../lang/');
|
||||
while ($file = readdir($handle)) {
|
||||
if (strrchr($file, ".") == ".lang") {
|
||||
$file_array[] = $file;
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
natcasesort($file_array);
|
||||
$i = 0;
|
||||
foreach ($file_array as $file) {
|
||||
$language_files[$i]['file'] = $file;
|
||||
$language_files[$i]['language'] = ucfirst(str_replace(".lang","",$file));
|
||||
$language_parts = explode('.', $language_files[$i]['language']);
|
||||
if (isset($language_parts[1]))
|
||||
$language_files[$i]['language'] = $language_parts[0].' ('.$language_parts[1].')';
|
||||
$i++;
|
||||
}
|
||||
|
||||
if (empty($language_files)) die('No language file available.');
|
||||
elseif (count($language_files) == 1) {
|
||||
// there's only one language file so take this one:
|
||||
$language_file = $language_files[0]['file'];
|
||||
} else {
|
||||
// there are several language files so let the user choose one:
|
||||
$action = 'choose_language';
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['install_submit']))
|
||||
{
|
||||
// are all fields filled out?
|
||||
foreach ($_POST as $post)
|
||||
{
|
||||
if(trim($post) == "")
|
||||
{
|
||||
$errors[] = $lang['error_form_uncomplete'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
// set provisional language file:
|
||||
if (empty($language_file)) $language_file = 'english.lang';
|
||||
|
||||
if(empty($errors))
|
||||
{
|
||||
if($_POST['admin_pw'] != $_POST['admin_pw_conf']) $errors[] = $lang['error_conf_pw'];
|
||||
}
|
||||
if (isset($language_file)) {
|
||||
if(!file_exists('../lang/'.$language_file) && isset($language_files[0]['file'])) $language_file = $language_files[0]['file'];
|
||||
if(!file_exists('../lang/'.$language_file)) die('Language file not available.');
|
||||
|
||||
// try to connect the database with posted access data:
|
||||
if(empty($errors))
|
||||
{
|
||||
$connid = @mysqli_connect($_POST['host'], $_POST['user'], $_POST['password']);
|
||||
if(!$connid) $errors[] = $lang['error_db_connection']." (MySQL: ".mysqli_connect_error().")";
|
||||
}
|
||||
// quick & dirty method to get the config vars without smarty (prevents
|
||||
// creation of a compiled template which would only be used once for the
|
||||
// installation - doesn't get multi-line-strings properly!):
|
||||
$lang = my_parse_ini_file('../lang/'.$language_file);
|
||||
}
|
||||
|
||||
if(empty($errors))
|
||||
{
|
||||
if(!file_exists('install.sql')) $errors[] = $lang['error_sql_file_doesnt_exist'];
|
||||
}
|
||||
if (isset($_POST['install_submit'])) {
|
||||
// are all fields filled out?
|
||||
foreach ($_POST as $post) {
|
||||
if (trim($post) == "") {
|
||||
$errors[] = $lang['general']['error_form_uncomplete'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (empty($errors)) {
|
||||
if ($_POST['admin_pw'] != $_POST['admin_pw_conf']) $errors[] = $lang['install']['error_conf_pw'];
|
||||
}
|
||||
// try to connect the database with posted access data:
|
||||
if (empty($errors)) {
|
||||
$connid = @mysqli_connect($_POST['host'], $_POST['user'], $_POST['password']);
|
||||
if (!$connid) $errors[] = $lang['install']['error_db_connection']." (MySQL: ".mysqli_connect_error().")";
|
||||
}
|
||||
if (empty($errors)) {
|
||||
if (!file_exists('install.sql')) $errors[] = $lang['install']['error_sql_file_doesnt_exist'];
|
||||
}
|
||||
|
||||
// overwrite database settings file:
|
||||
if(empty($errors) && empty($_POST['dont_overwrite_settings'])) {
|
||||
// Keys of database array
|
||||
$db_connection_keys = array('host', 'user', 'password', 'database');
|
||||
$db_setting_keys = array(
|
||||
'settings_table' => 'settings',
|
||||
'forum_table' => 'entries',
|
||||
'category_table' => 'categories',
|
||||
'userdata_table' => 'userdata',
|
||||
'smilies_table' => 'smilies',
|
||||
'pages_table' => 'pages',
|
||||
'banlists_table' => 'banlists',
|
||||
'useronline_table' => 'useronline',
|
||||
'login_control_table' => 'logincontrol',
|
||||
'entry_cache_table' => 'entries_cache',
|
||||
'userdata_cache_table' => 'userdata_cache',
|
||||
'bookmark_table' => 'bookmarks',
|
||||
'read_status_table' => 'read_entries',
|
||||
'temp_infos_table' => 'temp_infos',
|
||||
'tags_table' => 'tags',
|
||||
'bookmark_tags_table' => 'bookmark_tags',
|
||||
'entry_tags_table' => 'entry_tags'
|
||||
);
|
||||
|
||||
'settings_table' => 'settings',
|
||||
'forum_table' => 'entries',
|
||||
'category_table' => 'categories',
|
||||
'userdata_table' => 'userdata',
|
||||
'smilies_table' => 'smilies',
|
||||
'pages_table' => 'pages',
|
||||
'banlists_table' => 'banlists',
|
||||
'useronline_table' => 'useronline',
|
||||
'login_control_table' => 'logincontrol',
|
||||
'entry_cache_table' => 'entries_cache',
|
||||
'userdata_cache_table' => 'userdata_cache',
|
||||
'bookmark_table' => 'bookmarks',
|
||||
'read_status_table' => 'read_entries',
|
||||
'temp_infos_table' => 'temp_infos',
|
||||
'tags_table' => 'tags',
|
||||
'bookmark_tags_table' => 'bookmark_tags',
|
||||
'entry_tags_table' => 'entry_tags',
|
||||
'subscriptions_table' => 'subscriptions',
|
||||
'b8_wordlist_table' => 'b8_wordlist',
|
||||
'b8_rating_table' => 'b8_rating',
|
||||
'akismet_rating_table' => 'akismet_rating',
|
||||
'uploads_table' => 'uploads'
|
||||
);
|
||||
clearstatcache();
|
||||
$chmod = decoct(fileperms("../config/db_settings.php"));
|
||||
|
||||
foreach ($db_connection_keys as $key) {
|
||||
// Check POST-data and reject data that contains html or php code like <?php
|
||||
if (!isset($_POST[$key]) || $_POST[$key] != strip_tags($_POST[$key])) {
|
||||
$errors[] = $lang['error_form_uncomplete'];
|
||||
$errors[] = $lang['general']['error_form_uncomplete'];
|
||||
break;
|
||||
}
|
||||
$db_settings[$key] = $_POST[$key];
|
||||
}
|
||||
|
||||
// check table_prefix
|
||||
if (!isset($_POST['table_prefix']) || $_POST['table_prefix'] != strip_tags($_POST['table_prefix'])) {
|
||||
$errors[] = $lang['error_form_uncomplete'];
|
||||
$errors[] = $lang['general']['error_form_uncomplete'];
|
||||
}
|
||||
|
||||
if (empty($errors)) {
|
||||
$db_settings_file = @fopen("../config/db_settings.php", "w") or $errors[] = str_replace("[CHMOD]",$chmod,$lang['error_overwrite_config_file']);
|
||||
$db_settings_file = @fopen("../config/db_settings.php", "w") or $errors[] = str_replace("[CHMOD]", $chmod, $lang['install']['error_overwrite_config_file']);
|
||||
flock($db_settings_file, 2);
|
||||
fwrite($db_settings_file, "<?php\n");
|
||||
foreach ($db_connection_keys as $key) {
|
||||
|
@ -244,214 +262,407 @@ if(isset($_POST['install_submit']))
|
|||
}
|
||||
}
|
||||
|
||||
if(empty($errors) && isset($_POST['create_database']))
|
||||
{
|
||||
// create database if desired:
|
||||
@mysqli_query($connid, "CREATE DATABASE ".$db_settings['database']) or $errors[] = $lang['create_db_error']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
if (empty($errors) && isset($_POST['create_database'])) {
|
||||
// create database if desired:
|
||||
@mysqli_query($connid, "CREATE DATABASE ".$db_settings['database']) or $errors[] = $lang['install']['create_db_error']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
|
||||
// select database:
|
||||
if(empty($errors))
|
||||
{
|
||||
@mysqli_select_db($connid, $db_settings['database']) or $errors[] = $lang['error_db_inexistent']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, 'SET NAMES utf8');
|
||||
}
|
||||
// select database:
|
||||
if (empty($errors)) {
|
||||
@mysqli_select_db($connid, $db_settings['database']) or $errors[] = $lang['install']['error_db_inexistent']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, 'SET NAMES utf8');
|
||||
}
|
||||
|
||||
// run installation sql file:
|
||||
if(empty($errors)) {
|
||||
if (!isset($_POST['table_prefix']) || $_POST['table_prefix'] != strip_tags($_POST['table_prefix'])) {
|
||||
$errors[] = $lang['error_form_uncomplete'];
|
||||
}
|
||||
else {
|
||||
$errors[] = $lang['general']['error_form_uncomplete'];
|
||||
} else {
|
||||
$lines = file('install.sql');
|
||||
$cleared_lines = array();
|
||||
foreach($lines as $line) {
|
||||
foreach ($lines as $line) {
|
||||
$line = str_replace(' mlf2_', ' '.$_POST['table_prefix'], $line);
|
||||
$line = str_replace('`smbl_mlf2_', '`smbl_'.$_POST['table_prefix'], $line);
|
||||
$line = trim($line);
|
||||
if(my_substr($line, -1, my_strlen($line,$lang['charset']), $lang['charset'])==';')
|
||||
$line = my_substr($line,0,-1,$lang['charset']);
|
||||
if($line != '' && my_substr($line,0,1,$lang['charset'])!='#')
|
||||
if (my_substr($line, -1, my_strlen($line, $lang['default']['charset']), $lang['default']['charset']) == ';')
|
||||
$line = my_substr($line,0,-1,$lang['default']['charset']);
|
||||
if ($line != '' && my_substr($line,0,1,$lang['default']['charset']) != '#')
|
||||
$cleared_lines[] = $line;
|
||||
}
|
||||
|
||||
@mysqli_query($connid, "START TRANSACTION") or die(mysqli_error($connid));
|
||||
foreach($cleared_lines as $line) {
|
||||
if(!@mysqli_query($connid, $line)) {
|
||||
$errors[] = $lang['error_sql']." (MySQL: ".mysqli_error($connid).")";
|
||||
foreach ($cleared_lines as $line) {
|
||||
if (!@mysqli_query($connid, $line)) {
|
||||
$errors[] = $lang['install']['error_sql']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
}
|
||||
if(!@mysqli_query($connid, "INSERT INTO ".$db_settings['settings_table']." VALUES ('version', '". mysqli_real_escape_string($connid, $newVersion) ."');")) {
|
||||
$errors[] = $lang['error_sql']." (MySQL: ".mysqli_error($connid).")";
|
||||
if (!@mysqli_query($connid, "INSERT INTO " . $db_settings['temp_infos_table'] . " (`name`, `value`) VALUES ('version', '". mysqli_real_escape_string($connid, $newVersion) ."');")) {
|
||||
$errors[] = $lang['install']['error_sql']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
@mysqli_query($connid, "COMMIT");
|
||||
}
|
||||
}
|
||||
|
||||
// insert admin in userdata table:
|
||||
if(empty($errors)) {
|
||||
if (empty($errors)) {
|
||||
$pw_hash = generate_pw_hash($_POST['admin_pw']);
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET user_name='".mysqli_real_escape_string($connid, $_POST['admin_name'])."', user_pw = '".mysqli_real_escape_string($connid, $pw_hash)."', user_email = '".mysqli_real_escape_string($connid, $_POST['admin_email'])."' WHERE user_id=1") or $errors[] = $lang['error_create_admin']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET user_name='".mysqli_real_escape_string($connid, $_POST['admin_name'])."', user_pw = '".mysqli_real_escape_string($connid, $pw_hash)."', user_email = '".mysqli_real_escape_string($connid, $_POST['admin_email'])."' WHERE user_id=1") or $errors[] = $lang['install']['error_create_admin']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
|
||||
// set forum name, address and email address:
|
||||
if(empty($errors))
|
||||
{
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_name'])."' WHERE name='forum_name' LIMIT 1") or $errors[] = $lang['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_address'])."' WHERE name='forum_address' LIMIT 1") or $errors[] = $lang['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_email'])."' WHERE name='forum_email' LIMIT 1") or $errors[] = $lang['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['language_file'])."' WHERE name='language_file' LIMIT 1") or $errors[] = $lang['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
// set forum name, address and email address:
|
||||
if (empty($errors)) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_name'])."' WHERE name='forum_name' LIMIT 1") or $errors[] = $lang['install']['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_address'])."' WHERE name='forum_address' LIMIT 1") or $errors[] = $lang['install']['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_email'])."' WHERE name='forum_email' LIMIT 1") or $errors[] = $lang['install']['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['language_file'])."' WHERE name='language_file' LIMIT 1") or $errors[] = $lang['install']['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
if (empty($errors)) {
|
||||
header('Location: ../');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
if(empty($errors))
|
||||
{
|
||||
header('Location: ../');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
if (empty($action)) $action = 'install';
|
||||
|
||||
if(empty($action)) $action = 'install';
|
||||
header('Content-Type: text/html; charset='.$lang['default']['charset']);
|
||||
|
||||
header('Content-Type: text/html; charset='.$lang['charset']);
|
||||
|
||||
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $lang['language']; ?>">
|
||||
?><!DOCTYPE html>
|
||||
<html lang="<?php echo $lang['default']['language']; ?>" dir="<?php echo $lang['default']['dir']; ?>">
|
||||
<head>
|
||||
<title>my little forum - <?php echo $lang['installation_title']; ?></title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=<?php echo $lang['charset']; ?>" />
|
||||
<link rel="shortcut icon" href="../themes/default/images/favicon.ico" />
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body { color:#000; background:#fff; margin:0; padding:0; font-family: verdana, arial, sans-serif; font-size:100.1%; }
|
||||
h1 { font-size:1.25em; }
|
||||
p,ul { font-size:0.82em; line-height:1.45em; }
|
||||
#top { margin:0; padding:0 20px 0 20px; color:#000000; background:#d2ddea; border-bottom: 1px solid #bacbdf; }
|
||||
#top h1 { font-size:2.2em; line-height:2em; margin:0; padding:0; color:#000080; }
|
||||
#content { padding:20px; }
|
||||
table.admintab { border: 1px solid #bacbdf; }
|
||||
td.admintab-hl { width: 100%; vertical-align: top; font-family: verdana, arial, sans-serif; font-size: 13px; background:#e1eaf3; }
|
||||
td.admintab-hl h2 { margin: 3px 0px 3px 0px; font-size: 15px; font-weight: bold; }
|
||||
td.admintab-hl p { font-size: 11px; line-height: 16px; margin: 0px 0px 3px 0px; padding: 0px; }
|
||||
td.admintab-l { width: 50%; vertical-align: top; font-family: verdana, arial, sans-serif; font-size: 13px; background: #f5f5f5; }
|
||||
td.admintab-r { width: 50%; vertical-align: top; font-family: verdana, arial, sans-serif; font-size: 13px; background: #f5f5f5; }
|
||||
.caution { color: red; font-weight: bold; }
|
||||
.small { font-size: 11px; line-height:16px; }
|
||||
a:link { color: #0000cc; text-decoration: none; }
|
||||
a:visited { color: #0000cc; text-decoration: none; }
|
||||
a:hover { color: #0000ff; text-decoration: underline; }
|
||||
a:active { color: #ff0000; text-decoration: none; }
|
||||
|
||||
-->
|
||||
</style>
|
||||
<meta charset="<?php echo $lang['default']['charset']; ?>">
|
||||
<title>my little forum - <?php echo $lang['install']['installation_title']; ?></title>
|
||||
<link rel="shortcut icon" href="../themes/default/images/favicon.ico">
|
||||
<style type="text/css">
|
||||
*, ::before, ::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
body {
|
||||
color: #000;
|
||||
background: #fff;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: verdana, arial, sans-serif;
|
||||
font-size: 1em;
|
||||
font-size: 1rem;
|
||||
}
|
||||
p, ul, button {
|
||||
font-size: 1em;
|
||||
line-height: 145%;
|
||||
}
|
||||
header, main {
|
||||
margin: 0;
|
||||
}
|
||||
header {
|
||||
background: #d2ddea;
|
||||
background: linear-gradient(to bottom, #d2deec 0%, #edf2f5 100%);
|
||||
border-bottom: 1px solid #bacbdf;
|
||||
}
|
||||
header h1 {
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
min-width: 28em;
|
||||
width: 60vw;
|
||||
}
|
||||
section, main > h2 {
|
||||
margin: 1rem auto;
|
||||
padding: 1rem;
|
||||
min-width: 28em;
|
||||
width: 60vw;
|
||||
}
|
||||
header > h1, main > h2 {
|
||||
padding: 0.5rem 1rem;
|
||||
}
|
||||
section {
|
||||
padding: 1rem;
|
||||
border: 1px solid #bacbdf;
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
line-height: 140%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.5em;
|
||||
color: #000080;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.15em;
|
||||
}
|
||||
section h2 {
|
||||
border-bottom: 1px solid #bacbdf;
|
||||
padding: 0 0 0.5rem 0;
|
||||
}
|
||||
section > ul {
|
||||
margin: 1rem 0 0 0;
|
||||
padding: 0 0 0 1.5rem;
|
||||
}
|
||||
.error {
|
||||
background-color: #ffb;
|
||||
border-color: #c00;
|
||||
}
|
||||
.error h2 {
|
||||
color: #c00;
|
||||
border-color: #c00;
|
||||
}
|
||||
h2 + form {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
form h3, input[type="text"], input[type="password"], input[type="url"], input[type="email"], option {
|
||||
font-size: 1em;
|
||||
}
|
||||
fieldset {
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
fieldset:not(:last-of-type) {
|
||||
margin-bottom: 2.5rem;
|
||||
}
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 0 0 0.5rem 0;
|
||||
font-weight: bold;
|
||||
font-size: 1.15em;
|
||||
line-height: 140%;
|
||||
border-bottom: 1px solid #bacbdf;
|
||||
}
|
||||
legend + p {
|
||||
margin: 0.5rem 0 0.75rem 0;
|
||||
}
|
||||
fieldset div:not(:last-of-type) {
|
||||
margin: 0 0 0.75rem 0;
|
||||
}
|
||||
label {
|
||||
cursor: pointer;
|
||||
}
|
||||
.button-bar {
|
||||
margin: 1rem 0 0 0;
|
||||
}
|
||||
#forum-install label:not(.for-selectors), .label-like {
|
||||
display: block;
|
||||
margin: 0 0 0.5rem 0;
|
||||
}
|
||||
#forum-install label h3, #forum-install label p, .label-like h3, .label-like p {
|
||||
margin: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
#forum-install input:not([type="checkbox"]) {
|
||||
display: block;
|
||||
}
|
||||
#forum-install input[type="checkbox"] {
|
||||
margin: 0 0.5rem 0 0;
|
||||
}
|
||||
#lang-select ul {
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
border: 1px solid #bacbdf;
|
||||
}
|
||||
#lang-select li:not(:last-child) {
|
||||
border-bottom: 1px solid #bacbdf;
|
||||
}
|
||||
#lang-select input[type="radio"] {
|
||||
display: none;
|
||||
}
|
||||
#lang-select label {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
padding: 0.35rem;
|
||||
background: #fff;
|
||||
color: #744;
|
||||
cursor: pointer;
|
||||
}
|
||||
#lang-select input[type="radio"]:checked ~ label {
|
||||
background: #aaffc8;
|
||||
color: #000;
|
||||
}
|
||||
#lang-select input[type="radio"]:checked ~ label::after {
|
||||
font-size: 0.8em;
|
||||
content: ' ✔';
|
||||
}
|
||||
a {
|
||||
color: #0000cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:focus, a:hover {
|
||||
color: #0000ff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:active {
|
||||
color: #ff0000;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<h1>my little forum - Installation</h1>
|
||||
</header>
|
||||
<main>
|
||||
<?php
|
||||
switch($action):
|
||||
case 'install': ?>
|
||||
<h2><?php echo $lang['install']['installation_title']; ?></h2>
|
||||
<section>
|
||||
<ul>
|
||||
<?php foreach ($lang['install']['installation_instructions'] as $instruction): ?>
|
||||
<li><?php echo $instruction; ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</section>
|
||||
<?php if (isset($errors)): ?>
|
||||
<section class="error">
|
||||
<h2><?php echo $lang['general']['error_headline']; ?></h2>
|
||||
<ul>
|
||||
<?php foreach($errors as $error): ?>
|
||||
<li><?php echo $error; ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</section>
|
||||
<?php endif; ?>
|
||||
<section>
|
||||
<form action="index.php" method="post" id="forum-install">
|
||||
<input type="hidden" name="language_file" value="<?php echo $language_file; ?>">
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['install']['inst_basic_settings']; ?></legend>
|
||||
<p><?php echo $lang['install']['inst_main_settings_desc']; ?></p>
|
||||
<div>
|
||||
<label for="id-forum-name">
|
||||
<h3><?php echo $lang['admin']['forum_name']; ?></h3>
|
||||
<p><?php echo $lang['admin']['forum_name_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-forum-name" name="forum_name" value="<?php if (isset($_POST['forum_name'])) echo $_POST['forum_name']; else echo $default_settings['forum_name']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-forum-address">
|
||||
<h3><?php echo $lang['admin']['forum_address']; ?></h3>
|
||||
<p><?php echo $lang['admin']['forum_address_desc']; ?></p>
|
||||
</label>
|
||||
<input type="url" id="id-forum-address" name="forum_address" value="<?php if (isset($_POST['forum_address'])) echo $_POST['forum_address']; else { if ($default_settings['forum_address'] != "") echo $default_settings['forum_address']; } ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-forum-email">
|
||||
<h3><?php echo $lang['admin']['forum_email']; ?></h3>
|
||||
<p><?php echo $lang['admin']['forum_email_desc']; ?></p>
|
||||
</label>
|
||||
<input type="email" id="id-forum-email" name="forum_email" value="<?php if (isset($_POST['forum_email'])) echo $_POST['forum_email']; else echo "@"; ?>" size="40">
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['install']['inst_admin_settings']; ?></legend>
|
||||
<p><?php echo $lang['install']['inst_admin_settings_desc']; ?></p>
|
||||
<div>
|
||||
<label for="id-admin-name">
|
||||
<h3><?php echo $lang['install']['inst_admin_name']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_admin_name_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-admin-name" name="admin_name" value="<?php if (isset($_POST['admin_name'])) echo $_POST['admin_name']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-admin-email">
|
||||
<h3><?php echo $lang['install']['inst_admin_email']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_admin_email_desc']; ?></p>
|
||||
</label>
|
||||
<input type="email" id="id-admin-email" name="admin_email" value="<?php if (isset($_POST['admin_email'])) echo $_POST['admin_email']; else echo "@"; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-admin-pw">
|
||||
<h3><?php echo $lang['install']['inst_admin_pw']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_admin_pw_desc']; ?></p>
|
||||
</label>
|
||||
<input type="password" id="id-admin-pw" name="admin_pw" value="" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-admin-pw-conf">
|
||||
<h3><?php echo $lang['install']['inst_admin_pw_conf']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_admin_pw_conf_desc']; ?></p>
|
||||
</label>
|
||||
<input type="password" id="id-admin-pw-conf" name="admin_pw_conf" value="" size="40">
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['install']['inst_db_settings']; ?></legend>
|
||||
<p><?php echo $lang['install']['inst_db_settings_desc']; ?></p>
|
||||
<div>
|
||||
<label for="id-db-host">
|
||||
<h3><?php echo $lang['install']['inst_db_host']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_db_host_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-db-host" name="host" value="<?php if (isset($_POST['host'])) echo $_POST['host']; else echo $db_settings['host']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-db-name">
|
||||
<h3><?php echo $lang['install']['inst_db_name']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_db_name_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-db-name" name="database" value="<?php if (isset($_POST['database'])) echo $_POST['database']; else echo $db_settings['database']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-db-user">
|
||||
<h3><?php echo $lang['install']['inst_db_user']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_db_user_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-db-user" name="user" value="<?php if (isset($_POST['user'])) echo $_POST['user']; else echo $db_settings['user']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-db-password">
|
||||
<h3><?php echo $lang['install']['inst_db_pw']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_db_pw_desc']; ?></p>
|
||||
</label>
|
||||
<input type="password" id="id-db-password" name="password" value="" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-table-prefix">
|
||||
<h3><?php echo $lang['install']['inst_table_prefix']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_table_prefix_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-table-prefix" name="table_prefix" value="<?php if (isset($_POST['table_prefix'])) echo $_POST['table_prefix']; else echo $default_settings['table_prefix']; ?>" size="40">
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['install']['inst_advanced_options']; ?></legend>
|
||||
<p><?php echo $lang['install']['inst_advanced_options_desc']; ?></p>
|
||||
<div>
|
||||
<div class="label-like">
|
||||
<h3><?php echo $lang['install']['inst_advanced_database']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_advanced_database_desc']; ?></p>
|
||||
</div>
|
||||
<input id="create_database" type="checkbox" name="create_database" value="true"<?php if (isset($_POST['create_database'])) echo ' checked'; ?>><label for="create_database" class="for-selectors"><?php echo $lang['install']['create_database']; ?></label>
|
||||
</div>
|
||||
<div>
|
||||
<div class="label-like">
|
||||
<h3><?php echo $lang['install']['inst_advanced_conf_file']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_advanced_conf_file_desc']; ?></p>
|
||||
</div>
|
||||
<input id="dont_overwrite_settings" type="checkbox" name="dont_overwrite_settings" value="true"<?php if (isset($_POST['dont_overwrite_settings'])) echo ' checked'; ?>><label for="dont_overwrite_settings" class="for-selectors"><?php echo $lang['install']['dont_overwrite_settings']; ?></label>
|
||||
</div>
|
||||
</fieldset>
|
||||
<p class="button-bar"><button name="install_submit" value="<?php echo $lang['install']['forum_install_ok']; ?>"><?php echo $lang['install']['forum_install_ok']; ?></button></p>
|
||||
</form>
|
||||
</section>
|
||||
<?php
|
||||
break;
|
||||
case 'choose_language':
|
||||
?>
|
||||
<section>
|
||||
<h2><?php echo $lang['install']['label_choose_language']; ?></h2>
|
||||
<form action="index.php" method="post" id="lang-select">
|
||||
<ul>
|
||||
<?php foreach ($language_files as $file):
|
||||
if ($file['file'] == $language_file): ?>
|
||||
<li><input id="id_<?php echo $file['language']; ?>" name="language_file" value="<?php echo $file['file']; ?>" type="radio" checked><label for="id_<?php echo $file['language']; ?>"><?php echo $file['language']; ?></label></li>
|
||||
<?php else: ?>
|
||||
<li><input id="id_<?php echo $file['language']; ?>" name="language_file" value="<?php echo $file['file']; ?>" type="radio"><label for="id_<?php echo $file['language']; ?>"><?php echo $file['language']; ?></label></li>
|
||||
|
||||
<div id="top">
|
||||
<h1>my little forum</h1>
|
||||
</div>
|
||||
<div id="content"><h1><?php echo $lang['installation_title']; ?></h1><?php
|
||||
switch($action)
|
||||
{
|
||||
case 'install':
|
||||
?><ul><?php
|
||||
foreach($lang['installation_instructions'] as $instruction)
|
||||
{
|
||||
?><li><?php echo $instruction; ?></li><?php
|
||||
}
|
||||
?></ul><?php
|
||||
if(isset($errors))
|
||||
{
|
||||
?><p class="caution" style="margin-top: 10px;"><?php echo $lang['error_headline']; ?><ul><?php foreach($errors as $error) { ?><li><?php echo $error; ?></li><?php } ?></ul></p><p> </p><?php
|
||||
}
|
||||
?><form action="index.php" method="post">
|
||||
<table class="admintab" border="0" cellpadding="5" cellspacing="1">
|
||||
<tr>
|
||||
<td class="admintab-hl" colspan="2"><h2><?php echo $lang['inst_basic_settings']; ?></h2><p><?php echo $lang['inst_main_settings_desc']; ?></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['forum_name']; ?></b><br /><span class="small"><?php echo $lang['forum_name_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="forum_name" value="<?php if (isset($_POST['forum_name'])) echo $_POST['forum_name']; else echo $default_settings['forum_name']; ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['forum_address']; ?></b><br /><span class="small"><?php echo $lang['forum_address_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="forum_address" value="<?php if (isset($_POST['forum_address'])) echo $_POST['forum_address']; else { if ($default_settings['forum_address'] != "") echo $default_settings['forum_address']; } ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['forum_email']; ?></b><br /><span class="small"><?php echo $lang['forum_email_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="forum_email" value="<?php if (isset($_POST['forum_email'])) echo $_POST['forum_email']; else echo "@"; ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-hl" colspan="2"><h2><?php echo $lang['inst_admin_settings']; ?></h2><p><?php echo $lang['inst_admin_settings_desc']; ?></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_admin_name']; ?></b><br /><span class="small"><?php echo $lang['inst_admin_name_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="admin_name" value="<?php if (isset($_POST['admin_name'])) echo $_POST['admin_name']; ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_admin_email']; ?></b><br /><span class="small"><?php echo $lang['inst_admin_email_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="admin_email" value="<?php if (isset($_POST['admin_email'])) echo $_POST['admin_email']; else echo "@"; ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_admin_pw']; ?></b><br /><span class="small"><?php echo $lang['inst_admin_pw_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="password" name="admin_pw" value="" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_admin_pw_conf']; ?></b><br /><span class="small"><?php echo $lang['inst_admin_pw_conf_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="password" name="admin_pw_conf" value="" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-hl" colspan="2"><h2><?php echo $lang['inst_db_settings']; ?></h2><p><?php echo $lang['inst_db_settings_desc']; ?></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_db_host']; ?></b><br /><span class="small"><?php echo $lang['inst_db_host_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="host" value="<?php if (isset($_POST['host'])) echo $_POST['host']; else echo $db_settings['host']; ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_db_name']; ?></b><br /><span class="small"><?php echo $lang['inst_db_name_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="database" value="<?php if (isset($_POST['database'])) echo $_POST['database']; else echo $db_settings['database']; ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_db_user']; ?></b><br /><span class="small"><?php echo $lang['inst_db_user_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="user" value="<?php if (isset($_POST['user'])) echo $_POST['user']; else echo $db_settings['user']; ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_db_pw']; ?></b><br /><span class="small"><?php echo $lang['inst_db_pw_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="password" name="password" value="<?php /*if(isset($_POST['password'])) echo $_POST['password'];*/ ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_table_prefix']; ?></b><br /><span class="small"><?php echo $lang['inst_table_prefix_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input type="text" name="table_prefix" value="<?php if (isset($_POST['table_prefix'])) echo $_POST['table_prefix']; else echo $default_settings['table_prefix']; ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-hl" colspan="2"><h2><?php echo $lang['inst_advanced_options']; ?></h2><p><?php echo $lang['inst_advanced_options_desc']; ?></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_advanced_database']; ?></b><br /><span class="small"><?php echo $lang['inst_advanced_database_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input id="create_database" type="checkbox" name="create_database" value="true"<?php if (isset($_POST['create_database'])) echo ' checked="checked"'; ?> /> <label for="create_database"><?php echo $lang['create_database']; ?></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-l"><b><?php echo $lang['inst_advanced_conf_file']; ?></b><br /><span class="small"><?php echo $lang['inst_advanced_conf_file_desc']; ?></span></td>
|
||||
<td class="admintab-r"><input id="dont_overwrite_settings" type="checkbox" name="dont_overwrite_settings" value="true"<?php if (isset($_POST['dont_overwrite_settings'])) echo ' checked="checked"'; ?> /> <label for="dont_overwrite_settings"><?php echo $lang['dont_overwrite_settings']; ?></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="admintab-hl" colspan="2"><input type="submit" name="install_submit" value="<?php echo $lang['forum_install_ok']; ?>" /><input type="hidden" name="language_file" value="<?php echo $language_file; ?>" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form><?php
|
||||
break;
|
||||
case 'choose_language':
|
||||
?><p><label for="language_file"><?php echo $lang['label_choose_language']; ?></label></p>
|
||||
<form action="index.php" method="post">
|
||||
<p><select id="language_file" name="language_file" size="1"><?php
|
||||
foreach($language_files as $file)
|
||||
{
|
||||
?><option value="<?php echo $file['file']; ?>"<?php if($language_file==$file['file']) echo " selected=\"selected\""; ?>><?php echo $file['language']; ?></option><?php
|
||||
}
|
||||
?></select>
|
||||
<input type="submit" value="<?php echo $lang['submit_button_ok']; ?>" /></p>
|
||||
</form><?php
|
||||
break;
|
||||
}
|
||||
?></div>
|
||||
<?php endif;
|
||||
endforeach; ?>
|
||||
</ul>
|
||||
<p class="button-bar"><button name="submit"><?php echo $lang['general']['submit_button_ok']; ?></button></p>
|
||||
</form>
|
||||
</section>
|
||||
<?php
|
||||
break;
|
||||
endswitch
|
||||
?>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,22 +1,27 @@
|
|||
# note: the installation script expects one query per line!
|
||||
|
||||
CREATE TABLE mlf2_banlists (name varchar(255) NOT NULL default '', list text NOT NULL) CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_categories (id int(11) NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', category varchar(255) NOT NULL default '', description varchar(255) NOT NULL default '',accession tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_entries (id int(11) NOT NULL AUTO_INCREMENT, pid int(11) NOT NULL default '0', tid int(11) NOT NULL default '0', uniqid varchar(255) NOT NULL default '', time timestamp NOT NULL default CURRENT_TIMESTAMP, last_reply timestamp NULL DEFAULT NULL, edited timestamp NULL DEFAULT NULL, edited_by int(11) default NULL, user_id int(11) default '0', name varchar(255) NOT NULL default '', subject varchar(255) NOT NULL default '',category int(11) NOT NULL default '0', email varchar(255) NOT NULL default '', hp varchar(255) NOT NULL default '', location varchar(255) NOT NULL default '', ip varchar(128) NOT NULL default '', text text NOT NULL, show_signature tinyint(4) default '0', email_notification tinyint(4) default '0', marked tinyint(4) default '0', locked tinyint(4) default '0', sticky tinyint(4) default '0', views int(11) default '0', spam tinyint(4) default '0', spam_check_status tinyint(4) default '0', edit_key varchar(255) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY id (id), KEY tid (tid),KEY category (category), KEY pid (pid), KEY sticky (sticky), KEY user_id (user_id), KEY spam (spam), KEY time (time), KEY last_reply (last_reply)) CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_settings (name varchar(255) NOT NULL, value varchar(255) NOT NULL default '', PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_smilies (id int(11) NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', file varchar(100) NOT NULL default '', code_1 varchar(50) NOT NULL default '', code_2 varchar(50) NOT NULL default '', code_3 varchar(50) NOT NULL default '', code_4 varchar(50) NOT NULL default '', code_5 varchar(50) NOT NULL default '', title varchar(255) NOT NULL default '', PRIMARY KEY (id)) CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_userdata (user_id int(11) NOT NULL AUTO_INCREMENT, user_type tinyint(4) NOT NULL default '0', user_name varchar(255) NOT NULL default '' COLLATE utf8_bin, user_real_name varchar(255) NOT NULL default '', gender tinyint(4) NOT NULL default '0', birthday date NULL default NULL, user_pw varchar(255) NOT NULL default '', user_email varchar(255) NOT NULL default '', email_contact tinyint(4) default '0', user_hp varchar(255) NOT NULL default '', user_location varchar(255) NOT NULL default '', signature varchar(255) NOT NULL default '', profile text NOT NULL, logins int(11) NOT NULL default '0', last_login timestamp NULL default CURRENT_TIMESTAMP, last_logout timestamp NULL DEFAULT NULL, user_ip varchar(128) NOT NULL default '', registered timestamp NULL DEFAULT NULL, category_selection varchar(255) DEFAULT NULL, thread_order tinyint(4) NOT NULL default '0', user_view tinyint(4) NOT NULL default '0', sidebar tinyint(4) NOT NULL default '1', fold_threads tinyint(4) NOT NULL default '0', thread_display tinyint(4) NOT NULL default '0', new_posting_notification tinyint(4) default '0', new_user_notification tinyint(4) default '0', user_lock tinyint(4) default '0', auto_login_code varchar(50) NOT NULL default '', pwf_code varchar(50) NOT NULL, activate_code varchar(50) NOT NULL default '', language VARCHAR(255) NOT NULL DEFAULT '', time_zone VARCHAR(255) NOT NULL DEFAULT '', time_difference smallint(4) default '0', theme VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY (user_id), KEY user_type (user_type), KEY user_name (user_name)) CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_pages (id int(11) NOT NULL AUTO_INCREMENT,order_id int(11) NOT NULL, title varchar(255) NOT NULL default '', content text NOT NULL, menu_linkname varchar(255) NOT NULL default '', access tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_useronline (ip char(15) NOT NULL default '',time int(14) NOT NULL default '0',user_id int(11) default '0') CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_logincontrol (time timestamp NOT NULL default CURRENT_TIMESTAMP, ip varchar(255) NOT NULL default '', logins int(11) NOT NULL default '0') CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_entries_cache (cache_id int(11) NOT NULL, cache_text mediumtext NOT NULL, PRIMARY KEY (cache_id)) CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_userdata_cache (cache_id int(11) NOT NULL, cache_signature text NOT NULL, cache_profile text NOT NULL, PRIMARY KEY (cache_id)) CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_bookmarks (id int(11) NOT NULL AUTO_INCREMENT, user_id int(11) NOT NULL, posting_id int(11) NOT NULL, time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, subject varchar(255) NOT NULL, order_id int(11) NOT NULL DEFAULT '0', PRIMARY KEY (id), UNIQUE KEY UNIQUE_uid_pid (user_id,posting_id)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_read_entries (user_id int(11) UNSIGNED NOT NULL, posting_id int(11) UNSIGNED NOT NULL, time timestamp NOT NULL, PRIMARY KEY (user_id, posting_id), KEY `user_id` (`user_id`), KEY `posting_id` (`posting_id`)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_temp_infos (name varchar(50) NOT NULL, value varchar(255) NOT NULL, time timestamp NULL DEFAULT NULL, PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_entry_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_bookmark_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_tags (`id` int(11) NOT NULL AUTO_INCREMENT, `tag` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tag` (`tag`)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_banlists (name varchar(255) NOT NULL, list text NOT NULL, PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_categories (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', category varchar(255) NOT NULL default '', description varchar(255) NOT NULL default '', accession tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_entries (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, pid int(11) UNSIGNED NOT NULL default '0', tid int(11) UNSIGNED NOT NULL default '0', uniqid varchar(255) NOT NULL default '', time timestamp NOT NULL default CURRENT_TIMESTAMP, last_reply timestamp NULL DEFAULT NULL, edited timestamp NULL DEFAULT NULL, edited_by int(11) UNSIGNED default NULL, user_id int(11) UNSIGNED default '0', name varchar(255) NOT NULL default '', subject varchar(255) NOT NULL default '',category int(11) UNSIGNED NOT NULL default '0', email varchar(255) NOT NULL default '', hp varchar(255) NOT NULL default '', location varchar(255) NOT NULL default '', ip varchar(128) NOT NULL default '', text text NOT NULL, show_signature tinyint(4) default '0', marked tinyint(4) default '0', locked tinyint(4) default '0', sticky tinyint(4) default '0', views int(11) UNSIGNED default '0', edit_key varchar(255) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY id (id), KEY tid (tid),KEY category (category), KEY pid (pid), KEY sticky (sticky), KEY user_id (user_id), KEY time (time), KEY last_reply (last_reply)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_settings (name varchar(255) NOT NULL, value varchar(255) NOT NULL default '', PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_smilies (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', file varchar(100) NOT NULL default '', code_1 varchar(50) NOT NULL default '', code_2 varchar(50) NOT NULL default '', code_3 varchar(50) NOT NULL default '', code_4 varchar(50) NOT NULL default '', code_5 varchar(50) NOT NULL default '', title varchar(255) NOT NULL default '', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_userdata (user_id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, user_type tinyint(4) NOT NULL default '0', user_name varchar(128) NOT NULL COLLATE utf8mb4_bin, user_real_name varchar(255) NOT NULL default '', gender tinyint(4) NOT NULL default '0', birthday date NULL default NULL, user_pw varchar(255) NOT NULL default '', user_email varchar(255) NOT NULL, email_contact tinyint(4) default '0', user_hp varchar(255) NOT NULL default '', user_location varchar(255) NOT NULL default '', signature varchar(255) NOT NULL default '', profile text NOT NULL, logins int(11) NOT NULL default '0', last_login timestamp NULL default CURRENT_TIMESTAMP, last_logout timestamp NULL DEFAULT NULL, user_ip varchar(128) NOT NULL default '', registered timestamp NULL DEFAULT NULL, category_selection varchar(255) DEFAULT NULL, thread_order tinyint(4) NOT NULL default '0', user_view tinyint(4) NOT NULL default '0', sidebar tinyint(4) NOT NULL default '1', fold_threads tinyint(4) NOT NULL default '0', thread_display tinyint(4) NOT NULL default '0', new_posting_notification tinyint(4) default '0', new_user_notification tinyint(4) default '0', user_lock tinyint(4) default '0', browser_window_target tinyint(4) NOT NULL default '0', auto_login_code varchar(50) NOT NULL default '', pwf_code varchar(50) NOT NULL, activate_code varchar(50) NOT NULL default '', language VARCHAR(255) NOT NULL DEFAULT '', time_zone VARCHAR(255) NOT NULL DEFAULT '', time_difference smallint(4) default '0', theme VARCHAR(255) NOT NULL DEFAULT '', tou_accepted DATETIME NULL DEFAULT NULL, dps_accepted DATETIME NULL DEFAULT NULL, inactivity_notification BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (user_id), KEY key_user_type (user_type), UNIQUE KEY key_user_name (user_name), UNIQUE KEY key_user_email (user_email)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_pages (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL, title varchar(255) NOT NULL default '', content text NOT NULL, menu_linkname varchar(255) NOT NULL default '', access tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_useronline (ip varchar(128) NOT NULL default '', time int(14) NOT NULL default '0', user_id int(11) UNSIGNED default '0') ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_logincontrol (time timestamp NOT NULL default CURRENT_TIMESTAMP, ip varchar(128) NOT NULL default '', logins int(11) NOT NULL default '0') ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_entries_cache (cache_id int(11) NOT NULL, cache_text mediumtext NOT NULL, PRIMARY KEY (cache_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_userdata_cache (cache_id int(11) NOT NULL, cache_signature text NOT NULL, cache_profile text NOT NULL, PRIMARY KEY (cache_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_bookmarks (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, user_id int(11) UNSIGNED NOT NULL, posting_id int(11) UNSIGNED NOT NULL, time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, subject varchar(255) NOT NULL, order_id int(11) NOT NULL DEFAULT '0', PRIMARY KEY (id), UNIQUE KEY UNIQUE_uid_pid (user_id,posting_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_read_entries (user_id int(11) UNSIGNED NOT NULL, posting_id int(11) UNSIGNED NOT NULL, time timestamp NOT NULL, PRIMARY KEY (user_id, posting_id), KEY `user_id` (`user_id`), KEY `posting_id` (`posting_id`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_temp_infos (name varchar(50) NOT NULL, value varchar(255) NOT NULL, time timestamp NULL DEFAULT NULL, PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_entry_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_bookmark_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_tags (`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `tag` varchar(128) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tag` (`tag`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_subscriptions (`user_id` int(12) UNSIGNED NULL, `eid` int(12) UNSIGNED NOT NULL, `unsubscribe_code` varchar(36) NOT NULL, `tstamp` datetime DEFAULT NULL, UNIQUE `user_thread` (`user_id`, `eid`) USING HASH, INDEX `hash` (`unsubscribe_code`)) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_b8_rating (`eid` int(11) NOT NULL, `spam` tinyint(1) NOT NULL DEFAULT '0', `training_type` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`eid`), KEY `b8_spam` (`spam`), KEY `B8_training_type` (`training_type`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_akismet_rating (`eid` int(11) NOT NULL, `spam` tinyint(1) NOT NULL DEFAULT '0', `spam_check_status` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`eid`), KEY `akismet_spam` (`spam`), KEY spam_check_status (spam_check_status)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_b8_wordlist (`token` varchar(255) NOT NULL, `count_ham` int unsigned default NULL, `count_spam` int unsigned default NULL, PRIMARY KEY (`token`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_uploads (`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `uploader` int(10) UNSIGNED NULL, `pathname` varchar(128) NOT NULL, `tstamp` datetime NULL, PRIMARY KEY (id), UNIQUE KEY `pathname` (`pathname`), CONSTRAINT `smbl_mlf2_uploader` FOREIGN KEY `fk_uploader` (`uploader`) REFERENCES mlf2_userdata(`user_id`) ON UPDATE CASCADE ON DELETE SET NULL) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
|
||||
INSERT INTO mlf2_banlists VALUES ('user_agents', '');
|
||||
INSERT INTO mlf2_banlists VALUES ('ips', '');
|
||||
|
@ -34,7 +39,7 @@ INSERT INTO mlf2_settings VALUES ('access_for_users_only', '0');
|
|||
INSERT INTO mlf2_settings VALUES ('entries_by_users_only', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('register_mode', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('default_email_contact', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('user_area_public', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('user_area_access', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('rss_feed', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('rss_feed_max_items', '20');
|
||||
INSERT INTO mlf2_settings VALUES ('session_prefix', 'mlf2_');
|
||||
|
@ -56,10 +61,6 @@ INSERT INTO mlf2_settings VALUES ('bbcode_img', '1');
|
|||
INSERT INTO mlf2_settings VALUES ('bbcode_color', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_size', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_code', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_tex', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_flash', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('flash_default_width', '425');
|
||||
INSERT INTO mlf2_settings VALUES ('flash_default_height', '344');
|
||||
INSERT INTO mlf2_settings VALUES ('upload_images', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('smilies', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('autolink', '1');
|
||||
|
@ -100,11 +101,9 @@ INSERT INTO mlf2_settings VALUES ('deep_reply', '15');
|
|||
INSERT INTO mlf2_settings VALUES ('very_deep_reply', '30');
|
||||
INSERT INTO mlf2_settings VALUES ('users_per_page', '20');
|
||||
INSERT INTO mlf2_settings VALUES ('username_maxlength', '40');
|
||||
INSERT INTO mlf2_settings VALUES ('bad_behavior', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('akismet_entry_check', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('akismet_mail_check', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('akismet_key', '');
|
||||
INSERT INTO mlf2_settings VALUES ('akismet_check_registered', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('stop_forum_spam', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('tags', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('tag_cloud', '0');
|
||||
|
@ -130,14 +129,37 @@ INSERT INTO mlf2_settings VALUES ('captcha_email', '0');
|
|||
INSERT INTO mlf2_settings VALUES ('captcha_register', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('min_pw_length', '8');
|
||||
INSERT INTO mlf2_settings VALUES ('cookie_validity_days', '30');
|
||||
INSERT INTO mlf2_settings VALUES ('access_permission_checks', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('daily_actions_time', '3:30');
|
||||
INSERT INTO mlf2_settings VALUES ('next_daily_actions', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('delete_ips', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('last_changes', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('ajax_preview', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('read_state_expiration_value', '500');
|
||||
INSERT INTO mlf2_settings VALUES ('read_state_expiration_method', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('uploads_per_page', '20');
|
||||
INSERT INTO mlf2_settings VALUES ('data_privacy_agreement', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('data_privacy_statement_url', '');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_latex', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_latex_uri', 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js');
|
||||
INSERT INTO mlf2_settings VALUES ('min_posting_time', '5');
|
||||
INSERT INTO mlf2_settings VALUES ('min_register_time', '5');
|
||||
INSERT INTO mlf2_settings VALUES ('min_email_time', '5');
|
||||
INSERT INTO mlf2_settings VALUES ('max_posting_time', '10800');
|
||||
INSERT INTO mlf2_settings VALUES ('max_register_time', '10800');
|
||||
INSERT INTO mlf2_settings VALUES ('max_email_time', '10800');
|
||||
INSERT INTO mlf2_settings VALUES ('b8_entry_check', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('b8_auto_training', '1');
|
||||
INSERT INTO mlf2_settings VALUES ('b8_mail_check', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('b8_spam_probability_threshold', '80');
|
||||
INSERT INTO mlf2_settings VALUES ('spam_check_registered', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('min_pw_digits', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('min_pw_lowercase_letters', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('min_pw_uppercase_letters', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('min_pw_special_characters', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('php_mailer', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('delete_inactive_users', '30');
|
||||
INSERT INTO mlf2_settings VALUES ('notify_inactive_users', '3');
|
||||
INSERT INTO mlf2_settings VALUES ('link_open_target', '');
|
||||
|
||||
INSERT INTO mlf2_temp_infos (`name`, `value`) VALUES ('access_permission_checks', '0'), ('last_changes', '0'), ('next_daily_actions', '0');
|
||||
|
||||
INSERT INTO mlf2_smilies VALUES (1, 1, 'smile.png', ':-)', '', '', '', '', '');
|
||||
INSERT INTO mlf2_smilies VALUES (2, 2, 'wink.png', ';-)', '', '', '', '', '');
|
||||
|
@ -146,6 +168,8 @@ INSERT INTO mlf2_smilies VALUES (4, 4, 'biggrin.png', ':-D', '', '', '', '', '')
|
|||
INSERT INTO mlf2_smilies VALUES (5, 5, 'neutral.png', ':-|', '', '', '', '', '');
|
||||
INSERT INTO mlf2_smilies VALUES (6, 6, 'frown.png', ':-(', '', '', '', '', '');
|
||||
|
||||
INSERT INTO mlf2_userdata VALUES (1, 2, 'admin', '', 0, NULL, 'c3ccb88dc0a985b9b5da20bb9333854194dfbc7767d91c6936', 'admin@example.com', 1, '', '', '', '', 0, NULL, NULL, '', NOW(), NULL, 0, 0, 1, 0, 0, 0, 0, 0, '', '', '', '', '', 0, '');
|
||||
INSERT INTO mlf2_b8_wordlist (`token`, `count_ham`, `count_spam`) VALUES ('b8*dbversion', '3', NULL), ('b8*texts', '0', '0');
|
||||
|
||||
INSERT INTO mlf2_userdata (user_type, user_name, user_pw, user_email, email_contact, profile, logins, last_login, last_logout, registered, pwf_code, theme) VALUES (2, 'admin', 'c3ccb88dc0a985b9b5da20bb9333854194dfbc7767d91c6936', 'admin@example.com', 1, '', 0, NULL, NULL, NOW(), '', '');
|
||||
|
||||
|
||||
|
|
143
js/admin.js
143
js/admin.js
|
@ -1,143 +0,0 @@
|
|||
/***********************************************************************
|
||||
* MyLittleJavaScript *
|
||||
************************************************************************
|
||||
* Created by Michael Loesler <http://derletztekick.com> *
|
||||
* *
|
||||
* This script is part of my little forum <http://mylittleforum.net> *
|
||||
* *
|
||||
* 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 3 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* 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, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***********************************************************************/
|
||||
|
||||
/***********************************************************************
|
||||
* NOTICE: In order to reduce bandwidth usage, a minimized version of *
|
||||
* this script is used by default (admin.min.js). Changes in this file *
|
||||
* do not have any effect unless it is loaded by the template *
|
||||
* (themes/[THEME FOLDER]/main.tpl). *
|
||||
* The minimized version was created with the YUI Compressor *
|
||||
* <http://developer.yahoo.com/yui/compressor/>, i.e. *
|
||||
* <http://ganquan.info/yui/>. *
|
||||
***********************************************************************/
|
||||
|
||||
/**
|
||||
* Kleiner Feature im Adminbereich werden
|
||||
* von diesem Objekt realisiert.
|
||||
* Hauptsaechlich handelt es sich um Sicherheitsabfragen
|
||||
*/
|
||||
function MyLittleAdmin() {
|
||||
|
||||
/**
|
||||
* Initialisiert in den globalen Einstellungen
|
||||
* den CSS-Klassenwechsel bei RADIO und CHECKBOX
|
||||
*/
|
||||
var initGlobalSettings = function() {
|
||||
var f = document.getElementById("settings");
|
||||
|
||||
if (!f)
|
||||
return;
|
||||
|
||||
var changeClassName = function(id, active) {
|
||||
if (id && document.getElementById(id+"_label"))
|
||||
document.getElementById(id+"_label").className = active?"active":"inactive";
|
||||
};
|
||||
|
||||
var changeCollectionClassName = function(col) {
|
||||
for (var i=0; i<col.length; i++)
|
||||
changeClassName(col[i].id, col[i].checked);
|
||||
};
|
||||
|
||||
for (var i=0; i<f.elements.length; i++) {
|
||||
var el = f.elements[i];
|
||||
if (el.type == "checkbox" || el.type == "radio") {
|
||||
el.onchange = function(e) {
|
||||
var els = f.elements[this.name];
|
||||
if (els) {
|
||||
if (typeof els.length != "number")
|
||||
els = [els];
|
||||
changeCollectionClassName(els);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialisiert die Backup-Loesch-Abfragen
|
||||
*
|
||||
*/
|
||||
var initBackupControls = function() {
|
||||
var el = document.getElementById("selectioncontrols");
|
||||
var f = document.getElementById("selectform")
|
||||
if (!el || !f)
|
||||
return;
|
||||
var cb = f.elements["delete_backup_files[]"];
|
||||
// Elements liefert bei einem Element leider kein Array sondern nur das Element.
|
||||
if (cb && typeof cb.length != "number")
|
||||
cb = [cb];
|
||||
|
||||
var links = f.getElementsByTagName("a");
|
||||
for (var i=0; i<links.length; i++) {
|
||||
if (links[i].href.search("delete_backup_files") != -1) {
|
||||
links[i].onclick = function(e) {
|
||||
var confirmed = window.confirm( lang["delete_backup_confirm"] );
|
||||
if (confirmed)
|
||||
this.href += "&delete_backup_files_confirm="+true;
|
||||
this.blur();
|
||||
return confirmed;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
var selectAll = function(s) {
|
||||
for (var i=0; i<cb.length; i++)
|
||||
cb[i].checked = s;
|
||||
};
|
||||
|
||||
f.onsubmit = function(e) {
|
||||
// Pruefe, ob ein File geloescht werden soll
|
||||
var c = false;
|
||||
for (var i=0; i<cb.length; i++)
|
||||
if ((c = cb[i].checked) != false)
|
||||
break;
|
||||
if (!c)
|
||||
return false;
|
||||
|
||||
c = window.confirm( lang["delete_sel_backup_confirm"] );
|
||||
if (c && this.elements["delete_backup_files_confirm"])
|
||||
this.elements["delete_backup_files_confirm"].value = true;
|
||||
return c;
|
||||
};
|
||||
|
||||
var wrapperEl = document.createElementWithAttributes("span", {"className": "checkall"}, el);
|
||||
var checkAll = document.createElementWithAttributes("a", {"onclick": function(e) {selectAll(this.setSelect); return false;}, "href": "#", "setSelect": true}, wrapperEl);
|
||||
wrapperEl.appendChild(document.createTextNode(" / "));
|
||||
var checkNone = document.createElementWithAttributes("a", {"onclick": function(e) {selectAll(this.setSelect); return false;}, "href": "#", "setSelect": false}, wrapperEl);
|
||||
checkAll.appendChild( document.createTextNode( lang["check_all"] ));
|
||||
checkNone.appendChild( document.createTextNode( lang["uncheck_all"] ));
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialisiert die moeglichen Admin-Funktionen
|
||||
*/
|
||||
(function() {
|
||||
initGlobalSettings();
|
||||
initBackupControls();
|
||||
}());
|
||||
}
|
||||
|
||||
window.ready.push(function() {
|
||||
new MyLittleAdmin();
|
||||
new DragAndDropTable(document.getElementById("sortable"), "admin", "action");
|
||||
});
|
1
js/admin.min.js
vendored
1
js/admin.min.js
vendored
|
@ -1 +0,0 @@
|
|||
function MyLittleAdmin(){var a=function(){var g=document.getElementById("settings");if(!g){return}var h=function(i,f){if(i&&document.getElementById(i+"_label")){document.getElementById(i+"_label").className=f?"active":"inactive"}};var c=function(f){for(var j=0;j<f.length;j++){h(f[j].id,f[j].checked)}};for(var d=0;d<g.elements.length;d++){var e=g.elements[d];if(e.type=="checkbox"||e.type=="radio"){e.onchange=function(i){var f=g.elements[this.name];if(f){if(typeof f.length!="number"){f=[f]}c(f)}}}}};var b=function(){var c=document.getElementById("selectioncontrols");var j=document.getElementById("selectform");if(!c||!j){return}var g=j.elements["delete_backup_files[]"];if(g&&typeof g.length!="number"){g=[g]}var l=j.getElementsByTagName("a");for(var h=0;h<l.length;h++){if(l[h].href.search("delete_backup_files")!=-1){l[h].onclick=function(f){var i=window.confirm(lang.delete_backup_confirm);if(i){this.href+="&delete_backup_files_confirm="+true}this.blur();return i}}}var e=function(n){for(var f=0;f<g.length;f++){g[f].checked=n}};j.onsubmit=function(n){var o=false;for(var f=0;f<g.length;f++){if((o=g[f].checked)!=false){break}}if(!o){return false}o=window.confirm(lang.delete_sel_backup_confirm);if(o&&this.elements.delete_backup_files_confirm){this.elements.delete_backup_files_confirm.value=true}return o};var k=document.createElementWithAttributes("span",{className:"checkall"},c);var m=document.createElementWithAttributes("a",{onclick:function(f){e(this.setSelect);return false},href:"#",setSelect:true},k);k.appendChild(document.createTextNode(" / "));var d=document.createElementWithAttributes("a",{onclick:function(f){e(this.setSelect);return false},href:"#",setSelect:false},k);m.appendChild(document.createTextNode(lang.check_all));d.appendChild(document.createTextNode(lang.uncheck_all))};(function(){a();b()}())}window.ready.push(function(){new MyLittleAdmin();new DragAndDropTable(document.getElementById("sortable"),"admin","action")});
|
658
js/main.js
658
js/main.js
File diff suppressed because it is too large
Load diff
4
js/main.min.js
vendored
4
js/main.min.js
vendored
File diff suppressed because one or more lines are too long
336
js/posting.js
336
js/posting.js
|
@ -1,9 +1,9 @@
|
|||
/***********************************************************************
|
||||
* MyLittleJavaScript *
|
||||
************************************************************************
|
||||
* Created by Michael Loesler <http://derletztekick.com> *
|
||||
* Created by Michael Loesler <https://github.com/loesler> *
|
||||
* *
|
||||
* This script is part of my little forum <http://mylittleforum.net> *
|
||||
* This script is part of my little forum <https://mylittleforum.net> *
|
||||
* *
|
||||
* 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 *
|
||||
|
@ -27,12 +27,10 @@
|
|||
* file do not have any effect unless it is loaded by the template *
|
||||
* (themes/[THEME FOLDER]/main.tpl). *
|
||||
* The minimized version was created with the YUI Compressor *
|
||||
* <http://developer.yahoo.com/yui/compressor/>, i.e. *
|
||||
* <http://ganquan.info/yui/>. *
|
||||
***********************************************************************/
|
||||
|
||||
/**
|
||||
* Klasse fuer BB-Code Schaltflaechen
|
||||
* BB-Code button object
|
||||
* @param el
|
||||
*/
|
||||
function BBCodeButton(el) {
|
||||
|
@ -68,7 +66,7 @@ function BBCodeButton(el) {
|
|||
this.setHTMLElement = function(el) {
|
||||
htmlEl = el;
|
||||
htmlEl.onclick = function(e) {
|
||||
self.insertCode(this);
|
||||
self.insertCode(this);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
@ -81,15 +79,13 @@ function BBCodeButton(el) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Sonderbutton - LINK
|
||||
* Special button for link elements
|
||||
* @param el
|
||||
*/
|
||||
function BBCodeLinkButton(el) {
|
||||
this.constructor(el);
|
||||
var link_bb_code = "link";
|
||||
var regExpURI = new RegExp(/[http|https|ftp|ftps]:\/\/[a-zA-Z0-9-.][a-zA-Z0-9-.]+(S+)?/);
|
||||
var regExpFID = new RegExp(/[?|&]id=([0-9]+)/);
|
||||
var forumURI = window.location.hostname + window.location.pathname;
|
||||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
|
@ -97,18 +93,10 @@ function BBCodeLinkButton(el) {
|
|||
window.setTimeout(function(){
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var selectionRange = txtarea.getSelection().trim();
|
||||
var insert_link = (regExpURI.test( selectionRange ))?window.prompt(lang["bbcode_link_url"], selectionRange):window.prompt(lang["bbcode_link_url"],"https://");
|
||||
|
||||
var insert_link = (regExpURI.test( selectionRange ))?window.prompt(lang["bbcode_link_url"], selectionRange):window.prompt(lang["bbcode_link_url"],"http://");
|
||||
|
||||
if (!insert_link || insert_link == '' || insert_link == "http://")
|
||||
if (!insert_link || insert_link == '' || insert_link == "https://" || insert_link == "http://" || insert_link == "ftp://" || insert_link == "ftps://")
|
||||
return;
|
||||
if (insert_link.indexOf(forumURI) > 0 && insert_link.indexOf("mode=page") < 0 && insert_link.indexOf("mode=contact") < 0 && regExpFID.test(insert_link)) {
|
||||
var msgQuery = regExpFID.exec(insert_link);
|
||||
link_bb_code = "msg";
|
||||
insert_link = msgQuery[1];
|
||||
}
|
||||
else
|
||||
link_bb_code = "link";
|
||||
|
||||
if (selectionRange == '' || regExpURI.test( selectionRange ))
|
||||
selectionRange = window.prompt(lang["bbcode_link_text"], "");
|
||||
|
@ -119,11 +107,11 @@ function BBCodeLinkButton(el) {
|
|||
txtarea.insertTextRange( "["+link_bb_code+"]" + insert_link + "[/"+link_bb_code+"]" );
|
||||
}
|
||||
}, 150);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Sonderbutton mit Promt-Box
|
||||
* Special button with PROMT option
|
||||
* @param el
|
||||
* @param quest
|
||||
* @param par
|
||||
|
@ -152,7 +140,7 @@ function BBCodePromtButton(el, quest, par) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Sonderbutton - COLOR
|
||||
* Special Color-Picker button
|
||||
* @param el
|
||||
*/
|
||||
function BBCodeColorChooserButton(el) {
|
||||
|
@ -190,10 +178,10 @@ function BBCodeColorChooserButton(el) {
|
|||
this.insertOptionCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var code = this.getCode();
|
||||
txtarea.insertTextRange( "[" + code + obj.extension + "]" + txtarea.getSelection() + "[/" + code + "]" );
|
||||
txtarea.insertTextRange( "[" + code + obj.extension + "]" + txtarea.getSelection() + "[/" + code + "]" );
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(false);
|
||||
};
|
||||
|
||||
|
@ -203,12 +191,12 @@ function BBCodeColorChooserButton(el) {
|
|||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(colorTable);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Sonderbutton mit zusaetzlichen Optionen
|
||||
* Special button which provides additional options e.g. font-size [small large]
|
||||
* @param el
|
||||
* @param list
|
||||
* @param quest
|
||||
|
@ -234,16 +222,17 @@ function BBCodeOptionButton(el, list, quest, par) {
|
|||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
// Ausnahme INLINECODE
|
||||
var codestart = this.getCode(), codeend = this.getCode();
|
||||
var codestart = this.getCode(), codeend = this.getCode();
|
||||
window.setTimeout(function(){
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var selectionRange = txtarea.getSelection();
|
||||
|
||||
if (obj.attribute.toLowerCase() == "inlinecode") {
|
||||
codestart = codeend = obj.attribute;
|
||||
|
||||
if (obj.attribute != null && obj.attribute.trim() != "") {
|
||||
if (obj.attribute.trim().toLowerCase() == "inlinecode")
|
||||
codestart = codeend = obj.attribute;
|
||||
else
|
||||
codestart += "=" + obj.attribute;
|
||||
}
|
||||
if (obj.attribute.trim() && obj.attribute.toLowerCase() != "inlinecode")
|
||||
codestart += "=" + obj.attribute;
|
||||
|
||||
if (quest && selectionRange == "") {
|
||||
var p = window.prompt(quest, par);
|
||||
|
@ -260,15 +249,15 @@ function BBCodeOptionButton(el, list, quest, par) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(optionList);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Sonderbutton - LIST
|
||||
* Special button to create a LIST
|
||||
* @param el
|
||||
*/
|
||||
function BBCodeListButton(el) {
|
||||
|
@ -276,7 +265,7 @@ function BBCodeListButton(el) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var selectionRange = txtarea.getSelection();
|
||||
var listStr = "";
|
||||
|
@ -292,7 +281,7 @@ function BBCodeListButton(el) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Sonderbutton - einzelnes Smilies
|
||||
* Special button for emotional icon
|
||||
* @param el
|
||||
*/
|
||||
function BBCodeSingleSmilieButton(el) {
|
||||
|
@ -300,7 +289,7 @@ function BBCodeSingleSmilieButton(el) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
|
||||
var selectionRange = txtarea.getSelection();
|
||||
|
@ -309,49 +298,42 @@ function BBCodeSingleSmilieButton(el) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Sonderbutton - Smilies
|
||||
* Special button for larger list of emotional icons
|
||||
* @param el
|
||||
* @param list
|
||||
*/
|
||||
function BBCodeSmilieButton(el, list) {
|
||||
this.constructor(el, list);
|
||||
var self = this;
|
||||
//var smilies = document.createElement("div");
|
||||
var smilies = document.createElementWithAttributes("div", {"id": "additional-smilies"}, null);
|
||||
var smilies = document.createElementWithAttributes("ul", {"id": "additional-smilies"}, null);
|
||||
|
||||
for (var i=0; i<list.length; i++) {
|
||||
var link = document.createElementWithAttributes("a", {"href": "#", "title": list[i].title, "code": list[i].code, "onclick": function(e) { self.insertOptionCode(this); return false; } }, smilies);
|
||||
link.appendChild( list[i].label );
|
||||
//if ((i+1)%5==0)
|
||||
// document.createElementWithAttributes("br", {}, smilies);
|
||||
//else
|
||||
//smilies.appendChild( document.createTextNode( String.fromCharCode(32) ) );
|
||||
let item = document.createElementWithAttributes("li",{}, smilies);
|
||||
let btn = document.createElementWithAttributes("button",{"type": "button", "title": list[i].title, "value": list[i].code, "onclick": function(e) { self.insertButtonCode(this); return false; }}, item);
|
||||
btn.appendChild( list[i].label);
|
||||
}
|
||||
|
||||
this.insertOptionCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
|
||||
this.insertButtonCode = function(obj) {
|
||||
if (!this.canInsert()) return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var code = obj.code;
|
||||
txtarea.insertTextRange( txtarea.getSelection() +code + " " );
|
||||
const val = event.target.closest("button").getAttribute("value");
|
||||
txtarea.insertTextRange( txtarea.getSelection() + val + " " );
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(false);
|
||||
}
|
||||
|
||||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
//var txtarea = buttonGroup.getTextArea();
|
||||
//selectionRange = txtarea.getSelection();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(smilies);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Sonderbutton mit Zusatzfenster
|
||||
* Special button to open a pop-up
|
||||
* @param el
|
||||
* @param uri
|
||||
* @param width
|
||||
|
@ -386,7 +368,7 @@ BBCodePopUpButton.prototype = new BBCodeButton;
|
|||
BBCodePromtButton.prototype = new BBCodeButton;
|
||||
|
||||
/**
|
||||
* ButtonGroup, die allte BB-Code-Button verwaltet
|
||||
* ButtonGroup, which handles the created BB-code buttons
|
||||
* @param form
|
||||
*/
|
||||
function ButtonGroup(f) {
|
||||
|
@ -404,8 +386,8 @@ function ButtonGroup(f) {
|
|||
var self = this;
|
||||
|
||||
/**
|
||||
* Pruefe das Formaular, ob alle notwendigen Felder ausgefuellt sind!
|
||||
* return isComplete
|
||||
* Check form
|
||||
* return complete
|
||||
*/
|
||||
f.onsubmit = function(e) {
|
||||
var error_message = '';
|
||||
|
@ -427,58 +409,65 @@ function ButtonGroup(f) {
|
|||
return false;
|
||||
}
|
||||
if (document.getElementById('throbber-submit')) {
|
||||
document.getElementById('throbber-submit').classList.remove('js-visibility-hidden'); //style.visibility = 'visible';
|
||||
document.getElementById('throbber-submit').classList.remove('js-visibility-hidden');
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Wandelt die Smilie-Anleitung in klickbare Elemente um
|
||||
* Transform introduction (for adding emotional icons) into button elements
|
||||
*/
|
||||
convertInstructionsToSmilies = function() {
|
||||
var convertInstructionsToSmilies = function() {
|
||||
if (!document.getElementById("smiley-bar"))
|
||||
return;
|
||||
var buttonBar = document.getElementById("smiley-bar");
|
||||
|
||||
if (document.getElementById("smiley-instructions")) {
|
||||
var el = document.getElementById("smiley-instructions").firstChild;
|
||||
let elems = document.getElementById("smiley-instructions").querySelectorAll("div");
|
||||
var obj = null;
|
||||
var list = [];
|
||||
while (el != null) {
|
||||
if (el.nodeName && el.nodeName.toLowerCase() == "dt") {
|
||||
|
||||
for (const el of elems) {
|
||||
const term = el.querySelector("dt");
|
||||
const desc = el.querySelectorAll("dd");
|
||||
if (term) {
|
||||
obj = {
|
||||
code : el.firstChild.nodeValue,
|
||||
title : el.title,
|
||||
classes : el.className,
|
||||
code : term.textContent,
|
||||
title : term.getAttribute("title"),
|
||||
classes : term.getAttribute("class"),
|
||||
isSmilie: true,
|
||||
childs : []
|
||||
};
|
||||
}
|
||||
if (obj && desc) {
|
||||
for (const d of desc) {
|
||||
obj.label = d.firstChild;
|
||||
if (obj.classes.search(/default/) != -1)
|
||||
createSingleButton(obj, buttonBar);
|
||||
else
|
||||
list.push(obj);
|
||||
obj = null;
|
||||
}
|
||||
}
|
||||
else if (obj && el.nodeName && el.nodeName.toLowerCase() == "dd") {
|
||||
obj.label = el.firstChild;
|
||||
if (obj.classes.search(/default/) != -1)
|
||||
createSingleButton(obj, buttonBar);
|
||||
else
|
||||
list.push(obj);
|
||||
obj = null;
|
||||
}
|
||||
el = el.nextSibling;
|
||||
}
|
||||
|
||||
if (list && list.length > 0) {
|
||||
obj = {
|
||||
code : "",
|
||||
title : lang["more_smilies_title"],
|
||||
label : lang["more_smilies_label"],
|
||||
classes : "more-smilies",
|
||||
classes : "",
|
||||
isSmilie: true,
|
||||
childs : list
|
||||
};
|
||||
createSingleButton(obj, buttonBar);
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wandelt die BB-Code-Anleitung in klickbare Elemente um
|
||||
* Transform introduction (for adding source code) into button elements
|
||||
*/
|
||||
var convertInstructionsToButton = function() {
|
||||
if (!document.getElementById("bbcode-bar"))
|
||||
|
@ -486,38 +475,38 @@ function ButtonGroup(f) {
|
|||
var buttonBar = document.getElementById("bbcode-bar");
|
||||
|
||||
if (document.getElementById("bbcode-instructions")) {
|
||||
var el = document.getElementById("bbcode-instructions").firstChild;
|
||||
let elems = document.getElementById("bbcode-instructions").querySelectorAll("div");
|
||||
var obj = null;
|
||||
|
||||
while (el != null) {
|
||||
if (el.nodeName && el.nodeName.toLowerCase() == "dt") {
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
|
||||
for (const el of elems) {
|
||||
const term = el.querySelector("dt");
|
||||
const desc = el.querySelectorAll("dd");
|
||||
if (term) {
|
||||
obj = {
|
||||
code : el.id,
|
||||
label : el.title,
|
||||
title : el.firstChild.nodeValue,
|
||||
classes : el.className,
|
||||
code : term.getAttribute("id"),
|
||||
label : term.getAttribute("title"),
|
||||
title : term.textContent,
|
||||
classes : term.getAttribute("class"),
|
||||
childs : []
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
else if (obj && el.nodeName && el.nodeName.toLowerCase() == "dd") {
|
||||
var attChild = {
|
||||
attribute : el.id,
|
||||
label : el.title
|
||||
if (obj && desc) {
|
||||
for (const d of desc) {
|
||||
var attChild = {
|
||||
attribute : d.getAttribute("id"),
|
||||
label : d.getAttribute("title")
|
||||
}
|
||||
obj.childs.push(attChild);
|
||||
}
|
||||
obj.childs.push( attChild );
|
||||
}
|
||||
el = el.nextSibling;
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Fuegt einen BB-Button dem Dokument hinzu.
|
||||
* Add a bb code button element to the document
|
||||
* @param button
|
||||
* @param isUserButton
|
||||
*/
|
||||
|
@ -542,8 +531,7 @@ function ButtonGroup(f) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Erzeugt einen einfachen Klick-Button, der ein SPAN-Element enthaelt
|
||||
* aus einem spezifischen Objekt
|
||||
* Creates a simple button, which contains a SPAN element for labeling
|
||||
* @param obj
|
||||
* @param buttonBar
|
||||
*/
|
||||
|
@ -566,58 +554,53 @@ function ButtonGroup(f) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Erzeugt aus einem normalen Klick-Button ein
|
||||
* BBCodeButton-Objekt (ggf. mit Zusatzoptionen)
|
||||
* Transform a normal button element to a bb-code button elemement
|
||||
*
|
||||
* @param button
|
||||
* @param list
|
||||
* @return button
|
||||
*/
|
||||
var createBBCodeButton = function(button, list) {
|
||||
var bbCodeButton = null;
|
||||
var bname=button&&button.name?button.name.toLowerCase():"";
|
||||
//switch(button.name.toLowerCase()) {
|
||||
var bname = button && button.name ? button.name.toLowerCase() : "";
|
||||
switch(bname) {
|
||||
case "link":
|
||||
bbCodeButton = new BBCodeLinkButton( button );
|
||||
bbCodeButton = new BBCodeLinkButton( button );
|
||||
break;
|
||||
case "img":
|
||||
if (list && list.length > 1)
|
||||
bbCodeButton = new BBCodeOptionButton(button, list, lang["bbcode_image_url"], "http://" );
|
||||
else
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "http://" );
|
||||
if (list && list.length > 1)
|
||||
bbCodeButton = new BBCodeOptionButton(button, list, lang["bbcode_image_url"], "https://" );
|
||||
else
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "https://" );
|
||||
break;
|
||||
case "color":
|
||||
bbCodeButton = new BBCodeColorChooserButton( button );
|
||||
bbCodeButton = new BBCodeColorChooserButton( button );
|
||||
break;
|
||||
case "list":
|
||||
bbCodeButton = new BBCodeListButton( button );
|
||||
break;
|
||||
case "flash":
|
||||
bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=insert_flash", settings["flash_popup_width"], settings["flash_popup_height"]);
|
||||
bbCodeButton = new BBCodeListButton( button );
|
||||
break;
|
||||
case "upload":
|
||||
bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=upload_image", settings["upload_popup_width"], settings["upload_popup_height"]);
|
||||
bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=upload_image", settings["upload_popup_width"], settings["upload_popup_height"]);
|
||||
break;
|
||||
case "tex":
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_tex_code"] );
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_tex_code"] );
|
||||
break;
|
||||
default:
|
||||
if (button.isSmilie && list && list.length > 0)
|
||||
bbCodeButton = new BBCodeSmilieButton( button, list );
|
||||
else if (button.isSmilie)
|
||||
bbCodeButton = new BBCodeSingleSmilieButton( button );
|
||||
else if (list && list.length > 1)
|
||||
bbCodeButton = new BBCodeOptionButton( button, list );
|
||||
else
|
||||
bbCodeButton = new BBCodeButton( button );
|
||||
if (button.isSmilie && list && list.length > 0)
|
||||
bbCodeButton = new BBCodeSmilieButton( button, list );
|
||||
else if (button.isSmilie)
|
||||
bbCodeButton = new BBCodeSingleSmilieButton( button );
|
||||
else if (list && list.length > 1)
|
||||
bbCodeButton = new BBCodeOptionButton( button, list );
|
||||
else
|
||||
bbCodeButton = new BBCodeButton( button );
|
||||
break;
|
||||
}
|
||||
return bbCodeButton;
|
||||
};
|
||||
|
||||
/**
|
||||
* Erzeugt ein Fenster, in dem die Zusatzoptionen
|
||||
* angezeigt werden koennen
|
||||
|
||||
/**
|
||||
* Creates a window to show further options of the clicked button
|
||||
* @return win
|
||||
*/
|
||||
var createAdditionalOptionsWindow = function() {
|
||||
|
@ -649,10 +632,10 @@ function ButtonGroup(f) {
|
|||
else
|
||||
content.replaceChild(list, content.firstChild);
|
||||
};
|
||||
|
||||
|
||||
w.enableOptionList = function(enable, pos) {
|
||||
if (pos) {
|
||||
this.style.left = pos.left + "px";
|
||||
this.style.left = pos.left + "px";
|
||||
this.style.top = pos.top + "px";
|
||||
}
|
||||
if (enable)
|
||||
|
@ -662,43 +645,40 @@ function ButtonGroup(f) {
|
|||
};
|
||||
|
||||
var oldOnKeyPressFunc = window.document.onmousedown;
|
||||
window.document.onkeypress = function(e) {
|
||||
var keyCode = document.getKeyCode(e);
|
||||
if (keyCode == 27)
|
||||
self.enableOptionList(false);
|
||||
|
||||
window.document.onkeypress = function(e) {
|
||||
if (e.key == "Esc")
|
||||
self.enableOptionList(false);
|
||||
|
||||
if (typeof oldOnKeyPressFunc == "function")
|
||||
oldOnKeyPressFunc(e);
|
||||
}
|
||||
}
|
||||
|
||||
return w;
|
||||
};
|
||||
|
||||
/**
|
||||
* Sucht nach Button, die der Nutzer
|
||||
* ins Dokument eingefuegt hat
|
||||
* Search for added buttons within the document
|
||||
* @param isSmilie
|
||||
*/
|
||||
var initUserBBCodeButtons = function(isSmilie) {
|
||||
isSmilie = isSmilie || false;
|
||||
hasUserButtons = false;
|
||||
var id = isSmilie?"smiley-bar":"bbcode-bar";
|
||||
var id = isSmilie ? "smiley-bar" : "bbcode-bar";
|
||||
if (!document.getElementById(id))
|
||||
return;
|
||||
var userButtons = document.getElementById(id).getElementsByTagName("button");
|
||||
if (userButtons && userButtons.length > 0) {
|
||||
for (var i=0; i<userButtons.length; i++) {
|
||||
var j = userButtons.length;
|
||||
for (var i=0; i<j; i++) {
|
||||
hasUserButtons = true;
|
||||
userButtons[i].isSmilie = isSmilie;
|
||||
addButton(createBBCodeButton(userButtons[i], null), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialisiert die Textarea
|
||||
* und setzt Funktionen zum Ermitteln
|
||||
* des selektierten Textes
|
||||
* Init. text area of the posting form
|
||||
*/
|
||||
var initTextArea = function() {
|
||||
// Sichert den (alten) Text in der Area
|
||||
|
@ -707,25 +687,24 @@ function ButtonGroup(f) {
|
|||
textarea.quote = textarea.value;
|
||||
textarea.value = "";
|
||||
}
|
||||
|
||||
|
||||
textarea.getQuote = function() {
|
||||
return textarea.quote.trim();
|
||||
}
|
||||
|
||||
// Zitieren-Link einfuegen
|
||||
// insert the quotation-link
|
||||
if (textarea.getQuote() != "" && document.getElementById("message")) {
|
||||
var labels = document.getElementById("message").getElementsByTagName("label");
|
||||
var label = null;
|
||||
for (var i=0; i<labels.length; i++) {
|
||||
if (labels[i].className.search(/textarea/) != -1) {
|
||||
label = labels[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var label = document.querySelector('label[for="text"]');
|
||||
if (label) {
|
||||
label.appendChild( document.createTextNode( String.fromCharCode(160) ) );
|
||||
var quoteLink = document.createElementWithAttributes("a", {"onclick": function(e) {textarea.value = textarea.getQuote() + "\r\n\r\n" + textarea.value; this.classList.add("js-display-none"); textarea.focus(); return false;}, "id": "insert-quote", "href": window.location.href, "title": lang["quote_title"], "tabIndex": -1 }, label);
|
||||
quoteLink.appendChild( document.createTextNode(lang["quote_label"]) );
|
||||
var quoteButton = document.createElementWithAttributes("button", {"type": "button", "id": "insert-quote", "title": lang["quote_title"], "tabIndex": -1});
|
||||
quoteButton.onclick = function(e) {
|
||||
textarea.value = textarea.getQuote() + "\r\n\r\n" + textarea.value;
|
||||
this.classList.add("js-display-none");
|
||||
textarea.focus();
|
||||
return false;
|
||||
};
|
||||
quoteButton.appendChild( document.createTextNode(lang["quote_label"]) )
|
||||
label.parentNode.insertBefore(quoteButton, label.nextSibling);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -765,15 +744,15 @@ function ButtonGroup(f) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Liefert die Textarea
|
||||
* Returns the text area of the form
|
||||
* @return area
|
||||
*/
|
||||
this.getTextArea = function() {
|
||||
return textarea;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Liefert das Option-Window
|
||||
* Returns the property window of the button
|
||||
* @return win
|
||||
*/
|
||||
this.getAdditionalOptionsWindow = function() {
|
||||
|
@ -788,20 +767,19 @@ function ButtonGroup(f) {
|
|||
link.onclick = function(e) {
|
||||
document.cookie = settings["session_prefix"]+'userdata=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
|
||||
span.innerHTML = "";
|
||||
if(f.elements["setcookie"]) f.elements["setcookie"].checked = false;
|
||||
if(f.elements["setcookie"]) f.elements["setcookie"].checked = false;
|
||||
return false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
var removeIntroductionElements = function() {
|
||||
if (document.getElementById("formatting-help")) {
|
||||
var el = document.getElementById("formatting-help");
|
||||
el.classList.add('js-display-none');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialisiert ButtonGroup
|
||||
*
|
||||
*/
|
||||
(function() {
|
||||
if (document.getElementById("bbcode-instructions"))
|
||||
document.getElementById("bbcode-instructions").classList.add("js-display-none");
|
||||
if (document.getElementById("smiley-instructions"))
|
||||
document.getElementById("smiley-instructions").classList.add("js-display-none");
|
||||
additionalOptionsWindow = createAdditionalOptionsWindow();
|
||||
// Erzeuge Textarea
|
||||
initTextArea();
|
||||
|
@ -811,10 +789,12 @@ function ButtonGroup(f) {
|
|||
initUserBBCodeButtons(true);
|
||||
convertInstructionsToSmilies();
|
||||
initDeleteCookieLink();
|
||||
// entferne die Introduction-Elemente zur Definition der Button
|
||||
removeIntroductionElements();
|
||||
}());
|
||||
}
|
||||
|
||||
window.ready.push(function() {
|
||||
document.addEventListener("DOMContentLoaded", function(e) {
|
||||
if (typeof settings == "object" && typeof lang == "object")
|
||||
new ButtonGroup( document.getElementById("postingform") );
|
||||
});
|
2
js/posting.min.js
vendored
2
js/posting.min.js
vendored
File diff suppressed because one or more lines are too long
1264
lang/arabic.lang
Normal file
1264
lang/arabic.lang
Normal file
File diff suppressed because it is too large
Load diff
1876
lang/chinese.lang
1876
lang/chinese.lang
File diff suppressed because it is too large
Load diff
1265
lang/chinese_traditional.lang
Normal file
1265
lang/chinese_traditional.lang
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,10 +1,28 @@
|
|||
################################################################################
|
||||
# Croatian language file for my little forum 2.4 #
|
||||
# Croatian language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated by Riba < riba at ml1 dot net > 2010-07-27 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = hr
|
||||
language_code = 'hr'
|
||||
language_name_system = 'croatian'
|
||||
language_name_own = 'Hrvatski'
|
||||
charset = utf-8
|
||||
locale = hr_HR.utf8
|
||||
locale = hr_HR
|
||||
|
@ -12,8 +30,8 @@ locale = hr
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %d/%m/%Y, %H:%M
|
||||
time_format_full = %A %d %B %Y, %H:%M
|
||||
time_format = 'dd.\' \'MM.\' \'YYYY, HH:mm'
|
||||
time_format_full = 'EEEE d MMMM YYYY, H:mm'
|
||||
forum_time = 'Vrijeme na forumu: [time]'
|
||||
forum_time_with_time_zone = 'Vrijeme na forumu: [time] ([time_zone])'
|
||||
unknown_user = 'nepoznat'
|
||||
|
@ -28,6 +46,7 @@ replies = 'Odgovora'
|
|||
views = 'Otvaranja'
|
||||
category = "Kategorija'
|
||||
submit_button_ok = ' U redu '
|
||||
submit_button_cancel = '<!-- TODO --> Cancel '
|
||||
yes = 'da'
|
||||
no = 'ne'
|
||||
go = 'Kreni'
|
||||
|
@ -37,8 +56,8 @@ next_page_link = 'Sljedeća stranica »'
|
|||
previous_page_link = '« Prethodna stranica'
|
||||
next_page_link_title = 'sljedeća stranica'
|
||||
previous_page_link_title = 'prethodna stranica'
|
||||
posted_by = 'od <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'od <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'od [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'od [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klikni za otvaranje početne poruke od [name]'
|
||||
error_headline = 'Greška!'
|
||||
no_authorisation = 'Nemate dopuštenje!'
|
||||
|
@ -64,6 +83,8 @@ search_default_value = 'Traži...'
|
|||
search_title = 'Traži poruke'
|
||||
new_topic_link = 'Pokreni novu temu'
|
||||
new_topic_link_title = 'Pokreni novu temu'
|
||||
back_to_top_link = '<!-- TODO -->To top'
|
||||
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
|
||||
order_link = 'Sortiraj'
|
||||
order_link_title_1 = 'Sortiraj po najnovijim porukama'
|
||||
order_link_title_2 = 'Sortiraj po najnovijim temama (zadano)'
|
||||
|
@ -90,7 +111,7 @@ expand_fold_thread_linktitle = 'Raširi / skupi temu'
|
|||
category_title = 'Kategorija'
|
||||
all_categories = 'Sve kategorije'
|
||||
my_category_selection = 'Tvoj izbor'
|
||||
page_title = 'Stranica'
|
||||
browse_page_title = 'Stranica'
|
||||
thread_entry_back_link = 'Početna stranica'
|
||||
thread_entry_back_title = 'Početna stranica foruma'
|
||||
reply_link = 'Pošalji odgovor'
|
||||
|
@ -101,6 +122,8 @@ back_to_entry_link = 'Natrag na poruku od [name]'
|
|||
back_to_entry_link_title = 'Natrag na poruku od [name]'
|
||||
subnav_login = 'Prijava'
|
||||
subnav_pw_forgotten = 'Zaboravljena lozinka'
|
||||
subnav_accept_dps = '<!-- TODO -->Accept the data privacy statement'
|
||||
subnav_accept_tou = '<!-- TODO -->Accept the terms of use agreement'
|
||||
subnav_admin_area = 'Administratorski dio'
|
||||
subnav_settings = 'Postavke foruma'
|
||||
subnav_advanced_settings = 'Napredne postavke'
|
||||
|
@ -133,6 +156,7 @@ subnav_userarea_show_posts = 'Poruke od [var]'
|
|||
subnav_userarea_edit_user = 'Izmijeni profil'
|
||||
subnav_userarea_edit_pw = 'Izmijeni lozinku'
|
||||
subnav_userarea_edit_mail = 'Izmijeni e-mail adresu'
|
||||
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
|
||||
subnav_backup = 'Napravi sigurnosnu kopiju'
|
||||
subnav_update = 'Unaprijedi verziju'
|
||||
subnav_update_run = 'Instaliraj novu verziju'
|
||||
|
@ -144,6 +168,8 @@ subnav_disabled = 'Forum je zatvoren'
|
|||
subnav_bookmarks = '<!-- TODO -->Bookmarks'
|
||||
subnav_delete_bookmark = '<!-- TODO -->Delete bookmark'
|
||||
subnav_edit_bookmark = '<!-- TODO -->Edit bookmark'
|
||||
subnav_list_uploads = '<!-- TODO -->List of uploads'
|
||||
subnav_confirm_delete_uploads = '<!-- TODO -->Delete uploads'
|
||||
subnav_page_error = 'Greška'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] poruka u [total_threads] tema, [registered_users] registriranih korisnika'
|
||||
|
@ -170,7 +196,6 @@ error_invalid_date_format = 'Format datuma rođenja nije ispravan (YYYY-MM
|
|||
error_invalid_date = 'Neispravan datum rođenja'
|
||||
error_email_wrong = 'Neispravna e-mail adresa'
|
||||
error_hp_wrong = 'Neispravna adresa web stranice'
|
||||
error_pw_conf_wrong = 'Lozinke se razlikuju'
|
||||
error_akismet_connection = 'Problem sa posluživačem, pokušaj ponovo!'
|
||||
error_akismet_connection_admin = 'Ne mogu se povezati na Akismet posluživač u svrhu provjere API ključa!'
|
||||
error_akismet_api_key = 'Neispravan Wordpress API ključ'
|
||||
|
@ -180,6 +205,7 @@ open_whole_thread = 'Otvori čitavu temu'
|
|||
change_category_link = 'Prikaži poruke u kategoriji "[category]"'
|
||||
mark_linktitle = 'Označi poruke'
|
||||
unmark_linktitle = 'Odznači poruke'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'Obriši označene poruke'
|
||||
manage_postings_link = 'Upravljanje porukama'
|
||||
non_activated_users_link = '[counter] non-activated user(s)'
|
||||
|
@ -194,6 +220,8 @@ more_smilies_label = 'više...'
|
|||
more_smilies_title = 'više smajlića'
|
||||
close = 'zatvori'
|
||||
no_postings_user = 'Nema poruka.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Traži'
|
||||
search_fulltext = 'izraz'
|
||||
search_tags = 'oznake'
|
||||
|
@ -206,7 +234,6 @@ several_postings_by_user = '[number] poruka:'
|
|||
rss_posting_by = 'Poruka od [name], [time]:'
|
||||
rss_reply_by = 'Odgovor od [name], [time]:'
|
||||
rss_reply_marking = '(odgovor)'
|
||||
move_drag_and_drop = 'Uhvati i povuci za pomicanje gore ili dole'
|
||||
move_up = 'pomakni gore'
|
||||
move_down = 'pomakni dole'
|
||||
delete_posting_title = 'Obriši poruku'
|
||||
|
@ -226,6 +253,7 @@ administrator_title = 'Administrator'
|
|||
moderator_title = 'Moderator'
|
||||
avatar_img_alt = 'Avatar'
|
||||
search_user = 'Nađi korisnika:'
|
||||
search_user_default_value = '<!-- TODO -->Search user...'
|
||||
no_users = 'Nema pronađenih korisnika.'
|
||||
no_text_title = 'Tijelo poruke je prazno'
|
||||
no_text_alt = 'Nema teksta'
|
||||
|
@ -234,6 +262,7 @@ error_invalid_form = 'Prijava je istekla! Kopirajte tekst i nanovo
|
|||
error_form_sent_too_fast = 'Obrazac je poslan prerano - počekajte par sekundi i pokušajte opet (prevencija automatskog popunjavanja obrasca)'
|
||||
error_form_sent_too_slow = 'Obrazac više ne vrijedi - kopirajte sadržaj i osvježite stranicu'
|
||||
terms_of_use_agreement = 'Prihvaćam [[terms of use]]'
|
||||
data_privacy_agreement = '<!-- TODO -->I agree to the [[data privacy statement]]'
|
||||
error_not_accepted_word = 'Riječ nije prihvaćena: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Riječi nisu prihvaćene: [not_accepted_words]'
|
||||
error_username_invalid_chars = 'Korisničko ime sadrži nedopuštene znakove'
|
||||
|
@ -253,14 +282,20 @@ error_no_subject = 'Naziv teme je prazan'
|
|||
error_no_text = 'Tijelo poruke je prazno'
|
||||
terms_of_use_error_register = 'Morate prihvatiti uvjete korištenja kako bi završili registraciju'
|
||||
terms_of_use_error_posting = 'Morate prihvatiti uvjete korištenja kako bi poslali ovu poruku'
|
||||
terms_of_use_error_reconf = '<!-- TODO -->You have to agree to the changes of the terms of use in order to submit further messages'
|
||||
data_priv_statement_error_reg = '<!-- TODO -->You have to agree to the data privacy statement in order to complete the registration'
|
||||
data_priv_statement_error_post = '<!-- TODO -->You have to agree to the data privacy statement in order to submit this message'
|
||||
data_priv_statement_error_reconf ='<!-- TODO -->You have to agree to the changes of the data privacy statement in order to submit further messages'
|
||||
submit_button_agreed = '<!-- TODO -->I agree'
|
||||
submit_button_disagreed = '<!-- TODO -->I disagree'
|
||||
check_all = 'označi sve'
|
||||
uncheck_all = 'odznači sve'
|
||||
delete_backup_confirm = 'Jesi li siguran da želiš obrisati ovu pričuvnu kopiju?'
|
||||
delete_sel_backup_confirm = 'Jesi li siguran da želiš obrisati sve označene kopije?'
|
||||
drag_and_drop_title = 'Povuci gore ili dole za premještanje'
|
||||
show_all_postings_link = 'prikaži poruke'
|
||||
show_bookmarks_link = '<!-- TODO -->Bookmarks'
|
||||
show_userdata_linktitle = '<!-- TODO -->Visit profil of [user]'
|
||||
show_password_title = '<!-- TODO -->Show password in plain text'
|
||||
hide_password_title = '<!-- TODO -->Hide password'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
|
||||
|
@ -282,7 +317,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'Ispravio [name], [time]'
|
||||
edited_by = 'Ispravio [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Oznake:'
|
||||
one_view = '1 otvaranje'
|
||||
several_views = '[views] otvaranja'
|
||||
|
@ -333,12 +368,14 @@ optional = '(nije obavezno)'
|
|||
optional_email = '(nije obavezno, neće biti prikazano)'
|
||||
honeypot_field_marking = '<!-- TODO -->Leave this field empty:'
|
||||
remember_userdata_marking = 'Upamti me'
|
||||
category_marking = 'Kategorija:'
|
||||
delete_cookie_linkname = 'obriši cookie'
|
||||
category_marking = 'Kategorija:'
|
||||
subject_marking = 'Tema:'
|
||||
message_marking = 'Poruka:'
|
||||
tags_marking = 'Oznake:'
|
||||
tags_note = '(nije obavezno, razdvojeno zarezima)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'podebljano'
|
||||
bbcode_bold_title = 'Podebljaj tekst'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -371,15 +408,12 @@ bbcode_image_instr_right = 'desno: [img=right]http://primjer.com/slika.jp
|
|||
bbcode_image_label_thumb = 'thumbnail'
|
||||
bbcode_image_instr_thumb = 'thumbnail: [img=thumbnail]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'thumbnail lijevo'
|
||||
bbcode_image_instr_thumb_left = 'thumbnail lijevo: [img=thumbnail]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'thumbnail lijevo: [img=thumbnail-left]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'thumbnail desno'
|
||||
bbcode_image_instr_thumb_right = 'thumbnail desno: [img=thumbnail]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'thumbnail desno: [img=thumbnail-right]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_upload_label = 'upload'
|
||||
bbcode_upload_title = 'upload slike'
|
||||
bbcode_upload_instruction = 'slanje slike na naš poslužitelj'
|
||||
bbcode_flash_label = 'flash'
|
||||
bbcode_flash_title = 'ubaci flash sadržaj'
|
||||
bbcode_flash_insruction = '[flash]http://primjer.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = 'ubaci TeX kod'
|
||||
bbcode_tex_instruction = '[tex]TeX kod[/tex]'
|
||||
|
@ -395,6 +429,9 @@ insert_smiley_title = 'Ubaci smajlić'
|
|||
email_notific_reply_thread = 'E-mail obavijesti za odgovore na ovu temu'
|
||||
email_notific_reply_post = 'E-mail obavijesti za odgovore na ovu poruku'
|
||||
show_signature_marking = 'Dodaj potpis'
|
||||
sticky_none = '<!-- TODO -->Do not pin the thread'
|
||||
sticky_single_cat = '<!-- TODO -->Pin thread in the chosen category'
|
||||
sticky_all_cats = '<!-- TODO -->Pin thread to all categories'
|
||||
sticky_thread = 'Uvijek na vrhu'
|
||||
message_submit_button = 'Pošalji'
|
||||
message_submit_title = 'Spremi'
|
||||
|
@ -423,9 +460,8 @@ delete_spam_hl = 'Obriši spam'
|
|||
delete_spam_confirm = 'Želiš li zaista obrisati sve poruke označene kao spam?'
|
||||
delete_posting_submit = 'Obriši'
|
||||
report_spam_hl = 'Prijavi spam'
|
||||
report_spam_warning = '<!-- TODO -->Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
posting_already_spam = 'Ova je poruka već označena kao spam.'
|
||||
spamcheck_posting_not_checked = 'Ova poruka nije provjerena jer Akismet nije omogućen ili ju je poslao registrirani korisnik.'
|
||||
spamcheck_posting_passed = 'Ova je poruka prošla Akismet spam provjeru. Prijavi je jedino ako se zaista radi o spamu!'
|
||||
spamcheck_akismet_api_error = 'Ova je poruka prošla Akismet spam provjeru jer je došlo do greške pri provjeri. Mogući uzrok je neispravan API ključ!'
|
||||
spamcheck_akismet_timeout_error = 'Ova je poruka prošla spam provjeru jer Akismet server nije uspješno kontaktiran.'
|
||||
report_spam_delete_submit = 'Prijavi kao spam i obriši'
|
||||
|
@ -434,11 +470,17 @@ delete_only_submit = 'Obriši'
|
|||
postings_doesnt_exist = 'Ova poruka ne postoji!'
|
||||
posting_not_flagged_as_spam = 'Ova poruka nije označena kao spam.'
|
||||
flag_ham_hl = 'Označi kao valjanu poruku'
|
||||
flag_ham_note = 'Ovu je poruku Akismet spam provjera označila kao spam. Ukloni ovu oznaku smao ako si siguran da se ne radi o spamu!'
|
||||
flag_ham_warning = '<!-- TODO -->Please flag and report this entry only as ham (not spam), if it is definetly no spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
report_flag_ham_submit = 'Prijavi i označi kao valjanu poruku'
|
||||
flag_ham_submit = 'Označi kao vajanu poruku'
|
||||
no_authorisation_delete = 'Poruku nije moguće obrisati! Mogući uzroci su istek vremena unutar kojeg je dozvoljeno brisanje, tema je zaključana ili već postoje odgovori na ovu poruku.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = '<!-- TODO -->Quitted subscription'
|
||||
unsubscribed_message = '<!-- TODO -->The subscription for informations about replies to your entry got quitted. You will not receive any more e-mails about this specific entry. Subscriptions for informations about further entries are not affected by this action.'
|
||||
unsubscribe_error_hl = '<!-- TODO -->Could not quit the subscription'
|
||||
unsubscribe_error_message = '<!-- TODO -->During the action to quit the subscription an error occured. Please inform the forum operator by e-mail about this issue. Please add the following informations: ID of the entry (take it from the link in the e-mail (URL-parameter "unsubscribe")) and the time of the failed action (add the name of your time zone if possible).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Provjera za zaštitu od spama:'
|
||||
captcha_expl_math = 'Upiši zbroj dva broja:'
|
||||
|
@ -466,12 +508,6 @@ no_images = 'Nema raspoloživih slika.'
|
|||
delete_image_confirm = 'Želite li obrisati ovu sliku?'
|
||||
delete_image_button = 'Obriši'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'Umetni flash video sadržaj'
|
||||
flash_url = 'URL:'
|
||||
flash_size = 'Veličina:'
|
||||
insert_flash_button = 'Umetni flash video sadržaj'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Avatar'
|
||||
delete_avatar = 'Obriši avatara'
|
||||
|
@ -531,6 +567,7 @@ pwf_username = 'Koriničko ime:'
|
|||
pwf_email = 'E-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name = 'Korisničko ime'
|
||||
user_type = 'Vrsta'
|
||||
admin = 'Administrator'
|
||||
|
@ -593,7 +630,10 @@ edit_email = 'Izmijeni E-mail adresu'
|
|||
edit_user_pw = 'Lozinka:'
|
||||
pw_not_displayed = 'nije prikazana'
|
||||
edit_pw = 'izmijeni lozinku'
|
||||
edit_user_email_contact = 'E-mail adresa dostupna za kontakt'
|
||||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = 'Ime:'
|
||||
edit_user_gender = 'Spol:'
|
||||
gender_not_specified = 'not specified'
|
||||
|
@ -616,20 +656,35 @@ edit_user_theme = 'Izgled:'
|
|||
edit_user_default_theme = 'Zadan ([default_theme])'
|
||||
edit_user_auto_login = 'Automatska prijava'
|
||||
enable_auto_login = 'uključite automatsku prijavu'
|
||||
edit_user_where_to_open_links = '<!-- TODO -->Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = '<!-- TODO -->Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = '<!-- TODO -->Open all links in same browser window'
|
||||
where_to_open_links_external = '<!-- TODO -->Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = '<!-- TODO -->Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_notification = 'E-mail obavijesti:'
|
||||
admin_mod_notif_posting = 'kod pristizanja nove poruke'
|
||||
admin_mod_notif_register = 'kod prijave novog korisnika'
|
||||
userdata_submit_button = 'Spremi'
|
||||
profile_saved = 'Profil je spremljen'
|
||||
pw_changed = 'Lozinka je izmjenjena'
|
||||
remove_user_account = '<!-- TODO -->Delete account'
|
||||
remove_user_account_link = '<!-- TODO -->Delete your user account'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = '<!-- TODO -->Delete account'
|
||||
remove_user_account_warning = '<!-- TODO -->Warning, once you delete your account, there is no going back. Please be certain! Bookmarks and account data will deleted. Your postings keep unchanged. Like an unregistered post, your display name ([user_name]) is used as author.'
|
||||
remove_user_confirm_password = 'Lozinka:'
|
||||
error_pw_wrong = 'Lozinka je neispravna'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'Stara lozinka:'
|
||||
edit_pw_new = 'Nova lozinka:'
|
||||
edit_pw_conf = 'Ponovite novu lozinku:'
|
||||
error_old_pw_wrong = 'Stara lozinka nije ispravna'
|
||||
error_pw_conf_uneven = 'Nova lozinka nije identična u oba polja'
|
||||
error_new_pw_too_short = 'Nova lozinka mora imati najmanje [characters] znakova'
|
||||
error_new_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_new_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_new_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_new_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'Nakon promjene e-mail adrese biti ćete odjavljeni i vaš će korisnički račun morati nanovo biti aktiviran. Aktivacijski ključ će vam biti poslan na novu e-mail adresu. Pobrinite se da je nova e-mail adresa ispravna! Korisnički račun mora biti aktiviran unutar jednog dana.'
|
||||
|
@ -642,21 +697,26 @@ error_email_too_long = 'E-mail adresa je predugačka'
|
|||
error_identic_email = 'Nova e-mail adresa je identična staroj'
|
||||
error_email_invalid = 'E-mail adresa je neispravna'
|
||||
pw_wrong = 'Lozinka je neispravna'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = 'Unesite željeno korisničko ime, lozinku i ispravnu e-mail adresu. Aktivacijski ključ će vam biti poslan na unesenu e-mail adresu. Korisnički račun morate aktivirati unutar jednog dana.'
|
||||
register_username = 'Korisničko ime:'
|
||||
register_user_email = 'E-mail:'
|
||||
register_pw = 'Lozinka:'
|
||||
register_pw_conf = 'Ponovite lozinku:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Samo administrator može registrirati nove korisnike.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Korisnički račun je registriran i aktivacijski ključ je poslan na <strong>[var]</strong>. Korsnički račun mora biti aktiviran unutar jednog dana.'
|
||||
registered_send_error = 'Korisnički račun je registriran ali aktivacijski ključ nije poslan zbog problema sa mail poslužiteljem. Kontaktirajte administratora i zatražite ručnu aktivaciju.'
|
||||
activation_failed = 'Aktivacija korisničkog računa nije uspjela.'
|
||||
error_password_too_short = 'Lozinka mora imati najmanje [characters] znakova'
|
||||
error_email_alr_exists = 'Već postoji korisnik sa ovom e-mail adresom'
|
||||
error_reg_not_accepted_word = 'Zaštita od spama: E-mail ili ime sadrže domenu ili riječ koju ne prihvaćamo.'
|
||||
error_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'Pošalji e-mail administratoru foruma'
|
||||
|
@ -664,6 +724,7 @@ contact_user_hl = 'Pošalji e-mail korisniku [recipient_name]'
|
|||
impossible_to_contact = 'Ovog korisnika nije moguće kontaktirati!'
|
||||
contact_doesnt_exist = 'Ovaj kontakt ne postoji!'
|
||||
sender_address_caption = 'E-mail pošiljatelja:'
|
||||
sender_confirmation_caption = '<!-- TODO -->Send me a copy of my message'
|
||||
subject_caption = 'Tema:'
|
||||
message_caption = 'Poruka:'
|
||||
message_submit_caption = 'Pošalji poruku'
|
||||
|
@ -674,7 +735,7 @@ error_message_no_subject = 'Tema je prazna'
|
|||
error_email_invalid = 'E-mail adresa je neispravna'
|
||||
error_email_subject_too_long = 'Tema je predugačka'
|
||||
error_email_text_too_long = 'Poruka je predugačka ([text_length] znakova - dozvoljeno je [text_maxlength] znakova)'
|
||||
error_spam_suspicion = 'Sumnja na spam! Prilagodite sadržaj poruke (npr. uklonite linkove)'
|
||||
error_email_spam_suspicion = 'Sumnja na spam! Prilagodite sadržaj poruke (npr. uklonite linkove)'
|
||||
|
||||
[admin]
|
||||
enabled = 'uključeno'
|
||||
|
@ -691,14 +752,14 @@ user_administr_link = 'Korisnički računi'
|
|||
smilies_administr_link = 'Smajlići'
|
||||
pages_administr_link = 'Stranice'
|
||||
spam_protection_link = 'Zaštita od spama'
|
||||
backup_restore_link = 'Sigurnosna kopija'
|
||||
update_link = 'Unaprijedi verziju'
|
||||
reset_uninstall_link = 'Isprazni ili ukloni forum'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '<!-- TODO -->Currently available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version_header = '<!-- TODO -->Currently installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -714,6 +775,8 @@ forum_address = 'Adresa foruma'
|
|||
forum_address_desc = 'URL foruma (u obliku: http://www.domena.tld/forum/)'
|
||||
forum_email = 'E-mail adresa foruma'
|
||||
forum_email_desc = 'biti će korištena kao kontakt adresa i adresa pošiljatelja za sve e-mailove poslane sa foruma'
|
||||
forum_target_name = '<!-- TODO -->Link window target'
|
||||
forum_target_name_desc = '<!-- TODO -->The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
home_link = 'Link na naslovnicu'
|
||||
home_link_desc = 'Link na naslovnicu, npr. http://www.domena.tld/ ili ../index.html (nije obavezno)'
|
||||
home_link_name = 'Naziv linka'
|
||||
|
@ -752,6 +815,7 @@ user_area = 'Korisnički dio'
|
|||
user_area_desc = 'Je li korisnički dio (popis korisnika, profili) javno dostupan?'
|
||||
public_accessible = 'javno je dostupan'
|
||||
accessible_reg_users_only = 'dostupan je samo registriranim korisnicima'
|
||||
accessible_team_users_only = '<!-- TODO -->accessible by administrators and moderators only'
|
||||
latest_postings = 'Najnovije poruke'
|
||||
latest_postings_desc = 'Koliko će najnovijih poruka biti prikazano na popisu na naslovnici (0=isključeno)?'
|
||||
tag_cloud = 'Oznake'
|
||||
|
@ -761,6 +825,10 @@ terms_of_use_settings = 'Uvjeti korištenja'
|
|||
terms_of_use_settings_desc = 'Zahtjevaj od neregistriranih korisnika da se slože sa uvjetima korištenja pri registraciji i upisu poruke'
|
||||
terms_of_use_settings_enabled = 'Uvjeti korištenja uključeni'
|
||||
terms_of_use_url = 'URL uvjeta korištenja:'
|
||||
data_privacy_statement = '<!-- TODO -->Data privacy statement'
|
||||
data_privacy_statement_desc = '<!-- TODO -->Obligation for unregistered users to agree to the data privacy statement when posting messages and registering'
|
||||
data_privacy_settings_enabled = '<!-- TODO -->Data privacy statement enabled'
|
||||
data_privacy_url = '<!-- TODO -->Data privacy statement URL:'
|
||||
edit_postings = 'Izmjena poruka'
|
||||
edit_postings_desc = 'Ponašanje pri izmjeni poruka'
|
||||
edit_own_postings = 'Ispravljanje vlastitih poruka:'
|
||||
|
@ -776,7 +844,6 @@ bbcode = 'BB kod'
|
|||
bbcode_desc = 'Uključi BB kodove za oblikovanje poruka?'
|
||||
bbcodes_enabled = 'BB kodovi su uključeni'
|
||||
bbcodes_img_enabled = 'omogući BB kod za ubacivanje slika'
|
||||
bbcodes_flash_enabled = 'omogući BB kod za ubacivanje flash sadržaja'
|
||||
smilies = 'Smajlići'
|
||||
smilies_desc = 'Trebaju li smajlići poput ":-)" biti zamijenjeni sličicom? (Smajliće je moguće urediti u administracijskom panelu)'
|
||||
smilies_enabled = 'Smajlići su uključeni'
|
||||
|
@ -861,85 +928,112 @@ delete_page_submit = 'Obriši stranicu'
|
|||
error_no_page_title = 'Bez naslova'
|
||||
|
||||
# user administration:
|
||||
user_name_empty = 'Korisničko ime nije upisano'
|
||||
num_registerd_users = '[number] registriranih korisnika'
|
||||
user_id = 'Br.'
|
||||
user_name = 'Korisničko ime'
|
||||
user_email = 'E-mail'
|
||||
user_type = 'Vrsta'
|
||||
user_registered = 'Registriran'
|
||||
user_logins = 'Prijava'
|
||||
last_login = 'Zadnja prijava'
|
||||
lock = 'Zaključaj'
|
||||
admin = 'Administrator'
|
||||
mod = 'Moderator'
|
||||
user = 'Korisnik'
|
||||
locked = 'zaključan'
|
||||
unlocked = 'otključan'
|
||||
lock_title = 'Zaključaj korisnika'
|
||||
unlock_title = 'otključaj korisnika'
|
||||
user_inactive = 'Korisnik nije aktivan'
|
||||
activate_note = 'Korisnički račun još nije aktiviran ili je korisnik u postupku prmjene svoje e-mail adrese. Aktivirajte ga samo u slučaju da korisnik ima problema sa aktivacijom.'
|
||||
activate_link = 'Aktiviraj korisnički račun'
|
||||
delete_selected_users = 'Obriši označeno'
|
||||
add_user = 'Dodaj korisnika'
|
||||
email_list = 'Pošalji popis registriranih korisnika e-mailom'
|
||||
clear_userdata = 'Obriši korisničke podatke'
|
||||
delete_avatar = 'Obriši avatar sličicu'
|
||||
delete_user_confirmation = 'Jeste li sigurni da želite obrisati ovog korisnika?'
|
||||
delete_users_confirmation = 'Jeste li sigurni da želite obrisati sljedeće korisnike?'
|
||||
delete_entries_of_user_confirm ='<!-- TODO -->Are you sure you want to delete all postings of <strong>[user]</strong>? Replies by other users will also be deleted!'
|
||||
delete_submit = 'Obriši'
|
||||
register_exp = 'Polje za lozinku može biti ostavljeno praznim u slučaju da želite generirati nasumičnu lozinku. U tom će slučaju korisnički detalji biti poslani na upisanu e-mail adresu.'
|
||||
register_username = 'Korisničko ime:'
|
||||
register_email = 'E-mail:'
|
||||
register_pw = 'Lozinka:'
|
||||
register_pw_conf = 'Potvrda lozinke:'
|
||||
register_send_userdata = 'Pošalji korisničke podatke na upisanu e-mail adresu'
|
||||
error_send_userdata = 'U slučaju praznog polja za lozinku, korisnički podaci moraju biti poslani na njihovu e-mail adresu'
|
||||
error_email_wrong = 'E-mail adresa nije ispravna'
|
||||
new_user_registered = 'Korisnik "[name]" je registriran.'
|
||||
new_user_reg_send_error = 'Korisnik "[name]" je registrirano ali korisničke detalje nije bilo moguće poslati.'
|
||||
clear_userdata_condition = 'Obriši korisnike koji su se prijavili najviše [logins] puta i posljednji put prije više od [days] dana.'
|
||||
clear_userdata_note = 'Administratori i moderatori neće biti zahvaćeni. Prije brisanja biti će prikazan popis korisnika koji zadovoljavaju uvjete.'
|
||||
no_users_in_selection = 'Nema korisnika koji zadovoljavaju postavljene uvjete.'
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name_empty = 'Korisničko ime nije upisano'
|
||||
num_registerd_users = '[number] registriranih korisnika'
|
||||
user_id = 'Br.'
|
||||
user_name = 'Korisničko ime'
|
||||
user_email = 'E-mail'
|
||||
user_type = 'Vrsta'
|
||||
user_registered = 'Registriran'
|
||||
user_logins = 'Prijava'
|
||||
last_login = 'Zadnja prijava'
|
||||
lock = 'Zaključaj'
|
||||
admin = 'Administrator'
|
||||
mod = 'Moderator'
|
||||
user = 'Korisnik'
|
||||
locked = 'zaključan'
|
||||
unlocked = 'otključan'
|
||||
lock_title = 'Zaključaj korisnika'
|
||||
unlock_title = 'otključaj korisnika'
|
||||
user_inactive = 'Korisnik nije aktivan'
|
||||
activate_note = 'Korisnički račun još nije aktiviran ili je korisnik u postupku prmjene svoje e-mail adrese. Aktivirajte ga samo u slučaju da korisnik ima problema sa aktivacijom.'
|
||||
activate_link = 'Aktiviraj korisnički račun'
|
||||
delete_selected_users = 'Obriši označeno'
|
||||
add_user = 'Dodaj korisnika'
|
||||
email_list = 'Pošalji popis registriranih korisnika e-mailom'
|
||||
reset_terms_of_use = '<!-- TODO -->reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
|
||||
clear_userdata = 'Obriši korisničke podatke'
|
||||
edit_user_avatar = '<!-- TODO -->Avatar:'
|
||||
delete_avatar = 'Obriši avatar sličicu'
|
||||
delete_user_confirmation = 'Jeste li sigurni da želite obrisati ovog korisnika?'
|
||||
delete_users_confirmation = 'Jeste li sigurni da želite obrisati sljedeće korisnike?'
|
||||
delete_entries_of_user_confirm = '<!-- TODO -->Are you sure you want to delete all postings of <strong>[user]</strong>? Replies by other users will also be deleted!'
|
||||
delete_submit = 'Obriši'
|
||||
register_exp = 'Polje za lozinku može biti ostavljeno praznim u slučaju da želite generirati nasumičnu lozinku. U tom će slučaju korisnički detalji biti poslani na upisanu e-mail adresu.'
|
||||
register_username = 'Korisničko ime:'
|
||||
register_email = 'E-mail:'
|
||||
register_pw = 'Lozinka:'
|
||||
register_pw_conf = 'Potvrda lozinke:'
|
||||
register_send_userdata = 'Pošalji korisničke podatke na upisanu e-mail adresu'
|
||||
error_send_userdata = 'U slučaju praznog polja za lozinku, korisnički podaci moraju biti poslani na njihovu e-mail adresu'
|
||||
admin_reg_error_email_wrong = 'E-mail adresa nije ispravna'
|
||||
new_user_registered = 'Korisnik "[name]" je registriran.'
|
||||
new_user_reg_send_error = 'Korisnik "[name]" je registrirano ali korisničke detalje nije bilo moguće poslati.'
|
||||
clear_userdata_condition = 'Obriši korisnike koji su se prijavili najviše [logins] puta i posljednji put prije više od [days] dana.'
|
||||
clear_userdata_note = 'Administratori i moderatori neće biti zahvaćeni. Prije brisanja biti će prikazan popis korisnika koji zadovoljavaju uvjete.'
|
||||
no_users_in_selection = 'Nema korisnika koji zadovoljavaju postavljene uvjete.'
|
||||
|
||||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Koja polja će biti zaštićena kojom vrstom CAPTCHA zaštite (samo za neregistrirane korisnike)?'
|
||||
captcha_graphical_desc = 'Grafička CAPTCHA zaštita zahtjeva GD biblioteku i preporučuje se korištenje najmanje jednog TTF fonta. Smjestite font datoteke (*.ttf) u direktorij modules/captcha/fonts/. Fontove je moguće naći na npr. www.dafont.com.'
|
||||
captcha_posting = 'Polje za sadržaj poruke:'
|
||||
captcha_email = 'E-mail polje:'
|
||||
captcha_register = 'Polje za registraciju:'
|
||||
captcha_disabled = 'isključeno'
|
||||
captcha_mathematical = 'matematički'
|
||||
captcha_graphical = 'grafički'
|
||||
gr_captcha_not_available = 'Grafička CAPTCHA zaštita nije moguća (GD biblioteka nije dostupna)'
|
||||
gr_captcha_no_font = 'CAPTCHA sliku nije moguće prikazati jer ne postoji dostupan font'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://www.bad-behavior.ioerror.us/">Bad Behavior</a> zaštita od spama.'
|
||||
bad_behavior_enable = 'uključi Bad Behavior zaštitu'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> je servis za zaštitu od spama. Za njegovo koriptenje trebate <a href="http://wordpress.com/api-keys/">Wordpress API ključ</a> (neće raditi bez ili sa neispravnim API ključem!).'
|
||||
akismet_key = 'Wordpress API ključ:'
|
||||
akismet_save_spam = 'Spremi spam (označeno kao spam i ne prikazuje se)?'
|
||||
akismet_auto_delete_spam = 'Automatsko brisanje spama nakon koliko sati (0=ne briši)?'
|
||||
akismet_entry = 'provjeri obrazac za slanje poruke'
|
||||
akismet_mail = 'provjeri obrazac za slanje e-maila'
|
||||
akismet_registered = '<!-- TODO -->check submissions of registered users'
|
||||
banned_ips = 'Zabranjene IP adrese'
|
||||
banned_ips_desc = 'IP adrese kojima je zabranjen pristup. Moguće je korisštenje IP raspona (npr. 10.10.1.*) i CIDR notacije (npr. 10.10.1.32/27). Jedna IP adresa po retku.'
|
||||
banned_user_agents = 'Zabranjeni user agenti'
|
||||
banned_user_agents_desc = 'Izrazi unutar user agenta po kojima će biti zabranjen pristup. Jedan izraz po retku.'
|
||||
not_accepted_words = 'Nedopuštene riječi'
|
||||
not_accepted_words_desc = 'Riječi ili domene koje nisu dopuštene u porukama i e-mailovima. Jedna riječ po retku.'
|
||||
spam_protection_submit = 'Spremi'
|
||||
error_own_ip_banned = 'Zabranili ste vlastitu IP adresu!'
|
||||
error_own_user_agent_banned = 'Zabranili ste vlastiti user agent!'
|
||||
spam_protection_saved = 'Postavke su spremljene'
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Koja polja će biti zaštićena kojom vrstom CAPTCHA zaštite (samo za neregistrirane korisnike)?'
|
||||
captcha_graphical_desc = 'Grafička CAPTCHA zaštita zahtjeva GD biblioteku i preporučuje se korištenje najmanje jednog TTF fonta. Smjestite font datoteke (*.ttf) u direktorij modules/captcha/fonts/. Fontove je moguće naći na npr. www.dafont.com.'
|
||||
captcha_posting = 'Polje za sadržaj poruke:'
|
||||
captcha_email = 'E-mail polje:'
|
||||
captcha_register = 'Polje za registraciju:'
|
||||
captcha_disabled = 'isključeno'
|
||||
captcha_mathematical = 'matematički'
|
||||
captcha_graphical = 'grafički'
|
||||
gr_captcha_not_available = 'Grafička CAPTCHA zaštita nije moguća (GD biblioteka nije dostupna)'
|
||||
gr_captcha_no_font = 'CAPTCHA sliku nije moguće prikazati jer ne postoji dostupan font'
|
||||
b8 = 'B8'
|
||||
b8_desc = '<!-- TODO -->Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = '<!-- TODO -->check posting form'
|
||||
b8_mail_check_enable = '<!-- TODO -->check e-mail form'
|
||||
b8_auto_training_enable = '<!-- TODO -->Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> je servis za zaštitu od spama. Za njegovo koriptenje trebate <a href="http://wordpress.com/api-keys/">Wordpress API ključ</a> (neće raditi bez ili sa neispravnim API ključem!).'
|
||||
akismet_key = 'Wordpress API ključ:'
|
||||
akismet_save_spam = 'Spremi spam (označeno kao spam i ne prikazuje se)?'
|
||||
akismet_entry = 'provjeri obrazac za slanje poruke'
|
||||
akismet_mail = 'provjeri obrazac za slanje e-maila'
|
||||
banned_ips = 'Zabranjene IP adrese'
|
||||
banned_ips_desc = 'IP adrese kojima je zabranjen pristup. Moguće je korisštenje IP raspona (npr. 10.10.1.*) i CIDR notacije (npr. 10.10.1.32/27). Jedna IP adresa po retku.'
|
||||
banned_user_agents = 'Zabranjeni user agenti'
|
||||
banned_user_agents_desc = 'Izrazi unutar user agenta po kojima će biti zabranjen pristup. Jedan izraz po retku.'
|
||||
not_accepted_words = 'Nedopuštene riječi'
|
||||
not_accepted_words_desc = 'Riječi ili domene koje nisu dopuštene u porukama i e-mailovima. Jedna riječ po retku.'
|
||||
spam_protection_submit = 'Spremi'
|
||||
error_own_ip_banned = 'Zabranili ste vlastitu IP adresu!'
|
||||
error_own_user_agent_banned = 'Zabranili ste vlastiti user agent!'
|
||||
spam_protection_saved = 'Postavke su spremljene'
|
||||
spam_check_registered = '<!-- TODO -->submissions of registered users'
|
||||
spam_check_registered_desc = '<!-- TODO -->check submissions of registered users for spam using enabled filters'
|
||||
spam_check_registered_enable = '<!-- TODO -->check submissions of registered users for spam'
|
||||
auto_delete_spam = '<!-- TODO -->Delete spam automatically'
|
||||
auto_delete_spam_desc = '<!-- TODO -->Retention period of spam'
|
||||
auto_delete_spam_timespan = 'Automatsko brisanje spama nakon koliko sati (0=ne briši)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = 'Isprazni forum'
|
||||
|
@ -951,45 +1045,14 @@ uninstall_forum_exp = 'Ova će radnja obrisati bazu foruma. Nakon toga
|
|||
uninstall_forum_submit = 'Ukloni forum'
|
||||
error_no_selection_made = 'Nema odabira'
|
||||
|
||||
# Backup:
|
||||
backup_note = 'Za pohranu sigurnosne kopije pisanje u direktorij <i>backup</i> mora biti moguće. Također se pobrinite da pristup putem weba nije moguć na istu lokaciju!'
|
||||
backup_file = 'Datoteka'
|
||||
backup_date = 'Datum'
|
||||
backup_size = 'Veličina'
|
||||
create_backup_complete = 'Napravi sigurnosnu kopiju svih podataka'
|
||||
only_create_backup_of = 'Napravi sigurnosnu kopiju samo:'
|
||||
backup_entries = 'poruka'
|
||||
backup_userdata = 'korisnika'
|
||||
backup_settings = 'postavki'
|
||||
backup_categories = 'kategorija'
|
||||
backup_pages = 'stranica'
|
||||
backup_smilies = 'smajlića'
|
||||
backup_banlists = 'popisa zabranjenih'
|
||||
backup_bookmarks = '<!-- TODO -->bookmarks'
|
||||
backup_read_status = '<!-- TODO -->read status'
|
||||
backup_temp_infos = 'temporary informations'
|
||||
download_backup_file = 'Preuzmi sigurnosnu kopiju'
|
||||
delete_selected = 'Obriši označeno'
|
||||
restore = 'Vrati sigurnosnu kopiju'
|
||||
delete_backup_file = 'Obriši datoteku sigurnosne kopije'
|
||||
delete_backup_submit = 'Obriši'
|
||||
restore_confirm = 'Jeste li sugurni da želite vratiti podatke iz ove sigurnosne kopije?<br /><strong>Sve zahvaćene tabele u bazi će biti prepisane!</strong>'
|
||||
restore_safe_mode_warning = 'Safe Mode upozorenje!'
|
||||
restore_safe_mode_note = 'Safe Mode je aktivan na ovom poslužitelju i vrijeme izvršavanja skripte nije moguće produžiti! Kako bi izbjegli nepotpune sigurnosne kopije razlomite ih u više manjih i izvršite ih jednu za drugom!'
|
||||
restore_submit = 'Vrati podatke'
|
||||
restore_backup_ok = 'Podaci su vraćeni.'
|
||||
backup_file_created = 'Sigurnosna kopija je napravljena.'
|
||||
error_file_doesnt_exist = 'Datoteka ne postoji!'
|
||||
error_delete_backup_file = 'Nije moguće obrisati datoteku sigurnosne kopije'
|
||||
error_create_backup_file = 'Datoteku nije moguće kreirati - provjerite jesu li dopuštenja za pristup ispravno postavljena na direktorij "backup"'
|
||||
error_restore_mysql = 'MySQL greška: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'Trenutna verzija: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'Kako instalirati novu verziju'
|
||||
update_instructions = 'Preporučujemo da isključite pristup forumu za vrijeme instalacije nove verzije (maknite oznaku pored "forum je uključen" u <a href="index.php?mode=admin&action=settings">postavkama foruma</a>) '
|
||||
update_instructions = 'Preuzmite najnoviju verziju sa <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'Raspakirajte arhivu, potražite odgovarajuću datoteku u poddirektoriju "update" i smjestite je u direktorij "update" na vašem poslužitelju'
|
||||
update_instructions = 'Raspakirajte arhivu'
|
||||
update_instructions = 'Potražite odgovarajuću datoteku u poddirektoriju "update" i smjestite je u direktorij "update" na vašem poslužitelju'
|
||||
update_instructions = '<!-- TODO -->Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'Datoteka za instalaciju nove verzije bi se nakon toga trebala pojaviti ispod nakon osvježavanja ove stranice'
|
||||
update_instructions = 'Kliknite na datoteku i pratite upute koje slijede'
|
||||
update_instructions = 'Nakon završetka dobit ćete popis svih datoteka i direktorija koji su dodani ili promijenjeni, i morat ćete obrisati sadržaj direktorija <em>templates_c</em>'
|
||||
|
@ -1002,13 +1065,21 @@ update_submit = 'Pokreni instalaciju'
|
|||
update_successful = 'Baza je uspješno ažurirana.'
|
||||
update_items_note = 'Molimo vas da sada pošaljete sljedeće datoteke/direktorije iz arhive foruma (verzija [version]) na vaš poslužitelj:'
|
||||
update_download = 'Ako nemate potrebne datoteke možete ih naći ovdje: [[here]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Odgovor na "[original_subject]"'
|
||||
email_text = """Pozdrav [recipient],
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] je ostavio poruku na temu \"[original_subject]\":
|
||||
|
||||
Tema: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Link na ovu poruku: [posting_address]
|
||||
|
@ -1018,7 +1089,7 @@ Link na ovu poruku: [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Ova obavjest kasni jer je poruka ručno aktivirana"""
|
||||
Ova obavjest kasni jer je poruka ručno aktivirana. This is an automatically generated email, please do not reply to this email."""
|
||||
|
||||
admin_email_subject = 'Nova poruka u forumu: [subject]'
|
||||
admin_email_text = """Nova poruka od [name]
|
||||
|
@ -1026,13 +1097,17 @@ Tema: [subject]
|
|||
|
||||
[text]
|
||||
|
||||
Link na poruku: [posting_address]"""
|
||||
Link na poruku: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_email_text_reply = """Odgovor od [name]
|
||||
Tema: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Link na poruku: [posting_address]"""
|
||||
Link na poruku: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_reg_user_email_subj = 'Forum registracija'
|
||||
admin_reg_user_email_text = """Pozdrav [name],
|
||||
dobrodošao na forum!
|
||||
|
@ -1045,7 +1120,9 @@ Lozinka: [password]
|
|||
Link za prijavu:
|
||||
[login_link]
|
||||
|
||||
Lozinku je moguće izmijeniti nakon prijave."""
|
||||
Lozinku je moguće izmijeniti nakon prijave.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
admin_activate_user_email_subj ='Forum registration'
|
||||
admin_activate_user_email_text ="""Hi [name],
|
||||
|
@ -1053,37 +1130,48 @@ welcome to the forum!
|
|||
|
||||
Link to log in directly:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
new_user_email_sj = 'Registracija na forum'
|
||||
new_user_email_txt = """Pozdrav [name],
|
||||
dobrodošao na forum!
|
||||
|
||||
za aktivaciju vašeg korisničkog računa koristite sljedeći link:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_sj = 'Nova pretplata'
|
||||
new_user_notif_txt = """Pozdrav [recipient],
|
||||
novi se korisnik pretplatio na forum.
|
||||
Korisničko ime: [name]
|
||||
E-mail: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_txt_locked = """Pozdrav [recipient],
|
||||
novi se korisnik pretplatio na forum.
|
||||
Korisničko ime: [name]
|
||||
E-mail: [email]
|
||||
|
||||
VAŽNO: Ovaj korisnik mora biti otključan kako bi se mogao prijaviti!"""
|
||||
VAŽNO: Ovaj korisnik mora biti otključan kako bi se mogao prijaviti!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
edit_address_email_sj = 'Aktivacija nakon promjene e-mail adrese'
|
||||
edit_address_email_txt = """Pozdrav [name],
|
||||
vaša je e-mail adresa promijenjena. Morate nanovo aktivirati vaš korisnički račun pomoću sljedećeg linka:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
pwf_activating_email_sj = 'Zahtjev za novom lozinkom'
|
||||
pwf_activating_email_txt = """Pozdrav [name],
|
||||
ovaj je e-mail poslan sa foruma ([forum_address]) zbog zahtjeva za novom lozinkom. Koristite donji link za potvrdu ovog zahtjeva. Nakon otvaranja linka nova će lozinka biti generirana i poslana e-mailom. Ignorirajte ovaj e-mail u slučaju da niste zatražili novu lozinku.
|
||||
|
||||
Link za potvrdu vašeg zahtjeva:
|
||||
[activating_link]"""
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_pw_email_sj = 'Novi korisnički podaci za forum'
|
||||
new_pw_email_txt = """Pozdrav [name],
|
||||
slijede vaši korisnički podaci:
|
||||
|
@ -1094,12 +1182,14 @@ Lozinka: [password]
|
|||
Koristite sljedeći link za prijavu:
|
||||
[login_link]
|
||||
|
||||
Lozinku možete izmijeniti nakon prijave."""
|
||||
Lozinku možete izmijeniti nakon prijave.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
---
|
||||
Ovaj je e-mail poslan sa foruma na adresi [forum_address]."""
|
||||
contact_email_txt_user = """[message]
|
||||
contact_email_txt_user = """[message]
|
||||
|
||||
---
|
||||
Ovaj vam je e-mail poslao korisnik [user] sa foruma na adresi [forum_address]."""
|
||||
|
@ -1111,6 +1201,20 @@ Tema: [subject]
|
|||
|
||||
---
|
||||
Ovaj je e-mail poslan sa foruma na adresi [forum_address]."""
|
||||
# <!-- TODO --> #
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
|
||||
Kind regards
|
||||
|
||||
---
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Instalacija'
|
||||
|
@ -1159,5 +1263,6 @@ error_db_inexistent = 'Navedena baza ne postoji - provjerite je li n
|
|||
error_sql_file_doesnt_exist = 'Instalacijska SQL datoteka (install.sql) ne postoji '
|
||||
error_overwrite_config_file = 'Nemam dopuštenje za prepisivanje sadržaja datoteke <strong>config/db_settings.php</strong> (postavite CHMOD 666, trenutno je [CHMOD])'
|
||||
error_sql = 'SQL greška'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'Instaliraj forum'
|
||||
error_conf_pw = 'Administratorske lozinke se ne podudaraju'
|
||||
|
|
364
lang/danish.lang
364
lang/danish.lang
|
@ -1,6 +1,7 @@
|
|||
################################################################################
|
||||
# Danish language file for my little forum 2.4.3 #
|
||||
# Danish language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
|
@ -19,6 +20,9 @@
|
|||
|
||||
[default]
|
||||
language = da
|
||||
language_code = 'da'
|
||||
language_name_system = 'danish'
|
||||
language_name_own = 'dansk'
|
||||
charset = utf-8
|
||||
locale = da_DK.utf8
|
||||
locale = da
|
||||
|
@ -26,8 +30,8 @@ locale = da_DK
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %d/%m %Y, %H:%M
|
||||
time_format_full = %A %d. %B, %Y, %H:%M
|
||||
time_format = 'd/M YYYY, HH:mm'
|
||||
time_format_full = 'EEEE, \'den\' d. MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forumtid: [time]'
|
||||
forum_time_with_time_zone = 'Forumtid: [time] ([time_zone])'
|
||||
unknown_user = 'ukendt'
|
||||
|
@ -42,6 +46,7 @@ replies = 'Svar'
|
|||
views = 'Visninger'
|
||||
category = 'Kategori'
|
||||
submit_button_ok = ' OK '
|
||||
submit_button_cancel = ' Fortryd '
|
||||
yes = 'ja'
|
||||
no = 'nej'
|
||||
go = 'Hop'
|
||||
|
@ -51,8 +56,8 @@ next_page_link = 'Næste side »'
|
|||
previous_page_link = '« Forrige side'
|
||||
next_page_link_title = 'næste side'
|
||||
previous_page_link_title = 'forrige side'
|
||||
posted_by = 'af <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'af <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'af [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'af [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klik for at gå til det originale indlæg af [name]'
|
||||
error_headline = 'Fejl!'
|
||||
no_authorisation = 'Ingen autoritet!'
|
||||
|
@ -78,6 +83,8 @@ search_default_value = 'Søg'
|
|||
search_title = 'Søg indlæg'
|
||||
new_topic_link = 'Nyt emne'
|
||||
new_topic_link_title = 'Skriv et nyt emne'
|
||||
back_to_top_link = 'Gå op'
|
||||
back_to_top_link_title = 'Gå til toppen af siden'
|
||||
order_link = 'Opstilling'
|
||||
order_link_title_1 = 'Sortér efter dato på sidste svar'
|
||||
order_link_title_2 = 'Sortér efter dato på emner (normal)'
|
||||
|
@ -115,6 +122,8 @@ back_to_entry_link = 'Tilbage til indlæg skrevet af [name]'
|
|||
back_to_entry_link_title = 'Tilbage til indlæg skrevet af [name]'
|
||||
subnav_login = 'Log ind'
|
||||
subnav_pw_forgotten = 'Glemt kodeord'
|
||||
subnav_accept_dps = 'Acceptér privatlivspolitik'
|
||||
subnav_accept_tou = 'Acceptér brugervilkår'
|
||||
subnav_admin_area = 'Admin område'
|
||||
subnav_settings = 'Forum indstillinger'
|
||||
subnav_advanced_settings = 'Advancerede indstillinger'
|
||||
|
@ -147,6 +156,7 @@ subnav_userarea_show_posts = 'Indlæg af [var]'
|
|||
subnav_userarea_edit_user = 'Rediger Profil'
|
||||
subnav_userarea_edit_pw = 'ændre Kodeord'
|
||||
subnav_userarea_edit_mail = 'ændre E-mail adresse'
|
||||
subnav_userarea_remove_account = 'Slet konto'
|
||||
subnav_backup = 'Backup'
|
||||
subnav_update = 'Opdater'
|
||||
subnav_update_run = 'Kør opdatering'
|
||||
|
@ -158,6 +168,8 @@ subnav_disabled = 'Forum deaktiveret'
|
|||
subnav_bookmarks = 'Bogmærker'
|
||||
subnav_delete_bookmark = 'Slet bogmærker'
|
||||
subnav_edit_bookmark = 'Redigér bogmærker'
|
||||
subnav_list_uploads = 'Liste over uploads'
|
||||
subnav_confirm_delete_uploads = 'Slet uploads'
|
||||
subnav_page_error = 'Fejl'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] Indlæg i [total_threads] emner, [registered_users] registrerede brugere'
|
||||
|
@ -184,7 +196,6 @@ error_invalid_date_format = 'Ugyldig dato format af fødselsdato (ÅÅÅÅ-MM-DD
|
|||
error_invalid_date = 'Ugyldig fødselsdato'
|
||||
error_email_wrong = 'E-mail adressen er ugyldig'
|
||||
error_hp_wrong = 'Hjemmeside adressen er ugyldig'
|
||||
error_pw_conf_wrong = 'Kodeordet passer ikke sammen med det gentagne kodeord'
|
||||
error_akismet_connection = 'Serveren svarede ikke, prøv venligst igen!'
|
||||
error_akismet_connection_admin = 'Kunne ikke forbinde til Akismet serveren for at verificere API nøglen!'
|
||||
error_akismet_api_key = 'Ugyldig Wordpress API Nøgle'
|
||||
|
@ -194,6 +205,7 @@ open_whole_thread = 'åben hele emnet'
|
|||
change_category_link = 'Vis indlæg i kategorien "[category]"'
|
||||
mark_linktitle = 'Marker indlæg'
|
||||
unmark_linktitle = 'Afmarker indlæg'
|
||||
unclassified_linktitle = 'Indlægget er ikke klassificeret'
|
||||
delete_marked_link = 'Slet markerede indlæg'
|
||||
manage_postings_link = 'Håndter indlæg'
|
||||
non_activated_users_link = '[counter] ikke aktiverede brugere'
|
||||
|
@ -208,6 +220,8 @@ more_smilies_label = 'flere …'
|
|||
more_smilies_title = 'flere smilies'
|
||||
close = 'luk'
|
||||
no_postings_user = 'Ingen indlæg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Søg'
|
||||
search_fulltext = 'fuld tekst'
|
||||
search_tags = 'tags'
|
||||
|
@ -247,7 +261,8 @@ no_text = '- No text -'
|
|||
error_invalid_form = 'Session udløbet! Kopier venligst teksten og log ind igen eller send teksten igen for at skrive den som gæst.'
|
||||
error_form_sent_too_fast = 'Formularen blev sendt for hurtigt - vent venligst nogle sekunder og prøv igen (automatiseret formular sendings beskyttelse)'
|
||||
error_form_sent_too_slow = 'Formularen er ikke gyldig længere - kopier venligst teksten og opdater siden'
|
||||
terms_of_use_agreement = 'Jeg er enig med [[bruger betingelserne]]'
|
||||
terms_of_use_agreement = 'Jeg accepterer [[brugerbetingelserne]]'
|
||||
data_privacy_agreement = 'Jeg accepterer [[privatlivspolitikken']]'
|
||||
error_not_accepted_word = 'Ikke accepteret ord: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Ikke accepterede ord: [not_accepted_words]'
|
||||
error_username_invalid_chars = 'Brugernavnet indeholder specialtegn'
|
||||
|
@ -267,36 +282,42 @@ error_no_subject = 'Emne er ikke udfyldt'
|
|||
error_no_text = 'Tekst er ikke udfyldt'
|
||||
terms_of_use_error_register = 'Du skal godkende brugerreglerne for at kunne fuldføre registreringen'
|
||||
terms_of_use_error_posting = 'Du skal godkende brugerreglerne for at kunne gemme dette indlæg'
|
||||
terms_of_use_error_reconf = 'Du skal acceptere ændringerne i brugerbetingelserne, for at kunne skrive flere indlæg'
|
||||
data_priv_statement_error_reg = 'Du skal acceptere privatlivspolitikken, for at fuldføre registreringen'
|
||||
data_priv_statement_error_post = 'Du skal acceptere privatlivspolitikken, for at sende dette indlæg'
|
||||
data_priv_statement_error_reconf ='Du skal acceptere ændringerne i privatlivspolitikken, for at kunne skrive flere indlæg'
|
||||
submit_button_agreed = 'Jeg accepterer'
|
||||
submit_button_disagreed = 'Jeg accepterer ikke'
|
||||
check_all = 'Markér alle'
|
||||
uncheck_all = 'fjern markering'
|
||||
delete_backup_confirm = 'Er du sikker på, at du vil slette denne backup-fil?'
|
||||
delete_sel_backup_confirm = 'Er du sikker på, at du vil slette alle markerede backup-filer?'
|
||||
drag_and_drop_title = 'Træk og slip for at gå op eller ned'
|
||||
show_all_postings_link = 'Egne indlæg'
|
||||
show_bookmarks_link = 'Bogmærker'
|
||||
show_userdata_linktitle = 'Brugerprofil for [user]'
|
||||
show_password_title = 'Vis password i almindelig tekst'
|
||||
hide_password_title = 'Skjul password'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = 'OK - Slet bogmærke'
|
||||
delete_bookmark_confirm = 'Vil du virkelig slette dette bogmærke?'
|
||||
no_bookmarks = 'Der er ingen bogmærker.'
|
||||
edit_bookmark = 'Bogmærke:'
|
||||
edit_tags = '<!-- TODO -->Tags:'
|
||||
edit_tags_note = '<!-- TODO -->(optional, separated by comma)'
|
||||
edit_tags = 'Tags:'
|
||||
edit_tags_note = '(valgfri, adskil med komma)'
|
||||
bookmark_title = 'Navn på bogmærke'
|
||||
bookmark_user_name = 'Brugernavn'
|
||||
bookmark_creation_time = 'Bogmærke sat'
|
||||
bookmark_posting_time = 'Indlæg skrevet'
|
||||
bookmark_filter_linktitle = '<!-- TODO -->Apply bookmark filter'
|
||||
clear_bookmark_filter_linkname = '<!-- TODO -->Clear bookmark filter'
|
||||
clear_bookmark_filter_linktitle = '<!-- TODO -->clear current bookmark filter and show all saved bookmarks'
|
||||
error_no_bookmark_subject = '<!-- TODO -->No subject has been entered'
|
||||
error_bookmark_subject_too_long = '<!-- TODO -->The subject is too long'
|
||||
error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
||||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
bookmark_filter_linktitle = 'Tilføj bogmærkefilter'
|
||||
clear_bookmark_filter_linkname = 'Fjern bogmærkefilter'
|
||||
clear_bookmark_filter_linktitle = 'Fjern nuværende bogmærkefilter og vis alle gemte bogmærker'
|
||||
error_no_bookmark_subject = 'Der er ikke indtastet en titel'
|
||||
error_bookmark_subject_too_long = 'Titlen er for lang'
|
||||
error_bookmark_word_too_long = 'Ordet "[word]" er for langt'
|
||||
error_bookmark_tags_limit_reached = 'Taggrænsen for bogmærker er nået'
|
||||
|
||||
[entry]
|
||||
edited_by = 'redigeret af [name], [time]'
|
||||
edited_by = 'redigeret af [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visninger'
|
||||
|
@ -345,7 +366,7 @@ hp_marking = 'Hjemmeside:'
|
|||
location_marking = 'Lokation:'
|
||||
optional = '(valgfri)'
|
||||
optional_email = '(valgfri, vil ikke blive vist offentligt)'
|
||||
honeypot_field_marking = '<!-- TODO -->Leave this field empty:'
|
||||
honeypot_field_marking = 'Lad dette felt være tomt:'
|
||||
remember_userdata_marking = 'Husk mig (cookie)'
|
||||
delete_cookie_linkname = 'slet cookie'
|
||||
category_marking = 'Kategori:'
|
||||
|
@ -353,6 +374,8 @@ subject_marking = 'Emne:'
|
|||
message_marking = 'Besked:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(valgfri, adskil med komma)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'fed'
|
||||
bbcode_bold_title = 'Fed tekst'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -385,15 +408,12 @@ bbcode_image_instr_right = 'Højre: [img=right]http://eksempel.com/billede.jpg[
|
|||
bbcode_image_label_thumb = 'miniaturebillede'
|
||||
bbcode_image_instr_thumb = 'miniaturebillede: [img=thumbnail]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'miniaturebillede venstre'
|
||||
bbcode_image_instr_thumb_left = 'miniaturebillede venstre: [img=thumbnail]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'miniaturebillede venstre: [img=thumbnail-left]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'miniaturebillede højre'
|
||||
bbcode_image_instr_thumb_right = 'miniaturebillede højre: [img=thumbnail]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'miniaturebillede højre: [img=thumbnail-right]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_upload_label = 'Upload'
|
||||
bbcode_upload_title = 'Upload billede'
|
||||
bbcode_upload_instruction = 'Upload billede …'
|
||||
bbcode_flash_label = 'Flash'
|
||||
bbcode_flash_title = 'Indsæt Flash'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = 'Indsæt TeX-kode'
|
||||
bbcode_tex_instruction = '[tex]TeX-kode[/tex]'
|
||||
|
@ -409,6 +429,9 @@ insert_smiley_title = 'Indsæt smiley'
|
|||
email_notific_reply_thread = 'E-mail besked når der svares på dette emne'
|
||||
email_notific_reply_post = 'E-mail besked når der svares på dette indlæg'
|
||||
show_signature_marking = 'Tilføj signatur'
|
||||
sticky_none = 'Fastgør ikke denne tråd'
|
||||
sticky_single_cat = 'Fastgør tråden i den valgte kategori'
|
||||
sticky_all_cats = 'Fastgør tråden i alle kategorier'
|
||||
sticky_thread = 'Opslag'
|
||||
message_submit_button = 'OK - Send'
|
||||
message_submit_title = 'Gem indlæg'
|
||||
|
@ -437,9 +460,8 @@ delete_spam_hl = 'Slet spam'
|
|||
delete_spam_confirm = 'Vil du virkelig slette alle indlæg klassificeret som spam?'
|
||||
delete_posting_submit = 'OK - Slet'
|
||||
report_spam_hl = 'Rapporter spam'
|
||||
report_spam_warning = 'Markér og rapportér kun dette indlæg som spam, hvis det helt sikkert er spam! Spamfiltre bygger på Bayes-theorem. Sandsynligheden for at et indlæg er spam, er baseret på live data. Forkerte klassificeringer resulterer i et mindre præcist filter.'
|
||||
posting_already_spam = 'Dette indlæg er allerede markeret som spam.'
|
||||
spamcheck_posting_not_checked = 'Dette indlæg er allerede markeret som HAM eller var ikke tjekket af Akismet fordi enten Akismet ikke var aktiveret eller fordi det er et indlæg af en registreret bruger.'
|
||||
spamcheck_posting_passed = 'Dette indlæg har passeret Akismet spam filteret. Rapporter det kun som spam hvis det med sikkerhed er spam!'
|
||||
spamcheck_akismet_api_error = 'Dette indlæg passerede Akismet spam filteret fordi en fejl skete imens det blev tjekket. Dette kan være foresaget af en ugyldig API nøgle!'
|
||||
spamcheck_akismet_timeout_error = 'Dette indlæg passerede spam filteret fordi Akismet serveren ikke svarede.'
|
||||
report_spam_delete_submit = 'Rapporter som spam og slet'
|
||||
|
@ -448,11 +470,17 @@ delete_only_submit = 'Slet kun'
|
|||
postings_doesnt_exist = 'Dette indlæg eksisterer ikke!'
|
||||
posting_not_flagged_as_spam = 'Dette indlæg er ikke markeret som spam.'
|
||||
flag_ham_hl = 'Marker som HAM'
|
||||
flag_ham_note = 'Dette indlæg var klassificeret som spam af Akismet spam filteret. Rapporter det kun som HAM (ikke spam) hvis det med sikkerhed ikke er spam!'
|
||||
flag_ham_warning = 'Markér og rapportér kun dette indlæg som ham (ikke spam), hvis det helt sikkert ikke er spam! Spamfiltre bygger på Bayes-theorem. Sandsynligheden for at et indlæg er spam, er baseret på live data. Forkerte klassificeringer resulterer i et mindre præcist filter.'
|
||||
report_flag_ham_submit = 'Rapporter og marker som HAM'
|
||||
flag_ham_submit = 'Marker kun som HAM'
|
||||
no_authorisation_delete = 'Indlægget kan ikke slettes! Enten er det fordi perioden mellem indlæg kan slettes er udløbet, emnet er låst eller der allerede er blevet svaret på dette indlæg.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = 'Abonnementet er opsagt'
|
||||
unsubscribed_message = 'Abonnementet for information om svar på dit indlæg, er opsagt. Du modtager ikke flere e-mails vedrørende dette indlæg. Abonnementer om øvrige indlæg, er ikke ændret.'
|
||||
unsubscribe_error_hl = 'Abonnementet kunne ikke opsiges'
|
||||
unsubscribe_error_message = 'Der skete desværre en fejl under opsigelse af abonnementet. Kontakt venligst forum administrator pr e-mail om denne fejl. Medsend venligst ID-nummeret på indlægget (findes i linket i e-mailen (URL-parameter "unsubscribe")) samt tidspunktet, hvor fejlen opstod.'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Spam beskyttelsestjek:'
|
||||
captcha_expl_math = 'Regn venligst de to tal ud:'
|
||||
|
@ -480,12 +508,6 @@ no_images = 'Ingen billeder tilgængelige'
|
|||
delete_image_confirm = 'Slet dette billede?'
|
||||
delete_image_button = 'OK - Slet'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'Indsæt flash-video'
|
||||
flash_url = 'URL:'
|
||||
flash_size = 'Størrelse:'
|
||||
insert_flash_button = 'Indsæt flash-video'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Avatar'
|
||||
delete_avatar = 'Slet avatar'
|
||||
|
@ -545,6 +567,7 @@ pwf_username = 'Brugernavn:'
|
|||
pwf_email = 'E-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Brugerliste'
|
||||
user_name = 'Brugernavn'
|
||||
user_type = 'Type'
|
||||
admin = 'Admin'
|
||||
|
@ -607,7 +630,10 @@ edit_email = 'ændre E-mail adresse'
|
|||
edit_user_pw = 'Kodeord:'
|
||||
pw_not_displayed = 'vises ikke'
|
||||
edit_pw = 'ændre kodeord'
|
||||
edit_user_email_contact = 'E-mail adresse kan kontaktes'
|
||||
edit_user_contacting = 'Kontakt til:'
|
||||
edit_user_contacting_disabled = 'Begrænset til administratorer og moderatorer'
|
||||
edit_user_contacting_registered = 'Begrænset til registrerede brugere'
|
||||
edit_user_contacting_public = 'Ubegrænset'
|
||||
edit_user_real_name = 'Navn:'
|
||||
edit_user_gender = 'Køn:'
|
||||
gender_not_specified = 'ikke angivet'
|
||||
|
@ -630,20 +656,35 @@ edit_user_theme = 'Grafisk tema:'
|
|||
edit_user_default_theme = 'Standard ([default_theme])'
|
||||
edit_user_auto_login = 'Auto login:'
|
||||
enable_auto_login = 'Aktivér auto login'
|
||||
edit_user_where_to_open_links = 'Skal links <em>i indlæg</em> åbne i samme eller i et nyt browser vindue?'
|
||||
where_to_open_links_forum_def = 'Brug forummets egne indstillinger (default eller sat af admistrator)'
|
||||
where_to_open_links_same = 'Åben alle links i samme browser vindue'
|
||||
where_to_open_links_external = 'Åben links til andre websites i et nyt browser vindue (afhængig af dine browser indstillinger)'
|
||||
where_to_open_links_all = 'Åben alle links i et nyt browser vindue (afhængig af dine browser indstillinger)'
|
||||
edit_user_notification = 'E-mail besked:'
|
||||
admin_mod_notif_posting = 'Når et indlæg bliver tilføjet'
|
||||
admin_mod_notif_register = 'Når en ny bruger har registreret sig'
|
||||
userdata_submit_button = 'OK - Gem'
|
||||
profile_saved = 'Din profil er gemt'
|
||||
pw_changed = 'Dit password er ændret'
|
||||
remove_user_account = 'Slet konto'
|
||||
remove_user_account_link = 'Slet din brugerkonto'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = 'Slet konto'
|
||||
remove_user_account_warning = 'Advarsel, når du sletter din konto, er den væk. Vær helt sikker på, at du vil slette den! Bogmærker og brugerdata bliver slettet. Dine indlæg slettes ikke og dit brugernavn står som afsender.'
|
||||
remove_user_confirm_password = 'Kodeord:'
|
||||
error_pw_wrong = 'Kodeordet er forkert'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'Gammelt kodeord:'
|
||||
edit_pw_new = 'Nyt kodeord:'
|
||||
edit_pw_conf = 'Gentag nyt kodeord:'
|
||||
error_old_pw_wrong = 'Det gamle kodeord er forkert'
|
||||
error_pw_conf_wrong = 'Det nye kodeord er ikke det samme som det gentagne'
|
||||
error_new_pw_too_short = 'Det nye kodeord skal indeholde mindst [characters] tegn'
|
||||
error_new_pw_needs_digit = 'Kodeordet skal indeholde mindst [digits] tegn'
|
||||
error_new_pw_needs_lowercase_letter = 'Kodeordet skal indeholde mindst [lowercase_letters] små bogstaver'
|
||||
error_new_pw_needs_uppercase_letter = 'Kodeordet skal indeholde mindst [uppercase_letters] store bogstaver'
|
||||
error_new_pw_needs_special_character ='Kodeordet skal indeholde mindst [special_characters] special tegn'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'Når e-mail adressen ændres, bliver du logget ud og kontoen skal aktiveres igen. En aktiverings nøgle vil blive sendt til den nye e-mail adresse. Vær sikker på at e-mail adressen er korrekt! Kontoen skal aktiveres indenfor det næste døgn.'
|
||||
|
@ -656,39 +697,45 @@ error_email_too_long = 'E-mail adressen er for lang'
|
|||
error_identic_email = 'Den nye e-mail er den samme som den gamle'
|
||||
error_email_invalid = 'E-mail adressen er ugyldig'
|
||||
pw_wrong = 'Kodeordet er forkert'
|
||||
error_email_collision = 'Den nye email eksisterer allerede'
|
||||
|
||||
[register]
|
||||
register_exp = 'Angiv venligst det ønskede brugernavn, et kodeord og en gyldig e-mail adresse. En aktiverings nøgle vil blive sendt til denne e-mail adresse. Kontoen skal aktiveres indenfor det næste døgn.'
|
||||
register_username = 'Brugernavn:'
|
||||
register_user_email = 'E-mail:'
|
||||
register_pw = 'Kodeord:'
|
||||
register_pw_conf = 'Gentag Kodeord:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_honeypot_field = 'Lad dette felt være tomt:'
|
||||
register_only_by_admin = 'Brugere kan kun blive registreret af forum administratoren.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontoen er registreret og aktiverings nøglen er sendt til <strong>[var]</strong>. Kontoen skal aktiveres indenfor det næste døgn.'
|
||||
registered_send_error = 'Kontoen er registreret men aktiverings nøglen kunne ikke sendes (mailserver ikke tilgængelig). Kontakt venligst forum administratoren og spørg efter en manuel konto aktivering.'
|
||||
activation_failed = 'Aktiveringen af kontoen fejlede.'
|
||||
error_password_too_short = 'Kodeordet skal indeholde mindst [characters] tegn'
|
||||
error_email_alr_exists = 'Der findes allerede en bruger med denne e-mail adresse'
|
||||
error_reg_not_accepted_word = 'Spam beskyttelse: E-mail eller navn kan ikke godkendes'
|
||||
error_pw_needs_digit = 'Kodeordet skal indeholde mindst [digits] tegn'
|
||||
error_pw_needs_lowercase_letter = 'Kodeordet skal indeholde mindst [lowercase_letters] små bogstaver'
|
||||
error_pw_needs_uppercase_letter = 'Kodeordet skal indeholde mindst [uppercase_letters] store bogstaver'
|
||||
error_pw_needs_special_character ='Kodeordet skal indeholde mindst [special_characters] special tegn'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'E-mail til webmaster'
|
||||
contact_user_hl = 'E-mail til [recipient_name]'
|
||||
impossible_to_contact = 'Denne bruger kan ikke kontaktes!'
|
||||
contact_doesnt_exist = 'Denne kontakt eksisterer ikke!'
|
||||
sender_address_caption = 'Afsender e-mail:'
|
||||
subject_caption = 'Emne:'
|
||||
message_caption = 'Besked:'
|
||||
message_submit_caption = 'OK - Send besked'
|
||||
email_sent = 'Beskeden er sendt uden fejl.'
|
||||
contact_hl = 'E-mail til webmaster'
|
||||
contact_user_hl = 'E-mail til [recipient_name]'
|
||||
impossible_to_contact = 'Denne bruger kan ikke kontaktes!'
|
||||
contact_doesnt_exist = 'Denne kontakt eksisterer ikke!'
|
||||
sender_address_caption = 'Afsender e-mail:'
|
||||
sender_confirmation_caption = 'Send mig en kopi af min besked'
|
||||
subject_caption = 'Emne:'
|
||||
message_caption = 'Besked:'
|
||||
message_submit_caption = 'OK - Send besked'
|
||||
email_sent = 'Beskeden er sendt uden fejl.'
|
||||
error_message_no_text = 'Ingen besked indtastet'
|
||||
error_message_no_email = 'Ingen afsender e-mail adresse indtastet'
|
||||
error_message_no_subject = 'Intet emne indtastet'
|
||||
error_email_invalid = 'E-mail adressen er ugyldig'
|
||||
error_email_subject_too_long = 'Emnet er for langt'
|
||||
error_email_text_too_long = 'Beskeden er for lang ([text_length] skrifttegn - kun [text_maxlength] skrifttegn er tilladt)'
|
||||
error_spam_suspicion = 'Spam mistanke! ændre venligst din besked (fjern f.eks. links)'
|
||||
error_email_invalid = 'E-mail adressen er ugyldig'
|
||||
error_email_subject_too_long = 'Emnet er for langt'
|
||||
error_email_text_too_long = 'Beskeden er for lang ([text_length] skrifttegn - kun [text_maxlength] skrifttegn er tilladt)'
|
||||
error_email_spam_suspicion = 'Spam mistanke! ændre venligst din besked (fjern f.eks. links)'
|
||||
|
||||
[admin]
|
||||
enabled = 'aktiveret'
|
||||
|
@ -705,15 +752,15 @@ user_administr_link = 'Bruger administrering'
|
|||
smilies_administr_link = 'Smilies'
|
||||
pages_administr_link = 'Sider'
|
||||
spam_protection_link = 'Spam beskyttelse'
|
||||
backup_restore_link = 'Backup'
|
||||
update_link = 'Opdater'
|
||||
reset_uninstall_link = 'Nulstil eller afinstallér forum'
|
||||
upload_administr_link = 'administrér uploads'
|
||||
releases_info_header = 'Aktuel tilgængelig version'
|
||||
releases_list_link = 'Se versionslisten for seneste tilgængelige version.'
|
||||
warning_header = 'Advarsel'
|
||||
warning_install_script_exists = 'Af sikkerhedshensyn anbefales det at slette eller omdøbe <code>install/index.php</code> filen!'
|
||||
actual_installed_version_header = '<!-- TODO -->Aktuelle version'
|
||||
actual_installed_version = '<!-- TODO -->Versionsnummer: <strong>[current_version_string]</strong>'
|
||||
actual_installed_version_header = '<!-- TODO -->Aktuel version'
|
||||
actual_installed_version = 'Versionsnummer: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
clear_chache = 'Ryd cache for at tilføje ændringerne til allerede eksisterende indlæg'
|
||||
|
@ -728,6 +775,8 @@ forum_address = 'Forum adresse'
|
|||
forum_address_desc = 'URL til forumet (brug dette format: http://www.domæne.tld/forum/)'
|
||||
forum_email = 'Forum e-mail adresse'
|
||||
forum_email_desc = 'Vil blive brugt som kontakt adresse og afsender adresse for alle e-mails som bliver sendt af forumet'
|
||||
forum_target_name = 'Link window target'
|
||||
forum_target_name_desc = 'Target angiver, hvordan et link i et indlæg skal åbnes. Det er især vigtigt, hvis forummet vises i <code>frame</code> eller <code>iframe</code>. Gyldige værdier er <code>_self</code> for at åbne linket i det samme browser vindue eller faneblad, <code>_parent</code> for at åbne linket i parent frame af den aktuelle frame i et frameset, <code>_top</code> for helt at bryde ud af et frameset til toppen af det aktuelle browser vindue eller faneblad.'
|
||||
home_link = 'Hjemmeside link'
|
||||
home_link_desc = 'Link til din hjemmeside, f.eks. http://www.domæne.tld/ eller ../index.html (valgfri)'
|
||||
home_link_name = 'Hjemmeside link navn'
|
||||
|
@ -766,6 +815,7 @@ user_area = 'Bruger område'
|
|||
user_area_desc = 'Er bruger området (bruger liste, profiler) tilgængelig for offentligheden?'
|
||||
public_accessible = 'offentlig tilgængelig'
|
||||
accessible_reg_users_only = 'kun tilgængelig for registrerede brugere'
|
||||
accessible_team_users_only ='kun tilgængelig for administratorer og moderatorer'
|
||||
latest_postings = 'Seneste indlæg'
|
||||
latest_postings_desc = 'Hvor mange seneste indlæg skal vises i en liste på forsiden (0=deaktiveret)? '
|
||||
tag_cloud = 'Tag sky'
|
||||
|
@ -775,6 +825,10 @@ terms_of_use_settings = 'Brugerbetingelser'
|
|||
terms_of_use_settings_desc = 'Obligatorisk for ikke registrerede brugere at være enige med brugerbetingelserne når de skriver beskeder og registrerer'
|
||||
terms_of_use_settings_enabled = 'Brugerbetingelser aktiveret'
|
||||
terms_of_use_url = 'Brugerbetingelser URL:'
|
||||
data_privacy_statement = 'Privatlivspolitik'
|
||||
data_privacy_statement_desc = 'Krav til ikke-registrerede brugere, om at acceptere privatlivspolitikken ved registrering og indsendelse af indlæg'
|
||||
data_privacy_settings_enabled = 'Privatlivspolitik er aktiveret'
|
||||
data_privacy_url = 'Privatlivspolitik URL:'
|
||||
edit_postings = 'Redigering af indlæg'
|
||||
edit_postings_desc = 'Redigering af indlæg opførsel'
|
||||
edit_own_postings = 'Redigering af egne indlæg:'
|
||||
|
@ -790,7 +844,6 @@ bbcode = 'BB Kode'
|
|||
bbcode_desc = 'Aktiver BB Koder til formatering af beskeder?'
|
||||
bbcodes_enabled = 'BB Koder aktiveret'
|
||||
bbcodes_img_enabled = 'Tillad også BB kode til indsættelse af billeder'
|
||||
bbcodes_flash_enabled = 'Tillad BB kode til indsættelse af Flash-videoer'
|
||||
smilies = 'Smilies'
|
||||
smilies_desc = 'Skal smilies som ":-)" erstattes af billeder? (Smilies kan defineres i smilies administratons panelet)'
|
||||
smilies_enabled = 'Smilies aktiveret'
|
||||
|
@ -875,6 +928,7 @@ delete_page_submit = 'OK - Slet side'
|
|||
error_no_page_title = 'Ingen titel'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'Brugerliste'
|
||||
user_name_empty = 'Intet brugernavn indtastet'
|
||||
num_registerd_users = '[number] registrerede brugere'
|
||||
user_id = 'ID'
|
||||
|
@ -898,7 +952,10 @@ activate_link = 'Aktiver konto'
|
|||
delete_selected_users = 'Slet valgte'
|
||||
add_user = 'Tilføj bruger'
|
||||
email_list = 'E-mail liste af registrerede brugere'
|
||||
reset_terms_of_use = 'Nulstil acceptering af brugerbetingelser'
|
||||
reset_data_privacy_statement = 'Nulstil acceptering af privatlivspolitik'
|
||||
clear_userdata = 'Ryd brugerdata'
|
||||
edit_user_avatar = 'Avatar:'
|
||||
delete_avatar = 'Slet avatar'
|
||||
delete_user_confirmation = 'Er du sikker på, at du vil slette denne bruger?'
|
||||
delete_users_confirmation = 'Er du sikker på, at du vil slette følgende brugere?'
|
||||
|
@ -911,49 +968,72 @@ register_pw = 'Password:'
|
|||
register_pw_conf = 'Gentag password:'
|
||||
register_send_userdata = 'Send loginoplysninger til ovenstående e-mailadresse'
|
||||
error_send_userdata = 'Hvis du lader passwordfeltet være tomt, sendes loginoplysninger til den indtastede e-mailadresse'
|
||||
error_email_wrong = 'Der er fejl i e-mailadressen'
|
||||
admin_reg_error_email_wrong = 'Der er fejl i e-mailadressen'
|
||||
new_user_registered = 'Brugeren "[name]" er registreret.'
|
||||
new_user_reg_send_error = 'Brugeren "[name]" er registreret men loginoplysninger kunne ikke sendes'
|
||||
clear_userdata_condition = 'Slet brugere der har logget ind maksimalt [logins] gange, og siste gang mere end [days] dage siden'
|
||||
clear_userdata_note = 'Administratorer og redaktører vil ikke blive berørt. Før sletning ser du en liste over alle valgte brugere.'
|
||||
no_users_in_selection = 'Ingen brugere fundet'
|
||||
|
||||
# upload management
|
||||
upload_administration = 'Uploadstyring'
|
||||
mark_upload_for_removal = 'Markér til sletning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Ingen uploadede filer fundet.'
|
||||
delete_upload_confirmation = 'Er du sikker på, du vil slette denne upload?'
|
||||
delete_uploads_confirmation = 'Er du sikker på, du vil slette disse upload?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Hvilke formularer skal beskyttes af hvilken type CAPTCHA (kun for ikke registrerede brugere)?'
|
||||
captcha_graphical_desc = 'Den grafiske CAPTCHA kræver GD Lib og det anbefales at bruge mindst en TTF skrifttype. Læg skrifttype filerne (*.ttf) ind i mappen modules/captcha/fonts/. Du kan hente skrifttyper på f.eks. www.dafont.com.'
|
||||
captcha_posting = 'Indlæg formular:'
|
||||
captcha_email = 'E-mail formular:'
|
||||
captcha_register = 'Registrerings formular:'
|
||||
captcha_disabled = 'deaktiveret'
|
||||
captcha_mathematical = 'matematisk'
|
||||
captcha_graphical = 'grafisk'
|
||||
gr_captcha_not_available = 'Grafisk CAPTCHA ikke tilgængelig (GD Lib ikke tilgængelig)'
|
||||
gr_captcha_no_font = 'Ingen skrifttyper tilgængelige, CAPTCHA kode kan ikke vises optimalt'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam beskyttelse. Kontrollér e-mail adresse på bruger'
|
||||
stop_forum_spam_enable = 'Aktivér Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://www.bad-behavior.ioerror.us/">Bad Behavior</a> spam beskyttelse.'
|
||||
bad_behavior_enable = 'aktiver Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> spam beskyttelses service. For at bruge den skal du bruge en <a href="http://wordpress.com/api-keys/">Wordpress API Nøgle</a> (vil ikke virke uden eller med en ugyldig API Nøgle!).'
|
||||
akismet_key = 'Wordpress API Nøgle:'
|
||||
akismet_save_spam = 'Gem spam (markeret som spam og ikke vist)?'
|
||||
akismet_auto_delete_spam = 'Slet spam automatisk efter hvor mange timer (0=slet ikke)?'
|
||||
akismet_entry = 'tjek indlæg formular'
|
||||
akismet_mail = 'tjek e-mail formular'
|
||||
akismet_registered = 'Kontrolér indlæg fra registrerede brugere'
|
||||
banned_ips = 'Udelukkede IP-adresser'
|
||||
banned_ips_desc = 'IP adresser som ikke skal have adgang. Flere IP adresser skal deles med komma. IP ranges (f.eks. 10.10.1.*) og CIDR notation (e.g. 10.10.1.32/27) er muligt. En IP adresse pr. linie.'
|
||||
banned_user_agents = 'Udelukkede bruger agenter'
|
||||
banned_user_agents_desc = 'Strenge i bruger agenter som ikke skal have adgang. For at definere flere strenge skal de deles med kommaer.'
|
||||
not_accepted_words = 'Ikke accepterede ord'
|
||||
not_accepted_words_desc = 'Ord eller domæner som ikke vil blive accepteret i indlæg og e-mails. For at definere flere ord skal de deles med kommaer.'
|
||||
spam_protection_submit = 'OK - Gem'
|
||||
error_own_ip_banned = 'Du blokerede dit eget IP-nummer!'
|
||||
error_own_user_agent_banned = 'Du blokerede din egen user-agent!'
|
||||
spam_protection_saved = 'Gemt'
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Hvilke formularer skal beskyttes af hvilken type CAPTCHA (kun for ikke registrerede brugere)?'
|
||||
captcha_graphical_desc = 'Den grafiske CAPTCHA kræver GD Lib og det anbefales at bruge mindst en TTF skrifttype. Læg skrifttype filerne (*.ttf) ind i mappen modules/captcha/fonts/. Du kan hente skrifttyper på f.eks. www.dafont.com.'
|
||||
captcha_posting = 'Indlæg formular:'
|
||||
captcha_email = 'E-mail formular:'
|
||||
captcha_register = 'Registrerings formular:'
|
||||
captcha_disabled = 'deaktiveret'
|
||||
captcha_mathematical = 'matematisk'
|
||||
captcha_graphical = 'grafisk'
|
||||
gr_captcha_not_available = 'Grafisk CAPTCHA ikke tilgængelig (GD Lib ikke tilgængelig)'
|
||||
gr_captcha_no_font = 'Ingen skrifttyper tilgængelige, CAPTCHA kode kan ikke vises optimalt'
|
||||
b8 = 'B8'
|
||||
b8_desc = 'Bayes-baseret spamfilter <a href="https://nasauber.de/opensource/b8/">B8</a>, som bruger individuelle træningsdata'
|
||||
b8_entry_check_enable = 'Kontrollér indlæg'
|
||||
b8_mail_check_enable = 'Kontrollér e-mails'
|
||||
b8_auto_training_enable = 'Automatisk filtertræning (Kun relevant efter tilstrækkelig manuel træning af spam og ham indlæg!)'
|
||||
b8_spam_probability_threshold = 'Tærskel for at klassificere spam. Gyldigt område er fra 0% til 100%, f.eks. betyder et signifikansniveau på 80%, at 20 af 100 poster er forkert klassificeret af filteret som spam (falsk positiv)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam beskyttelse. Kontrollér e-mail adresse på bruger'
|
||||
stop_forum_spam_enable = 'Aktivér Stop Forum Spam'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> spam beskyttelses service. For at bruge den skal du bruge en <a href="http://wordpress.com/api-keys/">Wordpress API Nøgle</a> (vil ikke virke uden eller med en ugyldig API Nøgle!).'
|
||||
akismet_key = 'Wordpress API Nøgle:'
|
||||
akismet_save_spam = 'Gem spam (markeret som spam og ikke vist)?'
|
||||
akismet_entry = 'tjek indlæg formular'
|
||||
akismet_mail = 'tjek e-mail formular'
|
||||
banned_ips = 'Udelukkede IP-adresser'
|
||||
banned_ips_desc = 'IP adresser som ikke skal have adgang. Flere IP adresser skal deles med komma. IP ranges (f.eks. 10.10.1.*) og CIDR notation (e.g. 10.10.1.32/27) er muligt. En IP adresse pr. linie.'
|
||||
banned_user_agents = 'Udelukkede bruger agenter'
|
||||
banned_user_agents_desc = 'Strenge i bruger agenter som ikke skal have adgang. For at definere flere strenge skal de deles med kommaer.'
|
||||
not_accepted_words = 'Ikke accepterede ord'
|
||||
not_accepted_words_desc = 'Ord eller domæner som ikke vil blive accepteret i indlæg og e-mails. For at definere flere ord skal de deles med kommaer.'
|
||||
spam_protection_submit = 'OK - Gem'
|
||||
error_own_ip_banned = 'Du blokerede dit eget IP-nummer!'
|
||||
error_own_user_agent_banned = 'Du blokerede din egen user-agent!'
|
||||
spam_protection_saved = 'Gemt'
|
||||
spam_check_registered = 'indlæg fra registrerede brugere'
|
||||
spam_check_registered_desc = 'Kontrollér indlæg fra registrerede brugere'
|
||||
spam_check_registered_enable = 'Kontrollér indlæg fra registrerede brugere for spam'
|
||||
auto_delete_spam = 'Slet spam automatisk'
|
||||
auto_delete_spam_desc = 'Opbevaringsperiode for spam'
|
||||
auto_delete_spam_timespan = 'Slet spam automatisk efter hvor mange timer (0=slet ikke)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = 'Nulstil forum
|
||||
|
@ -965,45 +1045,14 @@ uninstall_forum_exp = 'Dette vil slette alle forum tabeller. Efter dette v
|
|||
uninstall_forum_submit = 'OK - Afinstaller forum
|
||||
error_no_selection_made = 'Intet er valgt
|
||||
|
||||
# Backup:
|
||||
backup_note = 'For at bruge backup funktionen skal mappen <i>backup</i> være mulig at skrive til. Sørg også for at denne mappe ikke er tilgængelig fra nettet!'
|
||||
backup_file = 'Fil'
|
||||
backup_date = 'Dato'
|
||||
backup_size = 'Størrelse'
|
||||
create_backup_complete = 'Lav komplet backup'
|
||||
only_create_backup_of = 'Lav kun backup af:'
|
||||
backup_entries = 'indlæg'
|
||||
backup_userdata = 'brugerdata'
|
||||
backup_settings = 'indstillinger'
|
||||
backup_categories = 'kategorier'
|
||||
backup_pages = 'sider'
|
||||
backup_smilies = 'smilies'
|
||||
backup_banlists = 'banlister'
|
||||
backup_bookmarks = 'bogmærker'
|
||||
backup_read_status = 'læsestatus'
|
||||
backup_temp_infos = 'midlertidige informationer'
|
||||
download_backup_file = 'Download backup fil'
|
||||
delete_selected = 'Slet valgte'
|
||||
restore = 'Gendan'
|
||||
delete_backup_file = 'Slet backup fil'
|
||||
delete_backup_submit = 'OK - Slet'
|
||||
restore_confirm = 'Er du sikker på du vil gendanne databasen med denne backup fil?<br /><strong>Alle påvirkede tabeller vil blive overskrevet!</strong>'
|
||||
restore_safe_mode_warning = 'Safe Mode Advarsel!'
|
||||
restore_safe_mode_note = 'Da Safe Mode er aktiveret på denne server kan scriptets løbetid ikke udvides! For at undgå ukomplette backups skal du dele lange backup filer i mindre filer og køre dem en efter en!'
|
||||
restore_submit = 'OK - Gendan'
|
||||
restore_backup_ok = 'Backup'en blev gendannet.'
|
||||
backup_file_created = 'Backup filen er lavet.'
|
||||
error_file_doesnt_exist = 'Filen eksisterer ikke!'
|
||||
error_delete_backup_file = 'Backup fil kunne ikke slettes'
|
||||
error_create_backup_file = 'Filen kunne ikke laves - sørg for at du kan skrive til mappen "backup"'
|
||||
error_restore_mysql = 'MySQL fejl: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'Nuværende version: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'Hvordan man opdaterer'
|
||||
update_instructions = 'Det er anbefalet at deaktivere forumet mens man opdaterer (afmarker "forum aktiveret" i <a href="index.php?mode=admin&action=settings">forum indstillinger</a>)'
|
||||
update_instructions = 'Download den seneste version fra <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'Pak script pakken ud, kig efter opdaterings filen i undermappen "update" og upload denne fil i mappen "update" på din server.'
|
||||
update_instructions = 'Pak script pakken ud.'
|
||||
update_instructions = 'Kig efter opdaterings filen i undermappen "update" og upload denne fil i mappen "update" på din server.'
|
||||
update_instructions = 'Find filen "VERSION" i undermappen "config" og upload den til mappen "config" på din server'
|
||||
update_instructions = 'Opdater denne side og opdaterings filen skulle dukke op herunder'
|
||||
update_instructions = 'Klik på filen og følg instrukserne'
|
||||
update_instructions = 'Efter opdateringen får du en liste over filer og mapper som er blevet tilføjet eller erstattet '
|
||||
|
@ -1016,13 +1065,21 @@ update_submit = 'OK - Kør opdatering'
|
|||
update_successful = 'Databasen blev opdateret uden fejl.'
|
||||
update_items_note = 'Upload nu venligst de følgende filer/mapper fra den nye forum pakke (version [version]) på din server:'
|
||||
update_download = 'Hvis du endnu ikke har disse filer kan du downloade dem [[her]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Svar til "[original_subject]"'
|
||||
email_text = """Hej [recipient],
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] har skrevet et svar til \"[original_subject]\":
|
||||
|
||||
Emne: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
URL til dette indlæg: [posting_address]
|
||||
|
@ -1032,7 +1089,7 @@ URL til dette indlæg: [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Denne notifikation er forsinket fordi indlægget var aktiveret manuelt"""
|
||||
Denne notifikation er forsinket fordi indlægget var aktiveret manuelt. This is an automatically generated email, please do not reply to this email."""
|
||||
|
||||
admin_email_subject = 'Nyt indlæg i forumet: [subject]'
|
||||
admin_email_text = """Nyt Indlæg af [name]
|
||||
|
@ -1040,13 +1097,17 @@ Emne: [subject]
|
|||
|
||||
[text]
|
||||
|
||||
URL til dette indlæg: [posting_address]"""
|
||||
URL til dette indlæg: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_email_text_reply = """Svar af [name]
|
||||
Emne: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
URL til dette indlæg: [posting_address]"""
|
||||
URL til dette indlæg: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_reg_user_email_subj = 'Forum registrering'
|
||||
admin_reg_user_email_text = """Hej [name],
|
||||
Velkommen til forummet!
|
||||
|
@ -1059,7 +1120,9 @@ Kodeord: [password]
|
|||
Link til at logge direkte ind:
|
||||
[login_link]
|
||||
|
||||
Dit kodeord kan ændres efter du er logget ind."""
|
||||
Dit kodeord kan ændres efter du er logget ind.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
admin_activate_user_email_subj = 'Forum registrering'
|
||||
admin_activate_user_email_text = """Hej [name],
|
||||
|
@ -1067,37 +1130,48 @@ Velkommen til forummet!
|
|||
|
||||
Link til log ind:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
new_user_email_sj = 'Forum registrering'
|
||||
new_user_email_txt = """Hej [name],
|
||||
Velkommen til forummet!
|
||||
|
||||
Følg venligst dette link for at aktivere din konto:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_sj = 'Ny bruger registreret'
|
||||
new_user_notif_txt = """Hej [recipient],
|
||||
En ny bruger er registreret i forummet.
|
||||
Brugernavn: [name]
|
||||
E-mail: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_txt_locked = """Hej [recipient],
|
||||
En ny bruger er registreret i forummet.
|
||||
Brugernavn: [name]
|
||||
E-mail: [email]
|
||||
|
||||
VIGTIGT: Denne bruger skal låses op før han/hun kan logge ind!"""
|
||||
VIGTIGT: Denne bruger skal låses op før han/hun kan logge ind!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
edit_address_email_sj = 'Konto aktivering efter ændring af e-mail adresse'
|
||||
edit_address_email_txt = """Hej [name],
|
||||
E-mail adressen er ændret. Du skal nu aktivere din konto igen ved at følge dette link:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
pwf_activating_email_sj = 'Nyt kodeord'
|
||||
pwf_activating_email_txt = """Hej [name],
|
||||
Denne e-mail er sendt fra forumet ([forum_address]) fordi der er bedt om et nyt kodeord. Klik venligst på linket for at godkende. Et nyt kodeord vil blive lavet og sendt til dig ved at klikke på linket. Hvis denne e-mail er sendt ved en fejl (enten af dig selv eller en anden) skal du venligst ignorere denne e-mail.
|
||||
|
||||
Link til at bekræfte din tilmelding:
|
||||
[activating_link]"""
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_pw_email_sj = 'Nye bruger data til forummet'
|
||||
new_pw_email_txt = """Hej [name],
|
||||
her er dine nye bruger data:
|
||||
|
@ -1108,7 +1182,9 @@ Kodeord: [password]
|
|||
Klik her for at logge direkte ind:
|
||||
[login_link]
|
||||
|
||||
Kodeordet kan ændres efter du er logget ind."""
|
||||
Kodeordet kan ændres efter du er logget ind.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
---
|
||||
|
@ -1125,6 +1201,19 @@ Emne: [subject]
|
|||
|
||||
---
|
||||
Denne e-mail er sendt via forumet på [forum_address]."""
|
||||
email_notify_inactive_user_subject = 'Underretning om inaktivitet [name]'
|
||||
email_notify_inactive_user_text = """Hej [name],
|
||||
|
||||
vi har bemærket, at dit sidste login til forummet på [forum_address] er mere end [inactive_time_span] år siden.
|
||||
GDPR tillader ikke ubegrænset lagring af brugerdata. I henhold til GDPR sletter vi derfor inaktive brugerkonti med jævne mellemrum.
|
||||
|
||||
For at forhindre kontoen i at blive slettet af os, skal du blot logge ind på forummet inden for de næste [days_until_delete] dage.
|
||||
Ellers sletter vi din konto. Dine opslag vil blive bevaret, men vil blive tildelt en anonym bruger med et tilfældigt brugernavn.
|
||||
|
||||
Med venlig hilsen
|
||||
|
||||
---
|
||||
Dette er en automatisk genereret informationsmeddelelse. Svar venligst ikke på denne email."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installation'
|
||||
|
@ -1173,5 +1262,6 @@ error_db_inexistent = 'Specificeret database eksisterer ikke - tjek v
|
|||
error_sql_file_doesnt_exist = 'Installations SQL fil (install.sql) eksisterer ikke '
|
||||
error_overwrite_config_file = 'Ingen rettighed til at overskrive filen <strong>config/db_settings.php</strong> (sæt CHMOD 666, nuværende er [CHMOD])'
|
||||
error_sql = 'SQL fejl'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'OK - Installer forum'
|
||||
error_conf_pw = 'Admin kodeordene passede ikke sammen'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
################################################################################
|
||||
# English language file for my little forum 2.4 #
|
||||
# English language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
|
@ -12,10 +12,14 @@
|
|||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = en
|
||||
language_code = 'en'
|
||||
language_name_system = 'english'
|
||||
language_name_own = 'english'
|
||||
charset = utf-8
|
||||
locale = en_US.utf8
|
||||
locale = en_US
|
||||
|
@ -23,8 +27,8 @@ locale = en
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %Y-%m-%d, %H:%M
|
||||
time_format_full = %A, %B %d, %Y, %H:%M
|
||||
time_format = 'YYYY-MM-dd, hh:mm a'
|
||||
time_format_full = 'EEEE, MMMM dd, YYYY, hh:mm a'
|
||||
forum_time = 'Forum time: [time]'
|
||||
forum_time_with_time_zone = 'Forum time: [time] ([time_zone])'
|
||||
unknown_user = 'unknown'
|
||||
|
@ -39,6 +43,7 @@ replies = 'Replies'
|
|||
views = 'Views'
|
||||
category = 'Category'
|
||||
submit_button_ok = ' OK '
|
||||
submit_button_cancel = ' Cancel '
|
||||
yes = 'yes'
|
||||
no = 'no'
|
||||
go = 'Go'
|
||||
|
@ -48,8 +53,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'next page'
|
||||
previous_page_link_title = 'previous page'
|
||||
posted_by = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'by [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'by [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'click to go to the original posting by [name]'
|
||||
error_headline = 'Error!'
|
||||
no_authorisation = 'No authorisation!'
|
||||
|
@ -75,6 +80,8 @@ search_default_value = 'Search...'
|
|||
search_title = 'Search messages'
|
||||
new_topic_link = 'New topic'
|
||||
new_topic_link_title = 'Post a new topic'
|
||||
back_to_top_link = 'To top'
|
||||
back_to_top_link_title = 'Go back to top of the page'
|
||||
order_link = 'Order'
|
||||
order_link_title_1 = 'Order by date of last reply'
|
||||
order_link_title_2 = 'Order by date of thread (default)'
|
||||
|
@ -112,6 +119,8 @@ back_to_entry_link = 'Back to the entry by [name]'
|
|||
back_to_entry_link_title = 'Back to the entry by [name]'
|
||||
subnav_login = 'Login'
|
||||
subnav_pw_forgotten = 'Password forgotten'
|
||||
subnav_accept_dps = 'Accept the data privacy statement'
|
||||
subnav_accept_tou = 'Accept the terms of use agreement'
|
||||
subnav_admin_area = 'Admin area'
|
||||
subnav_settings = 'Forum settings'
|
||||
subnav_advanced_settings = 'Advanced settings'
|
||||
|
@ -144,6 +153,7 @@ subnav_userarea_show_posts = 'Postings by [var]'
|
|||
subnav_userarea_edit_user = 'Edit Profile'
|
||||
subnav_userarea_edit_pw = 'Change Password'
|
||||
subnav_userarea_edit_mail = 'Change E-mail address'
|
||||
subnav_userarea_remove_account = 'Delete account'
|
||||
subnav_backup = 'Backup'
|
||||
subnav_update = 'Update'
|
||||
subnav_update_run = 'Run update'
|
||||
|
@ -155,6 +165,8 @@ subnav_disabled = 'Forum disabled'
|
|||
subnav_bookmarks = 'Bookmarks'
|
||||
subnav_delete_bookmark = 'Delete bookmark'
|
||||
subnav_edit_bookmark = 'Edit bookmark'
|
||||
subnav_list_uploads = 'List of uploads'
|
||||
subnav_confirm_delete_uploads = 'Delete uploads'
|
||||
subnav_page_error = 'Error'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] Postings in [total_threads] Threads, [registered_users] registered users'
|
||||
|
@ -181,7 +193,6 @@ error_invalid_date_format = 'Invalid date format of birthday (YYYY-MM-DD)'
|
|||
error_invalid_date = 'Invalid birthdate'
|
||||
error_email_wrong = 'The e-mail address is invalid'
|
||||
error_hp_wrong = 'The homepage address is invalid'
|
||||
error_pw_conf_wrong = 'The password is not the same as the repeated one'
|
||||
error_akismet_connection = 'Server timed out, please try again!'
|
||||
error_akismet_connection_admin = 'Could not connect to the Akismet server to verify the API key!'
|
||||
error_akismet_api_key = 'Invalid Wordpress API Key'
|
||||
|
@ -191,11 +202,12 @@ open_whole_thread = 'Open whole thread'
|
|||
change_category_link = 'Show postings in category "[category]"'
|
||||
mark_linktitle = 'Mark posting'
|
||||
unmark_linktitle = 'Unmark posting'
|
||||
unclassified_linktitle = 'Posting is unclassified'
|
||||
delete_marked_link = 'Delete marked postings'
|
||||
manage_postings_link = 'Manage postings'
|
||||
non_activated_users_link = '[counter] non-activated user(s)'
|
||||
show_spam_link = 'Show spam ([number])'
|
||||
hide_spam_link = 'Hide spam'
|
||||
show_spam_link = 'Display spam in thread list ([number])'
|
||||
hide_spam_link = 'Hide spam in thread list'
|
||||
delete_spam_link = 'Delete spam'
|
||||
list_spam_link = 'List spam'
|
||||
no_replies = 'No replies'
|
||||
|
@ -205,6 +217,8 @@ more_smilies_label = 'more...'
|
|||
more_smilies_title = 'more smilies'
|
||||
close = 'close'
|
||||
no_postings_user = 'No postings.'
|
||||
search_term = 'Search term'
|
||||
search_category = 'Search in category'
|
||||
search_submit_button = 'Search'
|
||||
search_fulltext = 'full text'
|
||||
search_tags = 'tags'
|
||||
|
@ -245,6 +259,7 @@ error_invalid_form = 'Invalid request - please try again!'
|
|||
error_form_sent_too_fast = 'The form was submitted too fast - please wait a few seconds and try again (automated form submission prevention)'
|
||||
error_form_sent_too_slow = 'The form is not valid anymore - please copy the text and reload the page'
|
||||
terms_of_use_agreement = 'I agree to the [[terms of use]]'
|
||||
data_privacy_agreement = 'I agree to the [[data privacy statement]]'
|
||||
error_not_accepted_word = 'Not accepted word: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Not accepted words: [not_accepted_words]'
|
||||
error_username_invalid_chars = 'The user name contains invalid characters'
|
||||
|
@ -264,14 +279,20 @@ error_no_subject = 'No subject has been entered'
|
|||
error_no_text = 'No message text has been entered'
|
||||
terms_of_use_error_register = 'You have to agree to the terms of use in order to complete the registration'
|
||||
terms_of_use_error_posting = 'You have to agree to the terms of use in order to submit this message'
|
||||
terms_of_use_error_reconf = 'You have to agree to the changes of the terms of use in order to submit further messages'
|
||||
data_priv_statement_error_reg = 'You have to agree to the data privacy statement in order to complete the registration'
|
||||
data_priv_statement_error_post = 'You have to agree to the data privacy statement in order to submit this message'
|
||||
data_priv_statement_error_reconf ='You have to agree to the changes of the data privacy statement in order to submit further messages'
|
||||
submit_button_agreed = 'I agree'
|
||||
submit_button_disagreed = 'I disagree'
|
||||
check_all = 'check all'
|
||||
uncheck_all = 'uncheck all'
|
||||
delete_backup_confirm = 'Are you sure you want to delete this backup file?'
|
||||
delete_sel_backup_confirm = 'Are you sure you want to delete all selected backup files?'
|
||||
drag_and_drop_title = 'Drag & drop to move up or down'
|
||||
show_all_postings_link = 'show postings'
|
||||
show_bookmarks_link = 'Bookmarks'
|
||||
show_userdata_linktitle = 'Visit profil of [user]'
|
||||
show_password_title = 'Show password in plain text'
|
||||
hide_password_title = 'Hide password'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = 'OK - Delete Bookmark'
|
||||
|
@ -293,7 +314,7 @@ error_bookmark_word_too_long = 'The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = 'Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'edited by [name], [time]'
|
||||
edited_by = 'edited by [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 view'
|
||||
several_views = '[views] views'
|
||||
|
@ -350,6 +371,8 @@ subject_marking = 'Subject:'
|
|||
message_marking = 'Message:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(optional, separated by comma)'
|
||||
bbcode_help_heading = 'Formatting help'
|
||||
bbcode_help_skip_link = 'skip to input'
|
||||
bbcode_bold_label = 'bold'
|
||||
bbcode_bold_title = 'format text bold'
|
||||
bbcode_bold_instruction = '[b]bold text[/b]'
|
||||
|
@ -382,15 +405,12 @@ bbcode_image_instr_right = 'right: [img=right]http://example.com/image.jp
|
|||
bbcode_image_label_thumb = 'thumbnail'
|
||||
bbcode_image_instr_thumb = 'thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'thumbnail left'
|
||||
bbcode_image_instr_thumb_left = 'thumbnail left: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'thumbnail left: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'thumbnail right'
|
||||
bbcode_image_instr_thumb_right = 'thumbnail right: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'thumbnail right: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'upload'
|
||||
bbcode_upload_title = 'upload image'
|
||||
bbcode_upload_instruction = 'upload image ...'
|
||||
bbcode_flash_label = 'flash'
|
||||
bbcode_flash_title = 'insert flash'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = 'insert TeX code'
|
||||
bbcode_tex_instruction = '[tex]TeX code[/tex]'
|
||||
|
@ -401,12 +421,15 @@ bbcode_code_instruction_inline = '[inlinecode]code[/inlinecode]'
|
|||
bbcode_code_label_general = 'code block'
|
||||
bbcode_code_instruction_general = '[code]code[/code]'
|
||||
bbcode_code_label_specific = 'code block [language]'
|
||||
bbcode_code_instruction_spec = '[code=[language]]code[/code]'
|
||||
bbcode_code_instruction_spec = '[code=[language]]code[/code]'
|
||||
insert_smiley_title = 'insert smiley'
|
||||
email_notific_reply_thread = 'E-mail notification on replies in this thread'
|
||||
email_notific_reply_post = 'E-mail notification on reply of this posting'
|
||||
show_signature_marking = 'Attach signature'
|
||||
sticky_thread = 'Sticky'
|
||||
sticky_none = 'Do not pin the thread'
|
||||
sticky_single_cat = 'Pin thread in the chosen category'
|
||||
sticky_all_cats = 'Pin thread to all categories'
|
||||
sticky_thread = 'Pin the thread'
|
||||
message_submit_button = 'OK - Submit'
|
||||
message_submit_title = 'Save entry'
|
||||
message_preview_button = 'Preview'
|
||||
|
@ -434,9 +457,8 @@ delete_spam_hl = 'Delete spam'
|
|||
delete_spam_confirm = 'Do you really want to delete all postings classified as spam?'
|
||||
delete_posting_submit = 'OK - Delete'
|
||||
report_spam_hl = 'Report spam'
|
||||
report_spam_warning = 'Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
posting_already_spam = 'This posting is already flagged as spam.'
|
||||
spamcheck_posting_not_checked = 'This posting is already flagged as ham or was not checked by Akismet because either Akismet was not enabled or it is the posting of a registered user.'
|
||||
spamcheck_posting_passed = 'This posting has passed the Akismet spam filter. Only report it as spam if it is definetly spam!'
|
||||
spamcheck_akismet_api_error = 'This posting passed the Akismet spam filter because an error occured while checking it. This might have been caused by an invalid API key!'
|
||||
spamcheck_akismet_timeout_error = 'This posting passed the spam filter because of a timeout error of the Akismet server.'
|
||||
report_spam_delete_submit = 'Report as spam and delete'
|
||||
|
@ -445,11 +467,17 @@ delete_only_submit = 'Delete only'
|
|||
postings_doesnt_exist = 'This posting does not exist!'
|
||||
posting_not_flagged_as_spam = 'This posting is not flagged as spam.'
|
||||
flag_ham_hl = 'Flag as ham'
|
||||
flag_ham_note = 'This posting was classified as spam by the Akismet spam filter. Only report it as ham (not spam) if it is definetly no spam!'
|
||||
flag_ham_warning = 'Please flag and report this entry only as ham (not spam), if it is definetly no spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
report_flag_ham_submit = 'Report and flag as ham'
|
||||
flag_ham_submit = 'Flag as ham only'
|
||||
no_authorisation_delete = 'Posting can not be deleted! Maybe the period within postings can be deleted has expired, the thread is locked or there are already replies to this posting.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = 'Quitted subscription'
|
||||
unsubscribed_message = 'The subscription for informations about replies to your entry got quitted. You will not receive any more e-mails about this specific entry. Subscriptions for informations about further entries are not affected by this action.'
|
||||
unsubscribe_error_hl = 'Could not quit the subscription'
|
||||
unsubscribe_error_message = 'During the action to quit the subscription an error occured. Please inform the forum operator by e-mail about this issue. Please add the following informations: ID of the entry (take it from the link in the e-mail (URL-parameter "unsubscribe")) and the time of the failed action (add the name of your time zone if possible).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Spam protection check:'
|
||||
captcha_expl_math = 'Please sum the two numbers:'
|
||||
|
@ -477,12 +505,6 @@ no_images = 'No images available.'
|
|||
delete_image_confirm = 'Delete this image?'
|
||||
delete_image_button = 'OK - Delete'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'Insert flash'
|
||||
flash_url = 'Flash URL:'
|
||||
flash_size = 'Size:'
|
||||
insert_flash_button = 'Insert flash'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Avatar'
|
||||
delete_avatar = 'Delete avatar'
|
||||
|
@ -536,12 +558,13 @@ code_invalid = 'Code invalid.'
|
|||
|
||||
[pw_forgotten]
|
||||
new_pw_ok = 'A new password has been generated and sent.'
|
||||
new_pw_failed = 'The confirmation link is invalid. A new password could't be generated.'
|
||||
new_pw_failed = 'The confirmation link is invalid. A new password couldn\'t be generated.'
|
||||
pw_forgotten_exp = 'The passwords are encrypted with a one-way algorithm so you cannot retrieve your password. You can only get a new password. To avoid any misuse you will receive an e-mail and will be asked to follow a link to confirm your request. Upon receipt of your confirmation a new password will be generated and sent to you.'
|
||||
pwf_username = 'Username:'
|
||||
pwf_email = 'E-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'User list'
|
||||
user_name = 'Username'
|
||||
user_type = 'Type'
|
||||
admin = 'Admin'
|
||||
|
@ -604,7 +627,10 @@ edit_email = 'change E-mail address'
|
|||
edit_user_pw = 'Password:'
|
||||
pw_not_displayed = 'not displayed'
|
||||
edit_pw = 'change password'
|
||||
edit_user_email_contact = 'E-mail address contactable'
|
||||
edit_user_contacting = 'Contacting:'
|
||||
edit_user_contacting_disabled = 'Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = 'Restricted to registered users'
|
||||
edit_user_contacting_public = 'Unrestricted'
|
||||
edit_user_real_name = 'Name:'
|
||||
edit_user_gender = 'Gender:'
|
||||
gender_not_specified = 'not specified'
|
||||
|
@ -627,23 +653,38 @@ edit_user_theme = 'Theme:'
|
|||
edit_user_default_theme = 'Default ([default_theme])'
|
||||
edit_user_auto_login = 'Auto login:'
|
||||
enable_auto_login = 'enable automatic login'
|
||||
edit_user_where_to_open_links = 'Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = 'Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = 'Open all links in same browser window'
|
||||
where_to_open_links_external = 'Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = 'Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_notification = 'E-mail notification:'
|
||||
admin_mod_notif_posting = 'once a new message has been posted'
|
||||
admin_mod_notif_register = 'once a new user has signed up'
|
||||
userdata_submit_button = 'OK - Save'
|
||||
profile_saved = 'Profile saved'
|
||||
pw_changed = 'Password changed'
|
||||
remove_user_account = 'Delete account'
|
||||
remove_user_account_link = 'Delete your user account'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = 'Delete account'
|
||||
remove_user_account_warning = 'Warning, once you delete your account, there is no going back. Please be certain! Bookmarks and account data will deleted. Your postings keep unchanged. Like an unregistered post, your display name ([user_name]) is used as author.'
|
||||
remove_user_confirm_password = 'Password:'
|
||||
error_pw_wrong = 'The password is wrong'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'Old password:'
|
||||
edit_pw_new = 'New password:'
|
||||
edit_pw_conf = 'Repeat new password:'
|
||||
error_old_pw_wrong = 'The old password is wrong'
|
||||
error_pw_conf_uneven = 'The new password is not the same as the repeated one'
|
||||
error_new_pw_too_short = 'The new password must contain at least [characters] characters'
|
||||
error_new_pw_too_short = 'The new password must contain at least [characters] character(s)'
|
||||
error_new_pw_needs_digit = 'The password must contain at least [digits] digit(s)'
|
||||
error_new_pw_needs_lowercase_letter = 'The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_new_pw_needs_uppercase_letter = 'The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_new_pw_needs_special_character ='The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'When changing the e-mail address you will be logged out and the account has to be activated again. An activation key will be sent to the new e-mail address. Be sure the e-mail adress is correct! The account has to be activated within one day.'
|
||||
edit_email_exp = 'When changing the e-mail address you will be logged out and the account has to be activated again. An activation key will be sent to the new e-mail address. Be sure the e-mail address is correct! The account has to be activated within one day.'
|
||||
edit_email_new = 'New e-mail:'
|
||||
edit_email_new_confirm = 'Confirm new e-mail:'
|
||||
edit_email_pw = 'Password:'
|
||||
|
@ -653,21 +694,26 @@ error_email_too_long = 'The e-mail address is too long'
|
|||
error_identic_email = 'The new e-mail is the same as the old one'
|
||||
error_email_invalid = 'The e-mail address is invalid'
|
||||
pw_wrong = 'The password is wrong'
|
||||
error_email_collision = 'The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = 'Please specify the user name desired, a password and a valid e-mail address. An activation key will be sent to this e-mail address. The account has to be activated within one day.'
|
||||
register_username = 'Username:'
|
||||
register_user_email = 'E-mail:'
|
||||
register_pw = 'Password:'
|
||||
register_pw_conf = 'Repeat Password:'
|
||||
register_honeypot_field = 'Leave this field empty:'
|
||||
register_only_by_admin = 'Users can only be registered by the admin of the forum.'
|
||||
register_link_to_login = 'Go to login'
|
||||
registered = 'The account has been registered and the activation key has been sent to <strong>[var]</strong>. The account has to be activated within one day.'
|
||||
registered_send_error = 'The account has been registered but the activation key could not been sent (mail server not available). Please contact the forum administrator and ask for manual account activation.'
|
||||
activation_failed = 'The activation of the account failed.'
|
||||
error_password_too_short = 'The password must contain at least [characters] characters'
|
||||
error_password_too_short = 'The password must contain at least [characters] character(s)'
|
||||
error_email_alr_exists = 'There is already a user with this e-mail address'
|
||||
error_reg_not_accepted_word = 'Spam protection: E-mail or user name not accepted'
|
||||
error_pw_needs_digit = 'The password must contain at least [digits] digit(s)'
|
||||
error_pw_needs_lowercase_letter = 'The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_pw_needs_uppercase_letter = 'The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_pw_needs_special_character ='The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'E-mail to the forum administrator'
|
||||
|
@ -675,6 +721,7 @@ contact_user_hl = 'E-mail to [recipient_name]'
|
|||
impossible_to_contact = 'This user cannot be contacted!'
|
||||
contact_doesnt_exist = 'This contact does not exist!'
|
||||
sender_address_caption = 'Sender e-mail:'
|
||||
sender_confirmation_caption = 'Send me a copy of my message'
|
||||
subject_caption = 'Subject:'
|
||||
message_caption = 'Message:'
|
||||
message_submit_caption = 'OK - Send message'
|
||||
|
@ -685,7 +732,7 @@ error_message_no_subject = 'No subject entered'
|
|||
error_email_invalid = 'The e-mail address is invalid'
|
||||
error_email_subject_too_long = 'The subject is too long'
|
||||
error_email_text_too_long = 'The message is too long ([text_length] characters - only [text_maxlength] characters are allowed)'
|
||||
error_spam_suspicion = 'Spam suspicion! Please modify your message (e.g. remove Links)'
|
||||
error_email_spam_suspicion = 'Spam suspicion! Please modify your message (e.g. remove Links)'
|
||||
|
||||
[admin]
|
||||
enabled = 'enabled'
|
||||
|
@ -702,14 +749,14 @@ user_administr_link = 'User administration'
|
|||
smilies_administr_link = 'Smilies'
|
||||
pages_administr_link = 'Pages'
|
||||
spam_protection_link = 'Spam protection'
|
||||
backup_restore_link = 'Backup'
|
||||
update_link = 'Update'
|
||||
reset_uninstall_link = 'Reset or uninstall forum'
|
||||
releases_info_header = 'Actual available release'
|
||||
upload_administr_link = 'manage uploads'
|
||||
releases_info_header = 'Currently available release'
|
||||
releases_list_link = 'Check the releases list for the actual available version.'
|
||||
warning_header = 'Warning'
|
||||
warning_install_script_exists = 'For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = 'Actual installed version'
|
||||
actual_installed_version_header = 'Currently installed version'
|
||||
actual_installed_version = 'The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -725,6 +772,8 @@ forum_address = 'Forum address'
|
|||
forum_address_desc = 'URL of the forum (use this format: http://www.domain.tld/forum/)'
|
||||
forum_email = 'Forum e-mail address'
|
||||
forum_email_desc = 'will be used as contact address and sender e-mail address for all e-mails sent by the forum'
|
||||
forum_target_name = 'Link window target'
|
||||
forum_target_name_desc = 'The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
home_link = 'Home link'
|
||||
home_link_desc = 'Link to your homepage, e.g. http://www.domain.tld/ or ../index.html (optional)'
|
||||
home_link_name = 'Home link name'
|
||||
|
@ -763,6 +812,7 @@ user_area = 'User area'
|
|||
user_area_desc = 'Is the user area (user list, profiles) accessible public?'
|
||||
public_accessible = 'public accessible'
|
||||
accessible_reg_users_only = 'accessible by registered users only'
|
||||
accessible_team_users_only = 'accessible by administrators and moderators only'
|
||||
latest_postings = 'Latest postings'
|
||||
latest_postings_desc = 'How many latest postings should be displayed in a list on the index page (0=disabled)?'
|
||||
tag_cloud = 'Tag cloud'
|
||||
|
@ -772,6 +822,10 @@ terms_of_use_settings = 'Terms of use agreement'
|
|||
terms_of_use_settings_desc = 'Obligation for unregistered users to agree to terms of use when posting messages and registering'
|
||||
terms_of_use_settings_enabled = 'Terms of use agreement enabled'
|
||||
terms_of_use_url = 'Terms of use URL:'
|
||||
data_privacy_statement = 'Data privacy statement'
|
||||
data_privacy_statement_desc = 'Obligation for unregistered users to agree to the data privacy statement when posting messages and registering'
|
||||
data_privacy_settings_enabled = 'Data privacy statement enabled'
|
||||
data_privacy_url = 'Data privacy statement URL:'
|
||||
edit_postings = 'Editing postings'
|
||||
edit_postings_desc = 'Editing postings behavior'
|
||||
edit_own_postings = 'Editing own postings:'
|
||||
|
@ -787,7 +841,6 @@ bbcode = 'BB code'
|
|||
bbcode_desc = 'Enabel BB Codes to format messages?'
|
||||
bbcodes_enabled = 'BB Codes enabled'
|
||||
bbcodes_img_enabled = 'allow BB Code to insert images'
|
||||
bbcodes_flash_enabled = 'allow BB Code to insert flash videos'
|
||||
smilies = 'Smilies'
|
||||
smilies_desc = 'Should smilies like ":-)" be replaced by images? (Smilies can be definded in the smilies administraton panel)'
|
||||
smilies_enabled = 'Smilies enabled'
|
||||
|
@ -872,6 +925,7 @@ delete_page_submit = 'OK - Delete page'
|
|||
error_no_page_title = 'No title'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'User list'
|
||||
user_name_empty = 'No user name entered'
|
||||
num_registerd_users = '[number] registered users'
|
||||
user_id = 'ID'
|
||||
|
@ -895,26 +949,45 @@ activate_link = 'Activate account'
|
|||
delete_selected_users = 'Delete selected'
|
||||
add_user = 'Add user'
|
||||
email_list = 'E-mail list of registered users'
|
||||
reset_terms_of_use = 'reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = 'reset acceptance of the privacy statement'
|
||||
clear_userdata = 'Clear userdata'
|
||||
edit_user_avatar = 'Avatar:'
|
||||
delete_avatar = 'Delete avatar'
|
||||
delete_user_confirmation = 'Are you sure you want to delete this user?'
|
||||
delete_users_confirmation = 'Are you sure you want to delete the following users?'
|
||||
delete_entries_of_user_confirm = 'Are you sure you want to delete all postings of <strong>[user]</strong>? Replies by other users will also be deleted!'
|
||||
delete_submit = 'OK - Delete'
|
||||
register_exp = 'You can leave blank the fields for the password if a random password should be generated. In this case the userdata has to be sent to the specified e-mail adress.'
|
||||
register_exp = 'You can leave blank the fields for the password if a random password should be generated. In this case the userdata has to be sent to the specified e-mail address.'
|
||||
register_username = 'User name:'
|
||||
register_email = 'E-mail:'
|
||||
register_pw = 'Password:'
|
||||
register_pw_conf = 'Confirm password:'
|
||||
register_send_userdata = 'Send userdata to the above specified e-mail address'
|
||||
error_send_userdata = 'If you leave blank the password, the userdata has to be sent to the specified e-mail adress'
|
||||
error_email_wrong = 'The e-mail address is incorrect'
|
||||
error_send_userdata = 'If you leave blank the password, the userdata has to be sent to the specified e-mail address'
|
||||
admin_reg_error_email_wrong = 'The e-mail address is incorrect'
|
||||
new_user_registered = 'The user "[name]" has been registered.'
|
||||
new_user_reg_send_error = 'The user "[name]" has been registered but the userdata could not be sent.'
|
||||
clear_userdata_condition = 'Delete users that logged in maximum [logins] times and the last time more than [days] days ago.'
|
||||
clear_userdata_note = 'Admins and Moderators will not be affected. Before deleting you get a list of the selected users.'
|
||||
no_users_in_selection = 'No users in selection'
|
||||
|
||||
# upload management
|
||||
upload_administration = 'Upload management'
|
||||
mark_upload_for_removal = 'mark for removal'
|
||||
mark_upload_for_managing = 'mark for managing'
|
||||
no_uploads_found = 'Found no uploaded files.'
|
||||
delete_upload_confirmation = 'Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = 'Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = 'record uploads'
|
||||
check_for_unrecorded_uploads_desc = 'Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = 'record to database'
|
||||
upload_database_entry_alt = 'There is a database entry for this image'
|
||||
upload_database_no_entry_alt = 'There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='not managed images'
|
||||
upload_filter_managed_images = 'managed images'
|
||||
upload_filter_all_images = 'all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Which forms should be protected by what type of CAPTCHA (only for not registered users)?'
|
||||
|
@ -927,22 +1000,23 @@ captcha_mathematical = 'mathematical'
|
|||
captcha_graphical = 'graphical'
|
||||
gr_captcha_not_available = 'Graphical CAPTCHA not available (GD Lib not available)'
|
||||
gr_captcha_no_font = 'No font available, CAPTCHA image cannot be displayed correctly'
|
||||
b8 = 'B8'
|
||||
b8_desc = 'Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = 'check posting form'
|
||||
b8_mail_check_enable = 'check e-mail form'
|
||||
b8_auto_training_enable = 'Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = 'Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection to ckeck e-mail addresses on registrations'
|
||||
stop_forum_spam_enable = 'enable Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a> spam protection.'
|
||||
bad_behavior_enable = 'enable Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> spam protection service. To use it you need a <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> (won\'t work without or with invalid API Key!).'
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
akismet_save_spam = 'Save spam (flagged as spam and not displayed)?'
|
||||
akismet_auto_delete_spam = 'Delete spam automatically after how many hours (0 = do not delete)?'
|
||||
akismet_entry = 'check posting form'
|
||||
akismet_mail = 'check e-mail form'
|
||||
akismet_registered = 'check submissions of registered users'
|
||||
banned_ips = 'Banned IPs'
|
||||
banned_ips_desc = 'IP adresses which should not have access. IP ranges (e.g. 10.10.1.*) and CIDR notation (e.g. 10.10.1.32/27) possible. One IP per line.'
|
||||
banned_ips_desc = 'IP addresses which should not have access. IP ranges (e.g. 10.10.1.*) and CIDR notation (e.g. 10.10.1.32/27) possible. One IP per line.'
|
||||
banned_user_agents = 'Banned user agents'
|
||||
banned_user_agents_desc = 'Strings in user agents, which should not have access. One string per line.'
|
||||
not_accepted_words = 'Not accepted words'
|
||||
|
@ -951,6 +1025,12 @@ spam_protection_submit = 'OK - Save'
|
|||
error_own_ip_banned = 'You banned your own IP!'
|
||||
error_own_user_agent_banned = 'You banned your own user agent!'
|
||||
spam_protection_saved = 'Saved'
|
||||
spam_check_registered = 'submissions of registered users'
|
||||
spam_check_registered_desc = 'check submissions of registered users for spam using enabled filters'
|
||||
spam_check_registered_enable = 'check submissions of registered users for spam'
|
||||
auto_delete_spam = 'Delete spam automatically'
|
||||
auto_delete_spam_desc = 'Retention period of spam'
|
||||
auto_delete_spam_timespan = 'Delete spam automatically after how many hours (0 = do not delete)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = 'Reset forum'
|
||||
|
@ -962,45 +1042,14 @@ uninstall_forum_exp = 'This will delete all forum tables. After this
|
|||
uninstall_forum_submit = 'OK - Uninstall forum'
|
||||
error_no_selection_made = 'No selection made'
|
||||
|
||||
# Backup:
|
||||
backup_note = 'To use the backup function the directory <i>backup</i> must be writable. Also make sure that this directory is not accessible via the web!'
|
||||
backup_file = 'File'
|
||||
backup_date = 'Date'
|
||||
backup_size = 'Size'
|
||||
create_backup_complete = 'Create complete backup'
|
||||
only_create_backup_of = 'Only create backup of:'
|
||||
backup_entries = 'entries'
|
||||
backup_userdata = 'userdata'
|
||||
backup_settings = 'settings'
|
||||
backup_categories = 'categories'
|
||||
backup_pages = 'pages'
|
||||
backup_smilies = 'smilies'
|
||||
backup_banlists = 'banlists'
|
||||
backup_bookmarks = 'bookmarks'
|
||||
backup_read_status = 'read status'
|
||||
backup_temp_infos = 'temporary informations'
|
||||
download_backup_file = 'Download backup file'
|
||||
delete_selected = 'Delete selected'
|
||||
restore = 'Restore'
|
||||
delete_backup_file = 'Delete backup file'
|
||||
delete_backup_submit = 'OK - Delete'
|
||||
restore_confirm = 'Are you sure you want to restore the database with this backup file?<br /><strong>All affected backuped tables will be overwritten!</strong>'
|
||||
restore_safe_mode_warning = 'Safe Mode Warning!'
|
||||
restore_safe_mode_note = 'As Safe Mode is activated on this server the script running time cannot be extended! To avoid uncompleted backups you should split long backup files into several smaller ones and execute one after another!'
|
||||
restore_submit = 'OK - Restore'
|
||||
restore_backup_ok = 'The backup has been restored.'
|
||||
backup_file_created = 'The backup file has been created.'
|
||||
error_file_doesnt_exist = 'File doesn\'t exist!'
|
||||
error_delete_backup_file = 'Backup file could not be deleted'
|
||||
error_create_backup_file = 'File could not be craeted - make sure you properly set the write permission for the folder "backup"'
|
||||
error_restore_mysql = 'MySQL error: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'Current version: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'How to update'
|
||||
update_instructions = 'It is recommended to disable the forum while updating (uncheck "forum enabled" in the <a href="index.php?mode=admin&action=settings">forum settings</a>)'
|
||||
update_instructions = 'Download the latest version from <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'Unpack the script package, look for the according update file in the subfolder "update" and upload this file into the folder "update" on your server'
|
||||
update_instructions = 'Unpack the script package'
|
||||
update_instructions = 'Look for the according update file in the subfolder "update" and upload this file into the folder "update" on your server'
|
||||
update_instructions = 'Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'Reload this page and the update file should appear below'
|
||||
update_instructions = 'Click on the file and follow the further instructions'
|
||||
update_instructions = 'After running the update you get a list of files and folders which have to be added or replaced'
|
||||
|
@ -1013,13 +1062,21 @@ update_submit = 'OK - Run update'
|
|||
update_successful = 'The database has been updated successfully.'
|
||||
update_items_note = 'Please upload now the following files/folders of the new forum package (version [version]) to your server:'
|
||||
update_download = 'If you do not have these files yet you can download them [[here]].'
|
||||
update_reenabling_notice = 'Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Reply on "[original_subject]"'
|
||||
email_text = """Hi [recipient],
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] has posted a reply on \"[original_subject]\":
|
||||
|
||||
Subject: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
URL of this posting: [posting_address]
|
||||
|
@ -1029,7 +1086,7 @@ URL of this posting: [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
This notification is delayed because the posting was activated manually"""
|
||||
This notification is delayed because the posting was activated manually. This is an automatically generated email, please do not reply to this email."""
|
||||
|
||||
admin_email_subject = 'New entry in the forum: [subject]'
|
||||
admin_email_text = """New Entry by [name]
|
||||
|
@ -1037,15 +1094,20 @@ Subject: [subject]
|
|||
|
||||
[text]
|
||||
|
||||
URL of the posting: [posting_address]"""
|
||||
URL of the posting: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_email_text_reply = """Reply by [name]
|
||||
Subject: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
URL of the posting: [posting_address]"""
|
||||
URL of the posting: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_reg_user_email_subj = 'Forum registration'
|
||||
admin_reg_user_email_text = """Hi [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
Here is the access data to log in:
|
||||
|
@ -1056,47 +1118,67 @@ Password: [password]
|
|||
Link to log in directly:
|
||||
[login_link]
|
||||
|
||||
The password can be changed after logging in."""
|
||||
The password can be changed after logging in.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
admin_activate_user_email_subj = 'Forum registration'
|
||||
admin_activate_user_email_text = """Hi [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
Link to log in directly:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
new_user_email_sj = 'Forum registration'
|
||||
new_user_email_txt = """Hi [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
To activate your account please follow this link:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_sj = 'New user subscription'
|
||||
new_user_notif_txt = """Hi [recipient],
|
||||
|
||||
a new user has subscribed to the forum.
|
||||
User name: [name]
|
||||
E-mail: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_txt_locked = """Hi [recipient],
|
||||
|
||||
a new user has subscribed to the forum.
|
||||
User name: [name]
|
||||
E-mail: [email]
|
||||
|
||||
IMPORTANT: This user has to be unlocked in order that he can log in!"""
|
||||
IMPORTANT: This user has to be unlocked in order that he can log in!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
edit_address_email_sj = 'Account activation after changing e-mail address'
|
||||
edit_address_email_txt = """Hi [name],
|
||||
|
||||
the e-mail address has been changed. You now have to activate your account again using the following link:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
pwf_activating_email_sj = 'Request for a new password'
|
||||
pwf_activating_email_txt = """Hi [name],
|
||||
|
||||
this e-mail has been sent by the forum on [forum_address] because a new password has been requested. Please click the link below to confirm your request. By following the link a new password will be generated and sent to you. If this e-mail has been sent in error (either by you or someone else) please ignore this e-mail.
|
||||
|
||||
Link to confirm your request:
|
||||
[activating_link]"""
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_pw_email_sj = 'New user data for the forum'
|
||||
new_pw_email_txt = """Hi [name],
|
||||
|
||||
here is your new user data:
|
||||
|
||||
User name: [name]
|
||||
|
@ -1105,7 +1187,9 @@ Password: [password]
|
|||
Click here to log in directly:
|
||||
[login_link]
|
||||
|
||||
The password can be changed after logging in."""
|
||||
The password can be changed after logging in.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1122,6 +1206,19 @@ Subject: [subject]
|
|||
|
||||
--
|
||||
This e-mail has been sent via forum on [forum_address]."""
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
|
||||
Kind regards
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installation'
|
||||
|
@ -1170,5 +1267,6 @@ error_db_inexistent = 'Specified database does not exist - please ch
|
|||
error_sql_file_doesnt_exist = 'Installation SQL file (install.sql) does not exist'
|
||||
error_overwrite_config_file = 'No permission to overwrite the file <strong>config/db_settings.php</strong> (set CHMOD 666, current is [CHMOD])'
|
||||
error_sql = 'SQL error'
|
||||
error_update_settings = 'Could not change the forum setting'
|
||||
forum_install_ok = 'OK - Install forum'
|
||||
error_conf_pw = 'The admin passwords did not match'
|
||||
|
|
648
lang/french.lang
648
lang/french.lang
File diff suppressed because it is too large
Load diff
409
lang/german.lang
409
lang/german.lang
|
@ -1,26 +1,43 @@
|
|||
################################################################################
|
||||
# German language file for my little forum 2.4 #
|
||||
# German language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated by Alex < alex at mylittleforum dot net > 2011-09-01 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = de
|
||||
language_code = 'de'
|
||||
language_name_system = 'german'
|
||||
language_name_own = 'deutsch'
|
||||
charset = utf-8
|
||||
locale = de_DE.utf8
|
||||
locale = de_DE
|
||||
locale = de_DE@euro
|
||||
locale = de
|
||||
locale_charset = iso-8859-1
|
||||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %d.%m.%Y, %H:%M
|
||||
time_format_full = %A, %d. %B %Y, %H:%M
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'EEEE, dd. MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forumszeit: [time]'
|
||||
forum_time_with_time_zone = 'Forumszeit: [time] ([time_zone])'
|
||||
unknown_user = 'unbekannt'
|
||||
db_error = 'Datenbankfehler!'
|
||||
mail_error = 'Mailserver nicht erreichbar - bitte später nochmal versuchen!'
|
||||
mail_error = 'Mailserver nicht erreichbar – bitte später nochmal versuchen!'
|
||||
|
||||
[general]
|
||||
subject = 'Betreff'
|
||||
|
@ -30,6 +47,7 @@ replies = 'Antworten'
|
|||
views = 'Views'
|
||||
category = 'Kategorie'
|
||||
submit_button_ok = ' OK '
|
||||
submit_button_cancel = ' Abbrechen '
|
||||
yes = 'ja'
|
||||
no = 'nein'
|
||||
go = 'Los'
|
||||
|
@ -39,8 +57,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'nächste Seite'
|
||||
previous_page_link_title = 'vorige Seite'
|
||||
posted_by = '<strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = '<strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = '[name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = '[name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'Klicken, um zum Originalposting von [name] zu gelangen'
|
||||
error_headline = 'Fehler!'
|
||||
no_authorisation = 'Keine Berechtigung!'
|
||||
|
@ -66,6 +84,8 @@ search_default_value = 'suchen…'
|
|||
search_title = 'Einträge durchsuchen'
|
||||
new_topic_link = 'neues Thema'
|
||||
new_topic_link_title = 'neuer Eintrag / neues Thema beginnen'
|
||||
back_to_top_link = 'zum Seitenanfang'
|
||||
back_to_top_link_title = 'springe zum Anfang der Seite zurück'
|
||||
order_link = 'Sortierung'
|
||||
order_link_title_1 = 'Nach Zeit der letzten Antwort sortieren'
|
||||
order_link_title_2 = 'Nach Zeit der des Ausgangspostings sortieren (Standard)'
|
||||
|
@ -103,6 +123,8 @@ back_to_entry_link = 'zurück zum Eintrag von [name]'
|
|||
back_to_entry_link_title = 'zurück zum Eintrag von [name]'
|
||||
subnav_login = 'Login'
|
||||
subnav_pw_forgotten = 'Passwort vergessen'
|
||||
subnav_accept_dps = 'Datenschutzerklärung akzeptieren'
|
||||
subnav_accept_tou = 'Nutzungsbedingungen akzeptieren'
|
||||
subnav_admin_area = 'Administration'
|
||||
subnav_settings = 'Einstellungen'
|
||||
subnav_advanced_settings = 'erweiterte Einstellungen'
|
||||
|
@ -135,6 +157,7 @@ subnav_userarea_show_posts = 'Einträge von [var]'
|
|||
subnav_userarea_edit_user = 'Profil bearbeiten'
|
||||
subnav_userarea_edit_pw = 'Passwort ändern'
|
||||
subnav_userarea_edit_mail = 'E-Mail-Adresse ändern'
|
||||
subnav_userarea_remove_account = 'Account löschen'
|
||||
subnav_backup = 'Backup'
|
||||
subnav_update = 'Update'
|
||||
subnav_update_run = 'Update ausführen'
|
||||
|
@ -146,6 +169,8 @@ subnav_disabled = 'Forum deaktiviert'
|
|||
subnav_bookmarks = 'Lesezeichen'
|
||||
subnav_delete_bookmark = 'Lesezeichen löschen'
|
||||
subnav_edit_bookmark = 'Lesezeichen bearbeiten'
|
||||
subnav_list_uploads = 'Liste der Uploads'
|
||||
subnav_confirm_delete_uploads = 'Uploads löschen'
|
||||
subnav_page_error = 'Fehler'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] Einträge in [total_threads] Threads, [registered_users] registrierte Benutzer'
|
||||
|
@ -166,13 +191,12 @@ error_name_too_long = 'der Name ist zu lang'
|
|||
error_email_too_long = 'die E-Mail-Adresse ist zu lang'
|
||||
error_hp_too_long = 'die Homepage ist zu lang'
|
||||
error_location_too_long = 'der Ort ist zu lang'
|
||||
error_profile_too_long = 'das Profil ist zu lang ([profile_length] Zeichen - nur [profile_maxlength] Zeichen erlaubt)'
|
||||
error_signature_too_long = 'die Signatur ist zu lang ([signature_length] Zeichen - nur [signature_maxlength] Zeichen erlaubt)'
|
||||
error_invalid_date_format = 'ungültiges Datums-Format des Geburtstages (JJJJ-MM-TT)'
|
||||
error_profile_too_long = 'das Profil ist zu lang ([profile_length] Zeichen – nur [profile_maxlength] Zeichen erlaubt)'
|
||||
error_signature_too_long = 'die Signatur ist zu lang ([signature_length] Zeichen – nur [signature_maxlength] Zeichen erlaubt)'
|
||||
error_invalid_date_format = 'ungültiges Datumsformat des Geburtstages (JJJJ-MM-TT)'
|
||||
error_invalid_date = 'ungültiges Geburtsdatum'
|
||||
error_email_wrong = 'E-Mail-Adresse ungültig'
|
||||
error_hp_wrong = 'Homepage ungültig'
|
||||
error_pw_conf_wrong = 'das Passwort stimmt nicht mit der Wiederholung überein'
|
||||
error_akismet_connection = 'Server-Timeout, bitte nochmal versuchen!'
|
||||
error_akismet_connection_admin = 'Akismet-Server konnte nicht kontaktiert werden um den API-Key zu überprüfen!'
|
||||
error_akismet_api_key = 'Ungültiger Wordpress-API-Key'
|
||||
|
@ -182,11 +206,12 @@ open_whole_thread = 'gesamten Thread öffnen'
|
|||
change_category_link = 'Einträge in der Kategorie "[category]" anzeigen'
|
||||
mark_linktitle = 'Eintrag markieren'
|
||||
unmark_linktitle = 'Markierung entfernen'
|
||||
unclassified_linktitle = 'Eintrag ist nicht klassifiziert'
|
||||
delete_marked_link = 'markierte Einträge löschen'
|
||||
manage_postings_link = 'Einträge verwalten'
|
||||
non_activated_users_link = '[counter] freizuschaltende(r) Benutzer'
|
||||
show_spam_link = 'Spam anzeigen ([number])'
|
||||
hide_spam_link = 'Spam ausblenden'
|
||||
show_spam_link = 'Spam in der Threadliste anzeigen ([number])'
|
||||
hide_spam_link = 'Spam in der Threadliste ausblenden'
|
||||
delete_spam_link = 'Spam löschen'
|
||||
list_spam_link = 'Spam auflisten'
|
||||
no_replies = 'keine Antworten'
|
||||
|
@ -196,6 +221,8 @@ more_smilies_label = 'mehr…'
|
|||
more_smilies_title = 'mehr Smilies'
|
||||
close = 'schließen'
|
||||
no_postings_user = 'keine Einträge'
|
||||
search_term = 'Suchbegriff'
|
||||
search_category = 'in Kategorie suchen'
|
||||
search_submit_button = 'Suche'
|
||||
search_fulltext = 'Volltext'
|
||||
search_tags = 'Tags'
|
||||
|
@ -232,10 +259,11 @@ no_users = 'keine Benutzer gefunden'
|
|||
no_text_title = 'leerer Eintrag / kein Text'
|
||||
no_text_alt = '[ kein Text ]'
|
||||
no_text = '- kein Text -'
|
||||
error_invalid_form = 'ungültiges Formular versendet - bitte nochmal versuchen'
|
||||
error_form_sent_too_fast = 'Formular zu schnell abgesendet - bitte ein paar Sekunden warten und erneut absenden (Maßnahme zur Vermeidung automatisierter Einträge)'
|
||||
error_form_sent_too_slow = 'Formular nicht mehr gültig - bitte Text kopieren und die Seite neu laden'
|
||||
error_invalid_form = 'ungültiges Formular versendet – bitte nochmal versuchen'
|
||||
error_form_sent_too_fast = 'Formular zu schnell abgesendet – bitte ein paar Sekunden warten und erneut absenden (Maßnahme zur Vermeidung automatisierter Einträge)'
|
||||
error_form_sent_too_slow = 'Formular nicht mehr gültig – bitte Text kopieren und die Seite neu laden'
|
||||
terms_of_use_agreement = 'Ich bin mit den [[Nutzungsbedingungen]] einverstanden'
|
||||
data_privacy_agreement = 'Ich akzeptiere die [[Datenschutzerklärung]]'
|
||||
error_not_accepted_word = 'nicht akzeptiertes Wort: [not_accepted_word]'
|
||||
error_not_accepted_words = 'nicht akzeptierte Wörter: [not_accepted_words]'
|
||||
error_username_invalid_chars = 'der Benutzername enthält ungültige Zeichen'
|
||||
|
@ -246,26 +274,32 @@ cookie_deleted = 'Das Cookie wurde gelöscht.'
|
|||
ajax_preview_title = 'Vorschau'
|
||||
bbcode_link_text = 'Linktext (optional):'
|
||||
bbcode_link_url = 'Adresse (URL):'
|
||||
bbcode_image_url = 'Bild-Adresse (URL):'
|
||||
bbcode_image_url = 'Bildadresse (URL):'
|
||||
bbcode_tex_code = 'TeX-Formel (z.B. \sqrt{x}):'
|
||||
quote_label = 'zitieren'
|
||||
quote_title = 'zitierten Text des Postings einfügen, auf das geantwortet wird'
|
||||
error_no_name = 'kein Name eingegeben'
|
||||
error_no_subject = 'kein Betreff eingegeben'
|
||||
error_no_text = 'kein Text eingegeben'
|
||||
terms_of_use_error_register = 'Sie müssen mit den Nutzungsbedingungen einverstanden sein um sich registrieren zu können'
|
||||
terms_of_use_error_posting = 'Sie müssen mit den Nutzungsbedingungen einverstanden sein um den Eintrag absenden zu können'
|
||||
terms_of_use_error_register = 'Sie müssen mit den Nutzungsbedingungen einverstanden sein, um sich registrieren zu können'
|
||||
terms_of_use_error_posting = 'Sie müssen mit den Nutzungsbedingungen einverstanden sein, um den Eintrag absenden zu können'
|
||||
terms_of_use_error_reconf = 'Sie müssen die Nutzungsbedingungen erneut akzeptieren, um weiterhin Einträge absenden zu können'
|
||||
data_priv_statement_error_reg = 'Sie müssen mit der Datenschutzerklärung einverstanden sein, um sich registrieren zu können'
|
||||
data_priv_statement_error_post = 'Sie müssen mit der Datenschutzerklärung einverstanden sein, um den Eintrag absenden zu können'
|
||||
data_priv_statement_error_reconf ='Sie müssen die Datenschutzerklärung erneut akzeptieren, um weiterhin Einträge absenden zu können'
|
||||
submit_button_agreed = 'Ich stimme zu'
|
||||
submit_button_disagreed = 'Ich stimme nicht zu'
|
||||
check_all = 'alle auswählen'
|
||||
uncheck_all = 'keine auswählen'
|
||||
delete_backup_confirm = 'Sicher, dass die Backup-Datei gelöscht werden soll?'
|
||||
delete_sel_backup_confirm = 'Sicher, dass die ausgewählten Backup-Dateien gelöscht werden sollen?'
|
||||
drag_and_drop_title = 'Drag & Drop zum Verschieben'
|
||||
show_all_postings_link = 'Einträge anzeigen'
|
||||
show_bookmarks_link = 'Lesezeichen'
|
||||
show_userdata_linktitle = 'Nutzerdaten von [user]'
|
||||
show_password_title = 'Passwort im Klartext anzeigen'
|
||||
hide_password_title = 'Passwort verstecken'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = 'OK - Lesezeichen löschen'
|
||||
delete_bookmark_submit = 'OK – Lesezeichen löschen'
|
||||
delete_bookmark_confirm = 'Soll dieses Lesezeichen wirklich gelöscht werden?'
|
||||
no_bookmarks = 'keine Lesezeichen gefunden'
|
||||
edit_bookmark = 'Lesezeichen:'
|
||||
|
@ -284,7 +318,7 @@ error_bookmark_word_too_long = 'das Wort "[word]" ist zu lang'
|
|||
error_bookmark_tags_limit_reached = 'Maximale Anzahl an Tags pro Lesezeichen überschritten'
|
||||
|
||||
[entry]
|
||||
edited_by = 'bearbeitet von [name], [time]'
|
||||
edited_by = 'bearbeitet von [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = 'ein View'
|
||||
several_views = '[views] Views'
|
||||
|
@ -341,6 +375,8 @@ subject_marking = 'Betreff:'
|
|||
message_marking = 'Nachricht:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(optional, durch Komma getrennt)'
|
||||
bbcode_help_heading = 'Formatierungshilfe'
|
||||
bbcode_help_skip_link = 'zur Eingabe springen'
|
||||
bbcode_bold_label = 'fett'
|
||||
bbcode_bold_title = 'Text fett formatieren'
|
||||
bbcode_bold_instruction = '[b]fetter Text[/b]'
|
||||
|
@ -373,15 +409,12 @@ bbcode_image_instr_right = 'rechts: [img=right]http://example.com/image.j
|
|||
bbcode_image_label_thumb = 'Thumbnail'
|
||||
bbcode_image_instr_thumb = 'Thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'Thumbnail links'
|
||||
bbcode_image_instr_thumb_left = 'Thumbnail links: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'Thumbnail links: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'Thumbnail rechts'
|
||||
bbcode_image_instr_thumb_right = 'Thumbnail rechts: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'Thumbnail rechts: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'Upload'
|
||||
bbcode_upload_title = 'Bild hoch laden'
|
||||
bbcode_upload_instruction = 'Bild hoch laden …'
|
||||
bbcode_flash_label = 'Flash'
|
||||
bbcode_flash_title = 'Flash einfügen'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = 'Formel einfügen (TeX)'
|
||||
bbcode_tex_instruction = '[tex]TeX-Code[/tex]'
|
||||
|
@ -397,8 +430,11 @@ insert_smiley_title = 'Smiley einfügen'
|
|||
email_notific_reply_thread = 'E-Mail-Benachrichtigung bei Antworten in diesem Thread'
|
||||
email_notific_reply_post = 'E-Mail-Benachrichtigung bei Antworten auf diesen Eintrag'
|
||||
show_signature_marking = 'Signatur anhängen'
|
||||
sticky_thread = 'Thread soll oben bleiben'
|
||||
message_submit_button = 'OK - Eintragen'
|
||||
sticky_none = 'Pinne den Thread nicht oben an'
|
||||
sticky_single_cat = 'Pinne den Thread in der ausgewählten Kategorie an'
|
||||
sticky_all_cats = 'Pinne den Thread in allen Kategorien an'
|
||||
sticky_thread = 'Pinne den Thread oben an'
|
||||
message_submit_button = 'OK – Eintragen'
|
||||
message_submit_title = 'Eintrag speichern'
|
||||
message_preview_button = 'Vorschau'
|
||||
message_preview_title = 'Vorschau bevor Eintrag gespeichert wird'
|
||||
|
@ -406,14 +442,14 @@ reply_to_posting_marking = 'Antwort auf den Eintrag von <strong>[name]</s
|
|||
minutes_left_to_edit = 'noch [minutes] Minuten, um diesen Eintrag zu bearbeiten'
|
||||
minutes_left_to_edit_reply = 'noch [minutes] Minuten, um diesen Eintrag zu bearbeiten, falls er nicht zwischenzeitlich beantwortet wurde'
|
||||
preview_headline = 'Vorschau:'
|
||||
error_repeated_posting = 'wiederholter Eintrag innerhalb von [minutes] Minuten - bitte einen Moment warten!'
|
||||
error_repeated_posting = 'wiederholter Eintrag innerhalb von [minutes] Minuten – bitte einen Moment warten!'
|
||||
error_name_like_subject = 'Name und Betreff sind identisch'
|
||||
error_name_reserved = 'der Name wird bereits von einem registrierten Benutzer verwendet'
|
||||
error_username_too_long = 'der Name ist zu lang'
|
||||
error_name_too_long = 'der Name ist zu lang'
|
||||
error_no_email_to_notify = 'keine E-Mail für die Benachrichtigung eingegeben'
|
||||
error_text_too_long = 'der Eintrag ist zu lang ([text_length] Zeichen - nur [text_maxlength] Zeichen erlaubt)'
|
||||
error_subject_too_long = 'der Betreff ist zu lang'
|
||||
error_text_too_long = 'der Eintrag ist zu lang ([text_length] Zeichen – nur [text_maxlength] Zeichen erlaubt)'
|
||||
error_tags_too_long = 'Tags zu lang'
|
||||
error_posting_unavailable = 'der Eintrag existiert nicht'
|
||||
|
||||
|
@ -423,36 +459,41 @@ delete_marked_hl = 'markierte Einträge löschen'
|
|||
delete_marked_confirm = 'Sicher, dass alle markierten Einträge und deren Antworten gelöscht werden sollen?'
|
||||
delete_spam_hl = 'Spam löschen'
|
||||
delete_spam_confirm = 'Sicher, dass alle als Spam gekennzeichneten Einträge gelöscht werden sollen?'
|
||||
delete_posting_submit = 'OK - Löschen'
|
||||
report_spam_hl = 'Spam melden'
|
||||
delete_posting_submit = 'OK – Löschen'
|
||||
report_spam_hl = 'Als Spam klassifizieren'
|
||||
report_spam_warning = 'Bitte den Eintrag nur als Spam melden, wenn es auch wirklich Spam ist! Die integrierten Spam-Filter berechnen die Wahrscheinlichkeit, dass ein Eintrag Spam ist, anhand von Trainingsdaten. Falsch klassifizierte Daten machen diese Bayes-basierten Filter unbrauchbar.'
|
||||
posting_already_spam = 'Dieser Eintrag ist bereits als Spam gekennzeichnet.'
|
||||
spamcheck_posting_not_checked = 'Dieser Eintrag ist als Ham (kein Spam) gekennzeichnet oder wurde nicht von Akismet überprüft, da Akismet entweder nicht eingeschaltet war oder der Eintrag von einem registrierten Benutzer stammt.'
|
||||
spamcheck_posting_passed = 'Dieser Eintrag hat den Spamfilter passiert. Bitte nur als Spam melden, wenn es auch wirklich Spam ist!'
|
||||
spamcheck_akismet_api_error = 'Dieser Eintrag hat den Spamfilter passiert, weil beim Überrüfen ein Fehler aufgetreten ist. Das kann durch einen ungültigen API-Key passieren.'
|
||||
spamcheck_akismet_timeout_error = 'Dieser Eintrag hat den Spamfilter wegen einem Server-Timeout des Akismet-Servers passiert.'
|
||||
report_spam_delete_submit = 'als Spam melden und löschen'
|
||||
report_spam_submit = 'nur als Spam melden'
|
||||
report_spam_delete_submit = 'als Trainingsdaten für Spam verwenden und löschen'
|
||||
report_spam_submit = 'nur als Trainingsdaten für Spam verwenden'
|
||||
delete_only_submit = 'nur löschen'
|
||||
postings_doesnt_exist = 'Dieser Eintrag existiert nicht!'
|
||||
posting_not_flagged_as_spam = 'Dieser Eintrag ist nicht als Spam gekennzeichnet'
|
||||
flag_ham_hl = 'als Ham (kein Spam) kennzeichnen'
|
||||
flag_ham_note = 'Dieser Eintrag wurde von Akismet als Spam gekennzeichnet. Bitte nur als Ham (kein Spam) melden, wenn es wirklich kein Spam ist!'
|
||||
report_flag_ham_submit = 'als Ham (kein Spam) kennzeichnen und melden'
|
||||
flag_ham_hl = 'Als Ham (kein Spam) klassifizieren'
|
||||
flag_ham_warning = 'Bitte den Eintrag nur als Ham (kein Spam) melden, wenn es auch wirklich kein Spam ist! Die integrierten Spam-Filter berechnen die Wahrscheinlichkeit, dass ein Eintrag Spam ist, anhand von Trainingsdaten. Falsch klassifizierte Daten machen diese Bayes-basierten Filter unbrauchbar.'
|
||||
report_flag_ham_submit = 'als Ham (kein Spam) kennzeichnen und als Trainingsdaten verwenden'
|
||||
flag_ham_submit = 'nur als Ham (kein Spam) kennzeichnen'
|
||||
no_authorisation_delete = 'Der Eintrag kann nicht gelöscht werden! Entweder der Löschzeitraum ist abgelaufen, der Thread ist gesperrt oder es gibt bereits eine Antwort auf diesen Eintrag.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = 'Benachrichtigung ausgeschaltet'
|
||||
unsubscribed_message = 'Die Benachrichtigung über Antworten auf deinen Eintrag wurde ausgeschaltet. Es werden keine weiteren E-Mails gesendet, um dich über Antworten auf den nämlichen Eintrag zu informieren. Weitere aktivierte Benachrichtigungen über Antworten auf andere Einträge sind von dieser Aktion nicht betroffen.'
|
||||
unsubscribe_error_hl = 'Die Benachrichtigung konnte nicht ausgeschaltet werden'
|
||||
unsubscribe_error_message = 'Während der Verarbeitung der Anfrage zum abschalten der Benachrichtigung trat ein Fehler auf. Bitte informiere den Forenbetreiber per E-Mail über den Fehler. Bitte füge der E-Mail folgende Informationen hinzu: die ID des betreffenden Eintrags (lies sie aus dem Link in der E-Mail aus (URL-Parameter "unsubscribe")) und den Zeitpunkt, an dem diese Aktion scheiterte (füge, wenn möglich, den Namen deiner Zeitzone hinzu).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Spamschutz-Maßnahme:'
|
||||
captcha_marking = 'Spamschutzmaßnahme:'
|
||||
captcha_expl_math = 'Bitte die beiden Zahlen addieren:'
|
||||
captcha_expl_image = 'Bitte die Buchstaben/Zahlen des Bildes eingeben:'
|
||||
captcha_image_alt = 'Wenn Sie das Bild nicht sehen können, müssen Sie sich zuerst registrieren/einloggen, um den Eintrag speichern zu können'
|
||||
captcha_image_alt_reg = 'Bitte den Foren-Administrator kontaktieren, wenn Sie das Bild nicht sehen können'
|
||||
captcha_check_failed = 'Spamschutz-Maßnahme nicht bestanden - bitte nochmal versuchen!'
|
||||
captcha_check_failed = 'Spamschutzmaßnahme nicht bestanden – bitte nochmal versuchen!'
|
||||
|
||||
[upload_image]
|
||||
image_upload_not_enabled = 'Der Bilder-Upload ist deaktiviert.'
|
||||
upload_image_hl = 'Bild hochladen'
|
||||
upload_image_button = 'OK - Hochladen'
|
||||
upload_image_button = 'OK – Hochladen'
|
||||
upload_error = 'Fehler beim Hochladen'
|
||||
upload_error_2 = 'kein Bild ausgewählt oder Bild größer als die vom Server verarbeitbare Dateigröße ([server_max_filesize])'
|
||||
invalid_file_format = 'ungültiges Bildformat'
|
||||
|
@ -466,20 +507,14 @@ browse_uploaded_images = 'hochgeladene Bilder durchsuchen …'
|
|||
back = '« zurück'
|
||||
no_images = 'keine Bilder vorhanden'
|
||||
delete_image_confirm = 'Dieses Bild löschen?'
|
||||
delete_image_button = 'OK - löschen'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'Flash einfügen'
|
||||
flash_url = 'Flash-URL:'
|
||||
flash_size = 'Größe:'
|
||||
insert_flash_button = 'Flash einfügen'
|
||||
delete_image_button = 'OK – löschen'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Avatar'
|
||||
delete_avatar = 'Avatar löschen'
|
||||
upload_avatar_hl = 'Avatar hochladen'
|
||||
upload_avatar_notes = 'maximale Größe: [width]*[height] px, [filesize] KB'
|
||||
upload_image_button = 'OK - Hochladen'
|
||||
upload_image_button = 'OK – Hochladen'
|
||||
upload_error = 'Fehler beim hochladen!'
|
||||
upload_error_2 = 'kein Bild ausgewählt oder Bild größer als die vom Server verarbeitbare Dateigröße ([server_max_filesize])'
|
||||
invalid_file_format = 'ungültiges Dateiformat'
|
||||
|
@ -493,7 +528,7 @@ avatars_disabled = 'Avatare deaktiviert'
|
|||
move_posting_hl = 'Eintrag verschieben'
|
||||
move_posting_new_thread = 'Eigenständigen Thread aus diesem Eintrag und seinen Antworten machen'
|
||||
move_posting = 'Diesen Eintrag und seine Antworten an den Eintrag mit der ID [number] anhängen'
|
||||
move_posting_submit = 'OK - Eintrag verschieben'
|
||||
move_posting_submit = 'OK – Eintrag verschieben'
|
||||
invalid_posting_to_move = 'Ungültige ID'
|
||||
|
||||
[manage_postings]
|
||||
|
@ -527,12 +562,13 @@ code_invalid = 'Ungültiger Code!'
|
|||
|
||||
[pw_forgotten]
|
||||
new_pw_ok = 'Ein neues Passwort wurde erzeugt und versendet.'
|
||||
new_pw_failed = 'Der Bestätigungs-Link ist ungültig, es konnte kein neues Passwort erzeugt werden.'
|
||||
new_pw_failed = 'Der Bestätigungslink ist ungültig, es konnte kein neues Passwort erzeugt werden.'
|
||||
pw_forgotten_exp = 'Da das Passwort in einer Codierung gespeichert ist, die nicht rückgängig gemacht werden kann, muss ein neues Passwort generiert werden. Um Missbrauch zu vermeiden, wird zunächst eine E-Mail an die gespeicherte E-Mail-Adresse versendet. Diese muss durch einen mitgesendeten Link bestätigt werden, worauf dann ein neues Passwort generiert wird.'
|
||||
pwf_username = 'Benutzername:'
|
||||
pwf_email = 'E-Mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Benutzerliste'
|
||||
user_name = 'Benutzername'
|
||||
user_type = 'Typ'
|
||||
admin = 'Admin'
|
||||
|
@ -595,7 +631,10 @@ edit_email = 'E-Mail-Adresse ändern'
|
|||
edit_user_pw = 'Passwort:'
|
||||
pw_not_displayed = 'nicht angezeigt'
|
||||
edit_pw = 'Passwort ändern'
|
||||
edit_user_email_contact = 'E-Mail-Adresse kontaktierbar'
|
||||
edit_user_contacting = 'Kontaktaufnahme:'
|
||||
edit_user_contacting_disabled = 'Nur Administratoren und Moderatoren dürfen mich kontaktieren'
|
||||
edit_user_contacting_registered = 'Nur registrierte Mitglieder des Forums dürfen mich kontaktieren'
|
||||
edit_user_contacting_public = 'Jeder darf mit mir Kontakt aufnehmen'
|
||||
edit_user_real_name = 'Name:'
|
||||
edit_user_gender = 'Geschlecht:'
|
||||
gender_not_specified = 'keine Angabe'
|
||||
|
@ -607,7 +646,7 @@ edit_user_hp = 'Homepage:'
|
|||
edit_user_location = 'Ort:'
|
||||
edit_user_profile = 'Profil:'
|
||||
edit_user_signature = 'Signatur:'
|
||||
edit_user_cat_selection = 'Persönliche Kategorie-Auswahl:'
|
||||
edit_user_cat_selection = 'Persönliche Kategorieauswahl:'
|
||||
edit_user_time_zone = 'Zeitzone:'
|
||||
edit_user_time_difference = 'Zusätzlicher Zeitunterschied in Stunden (z.B. +3 oder -5:30):'
|
||||
edit_user_default_time_zone_svr = 'Standard (Serverzeit)'
|
||||
|
@ -618,20 +657,35 @@ edit_user_theme = 'Theme:'
|
|||
edit_user_default_theme = 'Standard ([default_theme])'
|
||||
edit_user_auto_login = 'Automatisches einloggen:'
|
||||
enable_auto_login = 'automatisches Login aktivieren'
|
||||
edit_user_where_to_open_links = 'Sollen Links <em>in Forumseinträgen</em> im selben oder in einem neuen Browserfenster oder -tab geöffnet werden?'
|
||||
where_to_open_links_forum_def = 'Benutze die Einstellung des Forums (Vorgabewert oder der vom Forumsadministrator gesetzte Wert)'
|
||||
where_to_open_links_same = 'Öffne alle Links im selben Browserfenster'
|
||||
where_to_open_links_external = 'Öffne Links zu anderen Websites in einem neuen Browserfenster oder -tab (abhängig von den Browsereinstellungen)'
|
||||
where_to_open_links_all = 'Öffne alle Links in einem neuen Browserfenster oder -tab (abhängig von den Browsereinstellungen)'
|
||||
edit_user_notification = 'E-Mail-Benachrichtigung:'
|
||||
admin_mod_notif_posting = 'bei neuen Einträgen'
|
||||
admin_mod_notif_register = 'beim Registrieren neuer Benutzer'
|
||||
userdata_submit_button = 'OK - Speichern'
|
||||
userdata_submit_button = 'OK – Speichern'
|
||||
profile_saved = 'Profil gespeichert'
|
||||
pw_changed = 'Passwort geändert'
|
||||
remove_user_account = 'Account löschen'
|
||||
remove_user_account_link = 'Nutzeraccount dauerhaft löschen'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = 'Account löschen'
|
||||
remove_user_account_warning = 'Achtung, das Entfernen des Benutzerkontos kann nicht rückgängig gemacht werden! Es werden alle Profildaten und Bookmarks gelöscht. Die Einträge im Forum bleiben erhalten und werden unter dem gewählten Anzeigenamen ([user_name]) dargestellt. Sie sind nicht mehr mit einem Profil verbunden.'
|
||||
remove_user_confirm_password = 'Passwort:'
|
||||
error_pw_wrong = 'das Passwort ist falsch'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'altes Passwort:'
|
||||
edit_pw_new = 'neues Passwort:'
|
||||
edit_pw_conf = 'neues Passwort wiederholen:'
|
||||
error_old_pw_wrong = 'altes Passwort falsch'
|
||||
error_pw_conf_uneven = 'neues Passwort und Wiederholung stimmen nicht überein'
|
||||
error_new_pw_too_short = 'das neue Passwort muss mindestens [characters] Zeichen lang sein'
|
||||
error_new_pw_needs_digit = 'das Passwort muss mindestens [digits] Ziffer(n) enthalten'
|
||||
error_new_pw_needs_lowercase_letter = 'das Passwort muss mindestens [lowercase_letters] Kleinbuchstaben enthalten'
|
||||
error_new_pw_needs_uppercase_letter = 'das Passwort muss mindestens [uppercase_letters] Großbuchstaben enthalten'
|
||||
error_new_pw_needs_special_character ='das Passwort muss mindestens [special_characters] Sonderzeichen enthalten'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'Nach dem Ändern der E-Mail-Adresse muss das Account erneut freigeschaltet werden. Es wird ausgeloggt und ein Aktivierungsschlüssel an die neue E-Mail-Adresse gesendet. Bitte genau auf die richtige Schreibweise der E-Mail-Adresse achten! Das Account muss innerhalb eines Tages freigeschaltet werden!'
|
||||
|
@ -644,21 +698,26 @@ error_email_too_long = 'die E-Mail-Adresse ist zu lang'
|
|||
error_identic_email = 'die neue E-Mail-Adresse ist gleich wie die alte'
|
||||
error_email_invalid = 'die E-Mail-Adresse ist ungültig'
|
||||
pw_wrong = 'das Passwort ist falsch'
|
||||
error_email_collision = 'die neue E-Mail-Adresse existiert bereits'
|
||||
|
||||
[register]
|
||||
register_exp = 'Bitte gewünschten Benutzername, Passwort und eine eine gültige E-Mail-Adresse angeben. Nach dem Registrieren wird ein Aktivierungslink an diese E-Mail-Adresse gesendet. Das Konto muss dann innerhalb eines Tages aktiviert werden.'
|
||||
register_username = 'Benutzername:'
|
||||
register_user_email = 'E-Mail:'
|
||||
register_pw = 'Passwort:'
|
||||
register_pw_conf = 'Passwort wiederholen:'
|
||||
register_honeypot_field = 'Dieses Feld bitte unausgefüllt lassen:'
|
||||
register_only_by_admin = 'Neue Benutzer können nur vom Administrator registriert werden.'
|
||||
register_link_to_login = 'zum Login'
|
||||
registered = 'Das Benutzerkonto wurde eingerichtet und der Aktivierungslink wurde an <strong>[var]</strong> gesendet. Bitte das Konto innerhalb eines Tages aktivieren.'
|
||||
registered_send_error = 'Das Benutzerkonto wurde eingerichtet aber der Aktivierungslink konnte nicht gesendet werden (Mailserver-Fehler). Bitte den Administrator kontaktieren um das Konto manuell zu aktivieren.'
|
||||
activation_failed = 'Aktivierung fehlgeschlagen!'
|
||||
error_password_too_short = 'das Passwort muss mindestens [characters] Zeichen lang sein'
|
||||
error_email_alr_exists = 'es ist bereits ein Benutzer mit dieser E-Mail-Adresse vorhanden'
|
||||
error_reg_not_accepted_word = 'Spam-Schutz: E-Mail oder Benutzername nicht akzeptiert'
|
||||
error_pw_needs_digit = 'das Passwort muss mindestens [digits] Ziffer(n) enthalten'
|
||||
error_pw_needs_lowercase_letter = 'das Passwort muss mindestens [lowercase_letters] Kleinbuchstaben enthalten'
|
||||
error_pw_needs_uppercase_letter = 'das Passwort muss mindestens [uppercase_letters] Großbuchstaben enthalten'
|
||||
error_pw_needs_special_character ='das Passwort muss mindestens [special_characters] Sonderzeichen enthalten'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'E-Mail an den Foren-Administrator'
|
||||
|
@ -666,24 +725,25 @@ contact_user_hl = 'E-Mail an [recipient_name]'
|
|||
impossible_to_contact = 'Dieser Benutzer kann nicht kontaktiert werden!'
|
||||
contact_doesnt_exist = 'Dieser Kontakt existiert nicht!'
|
||||
sender_address_caption = 'Absender E-Mail:'
|
||||
sender_confirmation_caption = 'Eine Kopie dieser Nachricht auch an meine E-Mail senden'
|
||||
subject_caption = 'Betreff:'
|
||||
message_caption = 'Nachricht:'
|
||||
message_submit_caption = 'OK - Versenden'
|
||||
message_submit_caption = 'OK – Versenden'
|
||||
email_sent = 'Die Nachricht wurde erfolgreich versendet.'
|
||||
error_message_no_text = 'keine Nachricht eingegeben'
|
||||
error_message_no_email = 'keine Absender-Adresse angegeben'
|
||||
error_message_no_email = 'keine Absenderadresse angegeben'
|
||||
error_message_no_subject = 'kein Betreff angegeben'
|
||||
error_email_invalid = 'die E-Mail-Adresse ist ungültig'
|
||||
error_email_subject_too_long = 'der Betreff ist zu lang'
|
||||
error_email_text_too_long = 'die Nachricht ist zu lang ([text_length] Zeichen - nur [text_maxlength] Zeichen erlaubt)'
|
||||
error_spam_suspicion = 'Spam-Verdacht! Bitte Nachricht verändern (z.B. Links löschen)'
|
||||
error_email_text_too_long = 'die Nachricht ist zu lang ([text_length] Zeichen – nur [text_maxlength] Zeichen erlaubt)'
|
||||
error_email_spam_suspicion = 'Spam-Verdacht! Bitte Nachricht verändern (z.B. Links löschen)'
|
||||
|
||||
[admin]
|
||||
enabled = 'aktiviert'
|
||||
disabled = 'deaktiviert'
|
||||
folder_alt = 'Ordner'
|
||||
file_alt = 'Datei'
|
||||
admin_confirm_password = 'Administrator-Passwort:'
|
||||
admin_confirm_password = 'Administratorpasswort:'
|
||||
error_password_wrong = 'Passwort falsch'
|
||||
|
||||
# Admin-Menü:
|
||||
|
@ -693,9 +753,9 @@ user_administr_link = 'Benutzerverwaltung'
|
|||
smilies_administr_link = 'Smilies'
|
||||
pages_administr_link = 'Seiten'
|
||||
spam_protection_link = 'Spamschutz'
|
||||
backup_restore_link = 'Backup'
|
||||
update_link = 'Update'
|
||||
reset_uninstall_link = 'Zurücksetzen/Deinstallieren'
|
||||
upload_administr_link = 'Verwaltung der Uploads'
|
||||
releases_info_header = 'Aktuell verfügbarer Release'
|
||||
releases_list_link = 'Prüfe die Releases-Liste auf die aktuell verfügbare Version.'
|
||||
warning_header = 'Warnung'
|
||||
|
@ -705,7 +765,7 @@ actual_installed_version = 'Die Versionsnummer Ihrer Installation: <stron
|
|||
|
||||
# Einstellungen:
|
||||
clear_chache = 'Cache löschen um Einstellungen auch auf bereits bestehende Einträge anzuwenden'
|
||||
settings_submit_button = 'OK - Einstellungen speichern'
|
||||
settings_submit_button = 'OK – Einstellungen speichern'
|
||||
settings_saved = 'die Einstellungen wurden gespeichert'
|
||||
advanced_settings_link = 'erweiterte Einstellungen'
|
||||
forum_name = 'Titel/Name'
|
||||
|
@ -715,7 +775,9 @@ forum_description_desc = 'eine kurze Beschreibung des Forums'
|
|||
forum_address = 'Adresse'
|
||||
forum_address_desc = 'URL des Forums in diesem Format: http://www.domain.tld/forum/'
|
||||
forum_email = 'E-Mail'
|
||||
forum_email_desc = 'wird als Kontakt-Adresse und Absender-Adresse für alle vom Forum versendeten E-Mails verwendet'
|
||||
forum_email_desc = 'wird als Kontaktadresse und Absenderadresse für alle vom Forum versendeten E-Mails verwendet'
|
||||
forum_target_name = 'Link-Ziel-Fenster'
|
||||
forum_target_name_desc = 'Die Angabe für <code>target</code> legt fest, wo ein Link aus einem Beitrag geöffnet werden soll. Das ist insbesondere wichtig, falls das Forum in einem <code>frame</code> eines Framesets oder in einem <code>iframe</code> angezeigt wird. Erlaubte Werte sind <code>_self</code> zum öffnen von Links im aktuellen Browserfenster oder -tab, <code>_parent</code> zum öffnen von Links im Eltern-Frame des aktuellen Frames eines Framesets, <code>_top</code> um komplett aus einem Frameset im aktuellen Browserfenster oder -tab auszubrechen oder ein frei gewählter Name eines existierenden <code>frame</code> oder <code>iframe</code>. Bei Angabe eines unbekannten Namens, mit dem Wert <code>_self</code> oder mit leerem Wert werden Links im aktuellen Browserfenster oder -tab geöffnet.'
|
||||
home_link = 'Home-Link'
|
||||
home_link_desc = 'Link zur Homepage, z.B. http://www.domain.tld/ oder ../index.html (optional)'
|
||||
home_link_name = 'Home-Link-Bezeichnung'
|
||||
|
@ -724,19 +786,19 @@ default_language = 'Sprache'
|
|||
default_language_desc = 'standardmäßige Sprache des Forums'
|
||||
default_time_zone = 'Zeitzone'
|
||||
default_time_zone_desc = 'standardmäßige Zeitzone'
|
||||
default_time_difference = 'Zeitzonen-Einstellung nicht verfügbar. Alternativ kann der Zeitunterschied zwischen Serverzeit und Zeit des Forums angegeben werden (in Minuten, z.B. 240 or -360):'
|
||||
default_time_difference = 'Zeitzoneneinstellung nicht verfügbar. Alternativ kann der Zeitunterschied zwischen Serverzeit und Zeit des Forums angegeben werden (in Minuten, z.B. 240 or -360):'
|
||||
default_theme = 'Theme'
|
||||
default_theme_desc = 'standardmäßiges Theme (Layoutvorlage) des Forums'
|
||||
threads_per_page = 'Threads pro Seite'
|
||||
threads_per_page_desc = 'Wieviele Threads sollen pro Seite angezeigt werden?'
|
||||
reset_read_state = 'Gelesen-Status zurücksetzen'
|
||||
reset_read_state_desc = 'Auf welche Weise soll der Gelesen-Status zurückgesetzt werden?'
|
||||
reset_read_state = 'Gelesenstatus zurücksetzen'
|
||||
reset_read_state_desc = 'Auf welche Weise soll der Gelesenstatus zurückgesetzt werden?'
|
||||
read_state_no_reset = 'Status dauerhaft speichern'
|
||||
read_state_numbered_reset = 'Status für eine bestimmte Anzahl von Beiträgen speichern'
|
||||
read_state_timeout_reset = 'Status für die Dauer von x Tagen speichern'
|
||||
read_state_locktime_reset = 'Status bis zur automatischen Sperrung der Beiträge speichern'
|
||||
read_state_value = 'Wert für das Zurücksetzen des Gelesen-Status\''
|
||||
read_state_value_desc = 'Auf welche Anzahl von Beiträgen oder von Tagen soll der Gelesen-Status begrenzt werden? Für das entfernen des Status\' bei der automatischen Sperrung des Threads wird der für jene Einstellung vorgesehene Wert verwendet.'
|
||||
read_state_value = 'Wert für das Zurücksetzen des Gelesenstatus\''
|
||||
read_state_value_desc = 'Auf welche Anzahl von Beiträgen oder von Tagen soll der Gelesenstatus begrenzt werden? Für das entfernen des Status\' bei der automatischen Sperrung des Threads wird der für jene Einstellung vorgesehene Wert verwendet.'
|
||||
auto_lock_old_threads = 'Automatisches Sperren alter Threads'
|
||||
auto_lock_old_threads_desc = 'Threads automatisch sperren, deren letzte Antworten älter als wieviele Tage sind? (0=aus)'
|
||||
accession = 'Zugangsberechtigung'
|
||||
|
@ -754,6 +816,7 @@ user_area = 'Benutzerbereich'
|
|||
user_area_desc = 'Ist der Benutzerbereich (Benutzerliste, Profile) öffentlich zugänglich?'
|
||||
public_accessible = 'öffentlich'
|
||||
accessible_reg_users_only = 'nur für registrierte Benutzer zugänglich'
|
||||
accessible_team_users_only = 'nur für Administratoren und Moderatoren zugänglich'
|
||||
latest_postings = 'Letzte Einträge'
|
||||
latest_postings_desc = 'Wieviele letzte Einträge sollen in einer Liste auf der Hauptseite angezeigt werden (0=keine)?'
|
||||
tag_cloud = 'Tag-Cloud (Schlagwortwolke)'
|
||||
|
@ -763,6 +826,10 @@ terms_of_use_settings = 'Nutzungsbedingungen'
|
|||
terms_of_use_settings_desc = 'Müssen Nutzungsbedingungen von nicht registrierten Benutzern beim Schreiben von Einträgen und bem Registrieren zugestimmt werden?'
|
||||
terms_of_use_settings_enabled = 'Nutzungsbedingungen verwenden'
|
||||
terms_of_use_url = 'Adresse (URL) der Nutzungsbedingungen:'
|
||||
data_privacy_statement = 'Datenschutzerklärung'
|
||||
data_privacy_statement_desc = 'Muss die Datenschutzerklärung von nicht registrierten Benutzern beim Schreiben von Einträgen und bem Registrieren zur Kenntnis genommen werden?'
|
||||
data_privacy_settings_enabled = 'Datenschutzerklärung verwenden'
|
||||
data_privacy_url = 'Adresse (URL) der Datenschutzerklärung:'
|
||||
edit_postings = 'Einträge bearbeiten'
|
||||
edit_postings_desc = 'Einstellungen zur Bearbeitung von Einträgen'
|
||||
edit_own_postings = 'Bearbeiten eigener Einträge:'
|
||||
|
@ -778,7 +845,6 @@ bbcode = 'BB-Code'
|
|||
bbcode_desc = 'Kann BB-Code verwendet werden, um Texte zu formatieren?'
|
||||
bbcodes_enabled = 'BB-Code aktiviert'
|
||||
bbcodes_img_enabled = 'BB-Code zum Einbinden von Bildern aktiviert'
|
||||
bbcodes_flash_enabled = 'BB-Code zum Einbinden von Flash-Videos aktiviert'
|
||||
smilies = 'Smilies'
|
||||
smilies_desc = 'Sollen Smilies wie ":-)" durch Bilder ersetzt werden? (Smilies können in der Smiley-Administration verwaltet werden)'
|
||||
smilies_enabled = 'Smilies aktiviert'
|
||||
|
@ -827,7 +893,7 @@ delete_category_hl = 'Kategorie "[category]" löschen'
|
|||
delete_category_compl = 'Kategorie und Einträge löschen'
|
||||
del_cat_keep_entries = 'Kategorie löschen aber Einträge behalten'
|
||||
del_cat_move_entries = 'Kategorie löschen aber die Einträge behalten und in diese Kategorie verschieben:'
|
||||
delete_category_submit = 'OK - Kategorie löschen'
|
||||
delete_category_submit = 'OK – Kategorie löschen'
|
||||
|
||||
# Smilies:
|
||||
edit_smilies_smiley = 'Smiley:'
|
||||
|
@ -835,7 +901,7 @@ edit_smilies_codes = 'Codes:'
|
|||
edit_smilies_title = 'Titel:'
|
||||
smiley_file_doesnt_exist = 'das Smiley-Bild existiert nicht'
|
||||
smiley_code_empty = 'kein Smiley-Code angegeben'
|
||||
no_other_smilies_in_folder = 'Keine weiteren Smiley-Bilder im Verzeichnis. Um Smilies hinzuzufügen, Smiley-Bilder in das Verzeichnis 'images/smilies' hochladen.'
|
||||
no_other_smilies_in_folder = 'Keine weiteren Smiley-Bilder im Verzeichnis. Um Smilies hinzuzufügen, Smiley-Bilder in das Verzeichnis \'images/smilies\' hochladen.'
|
||||
smiley_image = 'Smiley'
|
||||
smiley_codes = 'Codes(s)'
|
||||
smiley_title = 'Titel'
|
||||
|
@ -856,13 +922,14 @@ page_access_reg_users = 'nur registrierte Benutzer'
|
|||
page_access_public = 'öffentlich'
|
||||
no_pages = 'keine Seiten vorhanden'
|
||||
add_page_link = 'Seite hinzufügen'
|
||||
edit_page_submit = 'OK - Seite speichern'
|
||||
edit_page_submit = 'OK – Seite speichern'
|
||||
page_doesnt_exist = 'Die Seite ist nicht vorhanden.'
|
||||
delete_page_confirm = 'Soll diese Seite wirklich gelöscht werden?'
|
||||
delete_page_submit = 'OK - Seite löschen'
|
||||
delete_page_submit = 'OK – Seite löschen'
|
||||
error_no_page_title = 'kein Seitentitel'
|
||||
|
||||
# Benutzerverwaltung:
|
||||
user_list_header = 'Benutzerliste'
|
||||
user_name_empty = 'kein Benutzername eingegeben'
|
||||
num_registerd_users = '[number] registrierte Benutzer'
|
||||
user_id = 'ID'
|
||||
|
@ -886,112 +953,108 @@ activate_link = 'Benutzerkonto aktivieren'
|
|||
delete_selected_users = 'ausgewählte Benutzer löschen'
|
||||
add_user = 'Benutzer hinzufügen'
|
||||
email_list = 'E-Mail-Liste der registrierten Benutzer'
|
||||
reset_terms_of_use = 'Zustimmung zu den Nutzungsbedingungen zurücksetzen'
|
||||
reset_data_privacy_statement = 'Zustimmung zur Datenschutzerklärung zurücksetzen'
|
||||
clear_userdata = 'Benutzerkonten aufräumen'
|
||||
edit_user_avatar = 'Avatar:'
|
||||
delete_avatar = 'Avatar löschen'
|
||||
delete_user_confirmation = 'Sicher, dass dieser Benutzer gelöscht werden soll?'
|
||||
delete_users_confirmation = 'Sicher, dass diese Benutzer gelöscht werden sollen?'
|
||||
delete_entries_of_user_confirm = 'Sicher, dass alle Einträge von <strong>[user]</strong> gelöscht werden sollen? Es werden dabei auch die Antworten anderer Benutzer gelöscht!'
|
||||
delete_submit = 'OK - Löschen'
|
||||
register_exp = 'Es muss kein Passwort angegeben werden - es wird dann ein zufälliges Passwort generiert. In diesem Fall muss das Passwort an die angegebene E-Mail-Adresse gesendet werden.'
|
||||
delete_submit = 'OK – Löschen'
|
||||
register_exp = 'Es muss kein Passwort angegeben werden – es wird dann ein zufälliges Passwort generiert. In diesem Fall muss das Passwort an die angegebene E-Mail-Adresse gesendet werden.'
|
||||
register_username = 'Benutzername:'
|
||||
register_email = 'E-Mail:'
|
||||
register_pw = 'Passwort:'
|
||||
register_pw_conf = 'Passwort wiederholen:'
|
||||
register_send_userdata = 'Zugangsdaten an die angegebene E-Mail-Adresse senden'
|
||||
error_send_userdata = 'Wenn kein Passwort angegeben werden soll, muss das generierte Passwort per E-Mail versendet werden'
|
||||
error_email_wrong = 'E-Mail-Adresse ungültig'
|
||||
admin_reg_error_email_wrong = 'E-Mail-Adresse ungültig'
|
||||
new_user_registered = 'Der Benutzer "[name]" wurde registriert.'
|
||||
new_user_reg_send_error = 'Der Benutzer "[name]" wurde registriert, aber die Zugangsdaten konnten nicht versendet werden.'
|
||||
clear_userdata_condition = 'Benutzer löschen, die sich höchstens [logins] mal eingeloggt haben und das letzte Mal vor über [days] Tagen.'
|
||||
clear_userdata_note = 'Administratoren und Moderatoren werden nicht erfasst, vor dem entgültigen Löschen wird eine Liste der betroffenen Benutzer angezeigt.'
|
||||
no_users_in_selection = 'keine Benutzer in der Auswahl'
|
||||
|
||||
# Uploadverwaltung
|
||||
upload_administration = 'Verwaltung der Uploads'
|
||||
mark_upload_for_removal = 'zum löschen vormerken'
|
||||
mark_upload_for_managing = 'für Verwaltung markieren'
|
||||
no_uploads_found = 'Es wurden keine hochgeladenen Dateien gefunden.'
|
||||
delete_upload_confirmation = 'Sicher, dass dieser Upload gelöscht werden soll?'
|
||||
delete_uploads_confirmation = 'Sicher, dass diese Uploads gelöscht werden sollen?'
|
||||
check_for_unrecorded_uploads = 'erfasse Uploads'
|
||||
check_for_unrecorded_uploads_desc = 'Prüfe, ob Uploads vorhanden sind, die noch nicht in der Liste der Uploads erfasst sind. Falls welche gefunden werden, werden sie in der Liste eingetragen.'
|
||||
upload_add_db_entry_button = 'in der Datenbank aufnehmen'
|
||||
upload_database_entry_alt = 'Für dieses Bild existiert ein Datenbankeintrag'
|
||||
upload_database_no_entry_alt = 'Für dieses Bild existiert kein Datenbankeintrag'
|
||||
upload_filter_not_managed_images ='nicht verwaltete Bilder'
|
||||
upload_filter_managed_images = 'verwaltete Bilder'
|
||||
upload_filter_all_images = 'alle Bilder'
|
||||
|
||||
|
||||
# Spamschutz:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Welche Formulare sollen mit welchem CAPTCHA-Typ geschützt werden (betrifft nur nicht registrierte Benutzer)?'
|
||||
captcha_graphical_desc = 'Das graphische CAPTCHA benötigt die GD Lib und es sollte mindestens eine TTF-Schrift verwendet werden. Die Schrift-Dateien (*.ttf) müssen in das Verzeichnis modules/captcha/fonts/ kopiert werden. Schriften gibt es z.B. auf www.dafont.com.'
|
||||
captcha_posting = 'Eintrags-Formular:'
|
||||
captcha_graphical_desc = 'Das graphische CAPTCHA benötigt die GD Lib und es sollte mindestens eine TTF-Schrift verwendet werden. Die Schriftdateien (*.ttf) müssen in das Verzeichnis modules/captcha/fonts/ kopiert werden. Schriften gibt es z.B. auf www.dafont.com.'
|
||||
captcha_posting = 'Eintragsformular:'
|
||||
captcha_email = 'E-Mail-Formular:'
|
||||
captcha_register = 'Registrier-Formular:'
|
||||
captcha_register = 'Registrierungsformular:'
|
||||
captcha_disabled = 'aus'
|
||||
captcha_mathematical = 'mathematisch'
|
||||
captcha_graphical = 'graphisch'
|
||||
gr_captcha_not_available = 'graphisches CAPTCHA nicht verfügbar (GD Lib nicht verfügbar)'
|
||||
gr_captcha_no_font = 'keine Schrift verfügbar, CAPTCHA kann nicht ideal angezeigt werden'
|
||||
b8 = 'B8'
|
||||
b8_desc = 'Bayes-basierter Spamschutz <a href="https://nasauber.de/opensource/b8/">B8</a> mit Foren-spezifischen Trainingsdaten'
|
||||
b8_entry_check_enable = 'Eintragsformular prüfen'
|
||||
b8_mail_check_enable = 'E-Mail-Formular prüfen'
|
||||
b8_auto_training_enable = 'Automatisch Trainingsdaten erzeugen (Nur nach ausreichendem manuellem Training mit Spam und Ham Einträgen sinnvoll möglich)'
|
||||
b8_spam_probability_threshold = 'Grenzwert zwischen 0 % und 100 % zur Spam Erkennung, hierbei entspricht z.B. 80 % der Sicherheitswahrscheinlichkeit für den Fehler 1. Art (80 % bedeutet, von 100 Einträgen werden statistisch gesehen 20 Einträge als Spam klassifiziert, die kein Spam sind)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = 'Spamschutz <a href="http://www.stopforumspam.com/">Stop Forum Spam</a> zur Überprüfung von E-Mail-Adressen beim Registrieren'
|
||||
stop_forum_spam_desc = 'Externer Dienst zum Spamschutz <a href="http://www.stopforumspam.com/">Stop Forum Spam</a> zur Überprüfung von E-Mail-Adressen beim Registrieren'
|
||||
stop_forum_spam_enable = 'Stop Forum Spam aktivieren'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = 'Spamschutz <a href="http://bad-behavior.ioerror.us/">Bad Behavior</a>'
|
||||
bad_behavior_enable = 'Bad Behavior aktivieren'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = 'Spamschutz <a href="http://akismet.com/">Akismet</a> - hierfür wird ein <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> benötigt (funktioniert nicht ohne oder mit ungültigem API Key!). '
|
||||
akismet_desc = 'Externer Dienst zum Spamschutz <a href="http://akismet.com/">Akismet</a> – hierfür wird ein <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> benötigt (funktioniert nicht ohne oder mit ungültigem API Key!). '
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
akismet_save_spam = 'Spam speichern (als Spam gekennzeichnet und nicht angezeigt)?'
|
||||
akismet_auto_delete_spam = 'Spam automatisch nach wieviel Stunden löschen (0=nicht löschen)?'
|
||||
akismet_entry = 'Eintrags-Formular prüfen'
|
||||
akismet_entry = 'Eintragsformular prüfen'
|
||||
akismet_mail = 'E-Mail-Formular prüfen'
|
||||
akismet_registered = 'auch Eingaben von angemeldeten Benutzern prüfen'
|
||||
banned_ips = 'gesperrte IPs'
|
||||
banned_ips_desc = 'IP-Adressen, die keinen Zugang zum Forum haben sollen. IP-Bereiche (z.B. 10.10.1.*) und CIDR-Notation (z.B. 10.10.1.32/27) möglich. Eine IP-Adresse pro Zeile eintragen.'
|
||||
banned_user_agents = 'gesperrte User-Agents'
|
||||
banned_user_agents_desc = 'nicht akzeptierte Zeichenketten in User-Agents. Eine Zeichkette pro Zeile eintragen.'
|
||||
not_accepted_words = 'nicht akzeptierte Wörter'
|
||||
not_accepted_words_desc = 'Wörter/Domains, die nicht akzeptiert werden. Ein Wort pro Zeile eintragen.'
|
||||
spam_protection_submit = 'OK - Speichern'
|
||||
spam_protection_submit = 'OK – Speichern'
|
||||
error_own_ip_banned = 'eigene IP gesperrt!'
|
||||
error_own_user_agent_banned = 'eigenen User-Agent gesperrt!'
|
||||
spam_protection_saved = 'die Angaben wurden gespeichert'
|
||||
spam_check_registered = 'angemeldeten Benutzern prüfen'
|
||||
spam_check_registered_desc = 'Prüfung der Eingaben von angemeldeten Benutzern mit aktiven Spam-Filtern'
|
||||
spam_check_registered_enable = 'auch Eingaben von angemeldeten Benutzern prüfen'
|
||||
auto_delete_spam = 'Spam automatisch löschen'
|
||||
auto_delete_spam_desc = 'Ablaufzeit zur Aufbewahrung von Spam Einträgen'
|
||||
auto_delete_spam_timespan = 'Spam automatisch nach wieviel Stunden löschen (0=nicht löschen)?'
|
||||
|
||||
# Zurücksetzen/Deinstallieren:
|
||||
reset_forum = 'Forum zurücksetzen'
|
||||
delete_postings = 'alle Einträge löschen'
|
||||
delete_userdata = 'alle Benutzerdaten löschen (außer eigenem Admin-Account)'
|
||||
reset_forum_submit = 'OK - Forum zurücksetzen'
|
||||
reset_forum_submit = 'OK – Forum zurücksetzen'
|
||||
uninstall_forum = 'Forum deinstallieren'
|
||||
uninstall_forum_exp = 'Löscht alle Forums-Datenbanktabellen. Das Forum wird dann nicht mehr funktionieren!'
|
||||
uninstall_forum_submit = 'OK - Forum deinstallieren'
|
||||
uninstall_forum_submit = 'OK – Forum deinstallieren'
|
||||
error_no_selection_made = 'keine Auswahl getroffen'
|
||||
|
||||
# Backup:
|
||||
backup_note = 'Um die Backup-Funktion verwenden zu können, muss das Verzeichnis <i>backup</i> beschreibbar sein. Bitte auch sicherstellen, dass das Verzeichnis nicht über das Internet zugänglich ist (bzw. dass auf einem Apache-Webserver der htaccess-Schutz funktioniert).'
|
||||
backup_file = 'Datei'
|
||||
backup_date = 'Datum'
|
||||
backup_size = 'Größe'
|
||||
create_backup_complete = 'vollständiges Backup erstellen'
|
||||
only_create_backup_of = 'nur Backup erstellen von:'
|
||||
backup_entries = 'Einträgen'
|
||||
backup_userdata = 'Benutzerdaten'
|
||||
backup_settings = 'Einstellungen'
|
||||
backup_categories = 'Kategorien'
|
||||
backup_pages = 'Seiten'
|
||||
backup_smilies = 'Smilies'
|
||||
backup_banlists = 'Bannlisten'
|
||||
backup_bookmarks = 'Lesezeichen'
|
||||
backup_read_status = 'Gelesen-Status'
|
||||
backup_temp_infos = 'Temporäre Informationen'
|
||||
download_backup_file = 'Backup-Datei herunterladen'
|
||||
delete_selected = 'ausgewählte löschen'
|
||||
restore = 'Backup wiederherstellen'
|
||||
delete_backup_file = 'Backup-Datei löschen'
|
||||
delete_backup_submit = 'OK - Löschen'
|
||||
restore_confirm = 'Sicher, dass diese Backup-Datei ausgeführt werden soll?<br /><strong>Die betroffenen Datenbank-Tabellen werden dabei überschrieben!</strong>.'
|
||||
restore_safe_mode_warning = 'Safe-Mode-Warnung!'
|
||||
restore_safe_mode_note = 'Da auf dem Server Safe Mode aktiviert ist, kann die Skript-Ausführungszeit nicht verlängert werden! Um eine unvollständige Wiederherstellung zu verhindern sollten deshalb große Backup-Dateien in mehrere kleine Dateien aufgeteilt werden.'
|
||||
restore_submit = 'OK - Wiederherstellen'
|
||||
restore_backup_ok = 'Das Backup wurde wiederhergestellt.'
|
||||
backup_file_created = 'Die Backup-Datei wurde erstellt.'
|
||||
error_file_doesnt_exist = 'Datei nicht vorhanden'
|
||||
error_delete_backup_file = 'die Backup-Datei konnte nicht gelöscht werden'
|
||||
error_create_backup_file = 'die Backup-Datei konnte nicht erstellt werden - bitte sicherstellen, dass das Verzeichnis "backup" beschreibbar ist'
|
||||
error_restore_mysql = 'MySQL-Fehler: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'aktuelle Version: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'Update durchführen'
|
||||
update_instructions = 'es wird empfohlen, das Forum während des Updates außer Betrieb zu setzen ("Betriebsstatus" in den <a href="index.php?mode=admin&action=settings">Einstellungen</a>)'
|
||||
update_instructions = 'neue Version von <a href="http://mylittleforum.net/">mylittleforum.net</a> herunterladen'
|
||||
update_instructions = 'Skript-Paket entpacken und die entsprechende Update-Datei aus dem Unterverzeichnis "update" auf den Server in das Unterverzeichnis "update" hochladen.'
|
||||
update_instructions = 'Skriptpaket entpacken.'
|
||||
update_instructions = 'Die entsprechende Update-Datei aus dem Unterverzeichnis "update" auf den Server in das Unterverzeichnis "update" hochladen.'
|
||||
update_instructions = 'Die Datei "VERSION" aus dem Unterverzeichnis "config" in das Unterverzeichnis "config" auf den Server hochladen.'
|
||||
update_instructions = 'diese Seite neu laden und die Update-Datei sollte unten erscheinen'
|
||||
update_instructions = 'Datei anklicken und den weiteren Anweisungen folgen'
|
||||
update_instructions = 'nach dem Ausführen wird eine Liste mit den Dateien/Ordnern angezeigt, die hinzugefügt bzw. ersetzt werden müssen'
|
||||
|
@ -1000,17 +1063,25 @@ update_available_files = 'verfügbare Update-Datei(en)'
|
|||
update_no_files_available = 'keine Update-Dateien verfügbar'
|
||||
update_file_title = 'Update-Datei ausführen'
|
||||
update_confirm = 'Sicher, dass diese Update-Datei ausgeführt werden soll?'
|
||||
update_submit = 'OK - Update ausführen'
|
||||
update_submit = 'OK – Update ausführen'
|
||||
update_successful = 'Die Datenbank wurde erfolgreich aktualisiert.'
|
||||
update_items_note = 'Bitte jetzt die folgenden Dateien/Verzeichnisse der neuen Version ([version]) hochladen:'
|
||||
update_download = 'Falls nicht verfügbar, können diese Dateien [[hier]] heruntergeladen werden.'
|
||||
update_reenabling_notice = 'Bitte zu beachten, dass das Forum aktuell deaktiviert ist und <a href="index.php?mode=admin&action=settings">in den Einstellungen</a> wieder eingeschaltet werden muss.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Antwort auf "[original_subject]"'
|
||||
email_text = """Hallo [recipient],
|
||||
|
||||
dies ist eine automatisch generierte Email, die aufgrund der explizit aktivierten Benachrichtigungsoption verschickt wurde. Bitte antworte nicht direkt auf diese Email, sondern schreib die Antwort direkt in den vorhandenen Forenthread.
|
||||
|
||||
Wenn du keine Benachrichtigungen bei erfolgten Antworten auf dein Posting mehr erhalten möchtest, benutze bitte den nachfolgenden Link um die Benachrichtigung abzuschalten.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] hat eine Antwort zu \"[original_subject]\" geschrieben:
|
||||
|
||||
Betreff: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
URL des Eintrags: [posting_address]
|
||||
|
@ -1020,7 +1091,7 @@ URL des Eintrags: [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Diese Benachrichtigung kommt verzögert, da der Eintrag manuell freigeschaltet wurde"""
|
||||
Diese Benachrichtigung kommt verzögert, da der Eintrag manuell freigeschaltet wurde. Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
|
||||
admin_email_subject = 'Neuer Eintrag im Forum: [subject]'
|
||||
admin_email_text = """Neuer Eintrag von [name]
|
||||
|
@ -1028,13 +1099,17 @@ Betreff: [subject]
|
|||
|
||||
[text]
|
||||
|
||||
URL des Eintrags: [posting_address]"""
|
||||
URL des Eintrags: [posting_address]
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
admin_email_text_reply = """Antwort von [name]
|
||||
Betreff: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
URL des Eintrags: [posting_address]"""
|
||||
URL des Eintrags: [posting_address]
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
admin_reg_user_email_subj = 'Foren-Registrierung'
|
||||
admin_reg_user_email_text = """Hallo [name],
|
||||
willkommen im Forum!
|
||||
|
@ -1047,7 +1122,9 @@ Passwort: [password]
|
|||
Direkter Link zum Einloggen:
|
||||
[login_link]
|
||||
|
||||
Das Passwort kann nach dem Einloggen geändert werden."""
|
||||
Das Passwort kann nach dem Einloggen geändert werden.
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
|
||||
admin_activate_user_email_subj = 'Foren-Registrierung'
|
||||
admin_activate_user_email_text = """Hallo [name],
|
||||
|
@ -1055,37 +1132,48 @@ willkommen im Forum!
|
|||
|
||||
Direkter Link zum Einloggen:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
|
||||
new_user_email_sj = 'Foren-Registrierung'
|
||||
new_user_email_txt = """Hallo [name],
|
||||
willkommen im Forum!
|
||||
|
||||
Zur Aktivierung bitte diesen Link aufrufen:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
new_user_notif_sj = 'Neue Benutzer-Registrierung'
|
||||
new_user_notif_txt = """Hallo [recipient],
|
||||
es hat sich ein neuer Benutzer registriert.
|
||||
Benutzername: [name]
|
||||
E-Mail: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
new_user_notif_txt_locked = """Hallo [recipient],
|
||||
es hat sich ein neuer Benutzer registriert.
|
||||
Benutzername: [name]
|
||||
E-Mail: [email]
|
||||
|
||||
WICHTIG: Dieser Benutzer muss entsperrt werden, damit er sich einloggen kann!"""
|
||||
WICHTIG: Dieser Benutzer muss entsperrt werden, damit er sich einloggen kann!
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
edit_address_email_sj = 'Freischaltung nach Änderung der E-Mail-Adresse'
|
||||
edit_address_email_txt = """Hallo [name],
|
||||
die E-Mail-Adresse wurde geändert. Das Benutzerkonto muss nun wieder mit folgendem Link freigeschaltet werden:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
pwf_activating_email_sj = 'Neues Passwort anfordern'
|
||||
pwf_activating_email_txt = """Hallo [name],
|
||||
diese E-Mail wurde vom Forum auf [forum_address] gesendet, da ein neues Passwort angefordert wurde. Falls es sich nicht um ein Irrtum handelt (z.B. weil jemand anderes diese E-Mail angefordert hat), bitte dies mit folgendem Link bestätigen. Ansonsten den Link nicht anklicken und diese E-Mail ignorieren. Mit Klicken des Links wird ein neues Passwort generiert und per E-Mail gesendet.
|
||||
|
||||
Bestätigungslink:
|
||||
[activating_link]"""
|
||||
[activating_link]
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
new_pw_email_sj = 'Neue Zugangsdaten für das Forum'
|
||||
new_pw_email_txt = """Hallo [name],
|
||||
die neuen Benutzerdaten lauten:
|
||||
|
@ -1096,7 +1184,9 @@ Passwort: [password]
|
|||
Direkter Link zum Einloggen:
|
||||
[login_link]
|
||||
|
||||
Das Passwort kann nach dem Einloggen geändert werden."""
|
||||
Das Passwort kann nach dem Einloggen geändert werden.
|
||||
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1113,6 +1203,20 @@ Betreff: [subject]
|
|||
|
||||
--
|
||||
Diese E-Mail wurde über das Forum auf [forum_address] gesendet."""
|
||||
email_notify_inactive_user_subject = 'Inaktivitätswarnung [name]'
|
||||
email_notify_inactive_user_text = """Hallo [name],
|
||||
|
||||
wir haben festgestellt, dass die letzte Anmeldung im Forum [forum_address] mehr als [inactive_time_span] Jahre zurückliegt.
|
||||
Entsprechend der DSGVO, die ein zeitlich unbegrenztes Speichern persönlicher Daten verbietet, entfernen wir in regelmäßigen Abständen alle nicht aktiven Benutzerkonten.
|
||||
|
||||
Um zu verhindern, dass der Account von uns gelöscht wird, ist lediglich eine Anmeldung innerhalb der nächsten [days_until_delete] Tage notwendig.
|
||||
Unterbleibt dies, so gehen wir davon aus, dass eine weitere Nutzung des Accounts nicht beabsichtigt ist und das Benutzerkonto entfernt werden kann.
|
||||
Bisherige Beiträge bleiben hierbei erhalten, werden jedoch einem anonymen Benutzer zugeordnet, der zufällig den selben Benutzernamen gewählt hat.
|
||||
|
||||
Viele Grüße
|
||||
|
||||
--
|
||||
Dies ist eine automatisch generierte Nachricht. Bitte antworte nicht direkt auf diese Email."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installation'
|
||||
|
@ -1134,32 +1238,33 @@ inst_admin_email = 'E-Mail'
|
|||
inst_admin_email_desc = 'E-Mail-Adresse des Foren-Administrators'
|
||||
inst_admin_pw = 'Passwort'
|
||||
inst_admin_pw_desc = 'Passwort um sich als Administrator einzuloggen'
|
||||
inst_admin_pw_conf = 'Passwort-Bestätigung'
|
||||
inst_admin_pw_conf = 'Passwortbestätigung'
|
||||
inst_admin_pw_conf_desc = 'Passwort wiederholen'
|
||||
inst_db_host = 'Datenbank-Host'
|
||||
inst_db_host_desc = 'meistens "localhost"'
|
||||
inst_db_user = 'Datenbank-Benutzername'
|
||||
inst_db_user = 'Datenbankbenutzername'
|
||||
inst_db_user_desc = 'Benutzername für die Datenbank'
|
||||
inst_db_pw = 'Datenbank-Passwort'
|
||||
inst_db_pw = 'Datenbankpasswort'
|
||||
inst_db_pw_desc = 'Zugangspasswort für die Datenbank'
|
||||
inst_db_name = 'Datenbank-Name'
|
||||
inst_db_name = 'Datenbankname'
|
||||
inst_db_name_desc = 'Name der Datenbank'
|
||||
inst_table_prefix = 'Tabellen-Präfix'
|
||||
inst_table_prefix = 'Tabellenpräfix'
|
||||
inst_table_prefix_desc = 'Präfix für die Tabellenbezeichnungen'
|
||||
inst_advanced_options = 'erweiterte Optionen'
|
||||
inst_advanced_options_desc = 'für Experten - normalerweise muss hier nichts geändert werden'
|
||||
inst_advanced_options_desc = 'für Experten – normalerweise muss hier nichts geändert werden'
|
||||
inst_advanced_database = 'Datenbank erstellen'
|
||||
inst_advanced_database_desc = 'nur wenn die angegebene Datenbank nicht vorhanden ist und Rechte zur Erstellung vorhanden sind'
|
||||
inst_advanced_conf_file = 'kein Überschreiben der Konfigurationsdatei'
|
||||
inst_advanced_conf_file_desc = 'nur falls die Konfigurationsdatei bereits manuell bearbeitet wurde'
|
||||
create_database = 'angegebene Datenbank erstellen'
|
||||
dont_overwrite_settings = 'Datenbank-Konfigurationsdatei nicht überschreiben'
|
||||
dont_overwrite_settings = 'Datenbankkonfigurationsdatei nicht überschreiben'
|
||||
create_db_error = 'Die Datenbank konnte nicht erstellt werden'
|
||||
error_create_admin = 'Das Administratoren-Konto konnte nicht erstellt werden'
|
||||
error_db_connection = 'Datenbank-Verbindungsfehler - bitte Host, Benutzer und Passwort überprüfen'
|
||||
error_db_inexistent = 'die angegebene Datenbank ist nicht vorhanden - bitte Datenbank-Name überprüfen'
|
||||
error_create_admin = 'Das Administratorenkonto konnte nicht erstellt werden'
|
||||
error_db_connection = 'Datenbankverbindungsfehler – bitte Host, Benutzer und Passwort überprüfen'
|
||||
error_db_inexistent = 'die angegebene Datenbank ist nicht vorhanden – bitte Datenbankname überprüfen'
|
||||
error_sql_file_doesnt_exist = 'Installations-SQL-Datei (install.sql) nicht gefunden'
|
||||
error_overwrite_config_file = 'die Datei <strong>config/db_settings.php</strong> konnte nicht überschrieben werden (bitte mit CHMOD 666 versuchen, momentane Einstellung ist [CHMOD])'
|
||||
error_sql = 'SQL-Fehler'
|
||||
forum_install_ok = 'OK - Forum installieren'
|
||||
error_update_settings = 'Konnte die Forumseinstellung nicht ändern'
|
||||
forum_install_ok = 'OK – Forum installieren'
|
||||
error_conf_pw = 'Passwort und Wiederholung stimmen nicht überein'
|
||||
|
|
|
@ -1,10 +1,28 @@
|
|||
################################################################################
|
||||
# File per la lingua italiana di my little forum 2.4 #
|
||||
# File per la lingua italiana di my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated by Antonio Arras 2009-09-03 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = it
|
||||
language_code = 'it'
|
||||
language_name_system = 'italian'
|
||||
language_name_own = 'italiano'
|
||||
charset = utf-8
|
||||
locale = it_IT.utf8
|
||||
locale = it_IT
|
||||
|
@ -13,8 +31,8 @@ locale = ita
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %Y-%m-%d, %H:%M
|
||||
time_format_full = %A, %B %d, %Y, %H:%M
|
||||
time_format = 'dd/MM/YYYY, HH.mm'
|
||||
time_format_full = 'EEEE dd MMMM YYYY, H.mm'
|
||||
forum_time = 'Orario: [time]'
|
||||
forum_time_with_time_zone = 'Orario: [time] ([time_zone])'
|
||||
unknown_user = 'sconosciuto'
|
||||
|
@ -29,6 +47,7 @@ replies = 'Risposte'
|
|||
views = 'Viste'
|
||||
category = 'Categoria'
|
||||
submit_button_ok = ' INVIA '
|
||||
submit_button_cancel = '<!-- TODO --> Cancel '
|
||||
yes = 'si'
|
||||
no = 'no'
|
||||
go = 'Vai'
|
||||
|
@ -38,8 +57,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'prossima pagina'
|
||||
previous_page_link_title = 'pagina precedente'
|
||||
posted_by = 'Inviato da <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'Inviato da <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'Inviato da [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'Inviato da [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'clicca per andare al posting originale di [name]'
|
||||
error_headline = 'Errore!'
|
||||
no_authorisation = 'Non si dispone dell\'autorizzazione necessaria!'
|
||||
|
@ -65,6 +84,8 @@ search_default_value = 'Ricerca ...'
|
|||
search_title = 'Ricerca messaggi'
|
||||
new_topic_link = 'Nuovo argomento'
|
||||
new_topic_link_title = 'Posta un nuovo argomento'
|
||||
back_to_top_link = '<!-- TODO -->To top'
|
||||
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
|
||||
order_link = 'Ordina'
|
||||
order_link_title_1 = 'Ordina secondo ultima risposta inserita'
|
||||
order_link_title_2 = 'Ordina secondo ultimo argomento inserito (default)'
|
||||
|
@ -102,6 +123,8 @@ back_to_entry_link = 'Torna al messaggio di [name]'
|
|||
back_to_entry_link_title = 'Torna al messaggio di [name]'
|
||||
subnav_login = 'Accedi'
|
||||
subnav_pw_forgotten = 'Password dimenticata'
|
||||
subnav_accept_dps = '<!-- TODO -->Accept the data privacy statement'
|
||||
subnav_accept_tou = '<!-- TODO -->Accept the terms of use agreement'
|
||||
subnav_admin_area = 'Area di amministrazione'
|
||||
subnav_settings = 'Opzioni Forum'
|
||||
subnav_advanced_settings = 'Opzini avanzate Forum'
|
||||
|
@ -134,6 +157,7 @@ subnav_userarea_show_posts = 'Inviati da [var]'
|
|||
subnav_userarea_edit_user = 'Modifica Profilo'
|
||||
subnav_userarea_edit_pw = 'Cambia Password'
|
||||
subnav_userarea_edit_mail = 'Cambia indirizzo e-mail'
|
||||
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
|
||||
subnav_backup = 'Backup'
|
||||
subnav_update = 'Aggiornamento'
|
||||
subnav_update_run = 'Lancia aggiornamento'
|
||||
|
@ -145,6 +169,8 @@ subnav_disabled = 'Forum disabilitato'
|
|||
subnav_bookmarks = '<!-- TODO -->Bookmarks'
|
||||
subnav_delete_bookmark = '<!-- TODO -->Delete bookmark'
|
||||
subnav_edit_bookmark = '<!-- TODO -->Edit bookmark'
|
||||
subnav_list_uploads = '<!-- TODO -->List of uploads'
|
||||
subnav_confirm_delete_uploads = '<!-- TODO -->Delete uploads'
|
||||
subnav_page_error = 'Errore'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] Messaggi in [total_threads] Argomenti, [registered_users] Utenti registrati'
|
||||
|
@ -171,7 +197,6 @@ error_invalid_date_format = 'Formato della data di nascita non valido (AAA
|
|||
error_invalid_date = 'Data di nascita non valida'
|
||||
error_email_wrong = 'Indirizzo e-mail non valido'
|
||||
error_hp_wrong = 'Indirizzo home page non valido'
|
||||
error_pw_conf_wrong = 'La password non conicide con la precedente'
|
||||
error_akismet_connection = 'Connessione al server scaduta, riprova!'
|
||||
error_akismet_connection_admin = 'Impossibile connettersi col server Akismet per verificare API key!'
|
||||
error_akismet_api_key = 'Non valido Wordpress API Key'
|
||||
|
@ -181,6 +206,7 @@ open_whole_thread = 'Apri l\'intero argomento'
|
|||
change_category_link = 'Mostra i messaggi nella categoria "[category]"'
|
||||
mark_linktitle = 'Seleziona messaggio'
|
||||
unmark_linktitle = 'Deseleziona messaggio'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'Elimina i messaggi selezionati'
|
||||
manage_postings_link = 'Gestisci messaggi'
|
||||
non_activated_users_link = '[counter] non-activated user(s)'
|
||||
|
@ -195,6 +221,8 @@ more_smilies_label = 'altro ...'
|
|||
more_smilies_title = 'altri smilies'
|
||||
close = 'chiudi'
|
||||
no_postings_user = 'Nessun messaggio'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Ricerca'
|
||||
search_fulltext = 'tutto il testo'
|
||||
search_tags = 'tags'
|
||||
|
@ -219,7 +247,7 @@ posting_hours_ago = '[hours] ore, [minutes] minuti fa'
|
|||
posting_one_day_ago = '1 giorno, [hours] ore, [minutes] min. fa'
|
||||
posting_several_days_ago = '[days] giorni fa'
|
||||
tag_cloud_hl = 'Recenti tags'
|
||||
sidebar = 'Sidebar'
|
||||
sidebar = 'Barra laterale'
|
||||
toggle_sidebar = 'Mostra / nascondi sidebar'
|
||||
options = 'Opzioni'
|
||||
administrator_title = 'Amministratore'
|
||||
|
@ -235,6 +263,7 @@ error_invalid_form = 'Sessione scaduta! Si prega di copiare il test
|
|||
error_form_sent_too_fast = 'Il form è stato spedito troppo velocemente - si prega di attendere qualche secondo e riprovare (sistema di prevenzione contro messaggi automatici)'
|
||||
error_form_sent_too_slow = 'Il form non è più valido - si prega di copiare il testo è aggiornare la pagina'
|
||||
terms_of_use_agreement = 'Accetto i [[termini di utilizzo]]'
|
||||
data_privacy_agreement = '<!-- TODO -->I agree to the [[data privacy statement]]'
|
||||
error_not_accepted_word = 'Parola non accettata: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Parole non accettate: [not_accepted_words]'
|
||||
error_username_invalid_chars = '<!-- TODO -->The user name contains special characters'
|
||||
|
@ -254,14 +283,20 @@ error_no_subject = 'Non è stato inserito nessun oggetto'
|
|||
error_no_text = 'Non è stato inserito alcun testo nel messaggio'
|
||||
terms_of_use_error_register = 'Devi accettare i termini di utilizzo per completare la registrazione'
|
||||
terms_of_use_error_posting = 'Devi accettare i termini di utilizzo per inviare questo messaggio'
|
||||
terms_of_use_error_reconf = '<!-- TODO -->You have to agree to the changes of the terms of use in order to submit further messages'
|
||||
data_priv_statement_error_reg = '<!-- TODO -->You have to agree to the data privacy statement in order to complete the registration'
|
||||
data_priv_statement_error_post = '<!-- TODO -->You have to agree to the data privacy statement in order to submit this message'
|
||||
data_priv_statement_error_reconf ='<!-- TODO -->You have to agree to the changes of the data privacy statement in order to submit further messages'
|
||||
submit_button_agreed = '<!-- TODO -->I agree'
|
||||
submit_button_disagreed = '<!-- TODO -->I disagree'
|
||||
check_all = 'controlla tutti'
|
||||
uncheck_all = 'non controllare tutti'
|
||||
delete_backup_confirm = 'Confermi l\'eliminazione di questo file di backup?'
|
||||
delete_sel_backup_confirm = 'Confermi l\'eliminazione dei files di backup selezionati?'
|
||||
drag_and_drop_title = 'drag & drop per spostare in alto o in basso'
|
||||
show_all_postings_link = 'visualizza messaggi'
|
||||
show_bookmarks_link = '<!-- TODO -->Bookmarks'
|
||||
show_userdata_linktitle = '<!-- TODO -->Visit profil of [user]'
|
||||
show_password_title = '<!-- TODO -->Show password in plain text'
|
||||
hide_password_title = '<!-- TODO -->Hide password'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
|
||||
|
@ -283,7 +318,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'modificato da [name], [time]'
|
||||
edited_by = 'modificato da [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 vista'
|
||||
several_views = '[views] viste'
|
||||
|
@ -340,6 +375,8 @@ subject_marking = 'Oggetto:'
|
|||
message_marking = 'Messaggio:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(opzionali, separati dalla virgola)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'grosseto'
|
||||
bbcode_bold_title = 'Impostare il testo in grosseto'
|
||||
bbcode_bold_instruction = '[b]Esempio[/b]'
|
||||
|
@ -372,15 +409,12 @@ bbcode_image_instr_right = '<!-- TODO -->right: [img=right]http://example
|
|||
bbcode_image_label_thumb = '<!-- TODO -->thumbnail'
|
||||
bbcode_image_instr_thumb = '<!-- TODO -->thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = '<!-- TODO -->thumbnail left'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = '<!-- TODO -->thumbnail right'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = '<!-- TODO ->upload'
|
||||
bbcode_upload_title = '<!-- TODO ->upload image'
|
||||
bbcode_upload_instruction = '<!-- TODO ->upload image ...'
|
||||
bbcode_flash_label = 'flash'
|
||||
bbcode_flash_title = 'Inserisci file flash'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = '<!-- TODO -->upload'
|
||||
bbcode_upload_title = '<!-- TODO -->upload image'
|
||||
bbcode_upload_instruction = '<!-- TODO -->upload image ...'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = '<!-- TODO ->insert TeX code'
|
||||
bbcode_tex_instruction = '[tex]TeX code[/tex]'
|
||||
|
@ -396,6 +430,9 @@ insert_smiley_title = 'Inserisci smiley'
|
|||
email_notific_reply_thread = 'Avvisami tramite e-mail di eventuali risposte in questo argomento'
|
||||
email_notific_reply_post = 'Avvisami tramite e-mail di eventuali risposte al questo messaggio'
|
||||
show_signature_marking = 'Inserisci firma'
|
||||
sticky_none = '<!-- TODO -->Do not pin the thread'
|
||||
sticky_single_cat = '<!-- TODO -->Pin thread in the chosen category'
|
||||
sticky_all_cats = '<!-- TODO -->Pin thread to all categories'
|
||||
sticky_thread = 'Difficoltà'
|
||||
message_submit_button = 'OK - INVIA'
|
||||
message_submit_title = 'Salva messaggio'
|
||||
|
@ -424,9 +461,8 @@ delete_spam_hl = 'Elimina spam'
|
|||
delete_spam_confirm = 'Confermi l\'eliminazione di tutti i messaggi classificati come spam?'
|
||||
delete_posting_submit = 'OK - ELIMINA'
|
||||
report_spam_hl = 'Classifica come spam'
|
||||
report_spam_warning = '<!-- TODO -->Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
posting_already_spam = 'Questo messaggio è già classificato come spam.'
|
||||
spamcheck_posting_not_checked = 'Questo messaggio è già stato classificato come non-spam o non è stato controllato il filtro Akismet perché Akismet non era abilitato o si tratta di un messaggio inviato da un utente registrato.'
|
||||
spamcheck_posting_passed = 'Questo messaggio è stato classificato attendibile dal filtro anti-spman Akismet. Riportalo come spam se è realmente uno spam!'
|
||||
spamcheck_akismet_api_error = 'Questo messaggio ha passato il controllo del filtro anti-spam Akismet perché c\'è stato un errore. La causa potrebbe essere una invalida API key!'
|
||||
spamcheck_akismet_timeout_error = 'Questo messaggio ha passato il filtro anti-spam a causa di un errore di timeout del server Akismet.'
|
||||
report_spam_delete_submit = 'Riporta come spam ed elimina'
|
||||
|
@ -435,11 +471,17 @@ delete_only_submit = 'Elimina'
|
|||
postings_doesnt_exist = 'Questo messaggio non esiste!'
|
||||
posting_not_flagged_as_spam = 'Questo messaggio non è segnato come spam.'
|
||||
flag_ham_hl = 'Classifica come non-spam'
|
||||
flag_ham_note = 'Questo messaggio è stato classificato come spam dal filtro Akismet. Riportalo come attendibile (non-spam) se non è uno spam!'
|
||||
flag_ham_warning = '<!-- TODO -->Please flag and report this entry only as ham (not spam), if it is definetly no spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
report_flag_ham_submit = 'Riporta e classifica come attendibile (non-spam)'
|
||||
flag_ham_submit = 'Segnala come attendibile'
|
||||
no_authorisation_delete = 'Il messaggio non può essere eliminato! Probabilmente è scaduto il tempo massimo per l\'eliminazione, l\'argomento è bloccato o ci sono delle risposte al messaggio.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = '<!-- TODO -->Quitted subscription'
|
||||
unsubscribed_message = '<!-- TODO -->The subscription for informations about replies to your entry got quitted. You will not receive any more e-mails about this specific entry. Subscriptions for informations about further entries are not affected by this action.'
|
||||
unsubscribe_error_hl = '<!-- TODO -->Could not quit the subscription'
|
||||
unsubscribe_error_message = '<!-- TODO -->During the action to quit the subscription an error occured. Please inform the forum operator by e-mail about this issue. Please add the following informations: ID of the entry (take it from the link in the e-mail (URL-parameter "unsubscribe")) and the time of the failed action (add the name of your time zone if possible).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Controllo protezione anti-spam:'
|
||||
captcha_expl_math = 'Si prega di sommare i due numeri:'
|
||||
|
@ -467,12 +509,6 @@ no_images = 'Nessuna immagine disponibile.'
|
|||
delete_image_confirm = 'Confermi l\'eliminazione di questa immagine?'
|
||||
delete_image_button = 'OK - ELIMINA'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'Inserisci video flash'
|
||||
flash_url = 'URL:'
|
||||
flash_size = 'Dimensione:'
|
||||
insert_flash_button = 'Inserisci video flash'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Avatar'
|
||||
delete_avatar = 'Elimina avatar'
|
||||
|
@ -532,6 +568,7 @@ pwf_username = 'Nome utente:'
|
|||
pwf_email = 'E-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Elenco utenti'
|
||||
user_name = 'Nome utente'
|
||||
user_type = 'Tipo'
|
||||
admin = 'Amministratore'
|
||||
|
@ -594,7 +631,10 @@ edit_email = 'Cambia indirizzo e-mail'
|
|||
edit_user_pw = 'Password:'
|
||||
pw_not_displayed = 'non visualizzato'
|
||||
edit_pw = 'Cambia password'
|
||||
edit_user_email_contact = 'Indirizzo e-mail contattabile'
|
||||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = 'Nome:'
|
||||
edit_user_gender = 'Sesso:'
|
||||
gender_not_specified = 'not specified'
|
||||
|
@ -617,20 +657,35 @@ edit_user_theme = 'Tema:'
|
|||
edit_user_default_theme = '<!-- TODO -->Default ([default_theme])'
|
||||
edit_user_auto_login = 'Auto accesso'
|
||||
enable_auto_login = 'abilita accesso automatico'
|
||||
edit_user_where_to_open_links = '<!-- TODO -->Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = '<!-- TODO -->Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = '<!-- TODO -->Open all links in same browser window'
|
||||
where_to_open_links_external = '<!-- TODO -->Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = '<!-- TODO -->Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_notification = 'Avvisami per e-mail:'
|
||||
admin_mod_notif_posting = 'ogni volta un nuovo messaggio è stato spedito'
|
||||
admin_mod_notif_register = 'ogni volta si è iscritto al forum un nuovo utente'
|
||||
userdata_submit_button = 'OK - SALVA'
|
||||
profile_saved = 'Profilo salvato con successo!'
|
||||
pw_changed = 'Password cambiata con successo!'
|
||||
remove_user_account = '<!-- TODO -->Delete account'
|
||||
remove_user_account_link = '<!-- TODO -->Delete your user account'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = '<!-- TODO -->Delete account'
|
||||
remove_user_account_warning = '<!-- TODO -->Warning, once you delete your account, there is no going back. Please be certain! Bookmarks and account data will deleted. Your postings keep unchanged. Like an unregistered post, your display name ([user_name]) is used as author.'
|
||||
remove_user_confirm_password = 'Password:'
|
||||
error_pw_wrong = 'La password è sbagliata'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'Vecchia password:'
|
||||
edit_pw_new = 'Nuova password:'
|
||||
edit_pw_conf = 'Conferma new password:'
|
||||
error_old_pw_wrong = 'La vecchia password è sbagliata'
|
||||
error_pw_conf_uneven = 'La password confermata è diversa da quella nuova'
|
||||
error_new_pw_too_short = 'La nuova password può contenere al massimo [characters] caratteri'
|
||||
error_new_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_new_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_new_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_new_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'Ogni volta che cambi l\'indirizzo e-mail, devi uscire dall\'account e attendere la sua riattivazione. Una chiave di attivazione verrà spedita alla nuova e-mail. Per questo assicurati che l\'indirizzo sia corretto! L\'account deve essere attivato entro un giorno.'
|
||||
|
@ -643,21 +698,26 @@ error_email_too_long = 'L\'indirizzo e-mail è troppo grande'
|
|||
error_identic_email = 'La nuova e-mail coincide con la vecchia!'
|
||||
error_email_invalid = 'L\'indirizzo e-mail non è valido'
|
||||
pw_wrong = 'La password è sbagliata'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = 'Scegli un nome utente, una password e fornisci un indirizzo e-mail valido. Una chiave d\'attivazione ti sarà spedita all\'indirizzo indicato. L\'account deve essere attivato entro un giorno.'
|
||||
register_username = 'Nome utente:'
|
||||
register_user_email = 'E-mail:'
|
||||
register_pw = 'Password:'
|
||||
register_pw_conf = 'Conferma Password:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Gli utenti possono essere registrati esclusivamente dall\'amministratore del forum.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'L\'account è stato registrato con successo e la sua chiave d\'attivazione è stata spedita a <strong>[var]</strong>. L\'account deve essere attivato entro un giorno.'
|
||||
registered_send_error = '<!-- TODO -->The account has been registered but the activation key could not been sent (mail server not available). Please contact the forum administrator and ask for manual account activation.'
|
||||
activation_failed = 'L\'attivazione dell\'account è fallita.'
|
||||
error_password_too_short = 'La password deve contenere almeno [characters] caratteri'
|
||||
error_email_alr_exists = 'Attualmente risulta registrato un altro utente con l\'e-mail fornita'
|
||||
error_reg_not_accepted_word = 'Protezione anti-spam: l\'e-mail o il nome utente contiene una parola o dominio non valido'
|
||||
error_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'Scrivi all\'amministratore del forum'
|
||||
|
@ -665,6 +725,7 @@ contact_user_hl = 'Scrivi a [recipient_name]'
|
|||
impossible_to_contact = 'Questo utente non può essere contattato!'
|
||||
contact_doesnt_exist = 'Questo contatto non esiste!'
|
||||
sender_address_caption = 'Mittente:'
|
||||
sender_confirmation_caption = '<!-- TODO -->Send me a copy of my message'
|
||||
subject_caption = 'Oggetto:'
|
||||
message_caption = 'Messaggio:'
|
||||
message_submit_caption = 'OK - INVIA'
|
||||
|
@ -675,7 +736,7 @@ error_message_no_subject = 'Nessun oggetto indicato'
|
|||
error_email_invalid = 'L\'indirizzo email non è valido'
|
||||
error_email_subject_too_long = 'L\'oggetto è troppo grande'
|
||||
error_email_text_too_long = 'Il messaggio è troppo grande ([text_length] caratteri - sono permessi solo [text_maxlength] caratteri)'
|
||||
error_spam_suspicion = 'Sospetto di spam! Si prega di modificare il tuo messaggio (es. rimuovi eventuali Links)'
|
||||
error_email_spam_suspicion = 'Sospetto di spam! Si prega di modificare il tuo messaggio (es. rimuovi eventuali Links)'
|
||||
|
||||
[admin]
|
||||
enabled = 'abilita'
|
||||
|
@ -692,14 +753,14 @@ user_administr_link = 'Amministrazione utenti'
|
|||
smilies_administr_link = 'Smilies'
|
||||
pages_administr_link = 'Pagine'
|
||||
spam_protection_link = 'Protezione Anti-Spam'
|
||||
backup_restore_link = 'Backup'
|
||||
update_link = 'Aggiornamento'
|
||||
reset_uninstall_link = 'Reseta o disinstalla forum'
|
||||
releases_info_header = 'Actual available release'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '<!-- TODO -->Currently available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version_header = '<!-- TODO -->Currently installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -715,6 +776,8 @@ forum_address = 'Indirizzo del forum'
|
|||
forum_address_desc = 'URL del forum (use this format: http://www.esempiodiprovadellindirizzodelforum.it/forum/)'
|
||||
forum_email = 'Indirizzo e-mail del Forum'
|
||||
forum_email_desc = 'sarà usato come contatto e per spedire tutte le e-mails invite tramite il forum'
|
||||
forum_target_name = '<!-- TODO -->Link window target'
|
||||
forum_target_name_desc = '<!-- TODO -->The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
home_link = 'Collegamento alla Home'
|
||||
home_link_desc = 'Collegamento alla tua homepage, es. http://www.ilmiositochecollegoalforum.it/ oppure ../index.html (opzionale)'
|
||||
home_link_name = 'Nome collegamento alla Home'
|
||||
|
@ -753,6 +816,7 @@ user_area = 'Area utenti'
|
|||
user_area_desc = 'L'area utenti è accessibile a tutti (lista utenti, profili)?'
|
||||
public_accessible = 'accesso pubblico'
|
||||
accessible_reg_users_only = 'accessibile solo agli utenti registrati'
|
||||
accessible_team_users_only = '<!-- TODO -->accessible by administrators and moderators only'
|
||||
latest_postings = 'Ultimi messaggi'
|
||||
latest_postings_desc = 'Quanti ultimi messaggi possono essere visualizzati nella index del forum (0=disabilitato)?'
|
||||
tag_cloud = 'Tag cloud'
|
||||
|
@ -762,6 +826,10 @@ terms_of_use_settings = 'Condizioni d\'utilizzo del servizio'
|
|||
terms_of_use_settings_desc = 'Obbligo per gli utenti non registrati di accettare le condizioni d\'utilizzo del servizio per poter lasciare messaggi sul forum e registrarsi'
|
||||
terms_of_use_settings_enabled = 'Condizioni d\'utilizzo abilitate'
|
||||
terms_of_use_url = 'URL delle Condizioni d\'utilizzo:'
|
||||
data_privacy_statement = '<!-- TODO -->Data privacy statement'
|
||||
data_privacy_statement_desc = '<!-- TODO -->Obligation for unregistered users to agree to the data privacy statement when posting messages and registering'
|
||||
data_privacy_settings_enabled = '<!-- TODO -->Data privacy statement enabled'
|
||||
data_privacy_url = '<!-- TODO -->Data privacy statement URL:'
|
||||
edit_postings = 'Modifica messaggi'
|
||||
edit_postings_desc = 'Modifica comportamento dei messaggi'
|
||||
edit_own_postings = 'Modifica dei propri messaggi:'
|
||||
|
@ -777,7 +845,6 @@ bbcode = 'Codice BB'
|
|||
bbcode_desc = 'Vuoi abilitare il codice BB per formattare i messaggi?'
|
||||
bbcodes_enabled = 'Codice BB abilitato'
|
||||
bbcodes_img_enabled = 'permetti codice BB per inserire immagini'
|
||||
bbcodes_flash_enabled = 'permetti codice BB per inserire filmati flash'
|
||||
smilies = 'Smilies'
|
||||
smilies_desc = 'Consenti che gli smilies like ":-)" vengano sostituiti con le immagini corrispondenti? (Smilies possono essere gestiti nell'apposita sezione Amministrazione smilies)'
|
||||
smilies_enabled = 'Smilies abilitati'
|
||||
|
@ -862,6 +929,7 @@ delete_page_submit = 'OK - ELIMINA PAGINA'
|
|||
error_no_page_title = 'Nessun titolo'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'Elenco utenti'
|
||||
user_name_empty = 'Nessun nome utente inserito'
|
||||
num_registerd_users = '[number] utenti registrati'
|
||||
user_id = 'ID'
|
||||
|
@ -885,7 +953,10 @@ activate_link = 'Attiva account'
|
|||
delete_selected_users = 'Elimina selezionato'
|
||||
add_user = 'Aggiunti utente'
|
||||
email_list = 'Lista e-mail degli utenti registrati'
|
||||
reset_terms_of_use = '<!-- TODO -->reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
|
||||
clear_userdata = 'Pulisci la base dati degli utenti'
|
||||
edit_user_avatar = 'Avatar:'
|
||||
delete_avatar = 'Elimina avatar'
|
||||
delete_user_confirmation = 'Confermi l\'eliminazione di questo utente?'
|
||||
delete_users_confirmation = 'Confermi l\'eliminazione dei seguenti utenti?'
|
||||
|
@ -898,13 +969,29 @@ register_pw = 'Password:'
|
|||
register_pw_conf = 'Conferma password:'
|
||||
register_send_userdata = 'Spedisci i dati degli utenti all\'indirizzo e-mail specificato'
|
||||
error_send_userdata = 'Lasciando vuoto il campo della password ne verrà generata una automaticamente. In questo caso la base dati utenti invierà all\'indirizzo e-mail specificato con i dati dell\'utente.'
|
||||
error_email_wrong = 'L\'indirizzo e-mail non è corretto'
|
||||
admin_reg_error_email_wrong = 'L\'indirizzo e-mail non è corretto'
|
||||
new_user_registered = 'L\'utente "[name]" è stato registrato.'
|
||||
new_user_reg_send_error = 'L\'utente "[name]" è stato registrato ma non non è stato possibile inviare i dati all\'indirizzo e-mail specificato.'
|
||||
clear_userdata_condition = 'Elimina utenti che si sono connessi al forum [logins] volte a l\'ultima volta più di [days] giorni fa.'
|
||||
clear_userdata_note = 'Amministratori e moderatori non saranno considerati in questa opzione. Prima dell\'eliminazione riceverai una lista contenente tutti i nomi degli utenti selezionati.'
|
||||
no_users_in_selection = 'Nessun utente selezionato'
|
||||
|
||||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Quali forms devono essere protessi col tipo CAPTCHA (solo per utenti non registrati)?'
|
||||
|
@ -917,20 +1004,21 @@ captcha_mathematical = 'matematico'
|
|||
captcha_graphical = 'grafico'
|
||||
gr_captcha_not_available = 'Grafica CAPTCHA non disponibile (Librerie GD Lib non disponibili)'
|
||||
gr_captcha_no_font = 'Nessun font disponibile, immagine CAPTCHA non può essere visualizzata correttamente'
|
||||
b8 = 'B8'
|
||||
b8_desc = '<!-- TODO -->Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = '<!-- TODO -->check posting form'
|
||||
b8_mail_check_enable = '<!-- TODO -->check e-mail form'
|
||||
b8_auto_training_enable = '<!-- TODO -->Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a> Protezione anti-spam.'
|
||||
bad_behavior_enable = 'Abilita Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> Servizio protezione anti-spam. Per utilizzarno necessiti di <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> (non funziona senza o con una API Key errata!).'
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
akismet_save_spam = 'Salva spam (classifica come spam e visualizza il messaggio)?'
|
||||
akismet_auto_delete_spam = 'Elima i messaggi classificati come spam dopo quante ore (0=non eliminare)?'
|
||||
akismet_entry = 'controllo messaggi form'
|
||||
akismet_mail = 'controllo e-mail form'
|
||||
akismet_registered = '<!-- TODO -->check submissions of registered users'
|
||||
banned_ips = 'Indirizzi IPs bannati'
|
||||
banned_ips_desc = 'Gli indirizzi IP che non avranno possibilità di accesso. IP ranges (es.: 10.10.1.*) e CIDR notation (es.: 10.10.1.32/27) possibile. Un solo IP per riga.'
|
||||
banned_user_agents = 'Utenti bannati'
|
||||
|
@ -941,6 +1029,12 @@ spam_protection_submit = 'OK - SALVA'
|
|||
error_own_ip_banned = 'Hai bannato il tuo stesso IP!'
|
||||
error_own_user_agent_banned = 'Hai bannato il suo stesso utente!'
|
||||
spam_protection_saved = 'Salvato'
|
||||
spam_check_registered = '<!-- TODO -->submissions of registered users'
|
||||
spam_check_registered_desc = '<!-- TODO -->check submissions of registered users for spam using enabled filters'
|
||||
spam_check_registered_enable = '<!-- TODO -->check submissions of registered users for spam'
|
||||
auto_delete_spam = '<!-- TODO -->Delete spam automatically'
|
||||
auto_delete_spam_desc = '<!-- TODO -->Retention period of spam'
|
||||
auto_delete_spam_timespan = 'Elima i messaggi classificati come spam dopo quante ore (0=non eliminare)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = 'Reseta forum'
|
||||
|
@ -952,45 +1046,14 @@ uninstall_forum_exp = 'Questo comando elimina tutte le tabelle del f
|
|||
uninstall_forum_submit = 'OK - DISINSTALLA FORUM'
|
||||
error_no_selection_made = 'Nessuna selezione'
|
||||
|
||||
# Backup:
|
||||
backup_note = 'Per usufruire di questa funzione, la cartella <i>backup</i> deve avere i permessi di scrittura. Assicurati anche che questa directory non sia accessibile dal web!'
|
||||
backup_file = 'File'
|
||||
backup_date = 'Data'
|
||||
backup_size = 'Dimensione'
|
||||
create_backup_complete = 'Crea un completo backup'
|
||||
only_create_backup_of = 'Crea solo il backup di:'
|
||||
backup_entries = 'rubriche'
|
||||
backup_userdata = 'utenti'
|
||||
backup_settings = 'impostazioni'
|
||||
backup_categories = 'categorie'
|
||||
backup_pages = 'pagine'
|
||||
backup_smilies = 'smilies'
|
||||
backup_banlists = 'lista dei ban'
|
||||
backup_bookmarks = '<!-- TODO -->bookmarks'
|
||||
backup_read_status = '<!-- TODO -->read status'
|
||||
backup_temp_infos = '<!-- TODO -->temporary informations'
|
||||
download_backup_file = 'Scarica file di backup'
|
||||
delete_selected = 'Elimina selezionati'
|
||||
restore = 'Ripristina'
|
||||
delete_backup_file = 'Elimina file di backup'
|
||||
delete_backup_submit = 'OK - DELIMINA'
|
||||
restore_confirm = 'Confermi il ripristino della base dati con questo file di backup?<br /><strong>Tutte le tabelle della base dati saranno sovrascritte!</strong>'
|
||||
restore_safe_mode_warning = 'Avvertimento Modalità Sicura!'
|
||||
restore_safe_mode_note = 'Quando questa modalità è attiva gli script running time non possono essere eseguiti! Per evitare backups incompleti spezzetta i grandi files di backup in piccole parti e eseguile una alla volta!'
|
||||
restore_submit = 'OK - RIPRISTINA'
|
||||
restore_backup_ok = 'Il backup è stato ripristinato.'
|
||||
backup_file_created = 'Il file di backup è stato creato.'
|
||||
error_file_doesnt_exist = 'Il file non esiste!'
|
||||
error_delete_backup_file = 'I files di backup non possono essere eliminati.'
|
||||
error_create_backup_file = 'Il file non puù essere creato - assicurati di avere i giusti permessi nella cartella "backup"'
|
||||
error_restore_mysql = 'Errore di MySQL: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'Versione corrente: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'Come aggiornare'
|
||||
update_instructions = 'E\' raccomandabile disabilitare il forum durante l\'aggiornamento (deseleziona "forum abilitato" nelle <a href="index.php?mode=admin&action=settings">Impostazioni del forum</a>)'
|
||||
update_instructions = 'Scarica l\'ultima versione dal sito <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'Estrai il pacchetto degli scripts, controlla le istruzioni nella sottocartella "update" e aggiorna questo file nella cartella "update" del tuo server'
|
||||
update_instructions = 'Estrai il pacchetto degli scripts'
|
||||
update_instructions = 'Controlla le istruzioni nella sottocartella "update" e aggiorna questo file nella cartella "update" del tuo server'
|
||||
update_instructions = '<!-- TODO -->Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'Ricarica questa pagina e i files per l\'aggiornamento dovrebbero apparire qui sotto'
|
||||
update_instructions = 'Clicca sul file e segui le istruzioni indicate'
|
||||
update_instructions = 'Iniziato l\'aggiornamento troverai una lista con files e cartelle che devono essere aggiunte o rimpiazzate, è necessario anche pulire la cartella <em>templates_c</em>'
|
||||
|
@ -1003,13 +1066,21 @@ update_submit = 'OK - ESEGUI AGGIORNAMENTO'
|
|||
update_successful = 'La base dati è stata aggiornata con successo.'
|
||||
update_items_note = 'Si prega di aggiornare ora i files/cartelle del nuovo forum (versione [version]) sul tuo server:'
|
||||
update_download = 'Se non possiedi questi files, puoi scaricarti [[qui]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Rispondi a "[original_subject]"'
|
||||
email_text = """Ciao [recipient],
|
||||
|
||||
questo è un messaggio informativo generato automaticamente. Avete ricevuto questa e-mail perché avete attivato la funzione di notifica. Si prega di non rispondere a questa e-mail, ma di rispondere alla discussione specifica.
|
||||
|
||||
Se non si desidera più essere informati sulle risposte alla propria voce, si prega di utilizzare il seguente link per annullare la notifica.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] ha risposto al tuo messaggio \"[original_subject]\":
|
||||
|
||||
Oggetto: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Indirizzo del messaggio (URL): [posting_address]
|
||||
|
@ -1019,7 +1090,7 @@ Indirizzo del messaggio (URL): [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Questa notifica è stata ritardata a causa dall'abilitazione manuale del messaggio"""
|
||||
Questa notifica è stata ritardata a causa dall'abilitazione manuale del messaggio. Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
|
||||
admin_email_subject = 'Nuovo argomento nel forum: [subject]'
|
||||
admin_email_text = """Nuovo argomento di [name]
|
||||
|
@ -1027,15 +1098,20 @@ Oggetto: [subject]
|
|||
|
||||
[text]
|
||||
|
||||
Indirizzo del messaggio (URL): [posting_address]"""
|
||||
Indirizzo del messaggio (URL): [posting_address]
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
admin_email_text_reply = """Risposta di [name]
|
||||
Oggetto: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Indirizzo del messaggio (URL): [posting_address]"""
|
||||
Indirizzo del messaggio (URL): [posting_address]
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
admin_reg_user_email_subj = 'Registrazione nel Forum'
|
||||
admin_reg_user_email_text = """Ciao [name],
|
||||
|
||||
benvenuto nel Forum!
|
||||
|
||||
Ecco i dati di accesso per accedervi:
|
||||
|
@ -1046,46 +1122,62 @@ Password: [password]
|
|||
Collegati direttamente al seguente link:
|
||||
[login_link]
|
||||
|
||||
La password può essere cambiata dopo l'accesso."""
|
||||
La password può essere cambiata dopo l'accesso.
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
|
||||
admin_activate_user_email_subj = 'Registrazione nel Forum'
|
||||
admin_activate_user_email_text = """Ciao [name],
|
||||
|
||||
benvenuto nel Forum!
|
||||
|
||||
Link to log in directly:
|
||||
Link per accedere direttamente:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
|
||||
new_user_email_sj = 'Registrazione al Forum'
|
||||
new_user_email_txt = """Ciao [name],
|
||||
benvenuto nel Forum!
|
||||
|
||||
per confermare la tua iscrizione, procedere all'attivazione cliccando sul seguente link:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
new_user_notif_sj = 'Nuova iscrizione al Forum'
|
||||
new_user_notif_txt = """Ciao [recipient],
|
||||
|
||||
un nuovo utente si è iscritto al Forum.
|
||||
Nome utente: [name]
|
||||
E-mail: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
new_user_notif_txt_locked = """Ciao [recipient],
|
||||
un nuovo utente si è iscritto al forum.
|
||||
Nome utente: [name]
|
||||
E-mail: [email]
|
||||
|
||||
IMPORTANTE: Questo utente necessita di essere sbloccato per accedere al forum!"""
|
||||
IMPORTANTE: Questo utente necessita di essere sbloccato per accedere al forum!
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
edit_address_email_sj = 'Attivazione account dopo cambio dell\'indirizzo e-mail'
|
||||
edit_address_email_txt = """Ciao [name],
|
||||
l'indirizzo e-mail è stato sostituito. Necessiti ora di essere riattivato cliccando sul seguente link:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
pwf_activating_email_sj = 'Richiesta di nuova password'
|
||||
pwf_activating_email_txt = """Ciao [name],
|
||||
questa e-mail è stata spedita dal forum ([forum_address]) perché c'è stata una richiesta di nuova password. Si prega di cliccare al seguente link per ottenere una nuova password. Al seguente link sarà generata una nuova passaword che riceverai per e-mail. Se questa e-mail è stata spedita per errore (o per richiesta di quelcun altro) si prega di ignorarla ed eliminarla.
|
||||
|
||||
[activating_link]"""
|
||||
Link per confermare la richiesta:
|
||||
[activating_link]
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
new_pw_email_sj = 'Nuovi dati utente nel forum'
|
||||
new_pw_email_txt = """Hi [name],
|
||||
new_pw_email_txt = """Ciao [name],
|
||||
ecco i nuovi tuoi dati:
|
||||
|
||||
Nome utente: [name]
|
||||
|
@ -1094,7 +1186,9 @@ Password: [password]
|
|||
Clicca qui per accedere direttamente al forum:
|
||||
[login_link]
|
||||
|
||||
La password può essere cambiata dopo l'accesso."""
|
||||
La password può essere cambiata dopo l'accesso.
|
||||
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1111,6 +1205,19 @@ Oggetto: [subject]
|
|||
|
||||
--
|
||||
Questa e-mail è stata spedita dal forum [forum_address]."""
|
||||
email_notify_inactive_user_subject = 'Notifica di inattività [name]'
|
||||
email_notify_inactive_user_text = """Ciao [name],
|
||||
|
||||
abbiamo notato che l'ultimo accesso al forum di [forum_address] risale a più di [inactive_time_span] anni fa.
|
||||
Il GDPR non consente l'archiviazione illimitata dei dati degli utenti. In base al GDPR, cancelliamo gli account degli utenti inattivi a intervalli regolari.
|
||||
|
||||
Per evitare che l'account venga cancellato da noi, è sufficiente effettuare il login al forum entro i prossimi [days_until_delete] giorni.
|
||||
In caso contrario, cancelleremo l'account. I tuoi messaggi saranno conservati, ma saranno assegnati a un utente anonimo che ha scelto a caso il tuo nome utente.
|
||||
|
||||
Cordiali saluti
|
||||
|
||||
--
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installazione'
|
||||
|
@ -1159,5 +1266,6 @@ error_db_inexistent = 'La base dati specificata non esiste - si preg
|
|||
error_sql_file_doesnt_exist = 'Il file d\'installazione SQL (<code>install/install.sql</code>) non esiste'
|
||||
error_overwrite_config_file = 'Nessun permesso di sovrascrittura sul file <code>config/db_settings.php</code> (impostare CHMOD 666, l\'impostazione corrente è [CHMOD])'
|
||||
error_sql = 'Errore SQL'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'OK - INSTALLA FORUM'
|
||||
error_conf_pw = 'Le password di amministrazione non coincidono'
|
||||
|
|
|
@ -1,9 +1,25 @@
|
|||
###################################################
|
||||
# Norwegian language file for my little forum 2.4 #
|
||||
###################################################
|
||||
################################################################################
|
||||
# Norwegian language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = no
|
||||
language_code = 'no'
|
||||
language_name_system = 'norwegian'
|
||||
language_name_own = 'norsk'
|
||||
charset = utf-8
|
||||
locale = nb_NO.utf8
|
||||
locale = nb_NO@euro
|
||||
|
@ -12,8 +28,8 @@ locale = nor
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %d.%m.%Y, %H.%M
|
||||
time_format_full = %A %e. %B %Y, kl. %H:%M
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'EEEE d. MMMM YYYY, \'kl.\' HH:mm'
|
||||
forum_time = 'Forumtid: [time]'
|
||||
forum_time_with_time_zone = 'Forumtid: [time] ([time_zone])'
|
||||
unknown_user = 'ukjent'
|
||||
|
@ -28,6 +44,7 @@ replies = 'Svar'
|
|||
views = 'Visninger'
|
||||
category = 'Kategori'
|
||||
submit_button_ok = ' OK '
|
||||
submit_button_cancel = '<!-- TODO --> Cancel '
|
||||
yes = 'ja'
|
||||
no = 'nei'
|
||||
go = 'Gå'
|
||||
|
@ -37,8 +54,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'neste side'
|
||||
previous_page_link_title = 'forrige side'
|
||||
posted_by = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'av [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'av [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klikk for å se den originale meldingen skrevet av [name]'
|
||||
error_headline = 'Feil!'
|
||||
no_authorisation = 'Ingen tillatelse!'
|
||||
|
@ -64,6 +81,8 @@ search_default_value = 'Søk …'
|
|||
search_title = 'Søk i innlegg'
|
||||
new_topic_link = 'Nytt innlegg'
|
||||
new_topic_link_title = 'Skriv et nytt innlegg'
|
||||
back_to_top_link = '<!-- TODO -->To top'
|
||||
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
|
||||
order_link = 'Sorter'
|
||||
order_link_title_1 = 'Sorter etter datoen på siste svar'
|
||||
order_link_title_2 = 'Sorter etter trådens dato (standard)'
|
||||
|
@ -101,6 +120,8 @@ back_to_entry_link = 'Tilbake til innlegget skrevet av [name]'
|
|||
back_to_entry_link_title = 'Tilbake til innlegget skrevet av [name]'
|
||||
subnav_login = 'Logg inn'
|
||||
subnav_pw_forgotten = 'Glemt passord'
|
||||
subnav_accept_dps = 'Godkjenn personvernerklæringen'
|
||||
subnav_accept_tou = 'Godkjenn brukervilkårene'
|
||||
subnav_admin_area = 'Administrasjonsområde'
|
||||
subnav_settings = 'Foruminnstillinger'
|
||||
subnav_advanced_settings = 'Avanserte innstillinger'
|
||||
|
@ -117,13 +138,13 @@ subnav_create_page = 'Opprett side'
|
|||
subnav_edit_smiley = 'Rediger smilefjes'
|
||||
subnav_edit_user = 'Rediger bruker'
|
||||
subnav_delete_users = 'Slett brukere'
|
||||
subnav_delete_entries_user = '<!-- TODO -->Delete entries of user'
|
||||
subnav_delete_entries_user = 'Slett brukerens innlegg'
|
||||
subnav_register_user = 'Registrer bruker'
|
||||
subnav_spam_protection = 'Spam-beskyttelse'
|
||||
subnav_email_list = 'Liste med brukernes e-postadresser'
|
||||
subnav_clear_userdata = 'Slett brukerdata'
|
||||
subnav_search = 'Søk'
|
||||
subnav_list_spam = '<!-- TODO -->Spam'
|
||||
subnav_list_spam = 'Spam'
|
||||
subnav_register = 'Registrer'
|
||||
subnav_reset_uninstall = 'Tilbakestill / avinstaller forum'
|
||||
subnav_userarea = 'Brukerområde'
|
||||
|
@ -133,6 +154,7 @@ subnav_userarea_show_posts = 'Innlegg av [var]'
|
|||
subnav_userarea_edit_user = 'Rediger profil'
|
||||
subnav_userarea_edit_pw = 'Endre passord'
|
||||
subnav_userarea_edit_mail = 'Endre e-postadresse'
|
||||
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
|
||||
subnav_backup = 'Backup'
|
||||
subnav_update = 'Oppdater'
|
||||
subnav_update_run = 'Kjør oppdatering'
|
||||
|
@ -141,9 +163,11 @@ subnav_restore = 'Gjenopprett'
|
|||
subnav_locked = 'Konto låst'
|
||||
subnav_delete_cookie = 'Slett informasjonskapsel (cookie)'
|
||||
subnav_disabled = 'Forumet er ute av drift'
|
||||
subnav_bookmarks = '<!-- TODO -->Bookmarks'
|
||||
subnav_delete_bookmark = '<!-- TODO -->Delete bookmark'
|
||||
subnav_edit_bookmark = '<!-- TODO -->Edit bookmark'
|
||||
subnav_bookmarks = 'Favoritter'
|
||||
subnav_delete_bookmark = 'Slett favoritt'
|
||||
subnav_edit_bookmark = 'Rediger favoritt'
|
||||
subnav_list_uploads = 'Liste med opplastninger'
|
||||
subnav_confirm_delete_uploads = 'Slett opplastninger'
|
||||
subnav_page_error = 'Feil'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] innlegg i [total_threads] tråder. Forumet har [registered_users] registrerte brukere.'
|
||||
|
@ -170,7 +194,6 @@ error_invalid_date_format = 'Ugyldig datoformat på fødselsdag (DD.MM.Å
|
|||
error_invalid_date = 'Ugyldig fødselsdato'
|
||||
error_email_wrong = 'E-postadressen er ugyldig'
|
||||
error_hp_wrong = 'Hjemmesideadressen er ugyldig'
|
||||
error_pw_conf_wrong = 'Passordet du skrev inn er ikke det samme som det du skrev over'
|
||||
error_akismet_connection = 'Serveren gikk på en smell og fikk en tidsutkopling timed, men bare prøv igjen!'
|
||||
error_akismet_connection_admin = 'Kunne ikke koble til Akismet-serveren for å verifisere API-nøkkelen!'
|
||||
error_akismet_api_key = 'Ugyldig Wordpress API Key'
|
||||
|
@ -180,13 +203,14 @@ open_whole_thread = 'Åpne hele tråden'
|
|||
change_category_link = 'Vis innlegg i kategorien "[category]"'
|
||||
mark_linktitle = 'Marker innlegg'
|
||||
unmark_linktitle = 'Fjern markering'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'Slett markerte innlegg'
|
||||
manage_postings_link = 'Administrer innlegg'
|
||||
non_activated_users_link = '<!-- TODO -->[counter] non-activated user(s)'
|
||||
non_activated_users_link = '[counter] ikke aktiverte bruker(e)'
|
||||
show_spam_link = 'Vis spam ([number])'
|
||||
hide_spam_link = 'Skjul spam'
|
||||
delete_spam_link = 'Slett spam'
|
||||
list_spam_link = '<!-- TODO -->List spam'
|
||||
list_spam_link = 'Vis spam'
|
||||
no_replies = 'Ingen svar'
|
||||
one_reply = '1 svar'
|
||||
several_replies = '[replies] svar'
|
||||
|
@ -194,6 +218,8 @@ more_smilies_label = 'mer …'
|
|||
more_smilies_title = 'flere smil'
|
||||
close = 'lukk'
|
||||
no_postings_user = 'Ingen innlegg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Søk'
|
||||
search_fulltext = 'fulltekst'
|
||||
search_tags = 'merkelapper'
|
||||
|
@ -234,6 +260,7 @@ error_invalid_form = 'Sesjonen din er utgått, og du har blitt logg
|
|||
error_form_sent_too_fast = 'Innlegget ble lagt inn for kjapt - vennligst vent et par sekunder og prøv igjen (dette er for å forhindre automatiske spaminnlegg)'
|
||||
error_form_sent_too_slow = 'Innlegget er ikke gyldig lenger - kopier teksten du har skrevet og oppdater siden'
|
||||
terms_of_use_agreement = 'Jeg godtar [[terms of use]]'
|
||||
data_privacy_agreement = 'Jeg godkjenner [[data privacy statement]]'
|
||||
error_not_accepted_word = 'Ikke akseptert ord: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Ikke aksepterte ord: [not_accepted_words]'
|
||||
error_username_invalid_chars = 'Brukernavnet inneholder spesialtegn'
|
||||
|
@ -251,48 +278,54 @@ quote_title = 'Sett inn sitert tekst i innlegget som skal sv
|
|||
error_no_name = 'Navn er ikke skrevet inn'
|
||||
error_no_subject = 'Emne er ikke skrevet inn'
|
||||
error_no_text = 'Tekst er ikke skrevet inn'
|
||||
terms_of_use_error_register = 'Du må godta brukerreglene for å kunne fullføre registreringen'
|
||||
terms_of_use_error_posting = 'Du må godta brukerreglene for å kunne legge inn dette innlegget'
|
||||
terms_of_use_error_register = 'Du må samtykke til brukerreglene for å kunne fullføre registreringen'
|
||||
terms_of_use_error_posting = 'Du må samtykke til brukerreglene for å kunne legge inn dette innlegget'
|
||||
terms_of_use_error_reconf = 'Du må samtykke til endringene i brukerreglene for å legge inn flere innlegg'
|
||||
data_priv_statement_error_reg = 'Du må samtykke til data privacy statement for å fullføre registreringen'
|
||||
data_priv_statement_error_post = 'Du må samtykke til data privacy statement for å sende denne meldingen'
|
||||
data_priv_statement_error_reconf ='Du må samtykke til endringene i data_privacy_statement for å poste flere innlegg'
|
||||
submit_button_agreed = 'Jeg godtar'
|
||||
submit_button_disagreed = 'Jeg godtar ikke'
|
||||
check_all = 'marker alle'
|
||||
uncheck_all = 'opphev markering'
|
||||
delete_backup_confirm = 'Er du sikker på at du vil slette denne backup-filen?'
|
||||
delete_sel_backup_confirm = 'Er du sikker på at du vil slette alle markerte backup-filer?'
|
||||
drag_and_drop_title = 'dra og slipp for å gå opp eller ned'
|
||||
show_all_postings_link = 'vis innlegg'
|
||||
show_bookmarks_link = '<!-- TODO -->Bookmarks'
|
||||
show_userdata_linktitle = '<!-- TODO -->Visit profil of [user]'
|
||||
show_bookmarks_link = 'Favoritter'
|
||||
show_userdata_linktitle = 'Gå til profilen til [user]'
|
||||
show_password_title = '<!-- TODO -->Show password in plain text'
|
||||
hide_password_title = '<!-- TODO -->Hide password'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
|
||||
delete_bookmark_confirm = '<!-- TODO -->Do you really want to delete this bookmark?'
|
||||
no_bookmarks = '<!-- TODO -->No bookmarks specified.'
|
||||
edit_bookmark = '<!-- TODO -->Bookmark:'
|
||||
edit_tags = '<!-- TODO -->Tags:'
|
||||
edit_tags_note = '<!-- TODO -->(optional, separated by comma)'
|
||||
bookmark_title = '<!-- TODO -->Name of bookmark'
|
||||
bookmark_user_name = '<!-- TODO -->User name'
|
||||
bookmark_creation_time = '<!-- TODO -->Bookmark creation'
|
||||
bookmark_posting_time = '<!-- TODO -->Posting creation'
|
||||
bookmark_filter_linktitle = '<!-- TODO -->Apply bookmark filter'
|
||||
clear_bookmark_filter_linkname = '<!-- TODO -->Clear bookmark filter'
|
||||
clear_bookmark_filter_linktitle = '<!-- TODO -->clear current bookmark filter and show all saved bookmarks'
|
||||
error_no_bookmark_subject = '<!-- TODO -->No subject has been entered'
|
||||
error_bookmark_subject_too_long = '<!-- TODO -->The subject is too long'
|
||||
error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
||||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
delete_bookmark_submit = 'Slett favoritt'
|
||||
delete_bookmark_confirm = 'Vil du virkelig slette denne favoritten?'
|
||||
no_bookmarks = 'Ingen favoritt spesifisert.'
|
||||
edit_bookmark = 'Favoritt:'
|
||||
edit_tags = 'Tagger:'
|
||||
edit_tags_note = '(valgfritt, kommaseparert)'
|
||||
bookmark_title = 'Favorittens navn'
|
||||
bookmark_user_name = 'Brukernavn'
|
||||
bookmark_creation_time = 'Favoritt opprettet'
|
||||
bookmark_posting_time = 'Innlegg skrevet'
|
||||
bookmark_filter_linktitle = 'Legg på favorittfilter'
|
||||
clear_bookmark_filter_linkname = 'Slett favorittfilter'
|
||||
clear_bookmark_filter_linktitle = 'slett nåværende favorittfilter og vis alle lagrede favoritter'
|
||||
error_no_bookmark_subject = 'Det er ikke skrevet noe emne'
|
||||
error_bookmark_subject_too_long = 'Emnet er for langt'
|
||||
error_bookmark_word_too_long = 'Ordet "[word]" er for langt'
|
||||
error_bookmark_tags_limit_reached = 'Tagg-grensen nådd for favoritt'
|
||||
|
||||
[entry]
|
||||
edited_by = 'redigert av [name], [time]'
|
||||
edited_by = 'redigert av [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Merkelapper:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visninger'
|
||||
complete_thread_marking = 'Hele tråden:'
|
||||
branch_marking = 'Foreløpig trådgren:'
|
||||
direct_replies_marking = 'Direkte svar på dette innlegget:'
|
||||
add_bookmark_message_linkname = '<!-- TODO -->add bookmark'
|
||||
add_bookmark_message_linktitle = '<!-- TODO -->Add this posting to your personal bookmark list'
|
||||
delete_bookmark_message_linkname ='<!-- TODO -->delete bookmark'
|
||||
delete_bookmark_message_linktitle='<!-- TODO -->Remove this posting from your personal bookmark list'
|
||||
add_bookmark_message_linkname = 'legg til favoritt'
|
||||
add_bookmark_message_linktitle = 'Legg dette innlegget til i din personlige favorittliste'
|
||||
delete_bookmark_message_linkname ='slett favoritt'
|
||||
delete_bookmark_message_linktitle='Fjern dette innlegget fra din personlige favorittliste'
|
||||
edit_message_linkname = 'rediger'
|
||||
edit_message_linktitle = 'rediger innlegg'
|
||||
delete_message_linkname = 'slett'
|
||||
|
@ -331,7 +364,7 @@ hp_marking = 'Hjemmeside:'
|
|||
location_marking = 'Hjemsted:'
|
||||
optional = '(valgfritt)'
|
||||
optional_email = '(valgfritt, vil ikke bli vist direkte)'
|
||||
honeypot_field_marking = '<!-- TODO -->Leave this field empty:'
|
||||
honeypot_field_marking = 'La dette feltet være tomt:'
|
||||
remember_userdata_marking = 'Husk meg (informasjonskapsel/cookie)'
|
||||
delete_cookie_linkname = 'slett informasjonskapsel'
|
||||
category_marking = 'Kategori:'
|
||||
|
@ -339,6 +372,8 @@ subject_marking = 'Emne:'
|
|||
message_marking = 'Melding:'
|
||||
tags_marking = 'Merkelapper:'
|
||||
tags_note = '(valgfritt, separer merkelappene med komma)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'fet'
|
||||
bbcode_bold_title = 'Fet tekstformatering'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -371,15 +406,12 @@ bbcode_image_instr_right = 'høyre: [img=right]http://eksempel.com/bilde.
|
|||
bbcode_image_label_thumb = 'miniatyrbilde'
|
||||
bbcode_image_instr_thumb = 'miniatyrbilde: [img=thumbnail]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'miniatyrbilde venstre'
|
||||
bbcode_image_instr_thumb_left = 'miniatyrbilde venstre: [img=thumbnail]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'miniatyrbilde venstre: [img=thumbnail-left]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'miniatyrbilde høyre'
|
||||
bbcode_image_instr_thumb_right = 'miniatyrbilde hæyre: [img=thumbnail]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'miniatyrbilde hæyre: [img=thumbnail-right]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_upload_label = 'last opp'
|
||||
bbcode_upload_title = 'Last opp bilde'
|
||||
bbcode_upload_instruction = 'Last opp bilde …'
|
||||
bbcode_flash_label = 'flash'
|
||||
bbcode_flash_title = 'Sett inn flash'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = 'sett inn TeX-lode'
|
||||
bbcode_tex_instruction = '[tex]TeX-kode[/tex]'
|
||||
|
@ -395,6 +427,9 @@ insert_smiley_title = 'Sett inn smil'
|
|||
email_notific_reply_thread = 'E-postmelding hvis noen svarer på denne tråden'
|
||||
email_notific_reply_post = 'E-postmelding hvis noen svarer på dette innlegget'
|
||||
show_signature_marking = 'Legg til signatur'
|
||||
sticky_none = '<!-- TODO -->Do not pin the thread'
|
||||
sticky_single_cat = '<!-- TODO -->Pin thread in the chosen category'
|
||||
sticky_all_cats = '<!-- TODO -->Pin thread to all categories'
|
||||
sticky_thread = 'Topptråd'
|
||||
message_submit_button = 'OK - Send'
|
||||
message_submit_title = 'Legg til innlegg'
|
||||
|
@ -423,9 +458,8 @@ delete_spam_hl = 'Slett spam'
|
|||
delete_spam_confirm = 'Vil du virkelig slette alle innlegg som er klassifisert som spam?'
|
||||
delete_posting_submit = 'OK - Slett'
|
||||
report_spam_hl = 'Rapporter spam'
|
||||
report_spam_warning = '<!-- TODO -->Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
posting_already_spam = 'Dette innlegget er allerede flagget som spam.'
|
||||
spamcheck_posting_not_checked = 'Dette innlegget er allerede sjekket for spam, eller det er ikke sjekket av Akismet enten fordi Akismet ikke er slått på, eller at innlegget er skrevet av en registrert bruker.'
|
||||
spamcheck_posting_passed = 'Dette innlegget gikk gjennom Akismet-spamfilteret. Rapporter det som spam kun dersom du er sikker på at det er spam!'
|
||||
spamcheck_akismet_api_error = 'Dette innlegget gikk gjennom Akismet-spamfilteret fordi det oppsto når innlegget ble scannet. En mulig årsak kan være en ugyldig API-nøkkel!'
|
||||
spamcheck_akismet_timeout_error = 'Dette innlegget gikk gjennom Akismet-spamfilteret på grunn av en timeout-feil på Akismet-serveren.'
|
||||
report_spam_delete_submit = 'Rapporter som spam og slett'
|
||||
|
@ -434,11 +468,17 @@ delete_only_submit = 'Kun slett'
|
|||
postings_doesnt_exist = 'Dette innlegget eksisterer ikke!'
|
||||
posting_not_flagged_as_spam = 'Dette innlegget er ikke flagget som spam.'
|
||||
flag_ham_hl = 'Flagg som ikke spam'
|
||||
flag_ham_note = 'Dette innlegget ble klassifisert som spam av Akismet-spamfilteret. Rapporter det kun som ikke spam dersom det definitivt ikke er spam!'
|
||||
flag_ham_warning = '<!-- TODO -->Please flag and report this entry only as ham (not spam), if it is definetly no spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
report_flag_ham_submit = 'Rapporter og flagg som ikke spam'
|
||||
flag_ham_submit = 'Kun flagg som ikke spam'
|
||||
no_authorisation_delete = 'Innlegget kan ikke slettes! Mulige årsaker: Tidsrommet der innlegget kan redigeres er overskredet, tråden er låst eller noen har allerede svart på dette innlegget.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = '<!-- TODO -->Quitted subscription'
|
||||
unsubscribed_message = '<!-- TODO -->The subscription for informations about replies to your entry got quitted. You will not receive any more e-mails about this specific entry. Subscriptions for informations about further entries are not affected by this action.'
|
||||
unsubscribe_error_hl = '<!-- TODO -->Could not quit the subscription'
|
||||
unsubscribe_error_message = '<!-- TODO -->During the action to quit the subscription an error occured. Please inform the forum operator by e-mail about this issue. Please add the following informations: ID of the entry (take it from the link in the e-mail (URL-parameter "unsubscribe")) and the time of the failed action (add the name of your time zone if possible).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Spambeskyttelse:'
|
||||
captcha_expl_math = 'Legg sammen de to tallene:'
|
||||
|
@ -466,12 +506,6 @@ no_images = 'Ingen bilder er tilgjengelige.'
|
|||
delete_image_confirm = 'Slette dette bildet?'
|
||||
delete_image_button = 'OK - Slett'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'sett inn flash-video'
|
||||
flash_url = 'URL:'
|
||||
flash_size = 'Størrelse:'
|
||||
insert_flash_button = 'Sett inn flash-video'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Personlig bilde'
|
||||
delete_avatar = 'Slett personlig bilde'
|
||||
|
@ -531,6 +565,7 @@ pwf_username = 'Brukernavn:'
|
|||
pwf_email = 'E-post:'
|
||||
|
||||
[user]
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name = 'Brukernavn'
|
||||
user_type = 'Type'
|
||||
admin = 'Admin'
|
||||
|
@ -576,11 +611,11 @@ last_posting = 'Siste innlegg:'
|
|||
logins_per_day = 'Innlogginger per dag:'
|
||||
postings_per_day = 'Innlegg per dag:'
|
||||
user_profile = 'Profil:'
|
||||
user_delete_all_entries = '<!-- TODO -->Delete all postings of this user'
|
||||
user_lock_account = '<!-- TODO -->Lock user account'
|
||||
user_unlock_account = '<!-- TODO -->Unlock user account'
|
||||
user_edit_account = '<!-- TODO -->Edit user account'
|
||||
user_delete_account = '<!-- TODO -->Delete user account'
|
||||
user_delete_all_entries = 'Slett alle innleggene til denne brukeren'
|
||||
user_lock_account = 'Lås brukerkonto'
|
||||
user_unlock_account = 'Lås opp brukerkonto'
|
||||
user_edit_account = 'Rediger brukerkonto'
|
||||
user_delete_account = 'Slett brukerkonto'
|
||||
user_account_doesnt_exist = 'Denne brukerkontoen eksisterer ikke.'
|
||||
|
||||
[user_edit]
|
||||
|
@ -593,10 +628,13 @@ edit_email = 'endre e-postadresse'
|
|||
edit_user_pw = 'Passord:'
|
||||
pw_not_displayed = 'ikke synlig'
|
||||
edit_pw = 'endre passord'
|
||||
edit_user_email_contact = 'Gjør e-postadressen tilgjengelig for andre brukere (adressen vil ikke vises; meldinger skrives via et kontaktskjema)'
|
||||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = 'Navn:'
|
||||
edit_user_gender = 'Kjønn:'
|
||||
gender_not_specified = '<!-- TODO -->not specified'
|
||||
gender_not_specified = 'ikke spesifisert'
|
||||
male = 'mann'
|
||||
female = 'kvinne'
|
||||
edit_user_birthday = 'Bursdag:'
|
||||
|
@ -616,20 +654,35 @@ edit_user_theme = 'Grafisk mal:'
|
|||
edit_user_default_theme = 'Standard ([default_theme])'
|
||||
edit_user_auto_login = 'Automatisk innlogging:'
|
||||
enable_auto_login = 'aktiver automatisk innlogging'
|
||||
edit_user_where_to_open_links = '<!-- TODO -->Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = '<!-- TODO -->Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = '<!-- TODO -->Open all links in same browser window'
|
||||
where_to_open_links_external = '<!-- TODO -->Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = '<!-- TODO -->Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_notification = 'E-postvarsling:'
|
||||
admin_mod_notif_posting = 'når et innlegg har blitt lagt inn'
|
||||
admin_mod_notif_register = 'når en ny bruker har registrert seg'
|
||||
userdata_submit_button = 'OK - Lagre'
|
||||
profile_saved = 'Profilen din er lagret.'
|
||||
pw_changed = 'Passordet er endret.'
|
||||
remove_user_account = '<!-- TODO -->Delete account'
|
||||
remove_user_account_link = '<!-- TODO -->Delete your user account'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = '<!-- TODO -->Delete account'
|
||||
remove_user_account_warning = '<!-- TODO -->Warning, once you delete your account, there is no going back. Please be certain! Bookmarks and account data will deleted. Your postings keep unchanged. Like an unregistered post, your display name ([user_name]) is used as author.'
|
||||
remove_user_confirm_password = 'Passord:'
|
||||
error_pw_wrong = 'Passordet er feil'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'Gammelt passord:'
|
||||
edit_pw_new = 'Nytt passord:'
|
||||
edit_pw_conf = 'Gjenta nytt passord:'
|
||||
error_old_pw_wrong = 'Det gamle passordet er feil'
|
||||
error_pw_conf_uneven = 'Det nye passordet er ikke det samme som passordet du gjentok'
|
||||
error_new_pw_too_short = 'Passordet må inneholde minst [characters] tegn'
|
||||
error_new_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_new_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_new_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_new_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'Når du endrer e-postadresse vil du bli logget ut, og kontoen din må aktiveres på nytt. En aktiveringsnøkkel vil bli sendt til den nye e-postadressen. Det er viktig at du staver adressen din korrekt. Kontoen din må aktiveres innen én dag. Dersom du ikke mottar e-posten, sjekk eventuelle spamfiltre, eller kontakt forumadministratoren.'
|
||||
|
@ -642,21 +695,26 @@ error_email_too_long = 'E-postadressen er for lang'
|
|||
error_identic_email = 'Den nye e-posten er identisk med den gamle'
|
||||
error_email_invalid = 'E-postadressen er ugyldig'
|
||||
pw_wrong = 'Passordet er feil'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = 'Skriv inn ønsket brukernavn, et passord og en gyldig e-postadresse. En aktiveringsnøkkel vil bli sendt til denne e-postadressen. Kontoen må aktiveres innen én dag. Dersom du ikke får e-posten, sjekk eventuelle spamfiltre, eller kontakt forumadministratoren.'
|
||||
register_username = 'Brukernavn:'
|
||||
register_user_email = 'E-post:'
|
||||
register_pw = 'Passord:'
|
||||
register_pw_conf = 'Gjenta passord:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_honeypot_field = 'La dette feltet være tomt:'
|
||||
register_only_by_admin = 'Brukere kan bare registreres av forumadministratoren.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontoen ble registrert og aktiveringsnøkkelen er sendt til <strong>[var]</strong>. Kontoen må aktiveres innen én dag.'
|
||||
registered_send_error = 'Kontoen ble registrert, men aktiveringsnøkkelen kunne ikke sendes (e-postserveren var ikke tilgjengelig). Kontakt forumadministratoren for å få kontoen aktivert manuelt.'
|
||||
activation_failed = 'Aktivering av kontoen mislykted.'
|
||||
error_password_too_short = 'Passordet må inneholde minst [characters] tegn'
|
||||
error_email_alr_exists = 'Det eksisterer allerede en bruker som har denne e-postadressen'
|
||||
error_reg_not_accepted_word = 'Spambeskyttelse: E-post eller navn inneholder et ord eller domene som ikke er tillatt'
|
||||
error_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'E-post til forumadministrator'
|
||||
|
@ -664,6 +722,7 @@ contact_user_hl = 'E-post til [recipient_name]'
|
|||
impossible_to_contact = 'Denne brukeren kan ikke kontaktes!'
|
||||
contact_doesnt_exist = 'Denne kontakten eksisterer ikke!'
|
||||
sender_address_caption = 'Avsenders e-post:'
|
||||
sender_confirmation_caption = '<!-- TODO -->Send me a copy of my message'
|
||||
subject_caption = 'Emne:'
|
||||
message_caption = 'Melding:'
|
||||
message_submit_caption = 'OK - Send melding'
|
||||
|
@ -675,7 +734,7 @@ error_email_invalid = 'E-postadressen er ugyldig'
|
|||
#error_not_accepted_word = 'Meldingen inneholder minst et ord som ikke er akseptert'
|
||||
error_email_subject_too_long = 'Emnet er for langt'
|
||||
error_email_text_too_long = 'Meldingen er for lang ([text_length] tegn - maksimum antall tegn er [text_maxlength])'
|
||||
error_spam_suspicion = 'Mistanke om spam! Prøv å redigere meldingen din (f.eks. fjern lenker)'
|
||||
error_email_spam_suspicion = 'Mistanke om spam! Prøv å redigere meldingen din (f.eks. fjern lenker)'
|
||||
#error_mailserver = 'Kunne ikke sende e-posten!'
|
||||
|
||||
[admin]
|
||||
|
@ -693,19 +752,20 @@ user_administr_link = 'Brukeradministrasjon'
|
|||
smilies_administr_link = 'Smilefjes'
|
||||
pages_administr_link = 'Sider'
|
||||
spam_protection_link = 'Spambeskyttelse'
|
||||
backup_restore_link = 'Backup'
|
||||
update_link = 'Oppdater'
|
||||
reset_uninstall_link = 'Tilbakestill eller avinstaller forum'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
upload_administr_link = 'administrer opplastninger'
|
||||
releases_info_header = 'Nyeste tilgjengelige oppdatering'
|
||||
releases_list_link = 'Sjekk listen over oppdateringer for siste tilgjengelige versjon.'
|
||||
warning_header = 'Advarsel'
|
||||
warning_install_script_exists = 'Av sikkerhetsgrunner er det anbefalt å slette (eller endre navn på) <code>install/index.php</code>-skriptet.'
|
||||
actual_installed_version_header = 'Installert versjon'
|
||||
actual_installed_version = 'Versjonsnummeret på din installasjon: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
clear_chache = 'Tøm cache (bufferfil) for å gjøre endringene gjeldende for eksisterende innlegg'
|
||||
settings_submit_button = 'OK - Lagre innstillinger'
|
||||
settings_saved = '<!-- TODO -->Settings saved'
|
||||
advanced_settings_link = 'Avanserte innstillinger'
|
||||
forum_name = 'Forumnavn'
|
||||
forum_name_desc = 'Vil (blant annet) bli vist i toppmenyen'
|
||||
|
@ -715,6 +775,8 @@ forum_address = 'Forumadresse'
|
|||
forum_address_desc = 'URL til forumet (bruk dette formatet: http://www.domene.tld/forum/)'
|
||||
forum_email = 'Forumets e-postadresse'
|
||||
forum_email_desc = 'vil bli brukt som kontaktadresse og avsenderadresse for alle e-posters om blir sendt av forumet'
|
||||
forum_target_name = '<!-- TODO -->Link window target'
|
||||
forum_target_name_desc = '<!-- TODO -->The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
home_link = 'Hjem-lenke'
|
||||
home_link_desc = 'Lenke til hjemmesiden din, f.eks. http://www.domene.tld/ eller ../index.html (valgfritt)'
|
||||
home_link_name = 'Navn på Hjem-lenken'
|
||||
|
@ -723,18 +785,18 @@ default_language = 'Språk'
|
|||
default_language_desc = 'Forumets standardspråk'
|
||||
default_time_zone = 'Tidssone'
|
||||
default_time_zone_desc = 'Standard tidssone'
|
||||
default_time_difference = '<!-- TODO -->Time zone setting not available. Alternatively the time difference between server and forum time can be specified (in minutes, e.g. 240 or -360):'
|
||||
default_time_difference = 'Tidssoneinnstillinger er ikke tilgjengelige. Alternativt kan tidsdifferansen mellom server og forum spesifiseres (i minutter, f.eks. 240 eller -360):'
|
||||
default_theme = 'Grafisk mal'
|
||||
default_theme_desc = 'Standard grafisk mal for forumet'
|
||||
threads_per_page = 'Tråder per side'
|
||||
threads_per_page_desc = 'Hvor mange tråder skal vises per side?'
|
||||
reset_read_state = '<!-- TODO -->Reset read status'
|
||||
reset_read_state = 'Tilbakestill lest-status'
|
||||
reset_read_state_desc = '<!-- TODO -->In which kind the read status shoud be resetted?'
|
||||
read_state_no_reset = '<!-- TODO -->Store status permanently'
|
||||
read_state_numbered_reset = '<!-- TODO -->Store status for an amount of entries'
|
||||
read_state_timeout_reset = '<!-- TODO -->Store status for x days'
|
||||
read_state_locktime_reset = '<!-- TODO -->Store status until a thread will be automatically locked'
|
||||
read_state_value = '<!-- TODO -->Value for the reset of the read status'
|
||||
read_state_no_reset = 'Lagre status permanent'
|
||||
read_state_numbered_reset = 'Lagre status for et antall innlegg'
|
||||
read_state_timeout_reset = 'Lagre status i x dager'
|
||||
read_state_locktime_reset = 'Lagre status til en tråd blir automatisk låst'
|
||||
read_state_value = 'Verdi for tilbakestillingen av lest-statusen'
|
||||
read_state_value_desc = '<!-- TODO -->To which number of entries or days until the reset the storing amount should be limited? In case of reset when auto locking the local value of that setting will be applied.'
|
||||
auto_lock_old_threads = 'Automatisk låse gamle tråder?'
|
||||
auto_lock_old_threads_desc = 'Automatisk låse tråder med svar som er eldre enn hvor mange dager? (0=avslått)'
|
||||
|
@ -753,6 +815,7 @@ user_area = 'Brukerområde'
|
|||
user_area_desc = 'Er brukerområdet (liste med brukere, profiler) tilgjengelig offentlig?'
|
||||
public_accessible = 'offentlig tilgjengelig'
|
||||
accessible_reg_users_only = 'kun tilgjengelig for registrerte brukere'
|
||||
accessible_team_users_only = '<!-- TODO -->accessible by administrators and moderators only'
|
||||
latest_postings = 'Siste innlegg'
|
||||
latest_postings_desc = 'Hvor mange siste innlegg skal vises i listen på hovedsiden (0=av)?'
|
||||
tag_cloud = 'Merkelappliste'
|
||||
|
@ -762,6 +825,10 @@ terms_of_use_settings = 'Samtykkeerklæring'
|
|||
terms_of_use_settings_desc = 'Uregistrerte brukere må godkjenne en samtykkeerklæring før de legger inn innlegg og registrerer seg'
|
||||
terms_of_use_settings_enabled = 'Samtykkeerklæring aktivert'
|
||||
terms_of_use_url = 'Lenke til samtykkeerklæring:'
|
||||
data_privacy_statement = 'Personvernerklæring'
|
||||
data_privacy_statement_desc = 'Tving uregistrerte brukere til å samtykke til personvernerklæringen når de poster innlegg og registrerer seg'
|
||||
data_privacy_settings_enabled = 'Personvernerklæring aktivert'
|
||||
data_privacy_url = 'Lenke til personvernerklæring:'
|
||||
edit_postings = 'Redigering av innlegg'
|
||||
edit_postings_desc = 'Innstillinger for redigering av innlegg'
|
||||
edit_own_postings = 'Redigere egne innlegg:'
|
||||
|
@ -777,7 +844,6 @@ bbcode = 'BB-kode'
|
|||
bbcode_desc = 'Aktiver BB-koder som kan brukes til å formatere innlegg?'
|
||||
bbcodes_enabled = 'BB-koder er aktivert'
|
||||
bbcodes_img_enabled = 'også tillat BB-kode for å sette inn bilder'
|
||||
bbcodes_flash_enabled = 'tillat BB Code å sette inn flash-videoer'
|
||||
smilies = 'Smilefjes'
|
||||
smilies_desc = 'Skal smilefjes som ":-)" bli erstattet av bilder? (Smilefjes kan defineres i administrasjonsgrensesnittet)'
|
||||
smilies_enabled = 'Smilefjes er aktivert'
|
||||
|
@ -862,6 +928,7 @@ delete_page_submit = 'OK - Slett side'
|
|||
error_no_page_title = 'Ingen tittel'
|
||||
|
||||
# user administration:
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name_empty = 'Du har ikke skrevet inn et brukernavn'
|
||||
num_registerd_users = '[number] registrerte brukere'
|
||||
user_id = 'ID'
|
||||
|
@ -885,13 +952,15 @@ activate_link = 'Aktiver konto'
|
|||
delete_selected_users = 'Slett valgt'
|
||||
add_user = 'Legg til bruker'
|
||||
email_list = 'Liste med e-postadressene til registrerte brukere'
|
||||
reset_terms_of_use = '<!-- TODO -->reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
|
||||
clear_userdata = 'Slett brukerdata'
|
||||
#edit_user_name = 'Brukernavn:'
|
||||
#edit_user_avatar = 'Personlig bilde:'
|
||||
edit_user_avatar = 'Personlig bilde:'
|
||||
delete_avatar = 'Slett personlig bilde'
|
||||
delete_user_confirmation = 'Er du sikker på at du vil slette denne brukeren?'
|
||||
delete_users_confirmation = 'Er du sikker på at du vil slette følgende brukere?'
|
||||
delete_entries_of_user_confirm = '<!-- TODO -->Are you sure you want to delete all postings of <strong>[user]</strong>? Replies by other users will also be deleted!'
|
||||
delete_entries_of_user_confirm = 'Er du sikker på at du vil slette alle innleggene til of <strong>[user]</strong>? Svar fra andre brukere vil også bli slettet!'
|
||||
delete_submit = 'OK - Slett'
|
||||
register_exp = 'Du kan la passordfeltet være tomt dersom du ønsker at forumet skal generere et tilfeldig passord. Dersom dette er tilfelle vil brukerinformasjonen sendes til e-postadressen du skriver inn.'
|
||||
register_username = 'Brukernavn:'
|
||||
|
@ -900,13 +969,29 @@ register_pw = 'Passord:'
|
|||
register_pw_conf = 'Bekreft passord:'
|
||||
register_send_userdata = 'Send brukerdata til e-postadressen som er spesifisert over'
|
||||
error_send_userdata = 'Dersom du lar passordfeltet står tomt så må brukerdataene sendes til den spesifiserte e-postadressen'
|
||||
error_email_wrong = 'E-postadressen er feil'
|
||||
admin_reg_error_email_wrong = 'E-postadressen er feil'
|
||||
new_user_registered = 'Brukeren "[name]" er registrert.'
|
||||
new_user_reg_send_error = 'Brukeren "[name]" er registrert, men brukerdataene kunne ikke sendes.'
|
||||
clear_userdata_condition = 'Slett brukere som logget inn maksimum [logins] ganger, og den siste gangen mer enn [days] dager siden.'
|
||||
clear_userdata_note = 'Administratorer og redaktører vil ikke bli påvirket. Før sletting vil du se en liste over alle valgte brukere.'
|
||||
no_users_in_selection = 'Ingen brukere i utvalget'
|
||||
|
||||
# upload management
|
||||
upload_administration = 'Administrer opplastninger'
|
||||
mark_upload_for_removal = 'marker for fjerning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Fant ingen opplastede filer.'
|
||||
delete_upload_confirmation = 'Er du sikker på at du vil slette denne opplastingen?'
|
||||
delete_uploads_confirmation = 'Er du sikker på at du vil slette følgende opplastinger?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Hvilke skjemaer skal beskyttes av hvilken type CAPTCHA (kun for uregistrerte brukere)?'
|
||||
|
@ -919,20 +1004,21 @@ captcha_mathematical = 'matematisk'
|
|||
captcha_graphical = 'grafisk'
|
||||
gr_captcha_not_available = 'Grafisk CAPTCHA er ikke tilgjengelig (GD Lib ikke tilgjengelig)'
|
||||
gr_captcha_no_font = 'Ingen font tilgjengelig, CAPTCHA-kode kan ikke vises'
|
||||
b8 = 'B8'
|
||||
b8_desc = '<!-- TODO -->Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = '<!-- TODO -->check posting form'
|
||||
b8_mail_check_enable = '<!-- TODO -->check e-mail form'
|
||||
b8_auto_training_enable = '<!-- TODO -->Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a>-spambeskyttelse'
|
||||
stop_forum_spam_enable = 'aktiver Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a>-spambeskyttelse.'
|
||||
bad_behavior_enable = 'aktiver Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a>-spambeskyttelsesservice. For å bruke den trenger du en <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> (vil ikke fungere uten eller med en ugyldig API-nøkkel!).'
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
akismet_save_spam = 'Lagre spam (flagget som spam og ikke vist)?'
|
||||
akismet_auto_delete_spam = 'Slette spam automatisk etter hvor mange timer (0=ikke slett)?'
|
||||
akismet_entry = 'sjekk innleggsskjema'
|
||||
akismet_mail = 'sjekk e-postskjema'
|
||||
akismet_registered = '<!-- TODO -->check submissions of registered users'
|
||||
banned_ips = 'Bannlyste IP-adresser'
|
||||
banned_ips_desc = 'IP-adresse som ikke skal ha tilgang. For å legge inn flere IP-adresser, skill dem med komma.'
|
||||
banned_user_agents = 'Bannlyste user agents'
|
||||
|
@ -940,9 +1026,15 @@ banned_user_agents_desc = 'Streng i user agents som ikke skal ha tilgang
|
|||
not_accepted_words = 'Bannlyste ord'
|
||||
not_accepted_words_desc = 'Ord eller domener som ikke vil bli akseptert i innlegg og e-poster. For å spesifisere flere ord, skill dem med komma.'
|
||||
spam_protection_submit = 'OK - Lagre'
|
||||
error_own_ip_banned = '<!-- TODO -->You banned your own IP!'
|
||||
error_own_user_agent_banned = '<!-- TODO -->You banned your own user agent!'
|
||||
spam_protection_saved = '<!-- TODO -->Saved'
|
||||
error_own_ip_banned = 'Du bannlyste din egen IP!'
|
||||
error_own_user_agent_banned = 'Du bannlyste din egen brukeragent!'
|
||||
spam_protection_saved = 'Lagret'
|
||||
spam_check_registered = 'sjekk innlegg fra registrerte brukere'
|
||||
spam_check_registered_desc = '<!-- TODO -->check submissions of registered users for spam using enabled filters'
|
||||
spam_check_registered_enable = '<!-- TODO -->check submissions of registered users for spam'
|
||||
auto_delete_spam = '<!-- TODO -->Delete spam automatically'
|
||||
auto_delete_spam_desc = '<!-- TODO -->Retention period of spam'
|
||||
auto_delete_spam_timespan = 'Slette spam automatisk etter hvor mange timer (0=ikke slett)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = 'Tilbakestill forum'
|
||||
|
@ -954,45 +1046,14 @@ uninstall_forum_exp = 'Dette vil slette alle forumtabeller. Etter de
|
|||
uninstall_forum_submit = 'OK - Avinstaller forum'
|
||||
error_no_selection_made = 'Du har ikke gjort noen valg'
|
||||
|
||||
# Backup:
|
||||
backup_note = 'For å bruke backup-funksjonen må mappen <i>backup</i> ha skrivetilgang. Du må også sørge for at mappen er tilgjengelig via Internett.'
|
||||
backup_file = 'Fil'
|
||||
backup_date = 'Dato'
|
||||
backup_size = 'Størrelse'
|
||||
create_backup_complete = 'Lag en komplett backup'
|
||||
only_create_backup_of = 'Kun lag backup av:'
|
||||
backup_entries = 'innlegg'
|
||||
backup_userdata = 'brukerdata'
|
||||
backup_settings = 'innstillinger'
|
||||
backup_categories = 'kategorier'
|
||||
backup_pages = 'sider'
|
||||
backup_smilies = 'smilefjes'
|
||||
backup_banlists = 'ban-lister'
|
||||
backup_bookmarks = '<!-- TODO -->bookmarks'
|
||||
backup_read_status = '<!-- TODO -->read status'
|
||||
backup_temp_infos = '<!-- TODO -->temporary informations'
|
||||
download_backup_file = 'Last ned backup-fil'
|
||||
delete_selected = 'Slett valgte'
|
||||
restore = 'Tilbakestill'
|
||||
delete_backup_file = 'Slett backup-fil'
|
||||
delete_backup_submit = 'OK - Slett'
|
||||
restore_confirm = 'Er du sikker på at du vil gjenopprette databasen med denne backup-filen? <br /><strong>Alle involverte tabeller som er tatt backup av vil bli overskrevet!</strong>'
|
||||
restore_safe_mode_warning = 'Safe Mode-advarsel!'
|
||||
restore_safe_mode_note = 'Fordi Safe Mode er aktivert på denne serveren kan ikke skriptets kjøretid forlenges! For å unngå ukomplette backup-filer bør du splitte store og kjøre dem en og en!'
|
||||
restore_submit = 'OK - Gjenopprett'
|
||||
restore_backup_ok = 'Backup-en har blitt gjenopprettet.'
|
||||
backup_file_created = 'Backup-filen er opprettet.'
|
||||
error_file_doesnt_exist = 'Filen eksisterer ikke!'
|
||||
error_delete_backup_file = 'Backup-filen kunne ikke slettes'
|
||||
error_create_backup_file = 'Filen kunne ikke opprettes - sørg for at mappen "backup" har skrivetilgang'
|
||||
error_restore_mysql = 'MySQL-feil: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'Nåværende versjon: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'Hvordan oppdatere?'
|
||||
update_instructions = 'Det anbefales at du deaktiverer forumet når du oppdaterer (fjern markeringen "forum aktivert" i <a href="index.php?mode=admin&action=settings">foruminnstillingene</a>)'
|
||||
update_instructions = 'Last ned den siste versjonen fra <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'Pakk opp skript-pakken, se etter oppdateringsfilen i mappen "update" og last opp denne filen i mappen "update" på serveren din'
|
||||
update_instructions = 'Pakk opp skript-pakken'
|
||||
update_instructions = 'Se etter oppdateringsfilen i mappen "update" og last opp denne filen i mappen "update" på serveren din'
|
||||
update_instructions = '<!-- TODO -->Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'Oppdater denne siden, og du vil se oppdateringsfilen nedenfor'
|
||||
update_instructions = 'Klikk på filen og følg de videre instruksjonene'
|
||||
update_instructions = 'Etter at du har kjørt oppdateringen får du opp en liste med filer og mapper som har blitt lagt til eller erstattet'
|
||||
|
@ -1005,13 +1066,21 @@ update_submit = 'OK - Kjør oppdatering'
|
|||
update_successful = 'Databasen ble oppdatert.'
|
||||
update_items_note = 'Last opp følgende filer fra den nye forumpakken (version [version]) til serveren din:'
|
||||
update_download = 'Dersom du ikke har disse filene kan de lastes ned [[her]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Svar på "[original_subject]"'
|
||||
email_text = """Hei [recipient],
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] har skrevet et svar på innlegget \"[original_subject]\":
|
||||
|
||||
Emne: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Lenke til dette innlegget: [posting_address]
|
||||
|
@ -1021,7 +1090,7 @@ Lenke til dette innlegget: [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Denne varslingen er forsinket fordi innlegget ble aktivert manuelt"""
|
||||
Denne varslingen er forsinket fordi innlegget ble aktivert manuelt. This is an automatically generated email, please do not reply to this email."""
|
||||
|
||||
admin_email_subject = 'Nytt innlegg i forumet: [subject]'
|
||||
admin_email_text = """Nytt innlegg skrevet av [name]
|
||||
|
@ -1029,15 +1098,20 @@ Emne: [subject]
|
|||
|
||||
[text]
|
||||
|
||||
Lenke til innlegget: [posting_address]"""
|
||||
Lenke til innlegget: [posting_address]
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
admin_email_text_reply = """Svar fra [name]
|
||||
Emne: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Lenke til innlegget: [posting_address]"""
|
||||
Lenke til innlegget: [posting_address]
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
admin_reg_user_email_subj = 'Forumregistrering'
|
||||
admin_reg_user_email_text = """Hei [name],
|
||||
|
||||
velkommen til forumet!
|
||||
|
||||
Her er tilgangsdataene du bruker for å logge inn:
|
||||
|
@ -1048,46 +1122,67 @@ Passord: [password]
|
|||
Lenke for direkte innlogging:
|
||||
[login_link]
|
||||
|
||||
Passordet kan endres etter at du har logget inn."""
|
||||
Passordet kan endres etter at du har logget inn.
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
|
||||
admin_activate_user_email_subj = 'Forumregistering'
|
||||
admin_activate_user_email_text = """Hei [name],
|
||||
|
||||
velkommen til forumet!
|
||||
|
||||
Link to log in directly:
|
||||
Lenke for direkte innlogging:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
|
||||
new_user_email_sj = 'Forumregistrering'
|
||||
new_user_email_txt = """Hei [name],
|
||||
|
||||
velkommen til forumet!
|
||||
|
||||
for å aktivere kontoen din, klikk på denne lenken:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
new_user_notif_sj = 'Ny bruker på forumet'
|
||||
new_user_notif_txt = """Hei [recipient],
|
||||
|
||||
en ny bruker har registrert seg på forumet.
|
||||
Brukernavn: [name]
|
||||
E-post: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
new_user_notif_txt_locked = """Hei [recipient],
|
||||
|
||||
en ny bruker har registrert seg på forumet.
|
||||
Brukernavn: [name]
|
||||
E-post: [email]
|
||||
|
||||
VIKTIG: Denne brukeren må låses opp før han eller hun kan logge inn!"""
|
||||
VIKTIG: Denne brukeren må låses opp før han eller hun kan logge inn!
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
edit_address_email_sj = 'Kontoaktivering etter endring av e-postadresse'
|
||||
edit_address_email_txt = """Hei [name],
|
||||
|
||||
e-postadressen din er endret. Du må nå aktivere kontoen din ved å klikke på denne lenken:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
pwf_activating_email_sj = 'Forespørsel om nytt passord'
|
||||
pwf_activating_email_txt = """Hei [name],
|
||||
|
||||
denne e-posten er sendt fra forumet ([forum_address]) fordi du har bedt om et nytt passord. Klikk på lenken under for å bekrefte forespørselen din. Når du klikker på lenken vil et nytt passord bli generert og sendt til deg på e-post. Dersom denne e-posten har blitt sendt til deg ved en feiltakelse (enten av deg eller noen andre) så kan du bare ignorere den.
|
||||
|
||||
[activating_link]"""
|
||||
Lenke for å bekrefte forespørselen din:
|
||||
[activating_link]
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
new_pw_email_sj = 'Nye brukerdata for forumet'
|
||||
new_pw_email_txt = """Hei [name],
|
||||
|
||||
here er dine nye brukerdata:
|
||||
|
||||
Brukernavn: [name]
|
||||
|
@ -1096,7 +1191,9 @@ Passord: [password]
|
|||
Klikk her for å logge inn direkte:
|
||||
[login_link]
|
||||
|
||||
Passordet kan endres etter at du har logget inn."""
|
||||
Passordet kan endres etter at du har logget inn.
|
||||
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1113,6 +1210,19 @@ Emne: [subject]
|
|||
|
||||
--
|
||||
Denne e-posten er sendt til deg via [forum_address]."""
|
||||
email_notify_inactive_user_subject = 'Melding om inaktivitet [name]'
|
||||
email_notify_inactive_user_text = """Hei [name],
|
||||
|
||||
Vi har lagt merke til at din siste innlogging på forumet på [forum_address] er mer enn [inactive_time_span] år siden.
|
||||
GDPR tillater ikke ubegrenset lagring av brukerdata. I henhold til GDPR sletter vi inaktive brukerkontoer med jevne mellomrom.
|
||||
|
||||
For å forhindre at kontoen slettes av oss, må du bare logge inn på forumet i løpet av de neste [days_until_delete] dagene.
|
||||
Hvis ikke sletter vi kontoen din. Innleggene dine vil bli beholdt, men de vil bli tildelt en anonym bruker som har valgt brukernavnet ditt tilfeldig.
|
||||
|
||||
Vennlig hilsen
|
||||
|
||||
--
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installering'
|
||||
|
@ -1161,5 +1271,6 @@ error_db_inexistent = 'Den spesifiserte databasen eksisterer ikke -
|
|||
error_sql_file_doesnt_exist = 'Installasjons-SQL-filen (install.sql) eksisterer ikke'
|
||||
error_overwrite_config_file = 'Ingen tillatelser til å overskrive filen <code>config/db_settings.php</code> (endre CHMOD til 666, nåværende er [CHMOD])'
|
||||
error_sql = 'SQL-feil'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'OK - Installer forum'
|
||||
error_conf_pw = 'Administrasjonspassordene matchet ikke'
|
||||
|
|
|
@ -1,11 +1,17 @@
|
|||
################################################################################
|
||||
# Russian language file for my little forum 2.4 #
|
||||
# Translated from English by Victor Urusov aka Urfin® #
|
||||
# < urfin77 at yandex dot ru > #
|
||||
# Russian language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# Русский языковой файл для my little forum 2.4 #
|
||||
# Перевод c английского сделал Виктор Урусов aka Urfin® #
|
||||
# < urfin77 at yandex dot ru > #
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - не меняйте и не переводите названия разделов типа "[general]" и "[entry]"! #
|
||||
# - метки-заполнители в квадратных скобках (типа "[name]") будут заменены на #
|
||||
|
@ -15,10 +21,18 @@
|
|||
# - тексты, состоящие из нескольких строк (сообщения E-Mail) заключены в #
|
||||
# тройные кавычки (например, """Превед, #
|
||||
# кагдила?77""") #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated from English by Victor Urusov aka Urfin® #
|
||||
# < urfin77 at yandex dot ru > #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = ru
|
||||
language_code = 'ru'
|
||||
language_name_system = 'russian'
|
||||
language_name_own = 'русский'
|
||||
charset = utf-8
|
||||
locale = ru
|
||||
locale = ru_RU
|
||||
|
@ -26,8 +40,8 @@ locale = rus
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %Y-%m-%d, %H:%M
|
||||
time_format_full = %Y-%m-%d, %H:%M
|
||||
time_format = 'dd.MM.YYYY, H:mm'
|
||||
time_format_full = 'EEEE, dd MMMM YYYY, H:mm'
|
||||
forum_time = 'Время форума: [time]'
|
||||
forum_time_with_time_zone = 'Время форума: [time] ([time_zone])'
|
||||
unknown_user = 'неизвестный'
|
||||
|
@ -41,7 +55,8 @@ date = 'Дата'
|
|||
replies = 'Комментарии'
|
||||
views = 'Просмотры'
|
||||
category = 'Категория'
|
||||
submit_button_ok = ' OK '
|
||||
submit_button_ok = ' Да '
|
||||
submit_button_cancel = ' Отмена '
|
||||
yes = 'да'
|
||||
no = 'нет'
|
||||
go = 'Поехали'
|
||||
|
@ -51,8 +66,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'следующая страница'
|
||||
previous_page_link_title = 'предыдущая страница'
|
||||
posted_by = 'написал <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'написал <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'написал [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'написал [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'кликните, чтобы перейти к посту, который написал [name]'
|
||||
error_headline = 'Ошибочка!'
|
||||
no_authorisation = 'Не автоирзован!'
|
||||
|
@ -70,14 +85,16 @@ register_link = 'Зарегистрироваться'
|
|||
register_link_title = 'Регистрация нового пользователя'
|
||||
profile_link_title = 'Редактировать профиль'
|
||||
user_area_link = 'Пользователи'
|
||||
user_area_link_title = 'Пользовательский раздел'
|
||||
user_area_link_title = 'Пользователи'
|
||||
admin_area_link = 'Администратор'
|
||||
admin_area_link_title = 'Административный раздел'
|
||||
admin_area_link_title = 'Администрирование'
|
||||
search_marking = 'Поиск:'
|
||||
search_default_value = 'искать …'
|
||||
search_title = 'Поиск сообщений'
|
||||
new_topic_link = 'Новая тема'
|
||||
new_topic_link_title = 'Создать новую тему'
|
||||
back_to_top_link = 'Наверх'
|
||||
back_to_top_link_title = 'Вернуться в верх страницы'
|
||||
order_link = 'Сортировка'
|
||||
order_link_title_1 = 'Сортировать по дате последнего комментария'
|
||||
order_link_title_2 = 'Сортировать по дате содания тем (по-умолчанию)'
|
||||
|
@ -115,6 +132,8 @@ back_to_entry_link = 'Вернуться в сообщение от
|
|||
back_to_entry_link_title = 'Вернуться в сообщение от [name]'
|
||||
subnav_login = 'Логин'
|
||||
subnav_pw_forgotten = 'Забыл пароль'
|
||||
subnav_accept_dps = 'Принять заявление о конфиденциальности данных'
|
||||
subnav_accept_tou = 'Принять условия использования'
|
||||
subnav_admin_area = 'Административный раздел'
|
||||
subnav_settings = 'Настройки форума'
|
||||
subnav_advanced_settings = 'Расширенные настройки'
|
||||
|
@ -131,13 +150,13 @@ subnav_create_page = 'Создать страницу'
|
|||
subnav_edit_smiley = 'Редактирвать смайлик'
|
||||
subnav_edit_user = 'Редактировать пользователя'
|
||||
subnav_delete_users = 'Удалить пользователей'
|
||||
subnav_delete_entries_user = '<!-- TODO -->Delete entries of user'
|
||||
subnav_delete_entries_user = 'Удалить сообщения пользователя'
|
||||
subnav_register_user = 'Регистрация пользователя'
|
||||
subnav_spam_protection = 'Защита от спама'
|
||||
subnav_email_list = 'Перечень E-mail зарегистрированных пользователей'
|
||||
subnav_clear_userdata = 'Очистить данные пользователя'
|
||||
subnav_search = 'Поиск'
|
||||
subnav_list_spam = '<!-- TODO -->Spam'
|
||||
subnav_list_spam = 'Спам'
|
||||
subnav_register = 'Регистрация'
|
||||
subnav_reset_uninstall = 'Очистить / удалить форум'
|
||||
subnav_userarea = 'Пользовательский раздел'
|
||||
|
@ -147,6 +166,7 @@ subnav_userarea_show_posts = 'Все посты от [var]'
|
|||
subnav_userarea_edit_user = 'Редактирование профиля'
|
||||
subnav_userarea_edit_pw = 'Смена Пароля'
|
||||
subnav_userarea_edit_mail = 'Смена адреса E-mail'
|
||||
subnav_userarea_remove_account = 'Удалить аккаунт'
|
||||
subnav_backup = 'Резервное копирование'
|
||||
subnav_update = 'Обновление'
|
||||
subnav_update_run = 'Запустить обновление'
|
||||
|
@ -155,9 +175,11 @@ subnav_restore = 'Восстановление'
|
|||
subnav_locked = 'Блокировка учетной записи'
|
||||
subnav_delete_cookie = 'Удалить куки'
|
||||
subnav_disabled = 'Форум отключен'
|
||||
subnav_bookmarks = '<!-- TODO -->Bookmarks'
|
||||
subnav_delete_bookmark = '<!-- TODO -->Delete bookmark'
|
||||
subnav_edit_bookmark = '<!-- TODO -->Edit bookmark'
|
||||
subnav_bookmarks = 'Закладки'
|
||||
subnav_delete_bookmark = 'Удалить закладку'
|
||||
subnav_edit_bookmark = 'Редактировать закладку'
|
||||
subnav_list_uploads = 'Список загруженных'
|
||||
subnav_confirm_delete_uploads = 'Удалить загруженные'
|
||||
subnav_page_error = 'Ошибочка'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] сообщений в [total_threads] темах, [registered_users] зарегистрированных пользователей'
|
||||
|
@ -184,7 +206,6 @@ error_invalid_date_format = 'Неправильный формат дат
|
|||
error_invalid_date = 'Неправильно указана дата рождения'
|
||||
error_email_wrong = 'Неправильный адрес e-mail'
|
||||
error_hp_wrong = 'Неправильный адрес домашней страницы'
|
||||
error_pw_conf_wrong = 'Пароль не совпадает с введенным повторно'
|
||||
error_akismet_connection = 'Сервер тормозит, попробуйте ещё раз!'
|
||||
error_akismet_connection_admin = 'Нельзя подключиться к серверу Akismet для проверки ключа API!'
|
||||
error_akismet_api_key = 'Неправильный ключ Wordpress API'
|
||||
|
@ -194,13 +215,14 @@ open_whole_thread = 'Открыть всю тему'
|
|||
change_category_link = 'Показать сообщения в категории "[category]"'
|
||||
mark_linktitle = 'Отметить сообщение'
|
||||
unmark_linktitle = 'Снять отметку'
|
||||
unclassified_linktitle = 'Объявление не засекречено'
|
||||
delete_marked_link = 'Удалить отмеченные'
|
||||
manage_postings_link = 'Управление сообщениями'
|
||||
non_activated_users_link = '[counter] non-activated user(s)'
|
||||
non_activated_users_link = '<!-- TODO -->[counter] non-activated user(s)'
|
||||
show_spam_link = 'Показать спам ([number])'
|
||||
hide_spam_link = 'Скрыть спам'
|
||||
delete_spam_link = 'Удалить спам'
|
||||
list_spam_link = '<!-- TODO -->List spam'
|
||||
list_spam_link = 'Список спама'
|
||||
no_replies = 'Нет ответов'
|
||||
one_reply = '1 ответ'
|
||||
several_replies = '[replies] ответов'
|
||||
|
@ -208,6 +230,8 @@ more_smilies_label = 'ещё'
|
|||
more_smilies_title = 'ещё смайлики'
|
||||
close = 'закрыть'
|
||||
no_postings_user = 'Нет сообщений.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Поиск'
|
||||
search_fulltext = 'весь текст'
|
||||
#search_fulltext_or = 'весь текст (или)'
|
||||
|
@ -243,15 +267,16 @@ search_user = 'Искать пользователя:'
|
|||
search_user_default_value = 'Искать пользователя …'
|
||||
no_users = 'Пользователей не найдено.'
|
||||
no_text_title = 'Пустое сообщение / отсутствует текст'
|
||||
no_text = '- Тут ничего нет! -'
|
||||
no_text_alt = 'Пустое сообщение'
|
||||
no_text = '- Тут ничего нет! -'
|
||||
error_invalid_form = 'Сессия просрочена! Пожалуйста, скопируйте текст и залогиньтесь снова, или отправьте содержимое формы повторно как гость.'
|
||||
error_form_sent_too_fast = 'Форма была отправлена слишком быстро - пожалуйста, подождите несколько секунд и повторите отправку (работает защита от автоматического заполнения форм)'
|
||||
error_form_sent_too_slow = 'Форма уже не актуальна - пожалуйста, скопируйте текст и обновите страницу'
|
||||
terms_of_use_agreement = 'Я согласен с [[Правилами пользования]]'
|
||||
data_privacy_agreement = 'Я согласен с [[Заявлением о конфиденциальности данных]]'
|
||||
error_not_accepted_word = 'Неприемлемое слово: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Неприемлемые слова: [not_accepted_words]'
|
||||
error_username_invalid_chars = 'Имя пользователя содержит специальные символы'
|
||||
error_username_invalid_chars = 'Имя пользователя содержит недопустимые символы'
|
||||
user_locked = 'заблокирован'
|
||||
user_locked_message = 'Ваша учётная запись заблокирована.'
|
||||
forum_disabled = 'Форум временно недоступен.'
|
||||
|
@ -268,46 +293,52 @@ error_no_subject = 'Не указан заголовок темы
|
|||
error_no_text = 'Отсутствует текст сообщения'
|
||||
terms_of_use_error_register = 'Для завершения регистрации требуется ваше согласие с правилами пользования'
|
||||
terms_of_use_error_posting = 'Для отправки данного сообщения требуется ваше согласие с правилами пользования'
|
||||
terms_of_use_error_reconf = 'Для отправки дальнейших сообщений требуется Ваше согласие с изменениями Правил пользования'
|
||||
data_priv_statement_error_reg = 'Для завершения регистрации требуется Ваше согласие с Заявлением о конфиденциальности данных'
|
||||
data_priv_statement_error_post = 'Для отправки данного сообщения требуется Ваше согласие с Заявлением о конфиденциальности данных'
|
||||
data_priv_statement_error_reconf ='Для отправки дальнейших сообщений требуется Ваше согласие с изменениями в Заявлении о конфиденциальности данных'
|
||||
submit_button_agreed = 'Я согласен'
|
||||
submit_button_disagreed = 'Я против!'
|
||||
check_all = 'выбрать все'
|
||||
uncheck_all = 'отменить выбор'
|
||||
delete_backup_confirm = 'Вы уверены, что хотите удалить файл с резервной копией?'
|
||||
delete_sel_backup_confirm = 'Вы уверены, что хотите удалить все файлы резервных копий?'
|
||||
drag_and_drop_title = 'перетащите мышкой чтобы переместиться вверх или вниз'
|
||||
show_all_postings_link = 'показать сообщения'
|
||||
show_bookmarks_link = '<!-- TODO -->Bookmarks'
|
||||
show_userdata_linktitle = '<!-- TODO -->Visit profil of [user]'
|
||||
show_bookmarks_link = 'Закладки'
|
||||
show_userdata_linktitle = 'Посмотреть профиль [user]'
|
||||
show_password_title = 'Показать пароль'
|
||||
hide_password_title = 'Скрыть пароль'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
|
||||
delete_bookmark_confirm = '<!-- TODO -->Do you really want to delete this bookmark?'
|
||||
no_bookmarks = '<!-- TODO -->No bookmarks specified.'
|
||||
edit_bookmark = '<!-- TODO -->Bookmark:'
|
||||
edit_tags = '<!-- TODO -->Tags:'
|
||||
edit_tags_note = '<!-- TODO -->(optional, separated by comma)'
|
||||
bookmark_title = '<!-- TODO -->Name of bookmark'
|
||||
bookmark_user_name = '<!-- TODO -->User name'
|
||||
bookmark_creation_time = '<!-- TODO -->Bookmark creation'
|
||||
bookmark_posting_time = '<!-- TODO -->Posting creation'
|
||||
bookmark_filter_linktitle = '<!-- TODO -->Apply bookmark filter'
|
||||
clear_bookmark_filter_linkname = '<!-- TODO -->Clear bookmark filter'
|
||||
clear_bookmark_filter_linktitle = '<!-- TODO -->clear current bookmark filter and show all saved bookmarks'
|
||||
error_no_bookmark_subject = '<!-- TODO -->No subject has been entered'
|
||||
error_bookmark_subject_too_long = '<!-- TODO -->The subject is too long'
|
||||
error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
||||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
delete_bookmark_submit = 'Удалить закладку'
|
||||
delete_bookmark_confirm = 'Вы действительно хотите удалить эту закладку?'
|
||||
no_bookmarks = 'Закладок не выбрано.'
|
||||
edit_bookmark = 'Закладка:'
|
||||
edit_tags = 'Тэги:'
|
||||
edit_tags_note = '(не обязательно, разделять запятыми)'
|
||||
bookmark_title = 'Название закладки'
|
||||
bookmark_user_name = 'Пользователь'
|
||||
bookmark_creation_time = 'Время создания закладки'
|
||||
bookmark_posting_time = 'Время создания сообщения'
|
||||
bookmark_filter_linktitle = 'Применить фильтр закладок'
|
||||
clear_bookmark_filter_linkname = 'Очистить фильтр закладок'
|
||||
clear_bookmark_filter_linktitle = 'очистить текущий фильтр закладок и показать все сохраненные закладки'
|
||||
error_no_bookmark_subject = 'Не указано название закладки'
|
||||
error_bookmark_subject_too_long = 'Название закладки слишком длинное'
|
||||
error_bookmark_word_too_long = 'Слово "[word]" слишком длинное'
|
||||
error_bookmark_tags_limit_reached = 'Превышен лимит тэгов для закладки'
|
||||
|
||||
[entry]
|
||||
edited_by = 'исправил [name], в [time]'
|
||||
edited_by = 'исправил [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Тэги:'
|
||||
one_view = '1 просмотр'
|
||||
several_views = '[views] просмотров'
|
||||
complete_thread_marking = 'Тема полностью:'
|
||||
branch_marking = 'Данная ветка темы:'
|
||||
direct_replies_marking = 'Прямые ответы на данное сообщение:'
|
||||
add_bookmark_message_linkname = '<!-- TODO -->add bookmark'
|
||||
add_bookmark_message_linktitle = '<!-- TODO -->Add this posting to your personal bookmark list'
|
||||
delete_bookmark_message_linkname ='<!-- TODO -->delete bookmark'
|
||||
delete_bookmark_message_linktitle='<!-- TODO -->Remove this posting from your personal bookmark list'
|
||||
add_bookmark_message_linkname = 'в закладки'
|
||||
add_bookmark_message_linktitle = 'Добавить это сообщение в Ваш персональный список закладок'
|
||||
delete_bookmark_message_linkname ='удалить закладку'
|
||||
delete_bookmark_message_linktitle='Удалить это сообщение из Вашего персонального списка закладок'
|
||||
edit_message_linkname = 'править'
|
||||
edit_message_linktitle = 'править сообщение'
|
||||
delete_message_linkname = 'удалить'
|
||||
|
@ -346,7 +377,7 @@ hp_marking = 'Домашняя страница:'
|
|||
location_marking = 'Местоположение:'
|
||||
optional = '(не обязательно)'
|
||||
optional_email = '(не обязательно, не будет отображаться в явном виде)'
|
||||
honeypot_field_marking = '<!-- TODO -->Leave this field empty:'
|
||||
honeypot_field_marking = 'Оставить это поле пустым:'
|
||||
remember_userdata_marking = 'Запомнить меня (куки)'
|
||||
delete_cookie_linkname = 'удалить куки'
|
||||
category_marking = 'Категория:'
|
||||
|
@ -354,6 +385,8 @@ subject_marking = 'Тема:'
|
|||
message_marking = 'Сообщение:'
|
||||
tags_marking = 'Тэги:'
|
||||
tags_note = '(не обязательно, разделяются запятыми)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'жирный'
|
||||
bbcode_bold_title = 'Выделить текст жирным'
|
||||
bbcode_bold_instruction = '[b]жирный текст[/b]'
|
||||
|
@ -362,7 +395,7 @@ bbcode_italic_title = 'Выделить текст курсивом'
|
|||
bbcode_italic_instruction = '[i]курсив[/i]'
|
||||
bbcode_color_label = 'цвет'
|
||||
bbcode_color_title = 'Цвет текста'
|
||||
bbcode_color_instruction = '[color=#rgb]colored text[/color]'
|
||||
bbcode_color_instruction = '[color=#rgb]цветной текст[/color]'
|
||||
bbcode_link_label = 'ссылка'
|
||||
bbcode_link_title = 'Вставить гиперссылку'
|
||||
bbcode_link_instruction = '[link=http://example.com/]текст ссылки[/link] / [link]http://example.com/[/link]'
|
||||
|
@ -374,7 +407,7 @@ bbcode_size_instruction_small = '[size=small]мелкие буквы[/size]'
|
|||
bbcode_size_instruction_large = '[size=large]крупные буквы[/size]'
|
||||
bbcode_list_label = 'список'
|
||||
bbcode_list_title = 'Вставить список'
|
||||
bbcode_list_instruction = '[list][*]list item[/list]'
|
||||
bbcode_list_instruction = '[list][*]элемент списка[/list]'
|
||||
bbcode_image_label = 'картинка'
|
||||
bbcode_image_title = 'Вставить картинку'
|
||||
bbcode_image_label_default = 'без выравнивания'
|
||||
|
@ -386,15 +419,12 @@ bbcode_image_instr_right = 'с выравниванием по право
|
|||
bbcode_image_label_thumb = 'миниатюра'
|
||||
bbcode_image_instr_thumb = 'вставка миниатюры: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'миниатюра с выравниванием по левому краю'
|
||||
bbcode_image_instr_thumb_left = 'вставка миниатюры с выравниванием по левому краю: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'вставка миниатюры с выравниванием по левому краю: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'миниатюра с выравниванием по правому краю'
|
||||
bbcode_image_instr_thumb_right = 'вставка миниатюры с выравниванием по правому краю: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'вставка миниатюры с выравниванием по правому краю: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'загрузить'
|
||||
bbcode_upload_title = 'Загрузить картинку'
|
||||
bbcode_upload_instruction = 'Загрузить картинку …'
|
||||
bbcode_flash_label = 'флэш'
|
||||
bbcode_flash_title = 'Вставить флэшку'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = 'вставка кода в формате TeX'
|
||||
bbcode_tex_instruction = '[tex]код в формате TeX[/tex]'
|
||||
|
@ -410,8 +440,11 @@ insert_smiley_title = 'Вставить смайлик'
|
|||
email_notific_reply_thread = 'Получать уведомления о сообщениях в этой теме по E-mail'
|
||||
email_notific_reply_post = 'Получать уведомления об ответах на это сообщение по E-mail'
|
||||
show_signature_marking = 'Добавить подпись'
|
||||
sticky_thread = 'Прилепить'
|
||||
message_submit_button = 'Да, отправить'
|
||||
sticky_none = 'Не закреплять обсуждение'
|
||||
sticky_single_cat = 'Закрепить обсуждение в выбранной категории'
|
||||
sticky_all_cats = 'Закреписть обсуждение во всех категориях'
|
||||
sticky_thread = 'Закрепить'
|
||||
message_submit_button = 'Отправить'
|
||||
message_submit_title = 'Сохранить сообщение'
|
||||
message_preview_button = 'Предпросмотр'
|
||||
message_preview_title = 'Предварительный просмотр сообщения перед сохранением'
|
||||
|
@ -438,9 +471,8 @@ delete_spam_hl = 'Удалить спам'
|
|||
delete_spam_confirm = 'Вы действительно хотите удалить все сообщения, помеченные как спам?'
|
||||
delete_posting_submit = 'Да, удалить'
|
||||
report_spam_hl = 'Сообщить о спаме'
|
||||
report_spam_warning = 'Пожалуйста, отметьте это сообщение как спам, только если это действительно спам! Спам-фильтры основаны на теореме Байеса. Вероятность попадания записи в спам базируется на данных такого обучения. Неправильная классификация записей приведет в дальнейшем к ошибкам в работе фильтра.'
|
||||
posting_already_spam = 'Это сообщение уже отмечено как спам.'
|
||||
spamcheck_posting_not_checked = 'Это сообщение уже помечено как разрешённое, или не было проверено фильтром Akismet, т.к. фильтр Akismet не включен, либо это сообщение от зарегистрированного пользователя.'
|
||||
spamcheck_posting_passed = 'Это сообщение прошло проверку фильтром спама Akismet. Сообщите, что это спам, только если точно в этом уверены!'
|
||||
spamcheck_akismet_api_error = 'Это сообщение прошло проверку фильтром спама Akismet, потому что при его проверке возникла ошибка. Возможно, это произошло из-за неправильного ключа API!'
|
||||
spamcheck_akismet_timeout_error = 'Это сообщение прошло проверку фильтром спама из-за таймаута при доступе к серверу Akismet.'
|
||||
report_spam_delete_submit = 'Сообщить о спаме и удалить'
|
||||
|
@ -449,11 +481,17 @@ delete_only_submit = 'Только удалить'
|
|||
postings_doesnt_exist = 'Это сообщение не существует!'
|
||||
posting_not_flagged_as_spam = 'Это сообщение не помечено как спам.'
|
||||
flag_ham_hl = 'Пометить как разрешённое'
|
||||
flag_ham_note = 'Это сообщение было помечено фильтром Akismet как спам. Сообщите, что это не спам, только если точно в этом уверены!'
|
||||
flag_ham_warning = 'Пожалуйста, отметьте это сообщение как разрешенное (не спам), только если это действительно не спам! Спам-фильтры основаны на теореме Байеса. Вероятность попадания записи в спам базируется на данных такого обучения. Неправильная классификация записей приведет в дальнейшем к ошибкам в работе фильтра.'
|
||||
report_flag_ham_submit = 'Сообщить и пометить как разрешённое'
|
||||
flag_ham_submit = 'Только пометить как разрешённое'
|
||||
no_authorisation_delete = 'Сообщение не может быть удалено! Возможно, истёк период времени для удаления сообщения, тема заблокирована или уже имеются ответы на данное сообщение.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = 'Подписка прекращена'
|
||||
unsubscribed_message = 'Подписка на получение информации об ответах на ваше сообщение прекращена. Вы больше не будете получать по электронной почте какие-либо уведомления об этом сообщении. Это действие не влияет на подписку на получение уведомлений о дальнейших сообщениях.'
|
||||
unsubscribe_error_hl = 'Прекратить подписку не удалось'
|
||||
unsubscribe_error_message = 'Во время отмены подлписки возникла ошибка. Пожалуйста, сообщите об этом по электронной почте администратору форума. Пожалуйста, укажите следующую информацию: ID записи (взять его из ссылки, указанной в электронном письме (URL-параметр "отказаться от подписки")) и время неудачного действия (если возможно, добавьте название вашего часового пояса).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Защита от спама:'
|
||||
captcha_expl_math = 'Пожалуйста, сложите два числа:'
|
||||
|
@ -476,17 +514,11 @@ insert_image = 'Вставить картинку'
|
|||
insert_image_exp = 'Кликните на картинку, чтобы вставить её в ваше сообщение.'
|
||||
insert_image_exp_no_js = 'Для вставки картинки в ваше сообщение можно использовать следующий код:'
|
||||
browse_uploaded_images = 'Просмотр загруженных картинок …'
|
||||
back = '« back'
|
||||
back = '« назад'
|
||||
no_images = 'Нет доступных картинок.'
|
||||
delete_image_confirm = 'Удалить эту картинку?'
|
||||
delete_image_button = 'OK - Удалить'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'Вставить флэш-видео'
|
||||
flash_url = 'URL:'
|
||||
flash_size = 'Размер:'
|
||||
insert_flash_button = 'Вставить флэш-видео'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Аватар'
|
||||
delete_avatar = 'Удалить аватар'
|
||||
|
@ -546,6 +578,7 @@ pwf_username = 'Пользователь:'
|
|||
pwf_email = 'Адрес e-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Список пользователей'
|
||||
user_name = 'Пользователь'
|
||||
user_type = 'Тип'
|
||||
admin = 'Администратор'
|
||||
|
@ -563,7 +596,7 @@ online = 'на сайте'
|
|||
lock_title = 'блокировать пользователя'
|
||||
unlocked = 'разблокирован'
|
||||
unlock_title = 'разблокировать пользователя'
|
||||
currently_online = '</-- TODO -->Currently online'
|
||||
currently_online = 'Сейчас на сайте'
|
||||
|
||||
[user_show]
|
||||
user_name = 'Пользователь:'
|
||||
|
@ -591,11 +624,11 @@ last_posting = 'Последнее сообщение:'
|
|||
logins_per_day = 'Посещений в день:'
|
||||
postings_per_day = 'Сообщений за день:'
|
||||
user_profile = 'Профиль:'
|
||||
user_delete_all_entries = '<!-- TODO -->Delete all postings of this user'
|
||||
user_lock_account = '<!-- TODO -->Lock user account'
|
||||
user_unlock_account = '<!-- TODO -->Unlock user account'
|
||||
user_edit_account = '<!-- TODO -->Edit user account'
|
||||
user_delete_account = '<!-- TODO -->Delete user account'
|
||||
user_delete_all_entries = 'Удалить все сообщения этого пользователя'
|
||||
user_lock_account = 'Заблокировать учетную запись пользователя'
|
||||
user_unlock_account = 'Разблокировать учетную запись пользователя'
|
||||
user_edit_account = 'Редактировать учетную запись пользователя'
|
||||
user_delete_account = 'Удалить учетную запись пользователя'
|
||||
user_account_doesnt_exist = 'Учётная запись пользователя не существует.'
|
||||
|
||||
[user_edit]
|
||||
|
@ -608,10 +641,13 @@ edit_email = 'изменить адрес e-mail'
|
|||
edit_user_pw = 'Пароль:'
|
||||
pw_not_displayed = 'не отображается'
|
||||
edit_pw = 'сменить пароль'
|
||||
edit_user_email_contact = 'Контактный адрес E-mail'
|
||||
edit_user_contacting = 'Контакты:'
|
||||
edit_user_contacting_disabled = 'Доступны только администраторам и модераторам'
|
||||
edit_user_contacting_registered = 'Доступны только зарегистрированным пользователям'
|
||||
edit_user_contacting_public = 'Доступны всем'
|
||||
edit_user_real_name = 'Имя:'
|
||||
edit_user_gender = 'Пол:'
|
||||
gender_not_specified = 'not specified'
|
||||
gender_not_specified = 'не указан'
|
||||
male = 'мужчина'
|
||||
female = 'женщина'
|
||||
edit_user_birthday = 'Дата рождения:'
|
||||
|
@ -632,20 +668,35 @@ edit_user_theme = 'Шаблон:'
|
|||
edit_user_default_theme = 'По умолчанию ([default_theme])'
|
||||
edit_user_auto_login = 'Автозаход:'
|
||||
enable_auto_login = 'разрешить автоматический вход'
|
||||
edit_user_where_to_open_links = '<!-- TODO -->Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = '<!-- TODO -->Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = '<!-- TODO -->Open all links in same browser window'
|
||||
where_to_open_links_external = '<!-- TODO -->Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = '<!-- TODO -->Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_notification = 'Уведомление по e-mail:'
|
||||
admin_mod_notif_posting = 'каждый раз при публикации нового сообщения'
|
||||
admin_mod_notif_register = 'каждый раз при регистрации нового пользователя'
|
||||
userdata_submit_button = 'Да, сохранить'
|
||||
profile_saved = 'Ваш профиль был сохранён.'
|
||||
pw_changed = 'Пароль был изменён.'
|
||||
remove_user_account = 'Удалить аккаунт'
|
||||
remove_user_account_link = 'Удалить Ваш аккаунт'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = 'Удаление аккаунта'
|
||||
remove_user_account_warning = 'Внимание, если Вы удалите свой аккаунт, его нельзя будет восстановить. Пожалуйста, будьте осторожны! Закладки и данные пользователя будут удалены. Ваши сообщения останутся без изменений. Как и в случае незарегистрированного сообщения, в качестве автора будет отображаться ваше имя ([user_name]).'
|
||||
remove_user_confirm_password = 'Пароль:'
|
||||
error_pw_wrong = 'Пароль указан неверно'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'Старый пароль:'
|
||||
edit_pw_new = 'Новый пароль:'
|
||||
edit_pw_conf = 'Повторите новый пароль:'
|
||||
error_old_pw_wrong = 'Старый пароль указан неверно'
|
||||
error_pw_conf_uneven = 'Новый пароль не совпадает с введенным повторно'
|
||||
error_new_pw_too_short = 'Новый пароль должен содержать как минимум [characters] символов'
|
||||
error_new_pw_needs_digit = 'Пароль должен содержать не менее [digits] цифр'
|
||||
error_new_pw_needs_lowercase_letter = 'Пароль должен содержать не менее [lowercase_letters] строчных букв'
|
||||
error_new_pw_needs_uppercase_letter = 'Пароль должен содержать не менее [uppercase_letters] заглавных букв'
|
||||
error_new_pw_needs_special_character ='Пароль должен содержать не менее [special_characters] специальных символов'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'При смене адреса e-mail произойдет выход из форума и потребуется повторная активация учетной записи. Ключ активации будет выслан на новый адрес e-mail, будьте уверены, что он указан правильно! Учётная запись должна быть активирована в течение суток.'
|
||||
|
@ -658,22 +709,26 @@ error_email_too_long = 'Адрес e-mail слишком длинны
|
|||
error_identic_email = 'Новый адрес e-mail совпадает со старым'
|
||||
error_email_invalid = 'Неправильный адрес e-mail'
|
||||
pw_wrong = 'Пароль указан неверно'
|
||||
#error_meilserver = 'Невозможно подключиться к почтовому серверу - повторите попытку позже'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = 'Выберите желаемое имя пользователя, задайте пароль и укажите действующий адрес e-mail. На указанный адрес будет отправлен ключ активации. Учётная запись должна быть активирована в течение суток.'
|
||||
register_username = 'Пользователь:'
|
||||
register_user_email = 'E-mail:'
|
||||
register_pw = 'Пароль:'
|
||||
register_pw_conf = 'Повторите пароль:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_honeypot_field = 'Оставьте это поле пустым:'
|
||||
register_only_by_admin = 'Пользователь может быть зарегистрирован только Администратором форума.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Учётная запись была зарегистрирована и ключ активации выслан на <strong>[var]</strong>. Учётная запись должна быть активирована в течение суток.'
|
||||
registered_send_error = 'Учётная запись была зарегистрирована, но ключ активации не может быть выслан (почтовый сервер недоступен). Пожалуйста, свяжитесь с Администратором форума и попросите его вручную активировать вашу учётную запись.'
|
||||
activation_failed = 'Не получилось активировать учётную запись.'
|
||||
error_password_too_short = 'Пароль должен состоять как минимум из [characters] символов'
|
||||
error_email_alr_exists = 'Пользователь с таким адресом e-mail уже зарегистрирован'
|
||||
error_reg_not_accepted_word = 'Защита от спама: Адрес е-mail или имя содержат неприемлемое слово или домен'
|
||||
error_pw_needs_digit = 'Пароль должен содержать не менее [digits] цифр.'
|
||||
error_pw_needs_lowercase_letter = 'Пароль должен содержать не менее [lowercase_letters] строчных букв'
|
||||
error_pw_needs_uppercase_letter = 'Пароль должен содержать не менее [uppercase_letters] заглавных букв'
|
||||
error_pw_needs_special_character ='Пароль должен содержать не менее [special_characters] специальных символов'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'Отправить e-mail Администратору форума'
|
||||
|
@ -681,6 +736,7 @@ contact_user_hl = 'Ортправить e-mail пользова
|
|||
impossible_to_contact = 'Невозможно связаться с этим пользователем!'
|
||||
contact_doesnt_exist = 'Этот контакт не существует!'
|
||||
sender_address_caption = 'Адрес e-mail отправителя:'
|
||||
sender_confirmation_caption = 'Отправить мне копию моего сообщения'
|
||||
subject_caption = 'Заголовок:'
|
||||
message_caption = 'Сообщение:'
|
||||
message_submit_caption = 'Да, отправить'
|
||||
|
@ -692,8 +748,7 @@ error_email_invalid = 'Адрес e-mail неправильный'
|
|||
#error_not_accepted_word = 'Письмо содержит как минимум одно неприемлемое слово'
|
||||
error_email_subject_too_long = 'Заголовок письма слишком длинный'
|
||||
error_email_text_too_long = 'Текст письма слишком длинный ([text_length] символов - разрешено только [text_maxlength] символов)'
|
||||
error_spam_suspicion = 'Подозрение на спам! Пожалуйста, измените текст письма (например, удалите ссылки)'
|
||||
#error_mailserver = 'Попытка отправить письмо не удалась!'
|
||||
error_email_spam_suspicion = 'Подозрение на спам! Пожалуйста, измените текст письма (например, удалите ссылки)'
|
||||
|
||||
[admin]
|
||||
enabled = 'включен'
|
||||
|
@ -710,15 +765,15 @@ user_administr_link = 'Управление пользователя
|
|||
smilies_administr_link = 'Смайлики'
|
||||
pages_administr_link = 'Страницы'
|
||||
spam_protection_link = 'Защита от спама'
|
||||
backup_restore_link = 'Резервное копирование'
|
||||
update_link = 'Обновление'
|
||||
reset_uninstall_link = 'Очистка или удаление форума'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
upload_administr_link = 'управление загрузками'
|
||||
releases_info_header = 'Доступная актуальная версия'
|
||||
releases_list_link = 'Проверьте список версий на наличие доступной актуальной.'
|
||||
warning_header = 'Предупреждение'
|
||||
warning_install_script_exists = 'В целях безопасности рекомендуется удалить (или переименовать) скрипт <code>install/index.php</code>!'
|
||||
actual_installed_version_header = 'Установленная версия'
|
||||
actual_installed_version = 'Номер установленной версии: <strong>[current_version_string]</strong>'
|
||||
|
||||
# настройки форума:
|
||||
clear_chache = 'Очистка кэша для внесения изменений в уже существующие записи'
|
||||
|
@ -733,6 +788,8 @@ forum_address = 'Адрес форума'
|
|||
forum_address_desc = 'URL форума (используйте такой формат: http://www.domain.tld/forum/)'
|
||||
forum_email = 'Адрес e-mail форума'
|
||||
forum_email_desc = 'будет использоваться в качестве контактного адреса и адреса отправителя для всех писем, отправленных с форума'
|
||||
forum_target_name = '<!-- TODO -->Link window target'
|
||||
forum_target_name_desc = '<!-- TODO -->The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
home_link = 'Ссылка на стартовую страницу'
|
||||
home_link_desc = 'Ссылка на вашу стартовую страницу, например, http://www.domain.tld/ или ../index.html (опционально)'
|
||||
home_link_name = 'Название ссылки на стартовую страницу'
|
||||
|
@ -744,16 +801,16 @@ default_time_zone_desc = 'Часовой пояс по умолчани
|
|||
default_time_difference = 'Настройки часового пояса не доступны. Вместо этого можно указать разницу во времени между сервером и форумом (в минутах, например, 240 или -360):'
|
||||
default_theme = 'Шаблон по умолчанию'
|
||||
default_theme_desc = 'Шаблон отображения форума по умолчанию'
|
||||
threads_per_page = 'Тем на страницу'
|
||||
threads_per_page = 'Количество тем на странице'
|
||||
threads_per_page_desc = 'Сколько заголовков тем должно быть показано на странице?'
|
||||
reset_read_state = '<!-- TODO -->Reset read status'
|
||||
reset_read_state_desc = '<!-- TODO -->In which kind the read status shoud be resetted?'
|
||||
read_state_no_reset = '<!-- TODO -->Store status permanently'
|
||||
read_state_numbered_reset = '<!-- TODO -->Store status for an amount of entries'
|
||||
read_state_timeout_reset = '<!-- TODO -->Store status for x days'
|
||||
read_state_locktime_reset = '<!-- TODO -->Store status until a thread will be automatically locked'
|
||||
read_state_value = '<!-- TODO -->Value for the reset of the read status'
|
||||
read_state_value_desc = '<!-- TODO -->To which number of entries or days until the reset the storing amount should be limited? In case of reset when auto locking the local value of that setting will be applied.'
|
||||
reset_read_state = 'Сброс статуса чтения'
|
||||
reset_read_state_desc = 'В каком виде нужно сбрасывать статус чтения?'
|
||||
read_state_no_reset = 'Хранить статус постоянно'
|
||||
read_state_numbered_reset = 'Хранить статус для количества записей'
|
||||
read_state_timeout_reset = 'Хранить статус х дней'
|
||||
read_state_locktime_reset = 'Хранить статус пока ветка не будет автоматически заблокирована'
|
||||
read_state_value = 'Значение для сброса статуса чтения'
|
||||
read_state_value_desc = 'Каким количеством записей или дней до сброса следует ограничить объем хранения? В случае сброса при автоблокировке будет применено локальное значение этой настройки.'
|
||||
auto_lock_old_threads = 'Автоматическая блокировка старых тем'
|
||||
auto_lock_old_threads_desc = 'Автоматическая блокировка тем, самые последние сообщения в которых старше указанного количества дней (0=отключена)'
|
||||
accession = 'Права доступа'
|
||||
|
@ -771,6 +828,7 @@ user_area = 'Пользовательский раздел
|
|||
user_area_desc = 'Для кого доступен пользовательский раздел (список пользователей, их профили)?'
|
||||
public_accessible = 'общедоступен'
|
||||
accessible_reg_users_only = 'только для зарегистрированных пользователей'
|
||||
accessible_team_users_only = 'только для администраторов и модераторов'
|
||||
latest_postings = 'Последние сообщения'
|
||||
latest_postings_desc = 'Количество последних сообщений, отображаемых в списке на индексной странице форума (0 = отключено)'
|
||||
tag_cloud = 'Панель тэгов'
|
||||
|
@ -780,6 +838,10 @@ terms_of_use_settings = 'Пользовательское соглаш
|
|||
terms_of_use_settings_desc = 'Обязательные условия, которые должны принять незарегистрированные пользователи перед получением права на публикацию сообщений и регистрацию'
|
||||
terms_of_use_settings_enabled = 'Пользовательское соглашение включено'
|
||||
terms_of_use_url = 'URL Пользовательского соглашения:'
|
||||
data_privacy_statement = 'Заявление о конфиденциальности данных'
|
||||
data_privacy_statement_desc = 'Обязательство незарегистрированных пользователей соглашаться с заявлением о конфиденциальности данных при публикации сообщений и регистрации'
|
||||
data_privacy_settings_enabled = 'Заявление о конфиденциальности данных включено'
|
||||
data_privacy_url = 'URL Заявления о конфиденциальности данных:'
|
||||
edit_postings = 'Редактирование сообщений'
|
||||
edit_postings_desc = 'Правила редактирования сообщений'
|
||||
edit_own_postings = 'Редактирование своих сообщений:'
|
||||
|
@ -795,7 +857,6 @@ bbcode = 'BB-коды'
|
|||
bbcode_desc = 'Включить использование BB-кодов для форматирования сообщений?'
|
||||
bbcodes_enabled = 'BB-коды включены'
|
||||
bbcodes_img_enabled = 'разрешить BB-коды для вставки картинок'
|
||||
bbcodes_flash_enabled = 'разрешить BB-коды для вставки флэш-видео'
|
||||
smilies = 'Смайлики'
|
||||
smilies_desc = 'Заменять смайлики типа ":-)" на картинки? (Смайлики можно выбрать в панели управления смайликами)'
|
||||
smilies_enabled = 'Смайлики включены'
|
||||
|
@ -844,7 +905,7 @@ delete_category_hl = 'Удалить категорию "[category]
|
|||
delete_category_compl = 'Удалить категорию и все относящиеся к ней записи'
|
||||
del_cat_keep_entries = 'Удалить категорию, но сохранить относящиеся к ней записи'
|
||||
del_cat_move_entries = 'Удалить категорию, но сохранить относящиеся к ней записи и переместить их в следующую категорию:'
|
||||
delete_category_submit = 'Да, удалить категорию'
|
||||
delete_category_submit = 'Удалить категорию'
|
||||
|
||||
# смайлики:
|
||||
edit_smilies_smiley = 'Смайлик:'
|
||||
|
@ -861,8 +922,8 @@ enable_smilies = 'Включить смайлики'
|
|||
add_smiley = 'Добавить смайлик:'
|
||||
add_smiley_code = 'Код:'
|
||||
smilies_disabled = 'Смайлики отключены.'
|
||||
'
|
||||
# страницы:'
|
||||
|
||||
# страницы:
|
||||
page_title = 'Заголовок'
|
||||
page_content = 'Содержание'
|
||||
page_content_desc = 'Для форматирования страницы можно использовать HTML'
|
||||
|
@ -873,13 +934,14 @@ page_access_reg_users = 'только для зарегистриро
|
|||
page_access_public = 'для всех'
|
||||
no_pages = 'Нет доступных страниц'
|
||||
add_page_link = 'Добавить страницу'
|
||||
edit_page_submit = 'Да, сохранить'
|
||||
edit_page_submit = 'Сохранить'
|
||||
page_doesnt_exist = 'Эта страница не существует.'
|
||||
delete_page_confirm = 'Вы действительно хотите удалить эту страницу?'
|
||||
delete_page_submit = 'Да, удалить'
|
||||
delete_page_submit = 'Удалить'
|
||||
error_no_page_title = 'Отсутствует заголовок'
|
||||
'
|
||||
# управление пользователями:'
|
||||
|
||||
# управление пользователями:
|
||||
user_list_header = 'Список пользователей'
|
||||
user_name_empty = 'Не указано имя пользователя'
|
||||
num_registerd_users = '[number] зарегистрированных пользователей'
|
||||
user_id = 'ID'
|
||||
|
@ -903,27 +965,45 @@ activate_link = 'Активировать учётную за
|
|||
delete_selected_users = 'Удалить выбранных пользователей'
|
||||
add_user = 'Добавить пользователя'
|
||||
email_list = 'Список адресов e-mail зарегистрированных пользователей'
|
||||
reset_terms_of_use = 'отменить согласие с условиями использования'
|
||||
reset_data_privacy_statement = 'отменить принятие заявления о конфиденциальности'
|
||||
clear_userdata = 'Очистить пользовательские данные'
|
||||
edit_user_avatar = 'Аватар:'
|
||||
delete_avatar = 'Удалить аватар'
|
||||
delete_user_confirmation = 'Вы уверены, что хотите удалить этого пользователя?'
|
||||
delete_users_confirmation = 'Вы уверены, что хотите удалить следующих пользователей?'
|
||||
delete_entries_of_user_confirm = '<!-- TODO -->Are you sure you want to delete all postings of <strong>[user]</strong>? Replies by other users will also be deleted!'
|
||||
delete_submit = '<!-- TODO -->OK - Delete'
|
||||
delete_entries_of_user_confirm = 'Вы уверены, что хотите удалить все сообщения пользователя <strong>[user]</strong>? Комментарии других пользователей к ним также будут удалены!'
|
||||
delete_submit = 'Да, Удалить'
|
||||
register_exp = 'Вы можете оставить поля для ввода пароля пустыми, при этом должен быть сгенерирован случайный пароль. В этом случае пользовательские данные должны быть отправлены на указанный адрес электронной почты.'
|
||||
delete_submit = 'Да, удалить'
|
||||
register_username = 'Имя пользователя:'
|
||||
register_email = 'E-mail:'
|
||||
register_pw = 'Пароль:'
|
||||
register_pw_conf = 'Потверждение пароля:'
|
||||
register_send_userdata = 'Отправить данные пользователя на указанный адрес e-mail'
|
||||
error_send_userdata = 'Если вы оставите пустым поле для пароля, данные пользователя будут отправлены на указанный адрес e-mail'
|
||||
error_email_wrong = 'Адрес e-mail неправильный'
|
||||
admin_reg_error_email_wrong = 'Адрес e-mail неправильный'
|
||||
new_user_registered = 'Пользователь "[name]" был зарегистрирован.'
|
||||
new_user_reg_send_error = 'Пользователь "[name]" был зарегистрирован, но данные пользователя не могут быть отправлены.'
|
||||
clear_userdata_condition = 'Удалить пользователей, которые заходили максимум [logins] раз и последний раз более чем [days] дней назад.'
|
||||
clear_userdata_note = 'Администраторы и Модераторы не будут уведомлены. Перед удалением вы получите список выбранных пользователей.'
|
||||
no_users_in_selection = 'Пользователи не выбраны'
|
||||
|
||||
# upload management
|
||||
upload_administration = 'Управление загрузкой'
|
||||
mark_upload_for_removal = 'отметить для удаления'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Загруженных файлов не найдено.'
|
||||
delete_upload_confirmation = 'Вы уверены в том, что хотите удалить эту загрузку?'
|
||||
delete_uploads_confirmation = 'Вы уверены в том, что хотите удалить следующие загрузки?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# защита от спама:
|
||||
captcha = 'КАПЧА'
|
||||
captcha_desc = 'Какие формы должны быть защищены и каким типом капчи (только для незарегистрированных пользователей)?'
|
||||
|
@ -936,20 +1016,21 @@ captcha_mathematical = 'математическая'
|
|||
captcha_graphical = 'графическая'
|
||||
gr_captcha_not_available = 'Графическая капча недоступна (недоступна библиотека GD Lib)'
|
||||
gr_captcha_no_font = 'Нет доступного шрифта, код капчи может отображаться неидеально'
|
||||
b8 = 'B8'
|
||||
b8_desc = 'Байесовский спам-фильтр <a href="https://nasauber.de/opensource/b8/">B8</a>, который использует данные индивидуального обучения'
|
||||
b8_entry_check_enable = 'проверять форму публикации'
|
||||
b8_mail_check_enable = 'проверять форму e-mail'
|
||||
b8_auto_training_enable = 'Автоматическое обучение фильтрам (имеет смысл только после достаточного ручного обучения работе со спамом и нормальными записями!)'
|
||||
b8_spam_probability_threshold = 'Порог для классификации спама. Допустимый диапазон от 0% до 100%, например, уровень значимости 80% означает, что 20 записей из 100 ошибочно классифицированы фильтром как спам (ложное срабатывание)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_desc = 'защита от спама <a href="http://www.stopforumspam.com/">Stop Forum Spam</a>'
|
||||
stop_forum_spam_enable = 'включить Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = 'Защита от спама <a href="http://bad-behavior.ioerror.us/">Bad Behavior</a>.'
|
||||
bad_behavior_enable = 'включить Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = 'Служба защиты от спама <a href="http://akismet.com/">Akismet</a>. Для её использование вам потребуется <a href="http://wordpress.com/api-keys/">ключ Wordpress API Key</a> (не будет работать без ключа или с неправильным ключом API Key!).'
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
akismet_save_spam = 'Сохранить спам (помеченный как спам и неотображаемый)?'
|
||||
akismet_auto_delete_spam = 'Через сколько часов удалять спам автоматически (0 = не удалять)?'
|
||||
akismet_entry = 'отметить форму публикации'
|
||||
akismet_mail = 'отметить форму e-mail'
|
||||
akismet_registered = '<!-- TODO -->check submissions of registered users'
|
||||
banned_ips = 'Забаненные IP-адреса'
|
||||
banned_ips_desc = 'IP-адреса, которым запрещен доступ. Чтобы указать несколько IP-адресов, разделите их запятыми.'
|
||||
banned_user_agents = 'Заблокированные user-агенты'
|
||||
|
@ -957,59 +1038,34 @@ banned_user_agents_desc = 'Строки в user-агентах, кото
|
|||
not_accepted_words = 'Неприемлемые слова'
|
||||
not_accepted_words_desc = 'Имена или домены, которые недопустимо использовать в вводимых данных и адресах e-mail. Чтобы указать несколько слов, разделите их запятыми.'
|
||||
spam_protection_submit = 'Да, сохранить'
|
||||
error_own_ip_banned = '<!-- TODO -->You banned your own IP!'
|
||||
error_own_user_agent_banned = '<!-- TODO -->You banned your own user agent!'
|
||||
spam_protection_saved = '<!-- TODO -->Saved'
|
||||
error_own_ip_banned = 'Вы заблокировали свой собственный IP!'
|
||||
error_own_user_agent_banned = 'Вы заблокировали свой собственный браузер!'
|
||||
spam_protection_saved = 'Сохранено'
|
||||
spam_check_registered = 'публикации зарегистрированных пользователей'
|
||||
spam_check_registered_desc = 'проверять сообщения зарегистрированных пользователей на спам, используя включенные фильтры'
|
||||
spam_check_registered_enable = 'проверять сообщения зарегистрированных пользователей на спам'
|
||||
auto_delete_spam = 'Удалять спам автоматически'
|
||||
auto_delete_spam_desc = 'Срок хранения спама'
|
||||
auto_delete_spam_timespan = 'Через сколько часов удалять спам автоматически (0 = не удалять)?'
|
||||
|
||||
# Сброс / Удаление:
|
||||
reset_forum = 'Сбросить форум
|
||||
delete_postings = 'удалить все сообщения
|
||||
delete_userdata = 'удалить данные всех пользователей (кроме вашего административного аккаунат)
|
||||
reset_forum_submit = 'Да, сбросить форум
|
||||
uninstall_forum = 'Удалить форум
|
||||
uninstall_forum_exp = 'Это удалит все таблицы форума. После этого форум больше не сможет работаь!
|
||||
uninstall_forum_submit = 'Да, удалить форум
|
||||
error_no_selection_made = 'Выбор не сделан
|
||||
|
||||
# Резервное копирование:
|
||||
backup_note = 'Для использования функции резервного копирования должна быть разрешена запись в папку <i>backup</i>. Также будьте уверены в том, что эта папка недоступна через веб!'
|
||||
backup_file = 'Файл'
|
||||
backup_date = 'Дата'
|
||||
backup_size = 'Размер'
|
||||
create_backup_complete = 'Создать полную резервную копию'
|
||||
only_create_backup_of = 'Создать резервную копию только для:'
|
||||
backup_entries = 'данных'
|
||||
backup_userdata = 'аккаунтов'
|
||||
backup_settings = 'настроек'
|
||||
backup_categories = 'категорий'
|
||||
backup_pages = 'страниц'
|
||||
backup_smilies = 'смайликов'
|
||||
backup_banlists = 'забаненных'
|
||||
backup_bookmarks = '<-- TODO -->bookmarks'
|
||||
backup_read_status = '<-- TODO -->read status'
|
||||
backup_temp_infos = '<-- TODO -->temporary informations'
|
||||
download_backup_file = 'Скачать файл резервной копии'
|
||||
delete_selected = 'Удалить выбранные'
|
||||
restore = 'Восстановление'
|
||||
delete_backup_file = 'Удалить файл резервной копии'
|
||||
delete_backup_submit = 'Да, удалить'
|
||||
restore_confirm = 'Вы уверены, что хотите восстановить базу из выбранного файла резервной копии?<br /><strong>Все связанные таблицы будут перезаписаны!</strong>'
|
||||
restore_safe_mode_warning = 'Предостережение Безопасного Режима!'
|
||||
restore_safe_mode_note = 'Поскольку на данном сервере включен Безопасный Режим, время выполнения скрипта ограничено! Во избежание неполного восстановления, следует разделять длинные файлы резервных копий на несколько небольших и выполнять восстановление, последовательно используя каждый из них!'
|
||||
restore_submit = 'Да, восстановить'
|
||||
restore_backup_ok = 'Резервная копия была восстановлена.'
|
||||
backup_file_created = 'Файл резервной копии был создан.'
|
||||
error_file_doesnt_exist = 'Файл не существует!'
|
||||
error_delete_backup_file = 'Файл резервной копии не может быть удален'
|
||||
error_create_backup_file = 'Файл не может быть создан - убедитесь, что разрешено право записи в папку "backup"'
|
||||
error_restore_mysql = 'Ошибка MySQL: [mysql_error]'
|
||||
reset_forum = 'Очистка форума'
|
||||
delete_postings = 'удалить все сообщения'
|
||||
delete_userdata = 'удалить данные всех пользователей (кроме вашего административного аккаунта'
|
||||
reset_forum_submit = 'Очистить форум'
|
||||
uninstall_forum = 'Удаление форума'
|
||||
uninstall_forum_exp = 'Это действие удалит все таблицы форума. После этого форум больше не сможет работаь!'
|
||||
uninstall_forum_submit = 'Да, удалить форум'
|
||||
error_no_selection_made = 'Выбор не сделан'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'Текущая версия: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'Как сделать обновление'
|
||||
update_instructions = 'На время обновления рекомендуется отключить форум (снять галочку "форум включен" в <a href="index.php?mode=admin&action=settings">настройках форума</a>)'
|
||||
update_instructions = 'Загрузите последнюю версию с <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'Распакуйте архив со скриптом, найдите в папке "update" соответствующий файл обновления и загрузите его в аналогичную папку "update" на вашем сервере'
|
||||
update_instructions = 'Распакуйте архив со скриптом'
|
||||
update_instructions = 'Найдите в папке "update" соответствующий файл обновления и загрузите его в аналогичную папку "update" на вашем сервере'
|
||||
update_instructions = 'Найдите в подпапке "config" файл "VERSION" и загрузите этот файл в папку "config" на вашем сервере'
|
||||
update_instructions = 'Перегрузите эту страницу, и ниже появится файл обновления'
|
||||
update_instructions = 'Кликните по этому файлу и следуйте дальнейшим инструкциям'
|
||||
update_instructions = 'После запуска обновления вы получите список файлов и папок, которые будут добавлены или заменены'
|
||||
|
@ -1017,18 +1073,26 @@ update_instructions = 'Очистите папку <code>templates_c
|
|||
update_available_files = 'Доступные файлы обновлений'
|
||||
update_no_files_available = 'Нет доступных файлов обновлений.'
|
||||
update_file_title = 'Запустите этот файл обновления'
|
||||
update_confirm = 'Вы уверены, что хотите запустить этот файл обновления?'
|
||||
update_submit = 'Да, запустить'
|
||||
update_confirm = 'Вы уверены, что хотите выполнить это обновление?'
|
||||
update_submit = 'Выполнить'
|
||||
update_successful = 'База данных была успешно обновлена.'
|
||||
update_items_note = 'Теперь загрузите на ваш сервер следующие файлы и папки из нового пакета обновления форума (версии [version]):'
|
||||
update_download = 'Если у вас ещё нет этих файлов, вы можете загрузить [[отсюда]].'
|
||||
update_reenabling_notice = 'Пожалуйста, обратите внимание, что форум в настоящее время отключен, и вы должны снова включить его в <a href="index.php?mode=admin&action=settings">настройках</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Ответ на "[original_subject]"'
|
||||
email_text = """Здравствуйте, [recipient],
|
||||
email_text = """Здравствуйте, [recipient]!
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение. Вы получаете это письмо, потому что включили функцию уведомления. Пожалуйста, не отвечайте на это письмо, а отвечайте в конкретной теме.
|
||||
|
||||
Если вы больше не хотите получать информацию об ответах на вашу запись, пожалуйста, воспользуйтесь следующей ссылкой, чтобы отписаться от уведомлений.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] ответил на сообщение \"[original_subject]\":
|
||||
|
||||
Тема: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
URL этого сообщения: [posting_address]
|
||||
|
@ -1038,7 +1102,7 @@ URL этого сообщения: [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Это уведомление отправлено с задержкой, так как сообщение было активировано вручную"""
|
||||
Это уведомление отправлено с задержкой, так как сообщение было активировано вручную. This is an automatically generated email, please do not reply to this email."""
|
||||
|
||||
admin_email_subject = 'Новое сообщение на форуме: [subject]'
|
||||
admin_email_text = """Новое сообщение от [name]
|
||||
|
@ -1046,15 +1110,20 @@ admin_email_text = """Новое сообщение от [name]
|
|||
|
||||
[text]
|
||||
|
||||
URL этого сообщения: [posting_address]"""
|
||||
URL этого сообщения: [posting_address]
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
admin_email_text_reply = """Ответ от [name]
|
||||
Тема: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
URL этого сообщения: [posting_address]"""
|
||||
URL этого сообщения: [posting_address]
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
admin_reg_user_email_subj = 'Регистрация на форуме'
|
||||
admin_reg_user_email_text = """Здравствуйте, [name]!
|
||||
|
||||
Добро пожаловать на форум!
|
||||
|
||||
Регистрационные данные для доступа:
|
||||
|
@ -1065,46 +1134,67 @@ admin_reg_user_email_text = """Здравствуйте, [name]!
|
|||
Прямая ссылка для входа:
|
||||
[login_link]
|
||||
|
||||
После входа пароль можно будет изменить."""
|
||||
После входа пароль можно будет изменить.
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
|
||||
admin_activate_user_email_subj = 'Регистрация на форуме'
|
||||
admin_activate_user_email_text = """Здравствуйте, [name]!
|
||||
|
||||
Добро пожаловать на форум!
|
||||
|
||||
Link to log in directly:
|
||||
Ссылка для прямого входа в систему:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
|
||||
new_user_email_sj = 'Регистрация на форуме'
|
||||
new_user_email_txt = """Здравствуйте, [name]!
|
||||
|
||||
Добро пожаловать на форум!
|
||||
|
||||
Для активации вашей учётной записи проследуйте по ссылке:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
new_user_notif_sj = 'Регистрация нового пользователя'
|
||||
new_user_notif_txt = """Здравствуйте, [recipient]!
|
||||
|
||||
На форуме зарегистрировался новый пользователь:
|
||||
Имя пользователя: [name]
|
||||
Адрес электронной почты: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
new_user_notif_txt_locked = """Здравствуйте, [recipient]!
|
||||
|
||||
На форуме зарегистрировался новый пользователь:
|
||||
Имя пользователя: [name]
|
||||
Адрес e-mail: [email]
|
||||
|
||||
ВНИМАНИЕ! Для того, чтобы этот пользователь мог войти на форум, его необходимо разблокировать!"""
|
||||
ВНИМАНИЕ! Для того, чтобы этот пользователь мог войти на форум, его необходимо разблокировать!
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
edit_address_email_sj = 'Активация учётной записи после смены адреса e-mail'
|
||||
edit_address_email_txt = """Здравствуйте, [name]!
|
||||
|
||||
Адрес e-mail был изменён. Сейчас вам необходимо снова активировать вашу учётную запись, перейдя по ссылке:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
pwf_activating_email_sj = 'Запрос нового пароля'
|
||||
pwf_activating_email_txt = """Здравствуйте, [name]!
|
||||
|
||||
Это письмо было отправлено вам с форума ([forum_address]), так как был запрошен новый пароль. Для подтверждения запроса перейдите по нижеприведенной ссылке, для вас будет сгенерирован и выслан новый пароль. Если данное письмо было получено вами по ошибке (вашей, или чьей-то ещё), просто проигнорируйте его.
|
||||
|
||||
[activating_link]"""
|
||||
Ссылка для подтверждения запроса:
|
||||
[activating_link]
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
new_pw_email_sj = 'Новые пользовательские данные для форума'
|
||||
new_pw_email_txt = """Здравствуйте, [name]!
|
||||
|
||||
Ваши новые данные:
|
||||
|
||||
Имя пользователя: [name]
|
||||
|
@ -1113,7 +1203,9 @@ new_pw_email_txt = """Здравствуйте, [name]!
|
|||
Прямая ссылка для входа на форум:
|
||||
[login_link]
|
||||
|
||||
После входа пароль можно будет изменить."""
|
||||
После входа пароль можно будет изменить.
|
||||
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1130,6 +1222,19 @@ Subject: [subject]
|
|||
|
||||
--
|
||||
Это письмо было отправлено вам с форума [forum_address]."""
|
||||
email_notify_inactive_user_subject = 'Уведомление о бездействии [name]'
|
||||
email_notify_inactive_user_text = """Здравствуйте, [name]!
|
||||
|
||||
Мы заметили, что последний раз вы заходили на форум по адресу [forum_address] более [промежуток_времени_неактивности] лет назад.
|
||||
GDPR ЕС не допускает неограниченного хранения пользовательских данных. В соответствии с GDPR, мы регулярно удаляем неактивные учетные записи пользователей.
|
||||
|
||||
Чтобы предотвратить удаление аккаунта, просто зайдите на форум в течение следующих [days_until_delete] дней.
|
||||
В противном случае мы удалим вашу учетную запись. Ваши сообщения сохранятся, но будут присвоены анонимному пользователю, выбравшему ваше имя пользователя случайным образом.
|
||||
|
||||
С уважением
|
||||
|
||||
--
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Установка'
|
||||
|
@ -1178,5 +1283,6 @@ error_db_inexistent = 'Указанная база данных не
|
|||
error_sql_file_doesnt_exist = 'Установочный файл SQL (install.sql) не существует'
|
||||
error_overwrite_config_file = 'Отсутствуют права для перезаписи файла <code>config/db_settings.php</code> (установлены CHMOD [CHMOD], измените их на CHMOD 666)'
|
||||
error_sql = 'Ошибка SQL'
|
||||
forum_install_ok = 'Да, установить'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'Установить'
|
||||
error_conf_pw = 'Пароль Администратора неправильный'
|
||||
|
|
1305
lang/spanish.lang
1305
lang/spanish.lang
File diff suppressed because it is too large
Load diff
|
@ -1,8 +1,7 @@
|
|||
################################################################################
|
||||
# Swedish language file for my little forum 2.4.6 #
|
||||
# Transladed from English by Rövarn, rovarn at gmail dot com #
|
||||
# Enhanced translation by Tommy Nilsson - tommy@svenska-lok.se #
|
||||
# Swedish language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
|
@ -11,12 +10,20 @@
|
|||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file fomat: #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Transladed from English by Rövarn, rovarn at gmail dot com #
|
||||
# Enhanced translation by Tommy Nilsson - tommy@svenska-lok.se #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = sv
|
||||
language_code = 'sv'
|
||||
language_name_system = 'swedish'
|
||||
language_name_own = 'svensk'
|
||||
charset = utf-8
|
||||
locale = sv_SE.utf8
|
||||
locale = sv_SE
|
||||
|
@ -24,8 +31,8 @@ locale = sv
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %Y-%m-%d, %H:%M
|
||||
time_format_full = %A, %B %d, %Y, %H:%M
|
||||
time_format = 'YYYY-MM-dd, HH.mm'
|
||||
time_format_full = 'EEEE, dd MMMM YYYY, HH.mm'
|
||||
forum_time = 'Forum tid: [time]'
|
||||
forum_time_with_time_zone = 'Forum tidszon: [time] ([time_zone])'
|
||||
unknown_user = 'Okänd'
|
||||
|
@ -40,6 +47,7 @@ replies = 'Svar'
|
|||
views = 'Visningar'
|
||||
category = 'Kategori'
|
||||
submit_button_ok = ' Skicka '
|
||||
submit_button_cancel = ' Avbryt '
|
||||
yes = 'Ja'
|
||||
no = 'Nej'
|
||||
go = 'Kör'
|
||||
|
@ -49,8 +57,8 @@ next_page_link = 'Nästa sida »'
|
|||
previous_page_link = '« Föregående sida'
|
||||
next_page_link_title = 'Nästa sida'
|
||||
previous_page_link_title = 'Föregående sida'
|
||||
posted_by = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'av [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'av [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'Klicka för att komma till ursprungsinlägget av: [name]'
|
||||
error_headline = 'Fel!'
|
||||
no_authorisation = 'Ej behörig!'
|
||||
|
@ -76,6 +84,8 @@ search_default_value = 'Sök …'
|
|||
search_title = 'Sök inlägg'
|
||||
new_topic_link = 'Nytt Ämne'
|
||||
new_topic_link_title = 'Posta Nytt Ämne'
|
||||
back_to_top_link = '<!-- TODO -->To top'
|
||||
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
|
||||
order_link = 'Sortering'
|
||||
order_link_title_1 = 'Sortera efter senaste svar'
|
||||
order_link_title_2 = 'Sortera efter datum då ämne startades (standard)'
|
||||
|
@ -113,6 +123,8 @@ back_to_entry_link = 'Åter till inlägg skrivet av [name]'
|
|||
back_to_entry_link_title = 'Åter till inlägg skrivet av [name]'
|
||||
subnav_login = 'Logga in'
|
||||
subnav_pw_forgotten = 'Glömt lösenordet'
|
||||
subnav_accept_dps = 'Acceptera personuppgiftspolicy'
|
||||
subnav_accept_tou = 'Acceptera användarvillkor'
|
||||
subnav_admin_area = 'Administrera'
|
||||
subnav_settings = 'Foruminställningar'
|
||||
subnav_advanced_settings = 'Avancerade inställningar'
|
||||
|
@ -127,10 +139,10 @@ subnav_edit_page = 'Redigera sida'
|
|||
subnav_add_page = 'Lägg till sida'
|
||||
subnav_create_page = 'Skapa sida'
|
||||
subnav_edit_smiley = 'Redigera smajlis'
|
||||
subnav_edit_user = 'Redigera användar'
|
||||
subnav_edit_user = 'Redigera användare'
|
||||
subnav_delete_users = 'Radera användare'
|
||||
subnav_delete_entries_user = 'Radera inlägg av användar'
|
||||
subnav_register_user = 'Registrera användar'
|
||||
subnav_delete_entries_user = 'Radera inlägg av användare'
|
||||
subnav_register_user = 'Registrera användare'
|
||||
subnav_spam_protection = 'Spamskydd'
|
||||
subnav_email_list = 'E-postlista med registrerade användare'
|
||||
subnav_clear_userdata = 'Radera användardata'
|
||||
|
@ -145,6 +157,7 @@ subnav_userarea_show_posts = 'Inlägg av [var]'
|
|||
subnav_userarea_edit_user = 'Ändra profil'
|
||||
subnav_userarea_edit_pw = 'Ändra lösenord'
|
||||
subnav_userarea_edit_mail = 'Ändra E-postadress'
|
||||
subnav_userarea_remove_account = 'Avsluta kontot'
|
||||
subnav_backup = 'Säkerhetskopia'
|
||||
subnav_update = 'Uppdatera'
|
||||
subnav_update_run = 'Kör uppdatering'
|
||||
|
@ -156,6 +169,8 @@ subnav_disabled = 'Forumet inaktiverat'
|
|||
subnav_bookmarks = 'Bokmärken'
|
||||
subnav_delete_bookmark = 'Radera bokmärken'
|
||||
subnav_edit_bookmark = 'Redigera bokmärken'
|
||||
subnav_list_uploads = 'Visa uppladdade filer'
|
||||
subnav_confirm_delete_uploads = 'Ta bort uppladdade filer'
|
||||
subnav_page_error = 'Fel'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] Inlägg i [total_threads] Ämnen, [registered_users] registrerade användare'
|
||||
|
@ -182,7 +197,6 @@ error_invalid_date_format = 'Ogiltigt datumformat på födelsedag, (ÅÅÅ
|
|||
error_invalid_date = 'Ogiltigt datumformat!'
|
||||
error_email_wrong = 'Ogiltig E-postadress!'
|
||||
error_hp_wrong = 'Ogiltig hemsideadress!'
|
||||
error_pw_conf_wrong = 'Lösenorden är inte lika!'
|
||||
error_akismet_connection = 'Servertimeout, vänligen försök igen!'
|
||||
error_akismet_connection_admin = 'Kunde inte kontakta Akismet server för att verifiera API-nyckeln!'
|
||||
error_akismet_api_key = 'Ogiltig Wordpress API Nyckel!'
|
||||
|
@ -192,6 +206,7 @@ open_whole_thread = 'Öppna hela tråden'
|
|||
change_category_link = 'Visa inlägg i kategori "[category]"'
|
||||
mark_linktitle = 'Markera inlägg'
|
||||
unmark_linktitle = 'Avmarkera inlägg'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'Radera markerade inlägg'
|
||||
manage_postings_link = 'Redigera inlägg'
|
||||
non_activated_users_link = '[counter] inaktiverade användare'
|
||||
|
@ -206,6 +221,8 @@ more_smilies_label = 'Fler …'
|
|||
more_smilies_title = 'Fler smajlisar'
|
||||
close = 'Stäng'
|
||||
no_postings_user = 'Inga inlägg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Sök'
|
||||
search_fulltext = 'Fulltext'
|
||||
search_tags = 'Sökord'
|
||||
|
@ -246,6 +263,7 @@ error_invalid_form = 'Sessionen har upphört! Vänligen kopiera inl
|
|||
error_form_sent_too_fast = 'Inlägget postades för fort - vänligen vänta en stund och försök sedan igen! (skydd mot automatiserad spam)'
|
||||
error_form_sent_too_slow = 'Formuläret är inte giltigt längre - vänligen kopiera texten och uppdatera sidan!'
|
||||
terms_of_use_agreement = 'Ja, jag godkänner [[terms of use]]'
|
||||
data_privacy_agreement = 'Ja, jag godkänner [[data privacy statement]]'
|
||||
error_not_accepted_word = 'Ordet accepteras inte: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Ordet accepteras inte: [not_accepted_words]'
|
||||
error_username_invalid_chars = 'Användarnamnet innehåller ogiltiga tecken!'
|
||||
|
@ -265,36 +283,42 @@ error_no_subject = 'Inget ämne ifyllt!'
|
|||
error_no_text = 'Inget inlägg skrivet!'
|
||||
terms_of_use_error_register = 'Du måste godkänna villkoren för att kunna fortsätta registreringen!'
|
||||
terms_of_use_error_posting = 'Du måste godkänna villkoren för att spara det här inlägget!'
|
||||
terms_of_use_error_reconf = 'Du måste acceptera de förändrade användarvillkoren för att få skicka meddelande framöver'
|
||||
data_priv_statement_error_reg = 'Du måste acceptera forumets personuppgiftspolicy för att kunna registera dig'
|
||||
data_priv_statement_error_post = 'Du måste acceptera forumets personuppgiftspolicy för att kunna göra inlägg på forumet'
|
||||
data_priv_statement_error_reconf ='Du måste acceptera den förändrade personuppgiftspolicyn för att få skicka meddelande framöver'
|
||||
submit_button_agreed = 'Jag godkänner'
|
||||
submit_button_disagreed = 'Jag godkänner inte'
|
||||
check_all = 'Markera alla'
|
||||
uncheck_all = 'Avmarkera alla'
|
||||
delete_backup_confirm = 'Vill Du verkligen radera den här säkerhetskopian?'
|
||||
delete_sel_backup_confirm = 'Är Du säker på att Du vill radera markerade backuppfiler?'
|
||||
drag_and_drop_title = 'Dra & släpp för att flytta upp eller ner'
|
||||
show_all_postings_link = 'Visa inlägg'
|
||||
show_bookmarks_link = 'Bokmärken'
|
||||
show_userdata_linktitle = 'Visa användardata för [user]'
|
||||
show_password_title = 'Visa lösenordet i klartext'
|
||||
hide_password_title = 'Dölj lösenordet'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = 'OK - Radera bokmärke'
|
||||
delete_bookmark_confirm = 'Är Du säker på att du vill radera detta bokmärke?'
|
||||
no_bookmarks = 'Inget bokmärke har sparats.'
|
||||
edit_bookmark = 'Bokmärke:'
|
||||
edit_tags = '<!-- TODO -->Tags:'
|
||||
edit_tags_note = '<!-- TODO -->(optional, separated by comma)'
|
||||
edit_tags = 'Editera taggar:'
|
||||
edit_tags_note = '(valfritt, separera med kommatecken)'
|
||||
bookmark_title = 'Namn på bokmärke'
|
||||
bookmark_user_name = 'Användarnamn'
|
||||
bookmark_creation_time = 'Bokmärke skapades'
|
||||
bookmark_posting_time = 'Inlägg skapades'
|
||||
bookmark_filter_linktitle = '<!-- TODO -->Apply bookmark filter'
|
||||
clear_bookmark_filter_linkname = '<!-- TODO -->Clear bookmark filter'
|
||||
clear_bookmark_filter_linktitle = '<!-- TODO -->clear current bookmark filter and show all saved bookmarks'
|
||||
error_no_bookmark_subject = '<!-- TODO -->No subject has been entered'
|
||||
error_bookmark_subject_too_long = '<!-- TODO -->The subject is too long'
|
||||
error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
||||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
bookmark_filter_linktitle = 'Godkänn bokmärkes filter'
|
||||
clear_bookmark_filter_linkname = 'Återställ bokmärkes filter'
|
||||
clear_bookmark_filter_linktitle = 'Återställ nuvarande bokmärkesfilter och visa alla sparade bokmärken'
|
||||
error_no_bookmark_subject = 'Ämne har inte angetts'
|
||||
error_bookmark_subject_too_long = 'Ämnesraden är för lång'
|
||||
error_bookmark_word_too_long = 'Ordet "[word]" för för långt'
|
||||
error_bookmark_tags_limit_reached = 'Övre gränsen för antal taggar har nåtts för bokmärke'
|
||||
|
||||
[entry]
|
||||
edited_by = 'Redigerad av [name], [time]'
|
||||
edited_by = 'Redigerad av [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Sökord:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visningar'
|
||||
|
@ -343,7 +367,7 @@ hp_marking = 'Hemsida:'
|
|||
location_marking = 'Plats:'
|
||||
optional = '(valfritt)'
|
||||
optional_email = '(Valfritt, kommer inte att synas direkt)'
|
||||
honeypot_field_marking = '<!-- TODO -->Leave this field empty:'
|
||||
honeypot_field_marking = 'Lämna detta fältet tomt:'
|
||||
remember_userdata_marking = 'Kom ihåg mig (cookie)'
|
||||
delete_cookie_linkname = 'Ta bort cookie'
|
||||
category_marking = 'Kategori:'
|
||||
|
@ -351,6 +375,8 @@ subject_marking = 'Ämne:'
|
|||
message_marking = 'Inlägg:'
|
||||
tags_marking = 'Sökord:'
|
||||
tags_note = '(valfritt, separera med kommatecken)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'Fet'
|
||||
bbcode_bold_title = 'Fetstil'
|
||||
bbcode_bold_instruction = '[b]Text[/b]'
|
||||
|
@ -383,15 +409,12 @@ bbcode_image_instr_right = 'Högerjusterad: [img=right]http://example.com
|
|||
bbcode_image_label_thumb = 'Miniatyr'
|
||||
bbcode_image_instr_thumb = 'Miniatyr: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'Miniatyr vänster'
|
||||
bbcode_image_instr_thumb_left = 'Miniatyr vänster: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'Miniatyr vänster: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'Miniatyr höger'
|
||||
bbcode_image_instr_thumb_right = 'Miniatyr höger: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'Miniatyr höger: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'Ladda'
|
||||
bbcode_upload_title = 'Ladda upp och infoga bild'
|
||||
bbcode_upload_instruction = 'Ladda bild …'
|
||||
bbcode_flash_label = 'Flash'
|
||||
bbcode_flash_title = 'Infoga flash'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = 'Infoga TeX kod'
|
||||
bbcode_tex_instruction = '[tex]TeX code[/tex]'
|
||||
|
@ -407,12 +430,15 @@ insert_smiley_title = 'Infoga smajli'
|
|||
email_notific_reply_thread = 'E-posta mig när någon svarar på denna tråd'
|
||||
email_notific_reply_post = 'E-posta mig när någon svarar på detta inlägg'
|
||||
show_signature_marking = 'Infoga signatur'
|
||||
sticky_none = 'Klistra inte tråden'
|
||||
sticky_single_cat = 'Klistra tråden i den valda kategorin'
|
||||
sticky_all_cats = 'Klistra tråden i alla kategorier'
|
||||
sticky_thread = 'Klistrad'
|
||||
message_submit_button = 'OK - Skicka'
|
||||
message_submit_title = 'Spara inlägg'
|
||||
message_preview_button = 'Förhandsgranska'
|
||||
message_preview_title = 'Förhandsgranska inlägg före Du postar'
|
||||
reply_to_posting_marking = 'Svara på <strong>[name]</strong>'s inlägg'
|
||||
reply_to_posting_marking = 'Svara på <strong>[name]</strong>\'s inlägg'
|
||||
minutes_left_to_edit = 'Du har [minutes] minuter kvar att redigera inlägget!'
|
||||
minutes_left_to_edit_reply = 'Du har [minutes] minuter kvar att redigera inlägget om ingen postar svar innan!'
|
||||
preview_headline = 'Förhandsvisa'
|
||||
|
@ -435,9 +461,8 @@ delete_spam_hl = 'Radera spam'
|
|||
delete_spam_confirm = 'Vill Du verkligen raderar inläggen markerade som spam?'
|
||||
delete_posting_submit = 'OK - Radera'
|
||||
report_spam_hl = 'Rapportera spam'
|
||||
report_spam_warning = 'Flagga och rapportera detta inlägg som spam om det verkligen är spam! Spamfiltren är baserade på Bayes-teoremet. Sannolikheten för att ett inlägg är spam baserat på träningsdata. Felaktig klassificering resulterar i ett okänsligt filter.'
|
||||
posting_already_spam = 'Det här inlägget är redan raporterat som spam!'
|
||||
spamcheck_posting_not_checked = 'Detta inlägg är redan flaggas som skinka eller inte kontrolleras av Akismet eftersom antingen var inte Akismet aktiverat eller att det är postat av en registrerad användare.'
|
||||
spamcheck_posting_passed = 'Detta inlägg har passerat Akismet spamfilter, rapportera endast som spam om det med säkerhet är spam!'
|
||||
spamcheck_akismet_api_error = 'Detta inlägg passerade Akismet spamfilter eftersom ett fel uppstod när det söktes igenom. Detta kan ha orsakats av en ogiltigt API-nyckel!'
|
||||
spamcheck_akismet_timeout_error = 'Detta inlägg passerat spamfilter på grund av ett "timeout"-fel på Akismet-server.'
|
||||
report_spam_delete_submit = 'Rapportera som spam och radera!'
|
||||
|
@ -446,11 +471,17 @@ delete_only_submit = 'Endast radera'
|
|||
postings_doesnt_exist = 'Detta inlägg finns inte'
|
||||
posting_not_flagged_as_spam = 'Detta inlägg är inte markerad som spam.'
|
||||
flag_ham_hl = 'Rapportera som icke spam'
|
||||
flag_ham_note = 'Inlägget rapporterades som spam av Akismet spam filter. Rapportera endast som icke spam om det är helt fastställt att det inte är spam!'
|
||||
flag_ham_warning = 'Flagga och rapportera detta inlägg som inte spam om det verkligen inte är spam! Spamfiltren är baserade på Bayes-teoremet. Sannolikheten för att ett inlägg är spam baserat på träningsdata. Felaktig klassificering resulterar i ett okänsligt filter.'
|
||||
report_flag_ham_submit = 'Rapportera och markera som icke spam'
|
||||
flag_ham_submit = 'Endast markera som ham'
|
||||
no_authorisation_delete = 'Inlägget kan inte ändras! Möjligen har tiden för editering utgått, tråden är låst eller så finns det svar på inlägget!'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = 'Avslutade prenumation'
|
||||
unsubscribed_message = 'Prenumationen med information om svar på ditt inlägg har avslutats. Du kommer inte få några fler e-post meddelande angående detta inlägg. Prenumerationer på framtida inlägg kommer inte påverkas av detta valet.'
|
||||
unsubscribe_error_hl = 'Kunde inte avsluta prenumerationen'
|
||||
unsubscribe_error_message = 'Vid försök att avsluta prenumerationen inträffade ett fel. Vänligen informera forumets administratör via e-post. Bifoga följand information: ID på ditt inlägg (hämta det från länken i det e-post meddelande URL-parameter "unsubscribe")) och tiden för ditt misslyckad försök (Lägg gärna till namnet på den tidszon som du befinner dig i om det är möjligt).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Spamskyddtest:'
|
||||
captcha_expl_math = 'Summera siffrorna:
|
||||
|
@ -478,12 +509,6 @@ no_images = 'Inga bilder tillgängliga.'
|
|||
delete_image_confirm = 'Radera detta bild?'
|
||||
delete_image_button = 'OK - Radera'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'Infoga flashobjekt'
|
||||
flash_url = 'Flash URL:'
|
||||
flash_size = 'Storlek:'
|
||||
insert_flash_button = 'Infoga flashobjekt'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Avatar (profilbild)'
|
||||
delete_avatar = 'Radera avatar'
|
||||
|
@ -543,6 +568,7 @@ pwf_username = 'Användarnamn:'
|
|||
pwf_email = 'E-post:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Användarlista'
|
||||
user_name = 'Användarnamn'
|
||||
user_type = 'Typ'
|
||||
admin = 'Administratör'
|
||||
|
@ -588,8 +614,8 @@ last_posting = 'Senaste inlägget:'
|
|||
logins_per_day = 'Antal inloggningar/dag:'
|
||||
postings_per_day = 'Antal inlägg/dag:'
|
||||
user_profile = 'Profil:'
|
||||
user_delete_all_entries = 'Radera alla inlägg av denna användar'
|
||||
user_lock_account = 'Bannlys denna användar'
|
||||
user_delete_all_entries = 'Radera alla inlägg av denna användare'
|
||||
user_lock_account = 'Bannlys denna användare'
|
||||
user_unlock_account = 'Ta bort bannlysning'
|
||||
user_edit_account = 'Redigera användarens konto'
|
||||
user_delete_account = 'Ta bort användarkontot'
|
||||
|
@ -605,7 +631,10 @@ edit_email = 'Ändra E-postadress'
|
|||
edit_user_pw = 'Lösenord:'
|
||||
pw_not_displayed = 'visas inte'
|
||||
edit_pw = 'Ändra lösenord'
|
||||
edit_user_email_contact = 'Tillåt andra användare att kontakta mig via E-post'
|
||||
edit_user_contacting = 'Kontakt:'
|
||||
edit_user_contacting_disabled = 'Begränsat till administratörer och moderatorer'
|
||||
edit_user_contacting_registered = 'Begränsat till registrerade användare'
|
||||
edit_user_contacting_public = 'Obegränsat'
|
||||
edit_user_real_name = 'Namn:'
|
||||
edit_user_gender = 'Kön:'
|
||||
gender_not_specified = 'Ej specificerad'
|
||||
|
@ -628,20 +657,35 @@ edit_user_theme = 'Tema:'
|
|||
edit_user_default_theme = 'Standard ([default_theme])'
|
||||
edit_user_auto_login = 'Automatisk inloggning:'
|
||||
enable_auto_login = 'Aktivera automatisk inloggning'
|
||||
edit_user_where_to_open_links = '<!-- TODO -->Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = '<!-- TODO -->Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = '<!-- TODO -->Open all links in same browser window'
|
||||
where_to_open_links_external = '<!-- TODO -->Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = '<!-- TODO -->Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_notification = 'E-posta mig när:'
|
||||
admin_mod_notif_posting = 'Ett nytt inlägg postas'
|
||||
admin_mod_notif_register = 'En ny användare registrerar sig'
|
||||
userdata_submit_button = 'OK - Spara'
|
||||
profile_saved = 'Profil sparad'
|
||||
pw_changed = 'Lösenord ändrat'
|
||||
remove_user_account = 'Avsluta kontot'
|
||||
remove_user_account_link = 'Avsluta ditt användarkonto'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = 'Avsluta kontot'
|
||||
remove_user_account_warning = 'Varning, om du tar bort ditt konto finns det ingen väg tillbaka, är du säker på att du ta bort ditt konto? Bokmärken och kontodata kommer raderas men dina gamala inlägg förblir oförändrade som en oregisterat inlägg. Ditt användarnamn kommer visas som författare till inläggen.'
|
||||
remove_user_confirm_password = 'Lösenord:'
|
||||
error_pw_wrong = 'Felaktigt lösenord!'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'Nuvarande lösenord:'
|
||||
edit_pw_new = 'Nytt lösenord:'
|
||||
edit_pw_conf = 'Upprepa lösenord:'
|
||||
error_old_pw_wrong = 'Nuvarande lösenord felaktigt'
|
||||
error_pw_conf_uneven = 'De nya lösenorden matchar inte'
|
||||
error_new_pw_too_short = 'Det nya lösenordet måste innehålla minst [characters] tecken'
|
||||
error_new_pw_needs_digit = 'Lösenordet måste innehålla minst [digits] siffror'
|
||||
error_new_pw_needs_lowercase_letter = 'Lösenordet måste innehålla minst [lowercase_letters] små bokstäver'
|
||||
error_new_pw_needs_uppercase_letter = 'Lösenordet måste innehålla minst [uppercase_letters] stora bokstäver'
|
||||
error_new_pw_needs_special_character ='Lösenordet måste innehålla minst [special_characters] specialtecken'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'Vid ändring av E-postadress måste kontot aktiveras igen. En aktiveringsnyckel kommer att sändas till den nya E-postadressen. Kontrollera att E-postadressen är korrekt! Kontot måste aktiveras inom ett dygn.'
|
||||
|
@ -654,28 +698,34 @@ error_email_too_long = 'Nya E-postadressen är för lång!'
|
|||
error_identic_email = 'Nya E-postadressen är samma som den gamla!'
|
||||
error_email_invalid = 'Nya E-postadressen är ogiltig!'
|
||||
pw_wrong = 'Felaktigt lösenord!'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = 'Vänligen ange önskat användarnamn, ett lösenord och en giltig E-postadress. En aktiveringsnyckel kommer att skickas till E-postadressen. Kontot måste aktiveras inom ett dygn.'
|
||||
register_username = 'Användarnamn:'
|
||||
register_user_email = 'E-post:'
|
||||
register_pw = 'Lösenord:'
|
||||
register_pw_conf = 'Upprepa lösenord:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_honeypot_field = 'Lämna detta fältet tomt:'
|
||||
register_only_by_admin = 'Nya användare kan bara registreras av forumets administratörer.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontot har blivit registrerat och en aktiveringsnyckel har blivit skickad till <strong>[var]</strong>. Kontot måste aktiveras inom ett dygn.'
|
||||
registered_send_error = 'Kontot har blivit registrerat men aktiveringsnyckeln kunde inte skickas (mail server är inte tillgänglig). Vänligen kontakta forumets administratör och be om manuell aktivering av kontot.'
|
||||
activation_failed = 'Aktivering av kontot misslyckades.'
|
||||
error_password_too_short = 'Lösenordet måste innehålla minst [characters] tecken!'
|
||||
error_email_alr_exists = 'Användarnamnet används redan!'
|
||||
error_reg_not_accepted_word = 'Spamskydd: E-postadress eller användarnamn är spärrat!'
|
||||
error_pw_needs_digit = 'Lösenordet måste innehålla minst [digits] siffror'
|
||||
error_pw_needs_lowercase_letter = 'Lösenordet måste innehålla minst [lowercase_letters] små bokstäver'
|
||||
error_pw_needs_uppercase_letter = 'Lösenordet måste innehålla minst [uppercase_letters] stora bokstäver'
|
||||
error_pw_needs_special_character ='Lösenordet måste innehålla minst [special_characters] specialtecken'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'E-post till administratören'
|
||||
contact_user_hl = 'E-post till [recipient_name]'
|
||||
impossible_to_contact = 'Det går inte att kontakta denne användar via E-post'
|
||||
impossible_to_contact = 'Det går inte att kontakta denne användare via E-post'
|
||||
contact_doesnt_exist = 'Den här kontakten existerar inte!'
|
||||
sender_address_caption = 'Avsändare:'
|
||||
sender_confirmation_caption = 'Skicka en kopia av meddelandet till mig'
|
||||
subject_caption = 'Ämne:'
|
||||
message_caption = 'Meddelande:'
|
||||
message_submit_caption = 'OK - Skicka meddelande'
|
||||
|
@ -686,7 +736,7 @@ error_message_no_subject = 'Inget ämne angett!'
|
|||
error_email_invalid = 'E-postadressen är ogiltig!'
|
||||
error_email_subject_too_long = 'Ämnesraden är för lång!'
|
||||
error_email_text_too_long = 'Meddelandet är för långt,([text_length] tecken - endast [text_maxlength] tecken är tillåtet)'
|
||||
error_spam_suspicion = 'Misstänkt spam! Försök ändra texten (t.ex. ta bort länkar)'
|
||||
error_email_spam_suspicion = 'Misstänkt spam! Försök ändra texten (t.ex. ta bort länkar)'
|
||||
|
||||
[admin]
|
||||
enabled = 'Aktiverat'
|
||||
|
@ -703,9 +753,9 @@ user_administr_link = 'Användaradministration'
|
|||
smilies_administr_link = 'Hantera smajlisar'
|
||||
pages_administr_link = 'Hantera sidor'
|
||||
spam_protection_link = 'Inställningar spamskydd'
|
||||
backup_restore_link = 'Säkerhetskopiera databas'
|
||||
update_link = 'Updatera forumet'
|
||||
reset_uninstall_link = 'Återställ eller avinstallera forumet'
|
||||
upload_administr_link = 'Hantera uppladdade filer'
|
||||
releases_info_header = 'Aktuel tillgänglig version'
|
||||
releases_list_link = 'Kolla utgivningslistan för den aktuella tillgängliga versionen.'
|
||||
warning_header = 'Varning'
|
||||
|
@ -726,6 +776,8 @@ forum_address = 'Forumets adress'
|
|||
forum_address_desc = 'URL till forumet (använd format: http://www.domain.tld/forum/)'
|
||||
forum_email = 'Forumets E-postadress'
|
||||
forum_email_desc = 'Används som avsändare i all E-post som skickas från forumet'
|
||||
forum_target_name = '<!-- TODO -->Link window target'
|
||||
forum_target_name_desc = '<!-- TODO -->The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
home_link = 'Länk till hemsidan'
|
||||
home_link_desc = 'Länk till din hemsida, t.ex. http://www.domain.tld/ or ../index.html (valfritt)'
|
||||
home_link_name = 'Namn på hemsidans länk'
|
||||
|
@ -734,7 +786,7 @@ default_language = 'Språk'
|
|||
default_language_desc = 'Forumets standardspråk'
|
||||
default_time_zone = 'Tidszon'
|
||||
default_time_zone_desc = 'Standard tidszon'
|
||||
default_time_difference = '<!-- TODO -->Time zone setting not available. Alternatively the time difference between server and forum time can be specified (in minutes, e.g. 240 or -360):'
|
||||
default_time_difference = 'Tidszonsinställning inte tillgänglig . Alternativt kan tidsskllnaden melan server och forumet specificeras (i minuter, e.g. 240 or -360):'
|
||||
default_theme = 'Forumets tema'
|
||||
default_theme_desc = 'Forumets standard tema'
|
||||
threads_per_page = 'Ämnen per sida'
|
||||
|
@ -764,6 +816,7 @@ user_area = 'Användarinformation'
|
|||
user_area_desc = 'Är Användarinformation (Användarlista, profilsidor) publika?'
|
||||
public_accessible = 'Tillgängligt för alla'
|
||||
accessible_reg_users_only = 'Tillgänglig endast för registrerade användare'
|
||||
accessible_team_users_only = 'Tillgänglig endast för administratörer och moderatorer'
|
||||
latest_postings = 'Senaste inlägg'
|
||||
latest_postings_desc = 'Hur många nya inlägg ska visas i lista på forumets startsida (0 = inaktivera)?'
|
||||
tag_cloud = 'Senaste taggar'
|
||||
|
@ -773,6 +826,10 @@ terms_of_use_settings = 'Användarvillkor'
|
|||
terms_of_use_settings_desc = 'Gör det obligatoriskt för nya användare att acceptera användarvillkor'
|
||||
terms_of_use_settings_enabled = 'Aktivera användarvillkor'
|
||||
terms_of_use_url = 'URL till användarvillkor:'
|
||||
data_privacy_statement = 'Personuppgiftspolicy'
|
||||
data_privacy_statement_desc = 'Det är obligatoriskt för oregisterade användare att godkänna personuppgiftspolicy när man gör inlägg i forumet eller registerar sig som användare.'
|
||||
data_privacy_settings_enabled = 'Aktivera personuppgiftspolicy'
|
||||
data_privacy_url = 'URL till personuppgiftspolicy:'
|
||||
edit_postings = 'Ändra inlägg'
|
||||
edit_postings_desc = 'Inställningar för redigering av inlägg'
|
||||
edit_own_postings = 'Ändra egna inlägg:'
|
||||
|
@ -788,7 +845,6 @@ bbcode = 'BB Kod'
|
|||
bbcode_desc = 'Aktivera BB Kod för att formatera inläggen?'
|
||||
bbcodes_enabled = 'Aktivera BB Kod'
|
||||
bbcodes_img_enabled = 'Tillåt BB Kod att infoga bilder'
|
||||
bbcodes_flash_enabled = 'Tillåt BB Kod att infoga flash video'
|
||||
smilies = 'Smajlisar'
|
||||
smilies_desc = 'Ska smajlisar som ":-)" ersättas av bilder? (Smajlisar kan definieras på sidan "Hantera smajlisar")'
|
||||
smilies_enabled = 'Aktivera smajlisar'
|
||||
|
@ -873,6 +929,7 @@ delete_page_submit = 'OK - Radera sidan'
|
|||
error_no_page_title = 'Ingen titel!'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'Användarlista'
|
||||
user_name_empty = 'Inget användarnamn angett'
|
||||
num_registerd_users = '[number] registrerade användare'
|
||||
user_id = 'ID'
|
||||
|
@ -885,18 +942,21 @@ last_login = 'Senast aktiv'
|
|||
lock = 'Bannlys'
|
||||
admin = 'Administratör'
|
||||
mod = 'Moderator'
|
||||
user = 'Användar'
|
||||
user = 'Användare'
|
||||
locked = 'Bannlyst'
|
||||
unlocked = 'Av'
|
||||
lock_title = 'Bannlys användar'
|
||||
lock_title = 'Bannlys användare'
|
||||
unlock_title = 'Ta bort bannlysning'
|
||||
user_inactive = 'Ej aktiverad'
|
||||
activate_note = 'Användarkontot är ännu inte aktiverat, eller så har användaren ändrat sin E-postadress. Aktivera endast om användaren hade problem med att aktivera det själv.'
|
||||
activate_link = 'Aktivera kontot'
|
||||
delete_selected_users = 'Ta bort valda'
|
||||
add_user = 'Lägg till användar'
|
||||
add_user = 'Lägg till användare'
|
||||
email_list = 'E-postlista med alla användare'
|
||||
reset_terms_of_use = 'Återställ acceptans av användarvillkor'
|
||||
reset_data_privacy_statement = 'Återställ acceptans av personuppgiftspolicy'
|
||||
clear_userdata = 'Radera äldre användare'
|
||||
edit_user_avatar = 'Avatar:'
|
||||
delete_avatar = 'Radera avatar'
|
||||
delete_user_confirmation = 'Är Du säker på att användaren ska tas bort?'
|
||||
delete_users_confirmation = 'Är Du säker på att följande användare ska tas bort?'
|
||||
|
@ -909,13 +969,29 @@ register_pw = 'Lösenord:'
|
|||
register_pw_conf = 'Upprepa lösenord:'
|
||||
register_send_userdata = 'Skicka användardata till angiven E-postadress'
|
||||
error_send_userdata = 'Om fältet för lösenord lämnas tomt måste E-post skickas till angiven adress.'
|
||||
error_email_wrong = 'Felaktig E-postadress'
|
||||
new_user_registered = 'Användar "[name]" har registrerats.'
|
||||
new_user_reg_send_error = 'Användar "[name]" har registrerats men användardata kunde inte skickas.'
|
||||
admin_reg_error_email_wrong = 'Felaktig E-postadress'
|
||||
new_user_registered = 'Användare "[name]" har registrerats.'
|
||||
new_user_reg_send_error = 'Användare "[name]" har registrerats men användardata kunde inte skickas.'
|
||||
clear_userdata_condition = 'Ta bort användare som loggat in mindre än [logins] gånger och som inte har loggat in alls de senaste [days] dagarna.<p>'
|
||||
clear_userdata_note = 'Administratörer och moderatorer påverkas inte, en lista genereras och visas innan Du raderar.'
|
||||
no_users_in_selection = 'Inga användare finns i detta urval'
|
||||
|
||||
# upload management
|
||||
upload_administration = 'Hantering av uppladdade filer'
|
||||
mark_upload_for_removal = 'Märk för borttagning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Hittade inga uppladdade filer.'
|
||||
delete_upload_confirmation = 'Är du säker på att du vill radera den här uppladdade filen?'
|
||||
delete_uploads_confirmation = 'Är du säker på att du vill radera de följande uppladdade filerna?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Vilka formulär ska skyddas av CAPTCHA (endast för registrerade användare)?'
|
||||
|
@ -928,20 +1004,21 @@ captcha_mathematical = 'Mattematisk'
|
|||
captcha_graphical = 'Grafisk'
|
||||
gr_captcha_not_available = 'Grafisk CAPTCHA är inte möjlig (GD Lib är inte tillgänglig)'
|
||||
gr_captcha_no_font = 'Inga teckensnitt tillgängliga, CAPTCHA kan inte visas korrekt'
|
||||
b8 = 'B8'
|
||||
b8_desc = 'Bayes-baserat spamfilter <a href="https://nasauber.de/opensource/b8/">B8</a> som använder individuell träningsdata'
|
||||
b8_entry_check_enable = 'kontrollera formuläret för inlägg'
|
||||
b8_mail_check_enable = 'kontrollera formuläret för epost'
|
||||
b8_auto_training_enable = 'Automatiserad filterträning (Meningsfullt efter tillräcklig manuell träning av spam och icke-spam inlägg!)'
|
||||
b8_spam_probability_threshold = 'Gränsvärde för klassificering av spam. Korrekt intervall är från 0 % till 100 %, dvs. för en nivå av 80 % menas att 20 av 100 inlägg är felaktigt klassificerade av spamfiltret som spam (falska positiv)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> Spamskydd som kontrollerar E-postadresser vid registrering'
|
||||
stop_forum_spam_enable = 'Aktivera Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a> Spamskydd.'
|
||||
bad_behavior_enable = 'Aktivera Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> Tjänst som skyddar mot spam. Du behöver en <a href="http://wordpress.com/api-keys/">Wordpress API Nyckel</a> (fungerar inte utan en giltig API Nyckel!).'
|
||||
akismet_key = 'Wordpress API Nyckel:'
|
||||
akismet_save_spam = 'Markera spam (markerad som spam och visas inte)?'
|
||||
akismet_auto_delete_spam = 'Radera spam automatiskt efter detta antal timmar (0=radera inte)?'
|
||||
akismet_entry = 'Kontrollera inlägg'
|
||||
akismet_mail = 'Kontrollera E-post'
|
||||
akismet_registered = 'Kontrollera inlägg från registrerade användare'
|
||||
banned_ips = 'Bannlys IP-adresser'
|
||||
banned_ips_desc = 'Bannlys IP-adresser som inte ska ha tillgång till forumet. IP-spann (t.ex. 10.10.1.*) och CIDR adressblock(t.ex. 10.10.1.32/27) är möjliga. En IP-adress/rad.'
|
||||
banned_user_agents = 'Bannlys <a href="http://sv.wikipedia.org/wiki/Anv%C3%A4ndaragent">användaragenter</a>'
|
||||
|
@ -952,6 +1029,12 @@ spam_protection_submit = 'OK - Spara'
|
|||
error_own_ip_banned = 'Du har bannlyst din egen IP-adress!'
|
||||
error_own_user_agent_banned = 'Du har bannlyst din egen användaragent!'
|
||||
spam_protection_saved = 'Sparat!'
|
||||
spam_check_registered = 'inlägg av registrerade användare'
|
||||
spam_check_registered_desc = 'Kontrollera inlägg från registrerade användare'
|
||||
spam_check_registered_enable = 'Kontrollera inlägg från registrerade användare för spam'
|
||||
auto_delete_spam = 'Radera spam automatiskt'
|
||||
auto_delete_spam_desc = 'Period för att behålla spam'
|
||||
auto_delete_spam_timespan = 'Radera spam automatiskt efter detta antal timmar (0=radera inte)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = 'Återställ forumet'
|
||||
|
@ -963,45 +1046,14 @@ uninstall_forum_exp = 'OBS! Detta raderar alla poster i databasen, f
|
|||
uninstall_forum_submit = 'OK - Radera'
|
||||
error_no_selection_made = 'Inget val gjort!'
|
||||
|
||||
# Backup:
|
||||
backup_note = 'För att kunna använda backupfunktionen måste mappen <code>backup</code> vara skrivbar. Se också till att mappen inte kan kommas åt via webben!'
|
||||
backup_file = 'Fil'
|
||||
backup_date = 'Datum'
|
||||
backup_size = 'Storlek'
|
||||
create_backup_complete = 'Skapa komplett säkerhetskopia'
|
||||
only_create_backup_of = 'Skapa säkerhetskopia på:'
|
||||
backup_entries = 'Inlägg'
|
||||
backup_userdata = 'Användare'
|
||||
backup_settings = 'Inställningar'
|
||||
backup_categories = 'Kategorier'
|
||||
backup_pages = 'Sidor'
|
||||
backup_smilies = 'Smajlisar'
|
||||
backup_banlists = 'Bannlysningslistor'
|
||||
backup_bookmarks = 'Bokmärken'
|
||||
backup_read_status = 'Lässtatus'
|
||||
backup_temp_infos = 'Tillfälliga uppgifter'
|
||||
download_backup_file = 'Ladda ner säkerhetskopian'
|
||||
delete_selected = 'Radera markerad'
|
||||
restore = 'Återställ'
|
||||
delete_backup_file = 'Radera säkerhetskopian'
|
||||
delete_backup_submit = 'OK - Radera'
|
||||
restore_confirm = 'Är Du säker på att Du vill återställa med vald säkerhetskopia?<br /><strong>Alla berörda tabeller i databasen kommer att skrivas över!</strong>'
|
||||
restore_safe_mode_warning = 'Safe Mode Warning!'
|
||||
restore_safe_mode_note = 'Eftersom felsäkert läge är aktiverat på denna server kan tiden som skriptet körs inte förlängas! För att undvika ofullbordade säkerhetskopior bör du dela upp långa säkerhetskopierade filer i flera mindre och exekvera en efter en!'
|
||||
restore_submit = 'OK - Återställ'
|
||||
restore_backup_ok = 'Säkerhetskopian är återställd.'
|
||||
backup_file_created = 'Säkerhetskopian har skapats.'
|
||||
error_file_doesnt_exist = 'Filen existerar inte!'
|
||||
error_delete_backup_file = 'Säkerhetskopian kunde inte raderas'
|
||||
error_create_backup_file = 'Filen kunde inte skapas - kontrollera att skrivrättighet är insällt på mappen <code>backup</code>'
|
||||
error_restore_mysql = 'MySQL fel: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'Aktuell version: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'Instruktioner:'
|
||||
update_instructions = 'Du rekomenderas att inaktivera forumet före uppdatering (Avmarkera "Forumet aktiverat" på <a href="index.php?mode=admin&action=settings">Foruminställningar</a>)'
|
||||
update_instructions = 'Ladda ner den senaste versionen från <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'Packa upp filerna på hårddisken, leta upp uppdateringsfilen i undermappen <code>update</code> och ladda upp den till mappen "update" på servern.'
|
||||
update_instructions = 'Packa upp filerna på hårddisken.'
|
||||
update_instructions = 'Leta upp uppdateringsfilen i undermappen <code>update</code> och ladda upp den till mappen "update" på servern.'
|
||||
update_instructions = '<!-- TODO -->Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'Uppdatera denna sidan och följ vidare instruktioner.'
|
||||
update_instructions = 'Klicka på filen och följ vidare instruktioner.'
|
||||
update_instructions = 'Efter uppdateringen visas en lista med filer och mappar som måste ersättas och läggas till'
|
||||
|
@ -1014,13 +1066,21 @@ update_submit = 'OK - Uppdatera'
|
|||
update_successful = 'Databasen har uppdaterats.'
|
||||
update_items_note = 'Ladda upp följande filer/mappar från den hämtade uppdaterineg (version [version]) till servern:'
|
||||
update_download = 'Om Du inte laddat ner filerna kan Du göra det här: [[here]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Svar på "[original_subject]"'
|
||||
email_text = """Hej [recipient],
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] har postat ett svar i \"[original_subject]\":
|
||||
|
||||
Ämne: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Länk till inlägget: [posting_address]
|
||||
|
@ -1030,7 +1090,7 @@ Länk till inlägget: [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Detta meddelande har skickats eftersom Du har aktiverat mailfunktionen manuellt"""
|
||||
Detta meddelande har skickats eftersom Du har aktiverat mailfunktionen manuellt. This is an automatically generated email, please do not reply to this email."""
|
||||
|
||||
admin_email_subject = 'Nytt inlägg i forumet: [subject]'
|
||||
admin_email_text = """Nytt inlägg av [name]
|
||||
|
@ -1038,15 +1098,20 @@ admin_email_text = """Nytt inlägg av [name]
|
|||
|
||||
[text]
|
||||
|
||||
Länk till inlägget: [posting_address]"""
|
||||
Länk till inlägget: [posting_address]
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
admin_email_text_reply = """Svar av [name]
|
||||
Ämne: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Länk till inlägget: [posting_address]"""
|
||||
Länk till inlägget: [posting_address]
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
admin_reg_user_email_subj = 'Registrering på forum'
|
||||
admin_reg_user_email_text = """Hej [name],
|
||||
|
||||
Välkommen till forumet!
|
||||
|
||||
Här är dina användaruppgifter för att logga in:
|
||||
|
@ -1057,47 +1122,67 @@ Lösenord: [password]
|
|||
Logga in direkt med denna länk:
|
||||
[login_link]
|
||||
|
||||
Lösenordet kan ändras efter att Du loggat in!"""
|
||||
Lösenordet kan ändras efter att Du loggat in!
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
|
||||
admin_activate_user_email_subj = 'Registrering på forum'
|
||||
admin_activate_user_email_text = """Hej [name],
|
||||
|
||||
Välkommen till forumet!
|
||||
|
||||
Logga in direkt med denna länk:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande.."""
|
||||
|
||||
new_user_email_sj = 'Registrering på forum'
|
||||
new_user_email_txt = """Hej [name],
|
||||
|
||||
Välkommen till forumet!
|
||||
|
||||
För att aktivera kontot, vänligen följ aktiveringslänken:
|
||||
[activate_link]"""
|
||||
new_user_notif_sj = 'Ny användar registrerad'
|
||||
[activate_link]
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
new_user_notif_sj = 'Ny användare registrerad'
|
||||
new_user_notif_txt = """Hej [recipient],
|
||||
En ny användar har registrerat sig på forumet.
|
||||
|
||||
En ny användare har registrerat sig på forumet.
|
||||
Användarnamn: [name]
|
||||
E-post: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
new_user_notif_txt_locked = """Hej [recipient],
|
||||
En ny användar har registrerat sig på forumet.
|
||||
|
||||
En ny användare har registrerat sig på forumet.
|
||||
Användarnamn: [name]
|
||||
E-post: [email]
|
||||
|
||||
VIKTIGT: Denna användar måste aktiveras!"""
|
||||
VIKTIGT: Denna användare måste aktiveras!
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
edit_address_email_sj = 'Kontoaktivering efter byte av E-postadress'
|
||||
edit_address_email_txt = """Hej [name],
|
||||
|
||||
E-postadressen har ändrats, Du måste återaktivera kontot via länken:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
pwf_activating_email_sj = 'Begäran om nytt lösenord'
|
||||
pwf_activating_email_txt = """Hej [name],
|
||||
|
||||
Detta mail har skickats från [forum_address] eftersom ett nytt lösenord har begärts, klicka på länken för att bekräfta begäran. Ett nytt lösenord kommer då att skapas och skickas till dig. Om Du själv inte begärt byte av lösenord ber vi dig bortse från detta mail och lämna det utan åtgärd.
|
||||
|
||||
Aktiveringslänk:
|
||||
[activating_link]"""
|
||||
[activating_link]
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
new_pw_email_sj = 'Nya användaruppgifter till forumet'
|
||||
new_pw_email_txt = """Hej [name],
|
||||
|
||||
Här är dina nya användaruppgifter:
|
||||
|
||||
Användarnamn: [name]
|
||||
|
@ -1106,7 +1191,9 @@ Lösenord: [password]
|
|||
Logga in via länken:
|
||||
[login_link]
|
||||
|
||||
Lösenordet kan ändras efter att Du loggat in."""
|
||||
Lösenordet kan ändras efter att Du loggat in.
|
||||
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1123,6 +1210,19 @@ contact_notification_txt = """Detta mail har skickats med din E-postadres
|
|||
|
||||
--
|
||||
Detta mail har skickats från [forum_address]."""
|
||||
email_notify_inactive_user_subject = 'Meddelande om inaktivitet [name]'
|
||||
email_notify_inactive_user_text = """Hej [name],
|
||||
|
||||
vi har märkt att din senaste inloggning på forumet på [forum_adress] är mer än [inaktiv_tidsperiod] år sedan.
|
||||
Dataskyddsförordningen tillåter inte obegränsad lagring av användardata. I enlighet med GDPR raderar vi inaktiva användarkonton med jämna mellanrum.
|
||||
|
||||
För att förhindra att kontot raderas av oss behöver du bara logga in på forumet inom de närmaste [days_until_delete] dagarna.
|
||||
Annars kommer vi att radera ditt konto. Dina inlägg kommer att sparas, men de kommer att tilldelas en anonym användare som slumpmässigt har valt ditt användarnamn.
|
||||
|
||||
Vänliga hälsningar
|
||||
|
||||
--
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installation'
|
||||
|
@ -1171,5 +1271,6 @@ error_db_inexistent = 'Specificerad databas existerar inte - kontrol
|
|||
error_sql_file_doesnt_exist = 'SQL\'s installationsfil (install.sql) existerar inte'
|
||||
error_overwrite_config_file = 'Saknar rättighet att skriva till fil <code>config/db_settings.php</code> (ställ in CHMOD 666, nuvarande är [CHMOD])'
|
||||
error_sql = 'SQL fel'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'OK - Installera forum'
|
||||
error_conf_pw = 'Administratörslösenorden stämmer inte överens'
|
||||
|
|
279
lang/tamil.lang
279
lang/tamil.lang
|
@ -1,9 +1,25 @@
|
|||
################################################################################
|
||||
# Tamil language file for my little forum 2.4 #
|
||||
# Tamil language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = ta
|
||||
language_code = 'ta'
|
||||
language_name_system = 'tamil'
|
||||
language_name_own = 'தமிழ்'
|
||||
charset = utf-8
|
||||
locale = ta_IN.utf8
|
||||
locale = ta_IN
|
||||
|
@ -11,8 +27,8 @@ locale = ta
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %Y-%m-%d, %H:%M
|
||||
time_format_full = %A, %B %d, %Y, %H:%M
|
||||
time_format = 'YYYY-MM-dd, hh:mm a'
|
||||
time_format_full = 'EEEE, MMMM dd, YYYY, hh:mm a'
|
||||
forum_time = 'கருத்தரங்கின் நேரம்: [time]'
|
||||
forum_time_with_time_zone = 'கருத்தரங்கின் நேரம்: [time] ([time_zone])'
|
||||
unknown_user = 'தெரியாதவர்'
|
||||
|
@ -27,6 +43,7 @@ replies = 'பதில்'
|
|||
views = 'காட்ச்சிகள்'
|
||||
category = 'வகை'
|
||||
submit_button_ok = ' சரி அநுப்பலாம் '
|
||||
submit_button_cancel = '<!-- TODO --> Cancel '
|
||||
yes = 'ஆம்'
|
||||
no = 'இல்லை'
|
||||
go = 'பொ'
|
||||
|
@ -36,8 +53,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'அடுத்த பக்கம்'
|
||||
previous_page_link_title = 'முந்தய பக்கம்'
|
||||
posted_by = 'இப்படிக்கு <strong>[name]</strong>[email_hp]<span class="interpunction">,</span> [time]'
|
||||
posted_by_location = 'இப்படிக்கு <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'இப்படிக்கு [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'இப்படிக்கு [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = '[name]னுடைய அசல் தகவலுக்கு செல்ல'
|
||||
error_headline = 'தவரு!'
|
||||
no_authorisation = 'அங்கிகாரம் இல்லை!'
|
||||
|
@ -63,6 +80,8 @@ search_default_value = 'தேடு…'
|
|||
search_title = 'தேடுதல் தகவல்'
|
||||
new_topic_link = 'புதிய தலைப்பு'
|
||||
new_topic_link_title = 'புதிய தலைப்பை அநுப்பு'
|
||||
back_to_top_link = '<!-- TODO -->To top'
|
||||
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
|
||||
order_link = 'வரிசை'
|
||||
order_link_title_1 = 'கடைசி பதிலை தேதியை வைத்து வரிசைப்படுத்து'
|
||||
order_link_title_2 = 'தேதியை வைத்து திரட்டை வரிசைப்படுத்து(கட்டாயம்)'
|
||||
|
@ -100,6 +119,8 @@ back_to_entry_link = 'மருபடியும் வந்த
|
|||
back_to_entry_link_title = 'மருபடியும் வந்த வழிக்கே [name]'
|
||||
subnav_login = 'நுழை'
|
||||
subnav_pw_forgotten = 'மறைவு சொல் மறந்துவிட்டேன்'
|
||||
subnav_accept_dps = '<!-- TODO -->Accept the data privacy statement'
|
||||
subnav_accept_tou = '<!-- TODO -->Accept the terms of use agreement'
|
||||
subnav_admin_area = 'நிர்வாகி பாகுதி'
|
||||
subnav_settings = 'பொது மன்ற அமைப்பு'
|
||||
subnav_advanced_settings = 'முற்போக்கு அமைப்பு'
|
||||
|
@ -132,6 +153,7 @@ subnav_userarea_show_posts = '[var] ருடைய போஸ்டிங
|
|||
subnav_userarea_edit_user = 'படுத்துபவர் விபறத்தை புதுப்பி'
|
||||
subnav_userarea_edit_pw = 'மறைவு சொலை மாற்று'
|
||||
subnav_userarea_edit_mail = 'மின்-அசல் விலாசத்தை மாற்று'
|
||||
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
|
||||
subnav_backup = 'காப்பீடு செய்'
|
||||
subnav_update = 'புதுப்பிக்கவும்'
|
||||
subnav_update_run = 'புதுப்பிக்க செயல்படுத்து'
|
||||
|
@ -143,6 +165,8 @@ subnav_disabled = 'பொது மன்றம் முடக
|
|||
subnav_bookmarks = '<!-- TODO -->Bookmarks'
|
||||
subnav_delete_bookmark = '<!-- TODO -->Delete bookmark'
|
||||
subnav_edit_bookmark = '<!-- TODO -->Edit bookmark'
|
||||
subnav_list_uploads = '<!-- TODO -->List of uploads'
|
||||
subnav_confirm_delete_uploads = '<!-- TODO -->Delete uploads'
|
||||
subnav_page_error = 'தவரு'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] போஸ்டிங் [total_threads] திரட்ஸ், [registered_users] பதிவு செய்தவர்கள்'
|
||||
|
@ -169,7 +193,6 @@ error_invalid_date_format = 'பிறந்த தேதியின்
|
|||
error_invalid_date = 'பிறந்த தேதி சரியானது அல்ல'
|
||||
error_email_wrong = 'மின்-அசல் விலாசம் சரியானது அல்ல'
|
||||
error_hp_wrong = 'முதல் பக்கம் விலாசம் சரியானது அல்ல'
|
||||
error_pw_conf_wrong = 'மறைவு சொல்லும் சரிபார்பதற்கான மறைவு சொல்லும் பொறுந்தவில்லை'
|
||||
error_akismet_connection = 'சர்வர் நேரம் முடிந்துவிட்டது, தயவு செய்து மீண்டும் முயற்சிக்கவும்!'
|
||||
error_akismet_connection_admin = 'API சாவியை சரிபார்க்க Akismet சர்வருடன் இணைக்கமுடியாவில்லை!'
|
||||
error_akismet_api_key = 'Wordpress API சரியானது அல்ல'
|
||||
|
@ -179,6 +202,7 @@ open_whole_thread = 'அனைத்து திரட்டை
|
|||
change_category_link = '"[category]" பிரிவில் உள்ள போஸ்டிங்கை காண்பி'
|
||||
mark_linktitle = 'குறியிடபட்ட போஸ்டிங்ஸ்'
|
||||
unmark_linktitle = 'குறியிடபடாத போஸ்டிங்ஸ்'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'குறியிடபட்ட போஸ்டிங்ஸ் அழிக்க'
|
||||
manage_postings_link = 'போஸ்டிங்கை மேற்பார்வையிடு'
|
||||
non_activated_users_link = '<!-- TODO -->[counter] non-activated user(s)'
|
||||
|
@ -193,6 +217,8 @@ more_smilies_label = 'மேலும்...'
|
|||
more_smilies_title = 'மேலும் சிரிப்பு முகங்கள்'
|
||||
close = 'மூடு'
|
||||
no_postings_user = 'போஸ்டிங்ஸ் இல்லை.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'தேடு'
|
||||
search_fulltext = 'முழு உரை'
|
||||
search_tags = 'அடையாள முத்திரை'
|
||||
|
@ -233,6 +259,7 @@ error_invalid_form = 'செஷன் காலாவதியா
|
|||
error_form_sent_too_fast = 'The படிவம் மிக விரைவாக சமர்ப்பிக்கப்பட்டிருக்கிறது - தயவு செய்து சிறிது நேரம் காத்திருந்து, மீண்டும் முயற்சிக்கவும் (இது ஒரு த்னியங்கி படிவம் சமர்ப்பிபக்கும் நடவடிக்கை ஆகும்)'
|
||||
error_form_sent_too_slow = 'இந்த படிவத்திற்கு இதற்குமேல் மதிப்பு இல்லை - தயவு செய்து உங்கள் உரையை நகல் எடுத்துக்கொண்டு மருபடியும் பக்கத்தை திற'
|
||||
terms_of_use_agreement = 'என் சம்மதம் [[terms of use]]'
|
||||
data_privacy_agreement = '<!-- TODO -->I agree to the [[data privacy statement]]'
|
||||
error_not_accepted_word = 'எற்றுக்கொள்ளக்கூடிய வாறத்தை அல்ல: [not_accepted_word]'
|
||||
error_not_accepted_words = 'எற்றுக்கொள்ளக்கூடிய வாறத்தைகள் அல்ல: [not_accepted_words]'
|
||||
error_username_invalid_chars = '<!-- TODO -->The user name contains special characters'
|
||||
|
@ -252,14 +279,20 @@ error_no_subject = 'பாடம் நுழைக்கபட
|
|||
error_no_text = 'தகவல் உரை நுழைக்கபடவில்லை'
|
||||
terms_of_use_error_register = 'பதிவு படிவத்தை பூ்ற்த்தி செய்ய, எங்கள் நிபந்தனைக்கு உங்கள் சம்மதம் தேவை'
|
||||
terms_of_use_error_posting = 'தகவலை அநுப்ப , எங்கள் நிபந்தனைக்கு உங்கள் சம்மதம் தேவை'
|
||||
terms_of_use_error_reconf = '<!-- TODO -->You have to agree to the changes of the terms of use in order to submit further messages'
|
||||
data_priv_statement_error_reg = '<!-- TODO -->You have to agree to the data privacy statement in order to complete the registration'
|
||||
data_priv_statement_error_post = '<!-- TODO -->You have to agree to the data privacy statement in order to submit this message'
|
||||
data_priv_statement_error_reconf ='<!-- TODO -->You have to agree to the changes of the data privacy statement in order to submit further messages'
|
||||
submit_button_agreed = '<!-- TODO -->I agree'
|
||||
submit_button_disagreed = '<!-- TODO -->I disagree'
|
||||
check_all = 'அனைத்தையும் குறிக்க'
|
||||
uncheck_all = 'அனைத்தையும் குறிகளையும் நீக்கு'
|
||||
delete_backup_confirm = 'காத்து வைத்த கோப்பை அழிக்க வேண்டுமா?'
|
||||
delete_sel_backup_confirm = 'தேர்வு செய்த காத்து வைத்த கோப்பை அழிக்க வேண்டுமா?'
|
||||
drag_and_drop_title = 'மேலும் கீழும் நகர இழுத்து விடவும்'
|
||||
show_all_postings_link = 'போஸ்டிங்கை காண்பி'
|
||||
show_bookmarks_link = '<!-- TODO -->Bookmarks'
|
||||
show_userdata_linktitle = '<!-- TODO -->Visit profil of [user]'
|
||||
show_password_title = '<!-- TODO -->Show password in plain text'
|
||||
hide_password_title = '<!-- TODO -->Hide password'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
|
||||
|
@ -281,7 +314,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'புதுப்பித்தவர் [name], [time]'
|
||||
edited_by = 'புதுப்பித்தவர் [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'அடையாள முத்திரை:'
|
||||
one_view = '1 காட்ச்சி'
|
||||
several_views = '[views] காட்ச்சிகள்'
|
||||
|
@ -338,6 +371,8 @@ subject_marking = 'பாடம்:'
|
|||
message_marking = 'தகவல்:'
|
||||
tags_marking = 'அடையாள முத்திரை:'
|
||||
tags_note = '(விரும்பினால், "," வைத்து பிரிக்கவும்)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'தடிப்பமாக'
|
||||
bbcode_bold_title = 'தடிப்பமான உரை நடை'
|
||||
bbcode_bold_instruction = '[b]உரை[/b]'
|
||||
|
@ -370,15 +405,12 @@ bbcode_image_instr_right = '<!-- TODO -->right: [img=right]http://example
|
|||
bbcode_image_label_thumb = '<!-- TODO -->thumbnail'
|
||||
bbcode_image_instr_thumb = '<!-- TODO -->thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = '<!-- TODO -->thumbnail left'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = '<!-- TODO -->thumbnail right'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'மேலேற்றுக'
|
||||
bbcode_upload_title = 'படத்தை மேலேற்றுக'
|
||||
bbcode_upload_instruction = 'படத்தை மேலேற்றுக …'
|
||||
bbcode_flash_label = 'பிளாஷ்'
|
||||
bbcode_flash_title = 'பிளாஷ் செருகு'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = '<!-- TODO -->TeX'
|
||||
bbcode_tex_title = '<!-- TODO -->insert TeX code'
|
||||
bbcode_tex_instruction = '<!-- TODO -->[tex]TeX code[/tex]'
|
||||
|
@ -389,11 +421,14 @@ bbcode_code_instruction_inline = '<!-- TODO -->[inlinecode]code[/inlinecode]'
|
|||
bbcode_code_label_general = '<!-- TODO -->code block'
|
||||
bbcode_code_instruction_general = '<!-- TODO -->[code]code[/code]'
|
||||
bbcode_code_label_specific = '<!-- TODO -->code block [language]'
|
||||
bbcode_code_instruction_spec = '<!-- TODO -->[code=[language]]code[/code]'
|
||||
bbcode_code_instruction_spec = '<!-- TODO -->[code=[language]]code[/code]'
|
||||
insert_smiley_title = 'சிரிப்பு முகங்களை செருகுக'
|
||||
email_notific_reply_thread = 'இந்த திரட்டின் பதில்களை மின்-அசலின் மூலம் தெரியப்படுத்தவும்'
|
||||
email_notific_reply_post = 'இந்த போஸ்டின் பதில்களை மின்-அசலின் மூலம் தெரியப்படுத்தவும்'
|
||||
show_signature_marking = 'கைய்யொப்பத்தை சேர்க்க'
|
||||
sticky_none = '<!-- TODO -->Do not pin the thread'
|
||||
sticky_single_cat = '<!-- TODO -->Pin thread in the chosen category'
|
||||
sticky_all_cats = '<!-- TODO -->Pin thread to all categories'
|
||||
sticky_thread = 'ஸ்டிகி'
|
||||
message_submit_button = 'சரி அநுப்பலாம்'
|
||||
message_submit_title = 'பதிவை சேமிக்க'
|
||||
|
@ -422,9 +457,8 @@ delete_spam_hl = 'ஸபேமை அழிக்க'
|
|||
delete_spam_confirm = 'ஸபேம் என வரையறுக்கப்பட்ட அனைத்து போஸ்டிங்கை அழிக்க வேண்டும்?'
|
||||
delete_posting_submit = 'சரி அழி'
|
||||
report_spam_hl = 'ஸபேம் என புகார் செய்'
|
||||
report_spam_warning = '<!-- TODO -->Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
posting_already_spam = 'இந்த போஸ்டிங் ஏற்கனவே ஸபேம் என சொல்லப்பட்திருக்கிறது.'
|
||||
spamcheck_posting_not_checked = 'இந்த போஸ்டிங் ஏற்கனவே ஹெம் என சொல்லப்பட்திருக்கிறது. அல்லது Akismet மூலம் சரிபார்க்கவில்லை ஏனென்றால் Akismet உபயோகத்தில் இல்லை அல்லது இது பதிவு செய்தவரின் போஸ்டிங்.'
|
||||
spamcheck_posting_passed = 'இந்த போஸ்டிங்கை Akismet ஸபேம் வடிகட்டியை தாண்டி விட்டது. நீங்கள் உறுதியாக ஸபேம் என நம்பினால் புகார் செய்க!'
|
||||
spamcheck_akismet_api_error = 'சோதணையின் போது தவறு ஏற்பட்டதால், இந்த போஸ்டிங்கை Akismet ஸபேம் வடிகட்டியை தாண்டி விட்டது. காரணம் API சரியானது அல்லாமலிருக்கலாம்!'
|
||||
spamcheck_akismet_timeout_error = 'சோதணையின் நேரம் கடந்துவிட்டதால், இந்த போஸ்டிங்கை Akismet ஸபேம் வடிகட்டியை தாண்டி விட்டது.'
|
||||
report_spam_delete_submit = 'நம்பத்தகாதவரெனில் முரையி்டவும் மற்றும் அழிக்க'
|
||||
|
@ -433,11 +467,17 @@ delete_only_submit = 'அழிக்க மட்டும் ச
|
|||
postings_doesnt_exist = 'இந்த போஸ்டிங்கை இல்லை!'
|
||||
posting_not_flagged_as_spam = 'இந்த போஸ்டிங்கை ஸபேம் இல்லை.'
|
||||
flag_ham_hl = 'ஹெம் என கொடி அசை'
|
||||
flag_ham_note = 'இந்த போஸ்டிங்கை Akismet ஸபேம் வடிகட்டியால் ஸபேம் என வகைப்படுத்தப்பட். நீங்கள் உறுதியாக ஹெம் என நம்பினால், புகார் செய்க!'
|
||||
flag_ham_warning = '<!-- TODO -->Please flag and report this entry only as ham (not spam), if it is definetly no spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
report_flag_ham_submit = 'ஹெம் என கொடி அசை மற்றும் புகார் செய்'
|
||||
flag_ham_submit = 'ஹெம் மட்டுமே என கொடி அசை'
|
||||
no_authorisation_delete = 'போஸ்டிங்கை அழிக்கமுடியவில்லை! காரணம், போஸ்டிங்கை அழிக்க காலம் முடிந்துவிட்டது, திரட் பூட்டப்பட்டிருக்கிறது அல்லது எற்கனவே பதில் வந்துவிட்டது.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = '<!-- TODO -->Quitted subscription'
|
||||
unsubscribed_message = '<!-- TODO -->The subscription for informations about replies to your entry got quitted. You will not receive any more e-mails about this specific entry. Subscriptions for informations about further entries are not affected by this action.'
|
||||
unsubscribe_error_hl = '<!-- TODO -->Could not quit the subscription'
|
||||
unsubscribe_error_message = '<!-- TODO -->During the action to quit the subscription an error occured. Please inform the forum operator by e-mail about this issue. Please add the following informations: ID of the entry (take it from the link in the e-mail (URL-parameter "unsubscribe")) and the time of the failed action (add the name of your time zone if possible).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'ஸ்பெம் காப்பு:
|
||||
captcha_expl_math = 'தயவு செய்து இரணடு எண்களை கூட்டுக:
|
||||
|
@ -465,12 +505,6 @@ no_images = 'ஒரு படமும் இல்லை.
|
|||
delete_image_confirm = 'இந்த உருவத்தைஅழிக்க?'
|
||||
delete_image_button = 'சரி - அழிக்க'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'பிளாஷ் விடியோவை செருகுக'
|
||||
flash_url = 'URL:'
|
||||
flash_size = 'அளவு:'
|
||||
insert_flash_button = 'பிளாஷ் விடியோவை செருகுக'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'உருவ படம்'
|
||||
delete_avatar = 'உருவ படத்தை அழிக்கவும்'
|
||||
|
@ -530,6 +564,7 @@ pwf_username = 'பயன் படுத்துபவர
|
|||
pwf_email = 'மின்-அசல்:'
|
||||
|
||||
[user]
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name = 'பயன் படுத்துபவர் பெயர்'
|
||||
user_type = 'வகை'
|
||||
admin = 'நிர்வாகி'
|
||||
|
@ -592,7 +627,10 @@ edit_email = 'மின்-அசல் விலாசத
|
|||
edit_user_pw = 'மறைவு சொல்:'
|
||||
pw_not_displayed = 'காட்ச்சிக்கில்லாத'
|
||||
edit_pw = 'மாற்று மறைவு சொல்'
|
||||
edit_user_email_contact = 'அநுக்த்கூடிய மின்-அசல் விலாசம்'
|
||||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = 'பெயர்:'
|
||||
edit_user_gender = 'பால்:'
|
||||
gender_not_specified = '<!-- TODO -->not specified'
|
||||
|
@ -615,20 +653,35 @@ edit_user_theme = 'மைய்ய கருத்து:'
|
|||
edit_user_default_theme = '<!-- TODO -->Default ([default_theme])'
|
||||
edit_user_auto_login = 'தானாகவே பொது மன்றத்திநுள் நுழை'
|
||||
enable_auto_login = 'தானாகவே பொது மன்றத்திநுள் நுழையுமாறு செய்'
|
||||
edit_user_where_to_open_links = '<!-- TODO -->Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = '<!-- TODO -->Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = '<!-- TODO -->Open all links in same browser window'
|
||||
where_to_open_links_external = '<!-- TODO -->Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = '<!-- TODO -->Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_notification = 'மின்-அசல் அநுப்பப்பட்டிருக்கிறது:'
|
||||
admin_mod_notif_posting = 'புதிய செய்தி அநுப்பிய உடன்'
|
||||
admin_mod_notif_register = 'புதிதாக பயன் படுத்துபவர் சேர்ந்தவுடன்'
|
||||
userdata_submit_button = 'சரி - சேமிக்க'
|
||||
profile_saved = 'விபரம் சேமிக்கபட்டுவிட்டது'
|
||||
pw_changed = 'மறைவு சொல் மாற்றப்பட்டுவிட்டது'
|
||||
remove_user_account = '<!-- TODO -->Delete account'
|
||||
remove_user_account_link = '<!-- TODO -->Delete your user account'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = '<!-- TODO -->Delete account'
|
||||
remove_user_account_warning = '<!-- TODO -->Warning, once you delete your account, there is no going back. Please be certain! Bookmarks and account data will deleted. Your postings keep unchanged. Like an unregistered post, your display name ([user_name]) is used as author.'
|
||||
remove_user_confirm_password = 'மறைவு சொல்:'
|
||||
error_pw_wrong = 'மறைவு சொல் தவரு'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'பழைய மறைவு சொல்:'
|
||||
edit_pw_new = 'புதிய மறைவு சொல்:'
|
||||
edit_pw_conf = 'மறுபடியும் புதிய மறைவு சொலை :'
|
||||
error_old_pw_wrong = 'பழைய மறைவு சொல் தவரு'
|
||||
error_pw_conf_uneven = 'புதிய மறைவு சொலும் இரண்டாவது மறைவு சொலும் ஒன்றாக இல்லை'
|
||||
error_new_pw_too_short = 'புதிய மறைவு சொல்லில் [characters] சொல்லாவது இருகாகவேணடும்'
|
||||
error_new_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_new_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_new_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_new_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'மின்-அசல் விலாசம் மாற்றும்போது, உங்கள் பொது மன்ற கணக்கு மீண்டும் செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டும். அதற்கான செயல்படுத்தும் சாவி இணைப்பை உங்களின் புதிய மின் - அஞ்சலுக்கு அநுப்பப்படும். ஆதலால் உங்கள் புதிய மின்-அஞ்சலில் விலாசம் சரியானதாக இருக்குமாறு பார்த்துக்கொள்ள வேண்டும்.மேலும் உங்கள் பொது மன்ற கணக்கு ஒரு நாளுக்குள் செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டும்.'
|
||||
|
@ -641,21 +694,26 @@ error_email_too_long = 'மின்-அசல் விலாசம
|
|||
error_identic_email = 'புதிய மின்-அசலும், பழைய மின்-அசலும் ஒனறாக உள்ளது'
|
||||
error_email_invalid = 'மின்-அசல் விலாசம் சரியானது அல்ல'
|
||||
pw_wrong = 'மறைவு சொல் தவரு'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = 'தயவு செய்து உங்களுக்கு விருப்பமான பயன் படுத்துபவர் பெயர், மறைவு சொல் மற்றும் சரியான மின்-அஞ்சலில் விலாசத்தை தெரிவிக்கவும். செயல்படுத்தும் சாவி இணைப்பை உங்களின் மின் - அஞ்சலுக்கு அநுப்பப்படும். ஆதலால் உங்கள் புதிய மின்-அஞ்சலில் விலாசம் சரியானதாக இருக்குமாறு பார்த்துக்கொள்ள வேண்டும்.மேலும் உங்கள் பொது மன்ற கணக்கு ஒரு நாளுக்குள் செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டும்.'
|
||||
register_username = 'பயன் படுத்துபவர் பெயர்:'
|
||||
register_user_email = 'மின்-அசல்:'
|
||||
register_pw = 'மறைவு சொல்:'
|
||||
register_pw_conf = 'மறுபடியும் மறைவு சொல்:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'பொது மன்ற நிர்வாகியின் மூலமே பயன் படுத்துபவர் சேர முடியும்.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'உங்கள் கணக்கு உருவாக்கப்பட்டுவிட்டது மறறும் அதற்கான செயல்படுத்தும் சாவி இணைப்பை உங்கள் <strong>[var]</strong> அநுப்பப்பட்டுவிட்டது. மேலும் உங்கள் பொது மன்ற கணக்கு ஒரு நாளுக்குள் செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டும்.'
|
||||
registered_send_error = 'உங்கள் கணக்கு உருவாக்கப்பட்டுவிட்டது மறறும் அதற்கான செயல்படுத்தும் சாவி இணைப்பை உங்களுக்கு அநுப்பப்பமுடியவில்லை (அஞ்சல் சேவை மைய்யம் இயங்கவில்லை). கணக்கை செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டுமானால் தயவு செய்து பொது மன்ற நிர்வாகியை அநுகவும்.'
|
||||
activation_failed = 'கணக்கை செயல்பாட்டிற்கு கொண்டுவர முடியவில்லை.'
|
||||
error_password_too_short = 'புதிய மறைவு சொல்லில் [characters] சொல்லாவது இருகாகவேணடும்'
|
||||
error_email_alr_exists = 'இந்த மின்-அசல் விலாசம் ஏற்கனவே ஒருவறால் உபயோகப்படுத்தப்பட்டு வருகிற்து'
|
||||
error_reg_not_accepted_word = 'ஸ்பேம் காப்பு: ஏற்றுக்கொள்ள மயடியாத வார்த்தைகள் இந்த மின்-அசல் விலாசம் அல்லது பெயரில் இடம்பெற்றுள்ளது'
|
||||
error_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'பொது மன்ற நிர்வாகியின் மின்-அசல்'
|
||||
|
@ -663,6 +721,7 @@ contact_user_hl = '[recipient_name] உடையா மின்
|
|||
impossible_to_contact = 'தொடர்பு கொள்ள முடியாதவர்!'
|
||||
contact_doesnt_exist = 'விலாசம் சரியானது அல்ல'
|
||||
sender_address_caption = 'அநுப்புவோர் மின்-அசல்:'
|
||||
sender_confirmation_caption = '<!-- TODO -->Send me a copy of my message'
|
||||
subject_caption = 'பாடம்:'
|
||||
message_caption = 'செய்தி:'
|
||||
message_submit_caption = 'சரி - செய்தியை அநுப்பலாம்'
|
||||
|
@ -673,7 +732,7 @@ error_message_no_subject = 'பாடம் இல்லை'
|
|||
error_email_invalid = 'மின்-அசல் விலாசம் சரியானது அல்ல'
|
||||
error_email_subject_too_long = 'பாடம் மிக நீளமானது'
|
||||
error_email_text_too_long = 'செய்தி மிக நீளமானது ([text_length] எழுத்துக்கள் - மட்டும் [text_maxlength] எழுத்துக்கள் அநுமதிக்கப்படுகிறது)'
|
||||
error_spam_suspicion = 'ஸ்பேம் என எதிர்பார்க்கப்படுகிறது! தயவு செய்து செய்தியை மாற்றுக(மாதிரிக்கு: இணைப்புக்களை அழிக்கவும்)'
|
||||
error_email_spam_suspicion = 'ஸ்பேம் என எதிர்பார்க்கப்படுகிறது! தயவு செய்து செய்தியை மாற்றுக(மாதிரிக்கு: இணைப்புக்களை அழிக்கவும்)'
|
||||
|
||||
[admin]
|
||||
enabled = 'செயல்பட வை'
|
||||
|
@ -690,14 +749,14 @@ user_administr_link = 'பயன் படுத்துபவர
|
|||
smilies_administr_link = 'சிரிப்பு முகங்கள்'
|
||||
pages_administr_link = 'பக்கங்கள்'
|
||||
spam_protection_link = 'ஸ்பேம் காப்பு'
|
||||
backup_restore_link = 'காப்பீடு செய்'
|
||||
update_link = 'புதுப்பிக்க'
|
||||
reset_uninstall_link = 'நிலையை மீட்டு அல்லது பொது மன்றத்தை நீக்குக'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '<!-- TODO -->Currently available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version_header = '<!-- TODO -->Currently installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -713,6 +772,8 @@ forum_address = 'பொது மன்ற விலாசம
|
|||
forum_address_desc = 'பொது மன்றத்தின் URL (http://www.domain.tld/forum/) இம் மாதிரியாக இருக்கவேண்டும்'
|
||||
forum_email = 'பொது மன்ற மின்-அசல் விலாசம்'
|
||||
forum_email_desc = 'பொது மன்றத்திலிருந்து செல்லும் அனைத்து மின்-அசலுக்கும் அநுப்புனர் விலாசமாகவும் மற்றும் அநுகுதலுக்கான விலாசமாகவும் பயன்படுத்தப்படும்'
|
||||
forum_target_name = '<!-- TODO -->Link window target'
|
||||
forum_target_name_desc = '<!-- TODO -->The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
home_link = 'முதல் பக்க இணைப்பு'
|
||||
home_link_desc = 'உங்கள் முதல் பக்க இணைப்பு, மாதிறி. http://www.domain.tld/ or ../index.html (விரும்பினால்)'
|
||||
home_link_name = 'முதல் பக்க இணைப்பு பெயர்'
|
||||
|
@ -745,12 +806,13 @@ all_users = 'அனைத்து'
|
|||
register_permission = 'பயன் படுத்துபவரை பதிவு செய்'
|
||||
register_permission_desc = 'பயன் படுத்துபவர் அவர்களாகவே பதிவு செய்துகொள்ல முடியுமா?'
|
||||
register_self = 'தானே'
|
||||
register_self_locked = 'தானே அனால் புதிய கணக்கை நிர்வாகி or a துணை நிர்வாகி திறந்து விடவேண்டும்'
|
||||
register_self_locked = '<!-- TODO -->தானே அனால் புதிய கணக்கை நிர்வாகி or a துணை நிர்வாகி திறந்து விடவேண்டும்'
|
||||
register_only_admin = 'நிர்வாகியால் மட்டும்'
|
||||
user_area = 'பயன் படுத்துபவர் பகுதி'
|
||||
user_area_desc = 'பயன் படுத்துபவர் பகுதியில்(பயன் படுத்துபவர் பட்டியல், விபரங்கள்) அநைவரும் அநுகலாம்?'
|
||||
public_accessible = 'அநைவரும் அநுகலாம்'
|
||||
accessible_reg_users_only = 'பதிவு செய்தவர்கள் மட்டும் அநுகுக'
|
||||
accessible_team_users_only = '<!-- TODO -->accessible by administrators and moderators only'
|
||||
latest_postings = 'சமீபத்திய போஸ்டிங்'
|
||||
latest_postings_desc = 'எத்தனை சமீபத்திய போஸ்டிங் முதல் பக்க பட்டியலில் காட்ச்சிக்கு வைக்கவேண்டும்(0=முடக்கப்பட்டிருக்கிறது)?'
|
||||
tag_cloud = 'அடையாள மேகம்'
|
||||
|
@ -760,6 +822,10 @@ terms_of_use_settings = 'உபயொக விதிமுரைக
|
|||
terms_of_use_settings_desc = 'வேண்டுகோள்! பதிவு செய்யாதற்கும், செய்தி அநுப்புவதற்கும். பதிவு செய்யாதவர்களுக்கான உபயொக விதிமுரை உடன்பாடு.'
|
||||
terms_of_use_settings_enabled = 'உபயொக விதிமுரைக்கான உடன்பாட்டை செயல்பட வை'
|
||||
terms_of_use_url = 'உபயொக விதிமுரைக்கான URL:'
|
||||
data_privacy_statement = '<!-- TODO -->Data privacy statement'
|
||||
data_privacy_statement_desc = '<!-- TODO -->Obligation for unregistered users to agree to the data privacy statement when posting messages and registering'
|
||||
data_privacy_settings_enabled = '<!-- TODO -->Data privacy statement enabled'
|
||||
data_privacy_url = '<!-- TODO -->Data privacy statement URL:'
|
||||
edit_postings = 'போஸ்டிங்கை மாற்றுக'
|
||||
edit_postings_desc = 'போஸ்டிங் நடத்தையை மாற்றுக'
|
||||
edit_own_postings = 'சொந்த போஸ்டிங்கை மாற்றுக'
|
||||
|
@ -775,7 +841,6 @@ bbcode = 'BB குறியீடு'
|
|||
bbcode_desc = 'செய்தியை முரைப்படுத்த BB குறியீடு செயல்படுத்தவும்?'
|
||||
bbcodes_enabled = 'BB குறியீடு செயல்பட வை'
|
||||
bbcodes_img_enabled = 'BB குறியீடு மூலம் படத்தை செருகுக அனுமதிக்கவும்'
|
||||
bbcodes_flash_enabled = 'BB குறியீடு மூலம் பிளாஷ் வீடியோவை செருகுக அனுமதிக்கவும்'
|
||||
smilies = 'சிரிப்பு முகங்கள்'
|
||||
smilies_desc = '":-)" இது போன்ற சிரிப்பு முகங்களை படமாக மாற்ற வேண்டுமா? (சிரிப்பு முகங்களை சிரிப்பு முகங்களுக்கான நிர்வாக பக்கத்தின் மூலம் உருவாக்குக)'
|
||||
smilies_enabled = 'சிரிப்பு முகங்களை செயல்பட வை'
|
||||
|
@ -860,6 +925,7 @@ delete_page_submit = 'சரி - பக்கத்தை அழ
|
|||
error_no_page_title = 'தலைப்பு இல்லை'
|
||||
|
||||
# பயன் படுத்துபவர் நிர்வாகம்:
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name_empty = 'பயன் படுத்துபவர் பெயர் நுழைக்கவில்லை'
|
||||
num_registerd_users = '[number] பதிவு செய்தவர்'
|
||||
user_id = 'ID'
|
||||
|
@ -883,7 +949,10 @@ activate_link = 'கணக்கை செயல்படு
|
|||
delete_selected_users = 'தேர்வுசெய்தை அழிக்கவும்'
|
||||
add_user = 'பயன் படுத்துபவரை சேர்'
|
||||
email_list = 'பதிவு செய்தவர்களின் மின்-அசல் பட்டியல்'
|
||||
reset_terms_of_use = '<!-- TODO -->reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
|
||||
clear_userdata = 'பயன் படுத்துபவேரின் தகவலை நீக்கவும்'
|
||||
edit_user_avatar = '<!-- TODO -->Avatar:'
|
||||
delete_avatar = 'உருவ படம் அழிக்கவும்'
|
||||
delete_user_confirmation = 'பயன் படுத்துபவரை அழிக்க வேண்டும்?'
|
||||
delete_users_confirmation = 'பின் வரும் பயன் படுத்துபவரை அழிக்க வேண்டும்?'
|
||||
|
@ -896,13 +965,29 @@ register_pw = 'மறைவு சொல்:'
|
|||
register_pw_conf = 'மறைவு சொல்லை உருதிசெய்:'
|
||||
register_send_userdata = 'பயன் படுத்துபவேரின் தகவலை மெற்கூரிய மின்-அசல் விலாசத்திற்கு அநுப்பவும்'
|
||||
error_send_userdata = 'மறைவு சொல்லுக்கான இடத்தை நிரப்பாமல் விட்டால், பயன் படுத்துபவேரின் தகவல் மின் அஞ்சலுக்கு அநுப்பப்படும்.'
|
||||
error_email_wrong = 'மின்-அசல் சரியானது அல்ல'
|
||||
admin_reg_error_email_wrong = 'மின்-அசல் சரியானது அல்ல'
|
||||
new_user_registered = 'பயன் படுத்துபவர் "[name]" பதிவுசெய்யப்பட்டுவிட்டது.'
|
||||
new_user_reg_send_error = 'பயன் படுத்துபவர் "[name]" பதிவுசெய்யப்பட்டுவிட்டது அனால்பயன் படுத்துபவேரின் தகவலை அநுப்பப்பமுடியவில்லை.'
|
||||
clear_userdata_condition = 'அதிகபட்ச்சம் [logins] நேரம் பொது மன்றத்தில் நுழைந்திருப்பவரையும், போன முரை [days] நாளுக்கு மேல் நுழைந்திருப்பவரையும் அழிக்கவும்.'
|
||||
clear_userdata_note = 'நிர்வாகி மற்றும் துணை நிர்வாகி தாக்கப்படமாட்டார்கள். அழிக்கும் முன் தெரிவு செய்யப்பட்ட பயன் படுத்துபவர் பட்டியலை பெருக.'
|
||||
no_users_in_selection = 'தெரிவு செய்யப்பட்ட பட்டியலில் யாரும் இல்லை'
|
||||
|
||||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'எந்த படிவம் எந்த வகை CAPTCHA வால் பாதுகாக்கப்படவேண்டும் (பதிவு செய்யாதவர்களுக்கு மட்டும்)?'
|
||||
|
@ -915,20 +1000,21 @@ captcha_mathematical = 'கணிதம்'
|
|||
captcha_graphical = 'படத்துடன் கூடிய'
|
||||
gr_captcha_not_available = 'படத்துடன் கூடிய CAPTCHA பெற முடியாது(GD Lib இல்லை)'
|
||||
gr_captcha_no_font = 'வார்த்தை வடிவம் இல்லை, CAPTCHA குறியீடு காட்சிக்கு கொண்டுவரமுடியாது'
|
||||
b8 = 'B8'
|
||||
b8_desc = '<!-- TODO -->Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = '<!-- TODO -->check posting form'
|
||||
b8_mail_check_enable = '<!-- TODO -->check e-mail form'
|
||||
b8_auto_training_enable = '<!-- TODO -->Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
bad_behavior = 'தவறான நடத்தை'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">தவறான நடத்தை</a> நம்பத்தகாதவரிடமிருந்து பாதுகாப்பு.'
|
||||
bad_behavior_enable = 'தவறான நடத்தையை காண்பிக்கச் செய்'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> நம்பத்தகாதவரிடமிருந்து பாதுகாப்தற்கான சேவை. இந்த சேவையை பயனபடுத்த, உங்களுக்கு <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> தேவைப்படுகிறது (API சாவி இல்லாமலோ அல்லது செல்லாததோ ஆனால் இது வேலை செய்யாது!).'
|
||||
akismet_key = 'Wordpress API சாவி:'
|
||||
akismet_save_spam = 'நம்பத்தகாதது சேமிக்கவும் (நம்பத்தகாதது என கொடி அசை மேலும் காட்சிக்கு வைக்கவில்லை)?'
|
||||
akismet_auto_delete_spam = 'நம்பத்தகாததை எத்தனை மணி நேரத்திற்கு பிறகு தானாகவே அழிக்கவேண்டும்(0=அழிக்கவேண்டாம்)?'
|
||||
akismet_entry = 'அஞ்சல் படிவத்தை சரிபார்க்க'
|
||||
akismet_mail = 'மின்-அஞ்சல் படிவத்தை சரிபார்க்க'
|
||||
akismet_registered = '<!-- TODO -->check submissions of registered users'
|
||||
banned_ips = 'தடைவிதிக்கப்பட்ட IP கள்'
|
||||
banned_ips_desc = 'அநுமதிக்க்த்கூடாத IP விலாசங்கள். IP எல்லைகள் (e.g. 10.10.1.*) மேலும் CIDR குறியீடு (e.g. 10.10.1.32/27) முடியும். ஒரு கோட்டில் ஒரு IP.'
|
||||
banned_user_agents = 'தடைவிதிக்கப்பட்ட பயன்படுத்துபவர் பிரதிநிதி'
|
||||
|
@ -939,6 +1025,12 @@ spam_protection_submit = 'சரி - சேமிக்கவும்
|
|||
error_own_ip_banned = 'நீங்கள் உங்களுடைய சொந்த IP யை தடைசெய்துள்ளீர்கள்!'
|
||||
error_own_user_agent_banned = 'நீங்கள் உங்களுடைய சொந்த பயன்படுத்துபவர் பிரதிநிதியையே தடைசெய்துள்ளீர்கள்!'
|
||||
spam_protection_saved = 'சேமிக்கபட்டுவிட்டது'
|
||||
spam_check_registered = '<!-- TODO -->submissions of registered users'
|
||||
spam_check_registered_desc = '<!-- TODO -->check submissions of registered users for spam using enabled filters'
|
||||
spam_check_registered_enable = '<!-- TODO -->check submissions of registered users for spam'
|
||||
auto_delete_spam = '<!-- TODO -->Delete spam automatically'
|
||||
auto_delete_spam_desc = '<!-- TODO -->Retention period of spam'
|
||||
auto_delete_spam_timespan = 'நம்பத்தகாததை எத்தனை மணி நேரத்திற்கு பிறகு தானாகவே அழிக்கவேண்டும்(0=அழிக்கவேண்டாம்)?'
|
||||
|
||||
# நிலையை மீட்டு / நீக்குக:
|
||||
reset_forum = 'பொது மன்றத்தை நிலையை மீட்டு'
|
||||
|
@ -950,45 +1042,14 @@ uninstall_forum_exp = 'இது அனைத்து பொது
|
|||
uninstall_forum_submit = 'சரி - பொது மன்றத்தை நீக்குக'
|
||||
error_no_selection_made = 'தேர்வு செய்யும் முறை அல்ல'
|
||||
|
||||
# காத்து வை:
|
||||
backup_note = 'காத்து வைக்க செய்தல் வேலையை செய்வதற்கு <i>backup</i> என்ற உறை எழுதக்கூடியதாக இறுக்கவேண்டும். மேலும் இந்த உறையை இணையதளதாதின் வழியாக பெற இயலாமல் செய்யவும்!'
|
||||
backup_file = 'கோப்பு'
|
||||
backup_date = 'நாள்'
|
||||
backup_size = 'அளவு'
|
||||
create_backup_complete = 'முழுமையாக காத்து வைக்கவும்'
|
||||
only_create_backup_of = 'காத்து வை :'
|
||||
backup_entries = 'பதிவுகள்'
|
||||
backup_userdata = 'பயன் படுத்துபவேரின் தகவல்'
|
||||
backup_settings = 'அமைப்புகள்'
|
||||
backup_categories = 'பிரிவுகள்'
|
||||
backup_pages = 'பக்கங்கள்'
|
||||
backup_smilies = 'சிரிப்பு முகங்கள்'
|
||||
backup_banlists = 'தடைவிதிக்கப்பட்ட பட்டியல்'
|
||||
backup_bookmarks = '<!-- TODO -->bookmarks'
|
||||
backup_read_status = '<!-- TODO -->read status'
|
||||
backup_temp_infos = '<!-- TODO -->temporary informations'
|
||||
download_backup_file = 'முழுமையாக காத்து வைத்த கோப்பை இங்கு கொண்டுவருக'
|
||||
delete_selected = 'தேர்வு செய்தவற்றை அழிக்க'
|
||||
restore = 'திரும்பப்பெரு'
|
||||
delete_backup_file = 'காத்து வைத்த கோப்பை அழி'
|
||||
delete_backup_submit = 'சரி - அழி'
|
||||
restore_confirm = 'நிச்சயமாக உங்களுக்கு இந்த காத்து வைக்கப்பட்ட கோப்பிலிருந்து டேடாபேஸை பழய நிலைக்கு கொண்டுவரவேண்டுமா?<br/><strong>அனைத்து பாதிக்கப்பட்ட அட்டவனைகளும் மீண்டும் எழுதப்படும் !</strong>'
|
||||
restore_safe_mode_warning = 'பாதுகாப்பு வித எச்சரிக்கை!'
|
||||
restore_safe_mode_note = 'இந்த சேவை மைய்யத்தின் பாதுகாப்பு முறை தூண்டப்பட்டிறுப்பதால் ஸ்கிரிப்ட் ஓடும் நேரத்தை நீட்டிக்க இயலாது! காத்து வைக்கும் முயற்சி முடிவடையாமல் போவதை தடுக்க, நீங்கள் நீண்ட கோப்புகளை பல சிரிய கோப்புகளாக பிரித்து ஒன்றன் பின் ஒன்றாக செயல்பட செய்யவேண்டும்!'
|
||||
restore_submit = 'சரி - திரும்பப்பெரு'
|
||||
restore_backup_ok = 'காப்பீடு திரும்பப்பெரப்பட்டது.'
|
||||
backup_file_created = 'காத்து வைப்பு கோப்பு உருவாக்கப்பட்டுவிட்டது .'
|
||||
error_file_doesnt_exist = 'கோப்பு இல்லை!'
|
||||
error_delete_backup_file = 'காப்பீடு செய்த கோப்பை அழிக்க முடியவில்லை'
|
||||
error_create_backup_file = 'கோப்பை உருவாக்க முடியவில்லை - நீங்கள் சரியான எழுதும் அநுமதியை "backup" என்ற உறைக்கு அமைத்திருக்கிறீர்களா என உறுதி செய்துகொள்ளுங்கள்'
|
||||
error_restore_mysql = 'MySQL தவரு: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'தற்போதைய பதிப்பு: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'எப்படி புதுப்பிப்பது'
|
||||
update_instructions = 'பொது மன்றத்தினை புதுப்பிக்கவேண்டுமானால், பொது மன்றத்தினை செயலிழக்கச்செய்யுமாறு அறிவுறுத்தப்படுகிறது(பொது மன்றத்தினை செயல்பட வை எனற குறிகளை நீக்கு <a href="index.php?mode=admin&action=settings">forum settings</a>)'
|
||||
update_instructions = 'தற்போதைய பதிப்பை பெற <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'ஸ்கிரிப்ட் பையை அவிழ்த்து,புதுப்பிப்பதற்கான கோப்பை "update" என்ற துணை உறையில் பார்க்கவும் மேலும் இந்த கோப்பை உங்கள் சேவை மைய்யத்தின் "update" உறைக்கு நகற்த்துக.'
|
||||
update_instructions = '<!-- TODO -->Look for the according update file in the subfolder "update" and upload this file into the folder "update" on your server'
|
||||
update_instructions = '<!-- TODO -->Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'இந்த பக்கங்களை மீண்டும் கொண்டுவந்தால் புதுப்பிப்பதற்கான கோப்பை கீழே பார்க்கலாம்'
|
||||
update_instructions = 'கோப்பின்மீது அழுத்தவும் மேலும் வரக்கூடிய உத்தறவுகளை பின்பற்றவும்'
|
||||
update_instructions = 'புதுப்பிப்பத பிறகு, உங்களுக்கு எந்த் உறை அல்லது கோப்பினை சேர்க்கவோ அல்லது நீக்கவோ வேண்டும் எனற பட்டியல் கிடைக்கும்,<code>templates_c</code> ல் உள்ள கோப்புகளை நீக்க வேண்டும்'
|
||||
|
@ -1001,13 +1062,21 @@ update_submit = 'சரி - புதுப்பிக்க
|
|||
update_successful = 'டேடாபேஸ் புதுப்பிக்கமுடியவில்லை.'
|
||||
update_items_note = 'தயவு செய்து இந்த புதிய பொது மன்றத்தின் (பதிப்பு [version]) உறை / கோப்பை உங்கள் சேவை மைய்யத்திற்கு நகற்த்துக :'
|
||||
update_download = 'நீங்கள் இன்னும் இந்த கோப்புகளை பொறவில்லையேல் அநுகவும் [[here]] .'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'பதில் "[original_subject]"'
|
||||
email_text = """வணக்கம் [recipient],
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
[unsubscribe_address]
|
||||
|
||||
\"[original_subject]\" க்கான பதில் அஞ்சலை [name] அநுப்பியுள்ளார் :
|
||||
|
||||
Subject: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
அஞ்சலுக்கான URL: [posting_address]
|
||||
|
@ -1017,7 +1086,7 @@ Subject: [subject]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
அஞ்சலை மேநுவலாக தூண்டப்பட்டிறுப்பதால் இந்த குரிப்பு காண்பிக்கப்படுகிறது """
|
||||
அஞ்சலை மேநுவலாக தூண்டப்பட்டிறுப்பதால் இந்த குரிப்பு காண்பிக்கப்படுகிறது . This is an automatically generated email, please do not reply to this email."""
|
||||
|
||||
admin_email_subject = 'பொது மன்றத்தின் புதிய பதிவு: [subject]'
|
||||
admin_email_text = """புதிய பதிவை செய்தவர் [name]
|
||||
|
@ -1025,15 +1094,20 @@ admin_email_text = """புதிய பதிவை செய
|
|||
|
||||
[text]
|
||||
|
||||
அஞ்சலுக்கான URL: [posting_address]"""
|
||||
அஞ்சலுக்கான URL: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_email_text_reply = """பதிலளித்தவர் [name]
|
||||
பாடம்: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
அஞ்சலுக்கான URL: [posting_address]"""
|
||||
அஞ்சலுக்கான URL: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_reg_user_email_subj = 'பொது மன்றத்தின் விண்ணப்ப படிவம்'
|
||||
admin_reg_user_email_text = """வணக்கம் [name],
|
||||
|
||||
பொது மன்றத்திற்கு வருக!
|
||||
|
||||
பொது மன்றத்தினுள் நுழைவதற்கான விஷயங்கள்:
|
||||
|
@ -1044,46 +1118,66 @@ admin_reg_user_email_text = """வணக்கம் [name],
|
|||
நேரடியாக நுழைவதற்கான இணைப்பு:
|
||||
[login_link]
|
||||
|
||||
மறைவு சொல்லை பொது மன்றத்தினுள் செந்றபின் மாற்றிக்கொள்ளலாம்."""
|
||||
மறைவு சொல்லை பொது மன்றத்தினுள் செந்றபின் மாற்றிக்கொள்ளலாம்.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
admin_activate_user_email_subj = 'Forum registration'
|
||||
admin_activate_user_email_text = """Hi [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
Link to log in directly:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
new_user_email_sj = 'பொது மன்றத்தின் விண்ணப்ப படிவம்'
|
||||
new_user_email_txt = """வணக்கம் [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
உங்களுடைய கணக்கை தூண்ட இந்த இணைப்பை பின்பற்றவும்:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_sj = 'புதிய சந்தாதாரர்'
|
||||
new_user_notif_txt = """வணக்கம் [recipient],
|
||||
|
||||
புதிய சந்தாதாரர் பொது மன்றத்தில் சேர்ந்திருக்கிறார்.
|
||||
பயன்படுத்துபவர் பெயர்: [name]
|
||||
மின் அஞ்சல் : [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_txt_locked = """வணக்கம் [recipient],
|
||||
|
||||
புதிய சந்தாதாரர் பொது மன்றத்தில் சேர்ந்திருக்கிறார்.
|
||||
பயன்படுத்துபவர் பெயர்: [name]
|
||||
மின் அஞ்சல்: [email]
|
||||
|
||||
முக்குய அரிவிப்பு: இந்த பயன் படுத்துபவரை பொது மன்றத்தில் நுழைவதற்காக அநுமதிக்கவேண்டும்!"""
|
||||
முக்குய அரிவிப்பு: இந்த பயன் படுத்துபவரை பொது மன்றத்தில் நுழைவதற்காக அநுமதிக்கவேண்டும்!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
edit_address_email_sj = 'மின் அஞ்சல் விலாசம் மாற்றப்பட்டவுடன் கணக்கு பயன்பாட்டுக்கு வறும்'
|
||||
edit_address_email_txt = """வணக்கம் [name],
|
||||
|
||||
மின் அஞ்சல விலாசம் மாற்றப்படவேண்டும். மேலும் நீங்கள் இந்த [activate_link] இணைப்பை பயன்படுத்தி உங்கள் கணக்கை மீண்டும் புதுப்பிக்கவும்:
|
||||
"""
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
pwf_activating_email_sj = 'புதிய மறைவு சொல்லுக்கான வேண்டுகோள்'
|
||||
pwf_activating_email_txt = """வணக்கம் [name],
|
||||
|
||||
புதிய மறைவு சொல்லுக்கான வேண்டுகோளினால், இந்த மின் அஞ்சல் பொது மன்றத்திலிருந்து அநுப்பப்பட்டது ([forum_address]).தயவு செய்து கீழுள்ள இணைப்பை அழுத்தி உங்களின் வேண்டுகோளை உறுதிசெய்க. இந்த இணைப்பை பின்தொடர்ந்தால்,உங்களுக்கான புதிய மறைவு சொல் உருவாக்கப்பட்டு அநுப்பப்படும். தவறுதலாக இந்த மின் அஞ்சல் அநுப்பப்பட்டிறுக்குமேயானால் தயவு செய்து புறக்கணிக்கவும்.
|
||||
|
||||
[activating_link]"""
|
||||
Link to confirm your request:
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_pw_email_sj = 'பொது மன்றத்திற்கான புதிய சந்தாதாரின் விபரம்'
|
||||
new_pw_email_txt = """வணக்கம் [name],
|
||||
|
||||
புதிய சந்தாதாரின் விபரம்:
|
||||
|
||||
பயன்படுத்துபவர் பெயர்: [name]
|
||||
|
@ -1092,7 +1186,9 @@ new_pw_email_txt = """வணக்கம் [name],
|
|||
நேரடியாக நுழைவதற்கான இணைப்பு:
|
||||
[login_link]
|
||||
|
||||
மறைவு சொல்லை பொது மன்றத்தினுள் செந்றபின் மாற்றிக்கொள்ளலாம்."""
|
||||
மறைவு சொல்லை பொது மன்றத்தினுள் செந்றபின் மாற்றிக்கொள்ளலாம்.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1109,6 +1205,20 @@ contact_notification_txt = """இந்த மின் அஞ்சல
|
|||
|
||||
--
|
||||
இந்த மின் அஞ்சல் [forum_address] என்ற பொது மன்றத்திலிருந்து அநுப்பப்பட்டது ."""
|
||||
# <!-- TODO --> #
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
|
||||
Kind regards
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
[install]
|
||||
installation_title = 'நிறுவுதல்'
|
||||
|
@ -1157,5 +1267,6 @@ error_db_inexistent = 'கு்றிப்பிட்ட டே
|
|||
error_sql_file_doesnt_exist = 'நிறுவுதலுக்கு தேவையான SQL கோப்பு (install.sql) காணவில்லை'
|
||||
error_overwrite_config_file = 'கோப்பின் மறுபடியும் எழுத அநுமதி இல்லை <code>config/db_settings.php</code> (set CHMOD 666, current is [CHMOD])'
|
||||
error_sql = 'SQL தவறு'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'ஆம் - பொது மன்றத்தை நிறுவுக'
|
||||
error_conf_pw = 'நிர்வாகியின் மறைவு சொல்ல் பொறுந்தவில்லை'
|
||||
|
|
|
@ -1,25 +1,38 @@
|
|||
################################################################################
|
||||
# Turkish language file for my little forum 2.4 #
|
||||
# Turkish language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated by Özgür Kazanççı < ozgur dot kazancci at info dot uvt dot ro > #
|
||||
# 2010-02-08 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = tr
|
||||
language_code = 'tr'
|
||||
language_name_system = 'turkish'
|
||||
language_name_own = 'türkçe'
|
||||
charset = utf-8
|
||||
#locale = tr_TR.utf8
|
||||
#locale = tr_TR
|
||||
#locale = tr
|
||||
# Caution: setting Turkish locale can cause problems --> http://bugs.php.net/39993
|
||||
locale = en_US.utf8
|
||||
locale = en_US
|
||||
locale = en
|
||||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = %d-%m-%Y, %H:%M
|
||||
time_format_full = %A, %B %d, %Y, %H:%M
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'dd MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forum zamanı: [time]'
|
||||
forum_time_with_time_zone = 'Forum zamanı: [time] ([time_zone])'
|
||||
unknown_user = 'bilinmeyen'
|
||||
|
@ -34,6 +47,7 @@ replies = 'Yanıtlar'
|
|||
views = 'Görünüm'
|
||||
category = 'Kategori'
|
||||
submit_button_ok = ' Tamam '
|
||||
submit_button_cancel = '<!-- TODO --> Cancel '
|
||||
yes = 'evet'
|
||||
no = 'hayır'
|
||||
go = 'Git'
|
||||
|
@ -43,8 +57,8 @@ next_page_link = 'Sonraki sayfa »'
|
|||
previous_page_link = '« Önceki sayfa'
|
||||
next_page_link_title = 'sonraki sayfa'
|
||||
previous_page_link_title = 'önceki sayfa'
|
||||
posted_by = 'gönderen: <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'gönderen: <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'gönderen: [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'gönderen: [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'asıl [name] orijinal izlenime geçmek için tıklayınız'
|
||||
error_headline = 'Hata!'
|
||||
no_authorisation = 'Yetki yok!'
|
||||
|
@ -70,6 +84,8 @@ search_default_value = 'Arama …'
|
|||
search_title = 'iletileri ara'
|
||||
new_topic_link = 'Yeni başlık'
|
||||
new_topic_link_title = 'Yeni bir başlık gönder'
|
||||
back_to_top_link = '<!-- TODO -->To top'
|
||||
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
|
||||
order_link = 'Sırala'
|
||||
order_link_title_1 = 'Son yanıt tarihine göre sırala'
|
||||
order_link_title_2 = 'Konu tarihine göre sırala (varsayılan)'
|
||||
|
@ -96,7 +112,7 @@ expand_fold_thread_linktitle = 'Konuları genişlet / katla'
|
|||
category_title = 'Kategori'
|
||||
all_categories = 'Tüm kategoriler'
|
||||
my_category_selection = 'Seçimim'
|
||||
page_title = 'Sayfa'
|
||||
browse_page_title = 'Sayfa'
|
||||
thread_entry_back_link = 'Forum ana sayfasına geri dön'
|
||||
thread_entry_back_title = 'Forum ana sayfası'
|
||||
reply_link = 'Yanıt gönder'
|
||||
|
@ -107,6 +123,8 @@ back_to_entry_link = '[name] girişine geri dön'
|
|||
back_to_entry_link_title = '[name] girişine geri dön'
|
||||
subnav_login = 'Giriş'
|
||||
subnav_pw_forgotten = 'Unutulmuş parola'
|
||||
subnav_accept_dps = '<!-- TODO -->Accept the data privacy statement'
|
||||
subnav_accept_tou = '<!-- TODO -->Accept the terms of use agreement'
|
||||
subnav_admin_area = 'Yönetici alanı'
|
||||
subnav_settings = 'Forum ayarları'
|
||||
subnav_advanced_settings = 'Gelişmiş ayarlar'
|
||||
|
@ -139,6 +157,7 @@ subnav_userarea_show_posts = '[var] göre gönderimler'
|
|||
subnav_userarea_edit_user = 'Profil Düzenle'
|
||||
subnav_userarea_edit_pw = 'şifre Değiştir'
|
||||
subnav_userarea_edit_mail = 'E-posta adresini değiştir'
|
||||
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
|
||||
subnav_backup = 'Yedekle'
|
||||
subnav_update = 'Güncelleme'
|
||||
subnav_update_run = 'Güncellemeyi çalıştır'
|
||||
|
@ -150,6 +169,8 @@ subnav_disabled = 'Forum kapalı'
|
|||
subnav_bookmarks = '<!-- TODO -->Bookmarks'
|
||||
subnav_delete_bookmark = '<!-- TODO -->Delete bookmark'
|
||||
subnav_edit_bookmark = '<!-- TODO -->Edit bookmark'
|
||||
subnav_list_uploads = '<!-- TODO -->List of uploads'
|
||||
subnav_confirm_delete_uploads = '<!-- TODO -->Delete uploads'
|
||||
subnav_page_error = 'Hata'
|
||||
subnav_page = '[var]'
|
||||
counter = 'Forumumuzda toplam [total_threads] adet konu içerisinde [total_postings] adet mesaj ve [registered_users] adet kayıtlı kullanıcı'
|
||||
|
@ -176,7 +197,6 @@ error_invalid_date_format = 'Geçersiz doğum tarihi (YYYY-AA-GG)'
|
|||
error_invalid_date = 'Geçersiz doğum tarihi'
|
||||
error_email_wrong = 'E-posta adresi geçersiz'
|
||||
error_hp_wrong = 'Ana sayfa adresi geçersiz'
|
||||
error_pw_conf_wrong = 'Tekrarlanan parola öncekiyle aynı değil'
|
||||
error_akismet_connection = 'Sunucu zaman aşımına uğradı, lütfen tekrar deneyin!'
|
||||
error_akismet_connection_admin = 'API anahtarını doğrulatabilmek için Akismet sunucusuna denenen bağlantı sağlanamadı!'
|
||||
error_akismet_api_key = 'Geçersiz Wordpress API anahtarı'
|
||||
|
@ -186,6 +206,7 @@ open_whole_thread = 'Başlığı tamamiyle aç'
|
|||
change_category_link = '"[category]" kategorisindeki mesajları göster'
|
||||
mark_linktitle = 'Mesajı işaretle'
|
||||
unmark_linktitle = 'Mesaj işaretini kaldır'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'İşaretli mesajları sil'
|
||||
manage_postings_link = 'Mesajları düzenle'
|
||||
non_activated_users_link = '<!-- TODO -->[counter] non-activated user(s)'
|
||||
|
@ -200,6 +221,8 @@ more_smilies_label = 'daha...'
|
|||
more_smilies_title = 'daha fazla simgeler'
|
||||
close = 'kapat'
|
||||
no_postings_user = 'Gönderim yok.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Ara'
|
||||
search_fulltext = 'tüm metin'
|
||||
search_tags = 'konular'
|
||||
|
@ -240,6 +263,7 @@ error_invalid_form = '<!-- TODO -->Invalid request - please try aga
|
|||
error_form_sent_too_fast = 'Form çok hızlı gönderildi - lütfen bir kaç saniye bekleyip tekrar deneyiniz (otomatik form gönderim koruması)'
|
||||
error_form_sent_too_slow = 'Form artık geçerli değil - lütfen metni kopyalayıp sayfayı tekrar yenileyiniz'
|
||||
terms_of_use_agreement = '[[terms of use]] metnini kabul ediyorum'
|
||||
data_privacy_agreement = '<!-- TODO -->I agree to the [[data privacy statement]]'
|
||||
error_not_accepted_word = 'Kabul edilmeyen kelime: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Kabul edilmeyen kelimeler: [not_accepted_words]'
|
||||
error_username_invalid_chars = '<!-- TODO -->The user name contains invalid characters'
|
||||
|
@ -248,7 +272,7 @@ user_locked_message = 'Hesabınız şimdilik kilitli.'
|
|||
forum_disabled = 'Forum şimdilik aktif değil.'
|
||||
cookie_deleted = 'Çerezler silindi.'
|
||||
ajax_preview_title = 'Önizleme göster'
|
||||
bbcode_link_link = 'Metnin bağlantısı (opsiyonel):'
|
||||
bbcode_link_text = 'Metnin bağlantısı (opsiyonel):'
|
||||
bbcode_link_url = 'Link bağlantısı (URL):'
|
||||
bbcode_image_url = 'Resim adresi (URL):'
|
||||
bbcode_tex_code = '<!-- TODO -->TeX formula (e.g. \sqrt{x}):'
|
||||
|
@ -259,14 +283,20 @@ error_no_subject = 'Konu girilmedi'
|
|||
error_no_text = 'Mesaj yazılmadı'
|
||||
terms_of_use_error_register = 'Kaydınızı bitirebilmeniz için kullanım şartları metnini kabul etmeniz gerekmektedir'
|
||||
terms_of_use_error_posting = 'Bu mesajı gönderebilmeniz için kullanım şartları metnini kabul etmeniz gerekmektedir'
|
||||
terms_of_use_error_reconf = '<!-- TODO -->You have to agree to the changes of the terms of use in order to submit further messages'
|
||||
data_priv_statement_error_reg = '<!-- TODO -->You have to agree to the data privacy statement in order to complete the registration'
|
||||
data_priv_statement_error_post = '<!-- TODO -->You have to agree to the data privacy statement in order to submit this message'
|
||||
data_priv_statement_error_reconf ='<!-- TODO -->You have to agree to the changes of the data privacy statement in order to submit further messages'
|
||||
submit_button_agreed = '<!-- TODO -->I agree'
|
||||
submit_button_disagreed = '<!-- TODO -->I disagree'
|
||||
check_all = 'hepsini seç'
|
||||
uncheck_all = 'hepsinin seçimi kaldır'
|
||||
delete_backup_confirm = 'Seçili bu yedekleme dosyasını silmek istediğinizden emin misiniz?'
|
||||
delete_sel_backup_confirm = 'Seçili tüm yedekleme dosyalarını silmek istediğinizden emin misiniz?'
|
||||
drag_and_drop_title = 'aşağı / yukarı taşımak için sürükle & bırak'
|
||||
show_all_postings_link = 'iletileri göster'
|
||||
show_bookmarks_link = '<!-- TODO -->Bookmarks'
|
||||
show_userdata_linktitle = '<!-- TODO -->Visit profil of [user]'
|
||||
show_password_title = '<!-- TODO -->Show password in plain text'
|
||||
hide_password_title = '<!-- TODO -->Hide password'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
|
||||
|
@ -288,7 +318,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = '[name] tarafından, [time] tarihinde düzenlendi'
|
||||
edited_by = '[name] tarafından<span class="interpunction">, </span>'
|
||||
tags_marking = 'Konular:'
|
||||
one_view = '1 kez okundu'
|
||||
several_views = '[views] kez okundu'
|
||||
|
@ -345,6 +375,8 @@ subject_marking = 'Konu:'
|
|||
message_marking = 'Mesaj:'
|
||||
tags_marking = 'Konular:'
|
||||
tags_note = '(opsiyonel, virgül ile ayrılmış biçimde)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'koyu'
|
||||
bbcode_bold_title = 'Metni koyu biçimlendir'
|
||||
bbcode_bold_instruction = '[b]bold text[/b]'
|
||||
|
@ -377,15 +409,12 @@ bbcode_image_instr_right = '<!-- TODO -->right: [img=right]http://example
|
|||
bbcode_image_label_thumb = '<!-- TODO -->thumbnail'
|
||||
bbcode_image_instr_thumb = '<!-- TODO -->thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = '<!-- TODO -->thumbnail left'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = '<!-- TODO -->thumbnail right'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'yükle'
|
||||
bbcode_upload_title = 'Resim yükle'
|
||||
bbcode_upload_instruction = 'Resim yükle …'
|
||||
bbcode_flash_label = 'flash'
|
||||
bbcode_flash_title = 'Flash ekle'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = '<!-- TODO -->insert TeX code'
|
||||
bbcode_tex_instruction = '[tex]TeX code[/tex]'
|
||||
|
@ -401,6 +430,9 @@ insert_smiley_title = 'Simge ekle'
|
|||
email_notific_reply_thread = 'Bu mesaja gelen yanıtları E-posta ile bildir'
|
||||
email_notific_reply_post = 'Bu iletiye gelen yanıtların E-posta ile bildirimi'
|
||||
show_signature_marking = 'İmza ekle'
|
||||
sticky_none = '<!-- TODO -->Do not pin the thread'
|
||||
sticky_single_cat = '<!-- TODO -->Pin thread in the chosen category'
|
||||
sticky_all_cats = '<!-- TODO -->Pin thread to all categories'
|
||||
sticky_thread = 'Sabit'
|
||||
message_submit_button = 'Tamam - Gönder'
|
||||
message_submit_title = 'Girişi kaydet'
|
||||
|
@ -429,9 +461,8 @@ delete_spam_hl = 'Spam sil'
|
|||
delete_spam_confirm = 'Spam olarak belirlenmiş tüm iletileri silmek istediğinizden emin misiniz?'
|
||||
delete_posting_submit = 'Tamam - Sil'
|
||||
report_spam_hl = 'Spam bildir'
|
||||
report_spam_warning = '<!-- TODO -->Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
posting_already_spam = 'Bu ileti zaten spam olarak bildirilmiş durumda.'
|
||||
spamcheck_posting_not_checked = 'Bu ileti zaten ham olarak işaretli veya Akismet tarafından kontrol edilmedi. Akismet etkin olmayabilir veya ileti kayıtlı bir kullanıcıdan gelmiş olabilir.'
|
||||
spamcheck_posting_passed = 'Bu ileti Akismet spam filtresinden geçti. Sadece eğer gerçekten spam olduğunu düşünüyorsanız rapor ediniz.'
|
||||
spamcheck_akismet_api_error = 'Bu ileti Akismet spam filtresinden meydana gelen bir hatadan dolayı geçti. Geçersiz bir API anahtarından dolayı olabilir!'
|
||||
spamcheck_akismet_timeout_error = 'Bu ileti spam filtresinden geçti çünkü Akismet sunucusu zaman aşımına uğradı.'
|
||||
report_spam_delete_submit = 'Spam olarak bildir ve sil'
|
||||
|
@ -440,11 +471,17 @@ delete_only_submit = 'Sadece sil'
|
|||
postings_doesnt_exist = 'Bu gönderim mevcut değil!'
|
||||
posting_not_flagged_as_spam = 'Bu gönderim spam olarak işaretli değil.'
|
||||
flag_ham_hl = 'Ham olarak işaretle'
|
||||
flag_ham_note = 'Bu ileti Akismet tarafından spam olarak nitelendirildi. Sadece eğer kesinlikle spam değilse ham (spam değil) olarak rapor et!'
|
||||
flag_ham_warning = '<!-- TODO -->Please flag and report this entry only as ham (not spam), if it is definetly no spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
report_flag_ham_submit = 'Ham olarak işaretle ve rapor et'
|
||||
flag_ham_submit = 'Sadece ham olarak işaretle'
|
||||
no_authorisation_delete = 'Gönderim silinemiyor! Konu kilitli olabilir veya iletiye yanıtlar olabilir.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = '<!-- TODO -->Quitted subscription'
|
||||
unsubscribed_message = '<!-- TODO -->The subscription for informations about replies to your entry got quitted. You will not receive any more e-mails about this specific entry. Subscriptions for informations about further entries are not affected by this action.'
|
||||
unsubscribe_error_hl = '<!-- TODO -->Could not quit the subscription'
|
||||
unsubscribe_error_message = '<!-- TODO -->During the action to quit the subscription an error occured. Please inform the forum operator by e-mail about this issue. Please add the following informations: ID of the entry (take it from the link in the e-mail (URL-parameter "unsubscribe")) and the time of the failed action (add the name of your time zone if possible).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Spam koruma kontrolü:'
|
||||
captcha_expl_math = 'Lütfen verilen iki numarayı hesaplayınız:'
|
||||
|
@ -472,12 +509,6 @@ no_images = 'Resim yok.'
|
|||
delete_image_confirm = 'Bu resmi sil?'
|
||||
delete_image_button = 'Tamam - Sil'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = 'Flash video ekle
|
||||
flash_url = 'URL:
|
||||
flash_size = 'Boyut:
|
||||
insert_flash_button = 'Flash video ekle
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Kullanıcı resmi'
|
||||
delete_avatar = 'Kullanıcı resmi sil'
|
||||
|
@ -537,6 +568,7 @@ pwf_username = 'Kullanıcı:'
|
|||
pwf_email = 'E-posta:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Kullanıcı listesi'
|
||||
user_name = 'Kullanıcı'
|
||||
user_type = 'Tip'
|
||||
admin = 'Yönetici'
|
||||
|
@ -599,10 +631,13 @@ edit_email = 'E-posta adresini değiştir'
|
|||
edit_user_pw = 'Şifre:'
|
||||
pw_not_displayed = 'görüntülenmedi'
|
||||
edit_pw = 'Şifre değiştir'
|
||||
edit_user_email_contact = 'E-posta adresi irtibata açık'
|
||||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = 'İsim:'
|
||||
edit_user_gender = 'Cinsiyet:'
|
||||
gender_not_specified = 'not specified'
|
||||
gender_not_specified = 'belirtilmemiş'
|
||||
male = 'erkek'
|
||||
female = 'bayan'
|
||||
edit_user_birthday = 'Doğum tarihi:'
|
||||
|
@ -622,20 +657,35 @@ edit_user_theme = '<!-- TODO -->Theme:'
|
|||
edit_user_default_theme = '<!-- TODO -->Default ([default_theme])'
|
||||
edit_user_auto_login = 'Otomatik giriş:'
|
||||
enable_auto_login = 'otomatik giriş açık'
|
||||
edit_user_where_to_open_links = '<!-- TODO -->Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = '<!-- TODO -->Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = '<!-- TODO -->Open all links in same browser window'
|
||||
where_to_open_links_external = '<!-- TODO -->Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = '<!-- TODO -->Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_notification = 'E-posta bildirimi:'
|
||||
admin_mod_notif_posting = 'yeni bir mesaj gönderildiği zaman'
|
||||
admin_mod_notif_register = 'yeni bir kullanıcı kayıt olduğu zaman'
|
||||
userdata_submit_button = 'Tamam - Kaydet'
|
||||
profile_saved = 'Profil kaydedildi'
|
||||
pw_changed = 'Şifre değiştirildi'
|
||||
remove_user_account = 'Hesap silme'
|
||||
remove_user_account_link = '<!-- TODO -->Delete your user account'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = '<!-- TODO -->Delete account'
|
||||
remove_user_account_warning = '<!-- TODO -->Warning, once you delete your account, there is no going back. Please be certain! Bookmarks and account data will deleted. Your postings keep unchanged. Like an unregistered post, your display name ([user_name]) is used as author.'
|
||||
remove_user_confirm_password = 'Şifre:'
|
||||
error_pw_wrong = 'Şifre geçersiz'
|
||||
|
||||
[edit_pw]
|
||||
edit_pw_old = 'Eski şifre:'
|
||||
edit_pw_new = 'Yeni şifre:'
|
||||
edit_pw_conf = 'Yeni şifre tekrar:'
|
||||
error_old_pw_wrong = 'Eski şifre geçersiz'
|
||||
error_pw_conf_uneven = 'Yeni şifre tekrar edilen şifreyle farklı'
|
||||
error_new_pw_too_short = 'Yeni şifre en az [characters] karakter içermeli'
|
||||
error_new_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_new_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_new_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_new_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'E-posta adresiniz değiştirildiği zaman çıkış yapılacak ve hesabınızın tekrar aktif edilmesi gerekecektir. Yeni girilen e-posta adresine aktivasyon kodu gönderilecek. Yeni E-posta adresinizin geçerli olduğundan emin olun! Hesabınızı bir gün içinde aktif etmelisiniz.'
|
||||
|
@ -648,21 +698,26 @@ error_email_too_long = 'E-posta adresi çok uzun'
|
|||
error_identic_email = 'Yeni e-posta adresi eskisi ile aynı'
|
||||
error_email_invalid = 'E-posta adresi geçersiz'
|
||||
pw_wrong = 'Şifre geçersiz'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = 'Lütfen dilediğiniz kullanıcı adınızı, şifrenizi ve geçerli bir e-posta adresinizi giriniz. E-posta adresinize aktivasyon kodu gönderilecek. Hesabınızı bir gün içinde aktif etmelisiniz.'
|
||||
register_username = 'Kullanıcı:'
|
||||
register_user_email = 'E-posta:'
|
||||
register_pw = 'Şifre:'
|
||||
register_pw_conf = 'Şifre tekrar:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Kullanıcılar sadece forum yöneticileri tarafından kayıt edilebilir.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Hesabınız kaydedildi ve <strong>[var]</strong> adresine aktivasyon iletisi gönderildi. Lütfen hesabınızı en geç bir gün içinde aktif ediniz.'
|
||||
registered_send_error = 'Hesabınız kaydedildi fakat aktivasyon anahtarı gönderilemedi. (mail sunucusu mevcut değil). Lütfen forum yöneticisiyle irtibata geçip hesabınızı manüel olarak aktif ettiriniz.'
|
||||
activation_failed = 'Hesabın aktivasyonu başarısız.'
|
||||
error_password_too_short = 'Şifre en az [characters] karakter içermeli'
|
||||
error_email_alr_exists = 'Bu e-posta adresiyle bağlantılı bir kullanıcı zaten var'
|
||||
error_reg_not_accepted_word = 'Spam koruma: E-posta veya isim hanesi kabul edilmeyen bir kelime veya alan adı içermektedir'
|
||||
error_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'Forum yöneticisine e-posta gönder'
|
||||
|
@ -670,6 +725,7 @@ contact_user_hl = 'E-posta gönderilecek alıcı: [recipient_nam
|
|||
impossible_to_contact = 'Bu kullanıcı ile iletişim sağlanamaz!'
|
||||
contact_doesnt_exist = 'Bu kişi mevcut değil!'
|
||||
sender_address_caption = 'Gönderen e-posta:'
|
||||
sender_confirmation_caption = '<!-- TODO -->Send me a copy of my message'
|
||||
subject_caption = 'Konu:'
|
||||
message_caption = 'Mesaj:'
|
||||
message_submit_caption = 'Tamam - Mesajı gönder'
|
||||
|
@ -680,7 +736,7 @@ error_message_no_subject = 'Konu eklenmedi'
|
|||
error_email_invalid = 'E-posta adresi geçersiz'
|
||||
error_email_subject_too_long = 'Konu çok uzun'
|
||||
error_email_text_too_long = 'Mesaj çok uzun ([text_length] karakter içeriyor - fakat en fazla [text_maxlength] karakter olmalı)'
|
||||
error_spam_suspicion = 'Spam şüphesi! Lütfen mesajınızı düzenleyiniz (örneğin. internet adresleri bağlantılarını kaldırınız)'
|
||||
error_email_spam_suspicion = 'Spam şüphesi! Lütfen mesajınızı düzenleyiniz (örneğin. internet adresleri bağlantılarını kaldırınız)'
|
||||
|
||||
[admin]
|
||||
enabled = 'açık'
|
||||
|
@ -697,14 +753,14 @@ user_administr_link = 'Kullanıcı yönetimi'
|
|||
smilies_administr_link = 'Simgeler'
|
||||
pages_administr_link = 'Sayfalar'
|
||||
spam_protection_link = 'Spam koruma'
|
||||
backup_restore_link = 'Yedekleme'
|
||||
update_link = 'Güncelleme'
|
||||
reset_uninstall_link = 'Forumu sıfırla veya kaldır'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '<!-- TODO -->Currently available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version_header = '<!-- TODO -->Currently installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -720,6 +776,8 @@ forum_address = 'Forum adresi'
|
|||
forum_address_desc = 'Forumun URL bağlantı adresi (bu formatı kullanınız: http://www.alan.adi/forum/)'
|
||||
forum_email = 'Forumun e-posta adresi'
|
||||
forum_email_desc = 'İletişim adresi ve forum tarafından gönderilen mesajlarda (gönderen adres) olarak kullanılacaktır'
|
||||
forum_target_name = '<!-- TODO -->Link window target'
|
||||
forum_target_name_desc = '<!-- TODO -->The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
home_link = 'Ana sayfa bağlantısı'
|
||||
home_link_desc = 'Ana sayfanıza bağlantı, örneğin. http://www.alan.adi/ veya ../index.html (opsiyonel)'
|
||||
home_link_name = 'Ana sayfa bağlantısı'
|
||||
|
@ -758,6 +816,7 @@ user_area = 'Kullanıcı alanı'
|
|||
user_area_desc = 'Kullanıcı alanı (kullanıcı listesi, profiller) herkese açık mı?'
|
||||
public_accessible = 'açık erişim'
|
||||
accessible_reg_users_only = 'sadece kayıtlı kullanıcılar tarafından erişim'
|
||||
accessible_team_users_only = '<!-- TODO -->accessible by administrators and moderators only'
|
||||
latest_postings = 'Son gönderimler'
|
||||
latest_postings_desc = 'Ana sayfada kaç adet gönderilen son iletiler görüntülensin? (0=kapalı)'
|
||||
tag_cloud = 'Etiketler'
|
||||
|
@ -767,6 +826,10 @@ terms_of_use_settings = 'Kullanım şartı'
|
|||
terms_of_use_settings_desc = 'Kayıtsız kullanıcıların yeni mesaj gönderirken veya kayıt olurken kullanım şartını kabul etmeleri zorunludur'
|
||||
terms_of_use_settings_enabled = 'Kullanım şartı aktif'
|
||||
terms_of_use_url = 'Kullanım şartı URL adresi:'
|
||||
data_privacy_statement = '<!-- TODO -->Data privacy statement'
|
||||
data_privacy_statement_desc = '<!-- TODO -->Obligation for unregistered users to agree to the data privacy statement when posting messages and registering'
|
||||
data_privacy_settings_enabled = '<!-- TODO -->Data privacy statement enabled'
|
||||
data_privacy_url = '<!-- TODO -->Data privacy statement URL:'
|
||||
edit_postings = 'İletileri düzenle'
|
||||
edit_postings_desc = 'İleti düzenlemesi'
|
||||
edit_own_postings = 'Kullanıcıların kendi iletilerini düzenlemesi:'
|
||||
|
@ -782,7 +845,6 @@ bbcode = 'BB kodu'
|
|||
bbcode_desc = 'İletinizi oluştururken veya düzenlerken BB Kodları seçenekleri olsun mu?'
|
||||
bbcodes_enabled = 'BB Kodları aktif'
|
||||
bbcodes_img_enabled = 'BB Kodların resimler eklemesine izin ver'
|
||||
bbcodes_flash_enabled = 'BB Kodların flash videoları eklemesine izin ver'
|
||||
smilies = 'Simgeler'
|
||||
smilies_desc = 'Forumda ":-)" benzeri simgeler kendilerine uygun resimlerle değiştirilsin mi? (Simgeler, simge yönetici panelinde düzenlenebilirler)'
|
||||
smilies_enabled = 'Simgeler aktif'
|
||||
|
@ -809,7 +871,7 @@ rss_feed = 'RSS İçeriği'
|
|||
rss_feed_desc = 'RSS İçeriği aktif edilsin mi (sadece eğer erişim izni "herkes" için ise)?'
|
||||
rss_feed_enabled = 'RSS İçeriği aktif'
|
||||
forum_enabled_marking = 'Forum aktif'
|
||||
forum_enabled_desc = Forumu erişilemez (kapalı) yapabilmek için veya foruma sistem güncellemesi yapmadan önce bu seçeneği kaldırınız. Yönetici olarak giriş yapanlar için halen etkin olacak.'
|
||||
forum_enabled_desc = 'Forumu erişilemez (kapalı) yapabilmek için veya foruma sistem güncellemesi yapmadan önce bu seçeneği kaldırınız. Yönetici olarak giriş yapanlar için halen etkin olacak.'
|
||||
forum_enabled = 'forum aktif'
|
||||
forum_disabled_message = 'Erişilemez (kapalı) forumlar için yayınlanacak mesaj:'
|
||||
category_name = 'Kategori'
|
||||
|
@ -867,6 +929,7 @@ delete_page_submit = 'Tamam - Sayfayı sil'
|
|||
error_no_page_title = 'Başlık yok'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'Kullanıcı listesi'
|
||||
user_name_empty = 'Kullanıcı adı girilmedi'
|
||||
num_registerd_users = '[number] kayıtlı kullanıcılar'
|
||||
user_id = 'ID'
|
||||
|
@ -890,7 +953,10 @@ activate_link = 'Hesabı aktif et'
|
|||
delete_selected_users = 'Seçimi sil'
|
||||
add_user = 'Kullanıcı ekle'
|
||||
email_list = 'Kayıtlı tüm kullanıcıların e-posta adresleri'
|
||||
reset_terms_of_use = '<!-- TODO -->reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
|
||||
clear_userdata = 'Kullanıcı bilgilerini sil'
|
||||
edit_user_avatar = '<!-- TODO -->Avatar:'
|
||||
delete_avatar = 'Avatarı sil'
|
||||
delete_user_confirmation = 'Bu kullanıcıyı silmek istediğinizden emin misiniz?'
|
||||
delete_users_confirmation = 'Aşağıdaki kullanıcıları silmek istediğinizden emin misiniz?'
|
||||
|
@ -903,13 +969,29 @@ register_pw = 'Parola:'
|
|||
register_pw_conf = 'Parolayı doğrula:'
|
||||
register_send_userdata = 'Kullanıcı bilgilerini ayrıca yukarıda belirtilen e-posta adresine gönder'
|
||||
error_send_userdata = 'Eğer parola alanı boş bırakılmış ise, kullanıcı bilgileri belirtilen e-posta adresine gönderilmiş olmalı. Lütfen ilgili seçeneği seçiniz.'
|
||||
error_email_wrong = 'E-posta adresi yanlış'
|
||||
admin_reg_error_email_wrong = 'E-posta adresi yanlış'
|
||||
new_user_registered = '"[name]" adlı forum kullanıcısı kayıt edildi.'
|
||||
new_user_reg_send_error = '"[name]" adlı kullanıcı kaydedildi fakat kullanıcı bilgileri gönderilemedi.'
|
||||
clear_userdata_condition = 'Toplam en fazla [logins] kez giriş yapan ve en son [days] günden fazla giriş yapan kullanıcıları sil.'
|
||||
clear_userdata_note = 'Yöneticiler ve moderatörler etkilenmeyecek. Silinme işleminden önce belirlenmiş kullanıcıların bir listesini görebileceksiniz.'
|
||||
no_users_in_selection = 'Belirli bir kullanıcı yok'
|
||||
|
||||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Hangi formlar ne tür bir CAPTCHA koruması ile korunmalı (sadece kayıtlı olmayan kullanıcılar için)?'
|
||||
|
@ -922,20 +1004,21 @@ captcha_mathematical = 'matematiksel'
|
|||
captcha_graphical = 'grafiksel'
|
||||
gr_captcha_not_available = 'Grafiksel CAPTCHA mevcut değil (GD kütüphanesi yok)'
|
||||
gr_captcha_no_font = 'Font bulunamıyor, CAPTCHA resmi doğru gösterilemez'
|
||||
b8 = 'B8'
|
||||
b8_desc = '<!-- TODO -->Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = '<!-- TODO -->check posting form'
|
||||
b8_mail_check_enable = '<!-- TODO -->check e-mail form'
|
||||
b8_auto_training_enable = '<!-- TODO -->Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
bad_behavior = 'Kötü Eylem'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Kötü Eylem</a> spam koruması.'
|
||||
bad_behavior_enable = 'Kötü Eylem aktif'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> spam koruma servisi. Kullanabilmek için <a href="http://wordpress.com/api-keys/">Wordpress API anahtarı gerekli</a> (Yanlış veya olmayan bir API anahtarıyla çalışamaz!).'
|
||||
akismet_key = 'Wordpress API Anahtarı:'
|
||||
akismet_save_spam = 'Spamleri kaydet (spam olarak işaretlenip görüntülenmeyecek)?'
|
||||
akismet_auto_delete_spam = 'Spamler otomatik biçimde kaç saat içinde silinsin (0=silme)?'
|
||||
akismet_entry = 'gönderim formu kontrolü'
|
||||
akismet_mail = 'e-posta formu kontrolü'
|
||||
akismet_registered = '<!-- TODO -->check submissions of registered users'
|
||||
banned_ips = 'Yasaklı IPler'
|
||||
banned_ips_desc = 'Foruma erişim izni olmayan IP adresleri. IP aralıkları (örnek. 10.10.1.*) ve CIDR ekleri (e.g. 10.10.1.32/27) mümkün. Satır başına bir IP.'
|
||||
banned_user_agents = 'Yasaklı kullanıcı başlık (user agents) izleri'
|
||||
|
@ -946,6 +1029,12 @@ spam_protection_submit = 'Tamam - Kaydet'
|
|||
error_own_ip_banned = 'Kendi IP adresini yasakladınız!'
|
||||
error_own_user_agent_banned = 'Kendi kullanıcı başlığını yasakladınız!'
|
||||
spam_protection_saved = 'Kaydedildi'
|
||||
spam_check_registered = '<!-- TODO -->submissions of registered users'
|
||||
spam_check_registered_desc = '<!-- TODO -->check submissions of registered users for spam using enabled filters'
|
||||
spam_check_registered_enable = '<!-- TODO -->check submissions of registered users for spam'
|
||||
auto_delete_spam = '<!-- TODO -->Delete spam automatically'
|
||||
auto_delete_spam_desc = '<!-- TODO -->Retention period of spam'
|
||||
auto_delete_spam_timespan = 'Spamler otomatik biçimde kaç saat içinde silinsin (0=silme)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = 'Forumu sıfırla'
|
||||
|
@ -957,45 +1046,14 @@ uninstall_forum_exp = 'Tüm forum tabloları kaldırılacak. Bu işl
|
|||
uninstall_forum_submit = 'Tamam - Forumu kaldır'
|
||||
error_no_selection_made = 'Seçim yapılmadı'
|
||||
|
||||
# Backup:
|
||||
backup_note = 'Yedek oluşturma özelliğinden yararlanabilmek için <i>yedekleme</i> klasörü yazılır olmalı. Güvenliğiniz için ek olarak bu klasörün internet üzerinden erişimi mümkün olmadığından emin olun!'
|
||||
backup_file = 'Dosya'
|
||||
backup_date = 'Tarih'
|
||||
backup_size = 'Boyut'
|
||||
create_backup_complete = 'Eksiksiz tam bir yedekleme oluştur'
|
||||
only_create_backup_of = 'Sadece şunların yedeklerini oluştur:'
|
||||
backup_entries = 'girdiler'
|
||||
backup_userdata = 'kullanıcı bilgisi'
|
||||
backup_settings = 'ayarlar'
|
||||
backup_categories = 'kategoriler'
|
||||
backup_pages = 'sayfalar'
|
||||
backup_smilies = 'simgeler'
|
||||
backup_banlists = 'engel listesi'
|
||||
backup_bookmarks = '<!-- TODO -->bookmarks'
|
||||
backup_read_status = '<!-- TODO -->read status'
|
||||
backup_temp_infos = '<!-- TODO -->temporary informations'
|
||||
download_backup_file = 'Yedekleme dosyası indir'
|
||||
delete_selected = 'Seçiliyi sil'
|
||||
restore = 'Geri getir'
|
||||
delete_backup_file = 'Yedekleme dosyası sil'
|
||||
delete_backup_submit = 'Tamam - Sil'
|
||||
restore_confirm = 'Veritabanını bu yedekleme dosyasına geri dönüştürmek istediğinizden emin misiniz?<br /><strong>İlgili tüm tablolar değiştirilecek!</strong> '
|
||||
restore_safe_mode_warning = 'Dikkat - Güvenli Kip!'
|
||||
restore_safe_mode_note = 'Bu sunucuda güvenli kip (safe mode) aktif olduğundan script'in çalışma zamanı uzatılamaz! Yedekleme işleminin aksamaması için büyük yedekleme dosyalarını bir kaç küçük dosyaya ayırıp sırasıyla çalıştırın!'
|
||||
restore_submit = 'Tamam - Geri getir'
|
||||
restore_backup_ok = 'Yedekleme geri getirildi.'
|
||||
backup_file_created = 'Yedekleme dosyası oluşturuldu.'
|
||||
error_file_doesnt_exist = 'Dosya mevcut değil!'
|
||||
error_delete_backup_file = 'Yedekleme dosyası silinemedi'
|
||||
error_create_backup_file = 'Dosya oluşturulamadı - "yedekleme" klasörüne yeterli yazım erişimi olduğundan emin olun'
|
||||
error_restore_mysql = 'MySQL hatası: [mysql_error]'
|
||||
|
||||
# Update:
|
||||
update_current_version = 'Mevcut versiyon: <strong>[version]</strong>'
|
||||
update_instructions_hl = 'Nasıl güncellenir'
|
||||
update_instructions = 'Güncelleme yapmadan önce forumu kapatmanız önerilir. (<a href="index.php?mode=admin&action=settings">forum ayarları</a>ndaki "forum aktif" seçeneğini kaldırın) '
|
||||
update_instructions = 'En son güncel versiyonu <a href="http://mylittleforum.net/">mylittleforum.net</a> adresinden indirin'
|
||||
update_instructions = 'Boş bir klasöre forum dosyalarını ayıklayın. Daha sonra "update" alt klasöründeki güncelleme dosyalarını sunucunuzdaki "update" klasörüne yükleyin '
|
||||
update_instructions = 'Boş bir klasöre forum dosyalarını ayıklayın.'
|
||||
update_instructions = 'Daha sonra "update" alt klasöründeki güncelleme dosyalarını sunucunuzdaki "update" klasörüne yükleyin '
|
||||
update_instructions = '<!-- TODO -->Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'Bu sayfayı yenileyin, güncelleme dosyası aşağıda görüntülenmeli'
|
||||
update_instructions = 'Dosya üzerine tıklayarak adımları izleyin'
|
||||
update_instructions = 'Güncelleme çalıştıktan sonra eklenen veya değişen tüm dosyaların ve klasörlerin listesini göreceksiniz. Ek olarak <em>templates_c</em> klasörünü temizleyin'
|
||||
|
@ -1008,13 +1066,21 @@ update_submit = 'Tamam - Güncelle'
|
|||
update_successful = 'Veritabanı başarıyla güncelleştirildi.'
|
||||
update_items_note = 'Lütfen şimdi yeni forum paketinin (version [version]) şu dosyalarını/klasörlerini sunucunuza yükleyin:'
|
||||
update_download = 'Eğer henüz bu dosyalara sahip değilseniz [[buradan]] yükleyebilirsiniz.'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = '"[original_subject]" üzerine yanıt'
|
||||
email_text = """Merhaba [recipient],
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] adlı kullanıcı \"[original_subject]\" konusuna yanıt gönderdi:
|
||||
|
||||
Konu: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Bu gönderimin bağlantısı (URL): [posting_address]
|
||||
|
@ -1024,7 +1090,7 @@ Bu gönderimin bağlantısı (URL): [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Bu uyarı bekletildi çünkü gönderim manüel olarak aktif edildi"""
|
||||
Bu uyarı bekletildi çünkü gönderim manüel olarak aktif edildi. This is an automatically generated email, please do not reply to this email."""
|
||||
|
||||
admin_email_subject = 'Forumda yeni giriş: [subject]'
|
||||
admin_email_text = """[name] tarafından yeni giriş
|
||||
|
@ -1032,15 +1098,20 @@ Konu: [subject]
|
|||
|
||||
[text]
|
||||
|
||||
Gönderim bağlantısı (URL): [posting_address]"""
|
||||
Gönderim bağlantısı (URL): [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_email_text_reply = """[name] olarak yanıtla
|
||||
Konu: [subject]
|
||||
|
||||
[text]
|
||||
|
||||
Gönderim bağlantısı (URL): [posting_address]"""
|
||||
Gönderim bağlantısı (URL): [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_reg_user_email_subj = 'Forum kaydı'
|
||||
admin_reg_user_email_text = """Merhaba [name],
|
||||
|
||||
foruma hoş geldiniz!
|
||||
|
||||
Giriş yapabilmeniz için erişim bilgileriniz şöyledir:
|
||||
|
@ -1051,46 +1122,66 @@ Parola: [password]
|
|||
Direkt giriş bağlantısı:
|
||||
[login_link]
|
||||
|
||||
Parolanızı giriş yaptıktan sonra değiştirebilirsiniz."""
|
||||
Parolanızı giriş yaptıktan sonra değiştirebilirsiniz.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
admin_activate_user_email_subj = 'Forum kaydı'
|
||||
admin_activate_user_email_text = """Merhaba [name],
|
||||
|
||||
foruma hoş geldiniz!
|
||||
|
||||
Link to log in directly:
|
||||
[login_link]
|
||||
"""
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
new_user_email_sj = 'Forum kaydı'
|
||||
new_user_email_txt = """Merhaba [name],
|
||||
|
||||
foruma hoş geldiniz!
|
||||
|
||||
hesabınızı aktif etmek için lütfen aşağıdaki bağlantıyı takip edin:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_sj = 'Yeni kullanıcı kaydı'
|
||||
new_user_notif_txt = """Merhaba [recipient],
|
||||
|
||||
foruma yeni bir kullanıcı abone oldu.
|
||||
Kullanıcı adı: [name]
|
||||
E-posta: [email]
|
||||
|
||||
[user_link]"""
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_txt_locked = """Merhaba [recipient],
|
||||
foruma yeni bir kullanıcı abone oldu.
|
||||
Kullanıcı adı: [name]
|
||||
E-posta: [email]
|
||||
|
||||
ÖNEMLİ: Bu kullanıcı giriş yapabilmesi için öncelikle kilitten kaldırılması gerekir!"""
|
||||
ÖNEMLİ: Bu kullanıcı giriş yapabilmesi için öncelikle kilitten kaldırılması gerekir!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
edit_address_email_sj = 'E-posta değişiminden sonra hesap aktivasyonu'
|
||||
edit_address_email_txt = """Merhaba [name],
|
||||
|
||||
e-posta adresiniz değişti. Hesabınızı aşağıdaki bağlantıya tıklayarak tekrar aktif etmelisiniz:
|
||||
[activate_link]"""
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
pwf_activating_email_sj = 'Yeni parola talebi'
|
||||
pwf_activating_email_txt = """Merhaba [name],
|
||||
|
||||
bu e-posta, yeni bir parola talebinden dolayı ([forum_address]) forumundan gönderildi. Lütfen yeni parolanızın oluşturulması ve size gönderilmesi için aşağıdaki bağlantıya tıklayın. Eğer bu e-posta bilginiz dışında bir yanlışlıktan ötürü (sizden veya herhangi birinden) geldiyse önemsemeyin.
|
||||
|
||||
[activating_link]"""
|
||||
Talebinizi onaylamak için bağlantı:
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_pw_email_sj = 'Yeni kullanıcı bilginiz'
|
||||
new_pw_email_txt = """Merhaba [name],
|
||||
|
||||
yeni kullanıcı bilgileriniz şöyledir:
|
||||
|
||||
Kullanıcı adı: [name]
|
||||
|
@ -1099,7 +1190,9 @@ Parola: [password]
|
|||
Giriş yapmak için bağlantıya tıklayın:
|
||||
[login_link]
|
||||
|
||||
Parola giriş yapıldıktan sonra değiştirilebilir."""
|
||||
Parola giriş yapıldıktan sonra değiştirilebilir.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1116,6 +1209,20 @@ Konu: [subject]
|
|||
|
||||
--
|
||||
Bu e-posta [forum_address] forumu tarafından gönderildi."""
|
||||
# <!-- TODO --> #
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
|
||||
Kind regards
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Kurulum'
|
||||
|
@ -1164,5 +1271,6 @@ error_db_inexistent = 'Belirtilen veritabanı bulunamadı - lütfen
|
|||
error_sql_file_doesnt_exist = 'Kuruluma ait SQL dosyası (install.sql) bulunamadı'
|
||||
error_overwrite_config_file = '<code>config/db_settings.php</code> dosyasına yazılamıyor. (dosyayı CHMOD 666 yapınız, mevcut ayar [CHMOD])'
|
||||
error_sql = 'SQL hatası'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'Tamam - Forumu yükle'
|
||||
error_conf_pw = 'Yönetici şifreleri uyuşmuyor'
|
||||
|
|
407
modules/b8/b8.php
Normal file
407
modules/b8/b8.php
Normal file
|
@ -0,0 +1,407 @@
|
|||
<?php
|
||||
|
||||
/* Copyright (C) 2006-2019 Tobias Leupold <tobias.leupold@gmx.de>
|
||||
|
||||
b8 - A statistical ("Bayesian") spam filter written in PHP
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation in version 2.1 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The b8 spam filter library
|
||||
*
|
||||
* @license LGPL 2.1
|
||||
* @package b8
|
||||
* @author Tobias Leupold <tobias.leupold@gmx.de>
|
||||
* @author Oliver Lillie <ollie@buggedcom.co.uk> (original PHP 5 port)
|
||||
*/
|
||||
|
||||
namespace b8;
|
||||
|
||||
spl_autoload_register(
|
||||
function ($class) {
|
||||
$parts = explode('\\', $class);
|
||||
if (count($parts) > 2 && $parts[0] == 'b8') {
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . $parts[1]
|
||||
. DIRECTORY_SEPARATOR . $parts[2] . '.php';
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
class b8
|
||||
{
|
||||
const DBVERSION = 3;
|
||||
|
||||
const SPAM = 'spam';
|
||||
const HAM = 'ham';
|
||||
const LEARN = 'learn';
|
||||
const UNLEARN = 'unlearn';
|
||||
|
||||
const CLASSIFIER_TEXT_MISSING = 'CLASSIFIER_TEXT_MISSING';
|
||||
|
||||
const TRAINER_TEXT_MISSING = 'TRAINER_TEXT_MISSING';
|
||||
const TRAINER_CATEGORY_MISSING = 'TRAINER_CATEGORY_MISSING';
|
||||
const TRAINER_CATEGORY_FAIL = 'TRAINER_CATEGORY_FAIL';
|
||||
|
||||
const INTERNALS_TEXTS = 'b8*texts';
|
||||
const INTERNALS_DBVERSION = 'b8*dbversion';
|
||||
|
||||
const KEY_DB_VERSION = 'dbversion';
|
||||
const KEY_COUNT_HAM = 'count_ham';
|
||||
const KEY_COUNT_SPAM = 'count_spam';
|
||||
const KEY_TEXTS_HAM = 'texts_ham';
|
||||
const KEY_TEXTS_SPAM = 'texts_spam';
|
||||
|
||||
private $config = [ 'lexer' => 'standard',
|
||||
'degenerator' => 'standard',
|
||||
'storage' => 'dba',
|
||||
'use_relevant' => 15,
|
||||
'min_dev' => 0.2,
|
||||
'rob_s' => 0.3,
|
||||
'rob_x' => 0.5 ];
|
||||
|
||||
private $storage = null;
|
||||
private $lexer = null;
|
||||
private $degenerator = null;
|
||||
private $token_data = null;
|
||||
|
||||
/**
|
||||
* Constructs b8
|
||||
*
|
||||
* @access public
|
||||
* @param array b8's configuration: [ 'lexer' => string,
|
||||
'degenerator' => string,
|
||||
'storage' => string,
|
||||
'use_relevant' => int,
|
||||
'min_dev' => float,
|
||||
'rob_s' => float,
|
||||
'rob_x' => float ]
|
||||
* @param array The storage backend's config (depending on the backend used)
|
||||
* @param array The lexer's config (depending on the lexer used)
|
||||
* @param array The degenerator's config (depending on the degenerator used)
|
||||
* @return void
|
||||
*/
|
||||
function __construct(array $config = [],
|
||||
array $config_storage = [],
|
||||
array $config_lexer = [],
|
||||
array $config_degenerator = [])
|
||||
{
|
||||
// Validate config data
|
||||
foreach ($config as $name => $value) {
|
||||
switch ($name) {
|
||||
case 'min_dev':
|
||||
case 'rob_s':
|
||||
case 'rob_x':
|
||||
$this->config[$name] = (float) $value;
|
||||
break;
|
||||
case 'use_relevant':
|
||||
$this->config[$name] = (int) $value;
|
||||
break;
|
||||
case 'lexer':
|
||||
case 'degenerator':
|
||||
case 'storage':
|
||||
$this->config[$name] = (string) $value;
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(b8::class . ": Unknown configuration key: \"$name\"");
|
||||
}
|
||||
}
|
||||
|
||||
// Setup the degenerator class
|
||||
$class = '\\b8\\degenerator\\' . $this->config['degenerator'];
|
||||
$this->degenerator = new $class($config_degenerator);
|
||||
|
||||
// Setup the lexer class
|
||||
$class = '\\b8\\lexer\\' . $this->config['lexer'];
|
||||
$this->lexer = new $class($config_lexer);
|
||||
|
||||
// Setup the storage backend
|
||||
$class = '\\b8\\storage\\' . $this->config['storage'];
|
||||
$this->storage = new $class($config_storage, $this->degenerator);
|
||||
}
|
||||
|
||||
/**
|
||||
* Classifies a text
|
||||
*
|
||||
* @access public
|
||||
* @param string The text to classify
|
||||
* @return mixed float The rating between 0 (ham) and 1 (spam) or an error code
|
||||
*/
|
||||
public function classify(string $text = null)
|
||||
{
|
||||
// Let's first see if the user called the function correctly
|
||||
if ($text === null) {
|
||||
return \b8\b8::CLASSIFIER_TEXT_MISSING;
|
||||
}
|
||||
|
||||
// Get the internal database variables, containing the number of ham and spam texts so the
|
||||
// spam probability can be calculated in relation to them
|
||||
$internals = $this->storage->get_internals();
|
||||
|
||||
// Calculate the spaminess of all tokens
|
||||
|
||||
// Get all tokens we want to rate
|
||||
$tokens = $this->lexer->get_tokens($text);
|
||||
|
||||
// Check if the lexer failed (if so, $tokens will be a lexer error code, if not, $tokens
|
||||
// will be an array)
|
||||
if (! is_array($tokens)) {
|
||||
return $tokens;
|
||||
}
|
||||
|
||||
// Fetch all available data for the token set from the database
|
||||
$this->token_data = $this->storage->get(array_keys($tokens));
|
||||
|
||||
// Calculate the spaminess and importance for each token (or a degenerated form of it)
|
||||
|
||||
$word_count = [];
|
||||
$rating = [];
|
||||
$importance = [];
|
||||
|
||||
foreach ($tokens as $word => $count) {
|
||||
$word_count[$word] = $count;
|
||||
|
||||
// Although we only call this function only here ... let's do the calculation stuff in a
|
||||
// function to make this a bit less confusing ;-)
|
||||
$rating[$word] = $this->get_probability($word, $internals);
|
||||
$importance[$word] = abs(0.5 - $rating[$word]);
|
||||
}
|
||||
|
||||
// Order by importance
|
||||
arsort($importance);
|
||||
reset($importance);
|
||||
|
||||
// Get the most interesting tokens (use all if we have less than the given number)
|
||||
$relevant = [];
|
||||
for ($i = 0; $i < $this->config['use_relevant']; $i++) {
|
||||
if ($token = key($importance)) {
|
||||
// Important tokens remain
|
||||
|
||||
// If the token's rating is relevant enough, use it
|
||||
if (abs(0.5 - $rating[$token]) > $this->config['min_dev']) {
|
||||
// Tokens that appear more than once also count more than once
|
||||
for ($x = 0, $l = $word_count[$token]; $x < $l; $x++) {
|
||||
array_push($relevant, $rating[$token]);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// We have less words as we want to use, so we already use what we have and can
|
||||
// break here
|
||||
break;
|
||||
}
|
||||
|
||||
next($importance);
|
||||
}
|
||||
|
||||
// Calculate the spaminess of the text (thanks to Mr. Robinson ;-)
|
||||
|
||||
// We set both haminess and spaminess to 1 for the first multiplying
|
||||
$haminess = 1;
|
||||
$spaminess = 1;
|
||||
|
||||
// Consider all relevant ratings
|
||||
foreach ($relevant as $value) {
|
||||
$haminess *= (1.0 - $value);
|
||||
$spaminess *= $value;
|
||||
}
|
||||
|
||||
// If no token was good for calculation, we really don't know how to rate this text, so
|
||||
// we can return 0.5 without further calculations.
|
||||
if ($haminess == 1 && $spaminess == 1) {
|
||||
return 0.5;
|
||||
}
|
||||
|
||||
// Calculate the combined rating
|
||||
|
||||
// Get the number of relevant ratings
|
||||
$n = count($relevant);
|
||||
|
||||
// The actual haminess and spaminess
|
||||
$haminess = 1 - pow($haminess, (1 / $n));
|
||||
$spaminess = 1 - pow($spaminess, (1 / $n));
|
||||
|
||||
// Calculate the combined indicator
|
||||
$probability = ($haminess - $spaminess) / ($haminess + $spaminess);
|
||||
|
||||
// We want a value between 0 and 1, not between -1 and +1, so ...
|
||||
$probability = (1 + $probability) / 2;
|
||||
|
||||
// Alea iacta est
|
||||
return $probability;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the spaminess of a single token also considering "degenerated" versions
|
||||
*
|
||||
* @access private
|
||||
* @param string The word to rate
|
||||
* @param array The "internals" array
|
||||
* @return float The word's rating
|
||||
*/
|
||||
private function get_probability(string $word, array $internals)
|
||||
{
|
||||
// Let's see what we have!
|
||||
if (isset($this->token_data['tokens'][$word])) {
|
||||
// The token is in the database, so we can use it's data as-is and calculate the
|
||||
// spaminess of this token directly
|
||||
return $this->calculate_probability($this->token_data['tokens'][$word], $internals);
|
||||
}
|
||||
|
||||
// The token was not found, so do we at least have similar words?
|
||||
if (isset($this->token_data['degenerates'][$word])) {
|
||||
// We found similar words, so calculate the spaminess for each one and choose the most
|
||||
// important one for the further calculation
|
||||
|
||||
// The default rating is 0.5 simply saying nothing
|
||||
$rating = 0.5;
|
||||
|
||||
foreach ($this->token_data['degenerates'][$word] as $degenerate => $count) {
|
||||
// Calculate the rating of the current degenerated token
|
||||
$rating_tmp = $this->calculate_probability($count, $internals);
|
||||
|
||||
// Is it more important than the rating of another degenerated version?
|
||||
if(abs(0.5 - $rating_tmp) > abs(0.5 - $rating)) {
|
||||
$rating = $rating_tmp;
|
||||
}
|
||||
}
|
||||
|
||||
return $rating;
|
||||
} else {
|
||||
// The token is really unknown, so choose the default rating for completely unknown
|
||||
// tokens. This strips down to the robX parameter so we can cheap out the freaky math
|
||||
// ;-)
|
||||
return $this->config['rob_x'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Do the actual spaminess calculation of a single token
|
||||
*
|
||||
* @access private
|
||||
* @param array The token's data [ \b8\b8::KEY_COUNT_HAM => int,
|
||||
\b8\b8::KEY_COUNT_SPAM => int ]
|
||||
* @param array The "internals" array
|
||||
* @return float The rating
|
||||
*/
|
||||
private function calculate_probability(array $data, array $internals)
|
||||
{
|
||||
// Calculate the basic probability as proposed by Mr. Graham
|
||||
|
||||
// But: consider the number of ham and spam texts saved instead of the number of entries
|
||||
// where the token appeared to calculate a relative spaminess because we count tokens
|
||||
// appearing multiple times not just once but as often as they appear in the learned texts.
|
||||
|
||||
$rel_ham = $data[\b8\b8::KEY_COUNT_HAM];
|
||||
$rel_spam = $data[\b8\b8::KEY_COUNT_SPAM];
|
||||
|
||||
if ($internals[\b8\b8::KEY_TEXTS_HAM] > 0) {
|
||||
$rel_ham = $data[\b8\b8::KEY_COUNT_HAM] / $internals[\b8\b8::KEY_TEXTS_HAM];
|
||||
}
|
||||
|
||||
if ($internals[\b8\b8::KEY_TEXTS_SPAM] > 0) {
|
||||
$rel_spam = $data[\b8\b8::KEY_COUNT_SPAM] / $internals[\b8\b8::KEY_TEXTS_SPAM];
|
||||
}
|
||||
|
||||
$rating = $rel_spam / ($rel_ham + $rel_spam);
|
||||
|
||||
// Calculate the better probability proposed by Mr. Robinson
|
||||
$all = $data[\b8\b8::KEY_COUNT_HAM] + $data[\b8\b8::KEY_COUNT_SPAM];
|
||||
return (($this->config['rob_s'] * $this->config['rob_x']) + ($all * $rating))
|
||||
/ ($this->config['rob_s'] + $all);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the validity of the category of a request
|
||||
*
|
||||
* @access private
|
||||
* @param string The category
|
||||
* @return void
|
||||
*/
|
||||
private function check_category(string $category)
|
||||
{
|
||||
return $category === \b8\b8::HAM || $category === \b8\b8::SPAM;
|
||||
}
|
||||
|
||||
/**
|
||||
* Learn a reference text
|
||||
*
|
||||
* @access public
|
||||
* @param string The text to learn
|
||||
* @param string Either b8::SPAM or b8::HAM
|
||||
* @return mixed void or an error code
|
||||
*/
|
||||
public function learn(string $text = null, string $category = null)
|
||||
{
|
||||
// Let's first see if the user called the function correctly
|
||||
if ($text === null) {
|
||||
return \b8\b8::TRAINER_TEXT_MISSING;
|
||||
}
|
||||
if ($category === null) {
|
||||
return \b8\b8::TRAINER_CATEGORY_MISSING;
|
||||
}
|
||||
|
||||
return $this->process_text($text, $category, \b8\b8::LEARN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unlearn a reference text
|
||||
*
|
||||
* @access public
|
||||
* @param string The text to unlearn
|
||||
* @param string Either b8::SPAM or b8::HAM
|
||||
* @return mixed void or an error code
|
||||
*/
|
||||
public function unlearn(string $text = null, string $category = null)
|
||||
{
|
||||
// Let's first see if the user called the function correctly
|
||||
if ($text === null) {
|
||||
return \b8\b8::TRAINER_TEXT_MISSING;
|
||||
}
|
||||
if ($category === null) {
|
||||
return \b8\b8::TRAINER_CATEGORY_MISSING;
|
||||
}
|
||||
|
||||
return $this->process_text($text, $category, \b8\b8::UNLEARN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the actual interaction with the storage backend for learning or unlearning texts
|
||||
*
|
||||
* @access private
|
||||
* @param string The text to process
|
||||
* @param string Either b8::SPAM or b8::HAM
|
||||
* @param string Either b8::LEARN or b8::UNLEARN
|
||||
* @return mixed void or an error code
|
||||
*/
|
||||
private function process_text(string $text, string $category, string $action)
|
||||
{
|
||||
// Look if the request is okay
|
||||
if (! $this->check_category($category)) {
|
||||
return \b8\b8::TRAINER_CATEGORY_FAIL;
|
||||
}
|
||||
|
||||
// Get all tokens from $text
|
||||
$tokens = $this->lexer->get_tokens($text);
|
||||
|
||||
// Check if the lexer failed (if so, $tokens will be a lexer error code, if not, $tokens
|
||||
// will be an array)
|
||||
if (! is_array($tokens)) {
|
||||
return $tokens;
|
||||
}
|
||||
|
||||
// Pass the tokens and what to do with it to the storage backend
|
||||
return $this->storage->process_text($tokens, $category, $action);
|
||||
}
|
||||
|
||||
}
|
176
modules/b8/degenerator/standard.php
Normal file
176
modules/b8/degenerator/standard.php
Normal file
|
@ -0,0 +1,176 @@
|
|||
<?php
|
||||
|
||||
/* Copyright (C) 2006-2019 Tobias Leupold <tobias.leupold@gmx.de>
|
||||
|
||||
This file is part of the b8 package
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation in version 2.1 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A helper class to derive simplified tokens
|
||||
*
|
||||
* @license LGPL 2.1
|
||||
* @package b8
|
||||
* @author Tobias Leupold <tobias.leupold@gmx.de>
|
||||
*/
|
||||
|
||||
namespace b8\degenerator;
|
||||
|
||||
class standard
|
||||
{
|
||||
public $config = [ 'multibyte' => true,
|
||||
'encoding' => 'UTF-8' ];
|
||||
|
||||
public $degenerates = [];
|
||||
|
||||
/**
|
||||
* Constructs the degenerator.
|
||||
*
|
||||
* @access public
|
||||
* @param array $config The configuration: [ 'multibyte' => bool,
|
||||
'encoding' => string ]
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
{
|
||||
// Validate config data
|
||||
foreach ($config as $name => $value) {
|
||||
switch($name) {
|
||||
case 'multibyte':
|
||||
$this->config[$name] = (bool) $value;
|
||||
break;
|
||||
case 'encoding':
|
||||
$this->config[$name] = (string) $value;
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(standard::class . ": Unknown configuration key: "
|
||||
. "\"$name\"");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a list of "degenerated" words for a list of words.
|
||||
*
|
||||
* @access public
|
||||
* @param array $words The words to degenerate
|
||||
* @return array An array containing an array of degenerated tokens for each token
|
||||
*/
|
||||
public function degenerate(array $words)
|
||||
{
|
||||
$degenerates = [];
|
||||
|
||||
foreach ($words as $word) {
|
||||
$degenerates[$word] = $this->degenerate_word($word);
|
||||
}
|
||||
|
||||
return $degenerates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove duplicates from a list of degenerates of a word.
|
||||
*
|
||||
* @access private
|
||||
* @param string $word The word
|
||||
* @param array $list The list to process
|
||||
* @return array The list without duplicates
|
||||
*/
|
||||
private function delete_duplicates(string $word, array $list)
|
||||
{
|
||||
$list_processed = [];
|
||||
|
||||
// Check each upper/lower version
|
||||
foreach ($list as $alt_word) {
|
||||
if ($alt_word != $word) {
|
||||
array_push($list_processed, $alt_word);
|
||||
}
|
||||
}
|
||||
|
||||
return $list_processed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a list of "degenerated" versions of a word.
|
||||
*
|
||||
* @access private
|
||||
* @param string $word The word
|
||||
* @return array An array of degenerated words
|
||||
*/
|
||||
private function degenerate_word(string $word)
|
||||
{
|
||||
// Check for any stored words so the process doesn't have to repeat
|
||||
if (isset($this->degenerates[$word]) === true) {
|
||||
return $this->degenerates[$word];
|
||||
}
|
||||
|
||||
// Create different versions of upper and lower case
|
||||
if ($this->config['multibyte'] === false) {
|
||||
// The standard upper/lower versions
|
||||
$lower = strtolower($word);
|
||||
$upper = strtoupper($word);
|
||||
$first = substr($upper, 0, 1) . substr($lower, 1, strlen($word));
|
||||
} elseif ($this->config['multibyte'] === true) {
|
||||
// The multibyte upper/lower versions
|
||||
$lower = mb_strtolower($word, $this->config['encoding']);
|
||||
$upper = mb_strtoupper($word, $this->config['encoding']);
|
||||
$first = mb_substr($upper, 0, 1, $this->config['encoding'])
|
||||
. mb_substr($lower, 1, mb_strlen($word), $this->config['encoding']);
|
||||
}
|
||||
|
||||
// Add the versions
|
||||
$upper_lower = [];
|
||||
array_push($upper_lower, $lower);
|
||||
array_push($upper_lower, $upper);
|
||||
array_push($upper_lower, $first);
|
||||
|
||||
// Delete duplicate upper/lower versions
|
||||
$degenerate = $this->delete_duplicates($word, $upper_lower);
|
||||
|
||||
// Append the original word
|
||||
array_push($degenerate, $word);
|
||||
|
||||
// Degenerate all versions
|
||||
foreach ($degenerate as $alt_word) {
|
||||
// Look for stuff like !!! and ???
|
||||
if (preg_match('/[!?]$/', $alt_word) > 0) {
|
||||
// Add versions with different !s and ?s
|
||||
if (preg_match('/[!?]{2,}$/', $alt_word) > 0) {
|
||||
$tmp = preg_replace('/([!?])+$/', '$1', $alt_word);
|
||||
array_push($degenerate, $tmp);
|
||||
}
|
||||
|
||||
$tmp = preg_replace('/([!?])+$/', '', $alt_word);
|
||||
array_push($degenerate, $tmp);
|
||||
}
|
||||
|
||||
// Look for "..." at the end of the word
|
||||
$alt_word_int = $alt_word;
|
||||
while (preg_match('/[\.]$/', $alt_word_int) > 0) {
|
||||
$alt_word_int = substr($alt_word_int, 0, strlen($alt_word_int) - 1);
|
||||
array_push($degenerate, $alt_word_int);
|
||||
}
|
||||
}
|
||||
|
||||
// Some degenerates are the same as the original word. These don't have to be fetched, so we
|
||||
// create a new array with only new tokens
|
||||
$degenerate = $this->delete_duplicates($word, $degenerate);
|
||||
|
||||
// Store the list of degenerates for the token to prevent unnecessary re-processing
|
||||
$this->degenerates[$word] = $degenerate;
|
||||
|
||||
return $degenerate;
|
||||
}
|
||||
|
||||
}
|
267
modules/b8/lexer/standard.php
Normal file
267
modules/b8/lexer/standard.php
Normal file
|
@ -0,0 +1,267 @@
|
|||
<?php
|
||||
|
||||
/* Copyright (C) 2006-2019 Tobias Leupold <tobias.leupold@gmx.de>
|
||||
|
||||
This file is part of the b8 package
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation in version 2.1 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A helper class to disassemble a text to tokens
|
||||
*
|
||||
* @license LGPL 2.1
|
||||
* @package b8
|
||||
* @author Tobias Leupold <tobias.leupold@gmx.de>
|
||||
* @author Oliver Lillie <ollie@buggedcom.co.uk> (original PHP 5 port)
|
||||
*/
|
||||
|
||||
namespace b8\lexer;
|
||||
|
||||
class standard
|
||||
{
|
||||
const LEXER_TEXT_NOT_STRING = 'LEXER_TEXT_NOT_STRING';
|
||||
const LEXER_TEXT_EMPTY = 'LEXER_TEXT_EMPTY';
|
||||
|
||||
const LEXER_NO_TOKENS = 'b8*no_tokens';
|
||||
|
||||
private $config = [ 'min_size' => 3,
|
||||
'max_size' => 30,
|
||||
'get_uris' => true,
|
||||
'get_html' => true,
|
||||
'get_bbcode' => false,
|
||||
'allow_numbers' => false ];
|
||||
|
||||
private $tokens = null;
|
||||
private $processed_text = null;
|
||||
|
||||
// The regular expressions we use to split the text to tokens
|
||||
private $regexp = [ 'raw_split' => '/[\s,\.\/"\:;\|<>\-_\[\]{}\+=\)\(\*\&\^%]+/',
|
||||
'ip' => '/([A-Za-z0-9\_\-\.]+)/',
|
||||
'uris' => '/([A-Za-z0-9\_\-]*\.[A-Za-z0-9\_\-\.]+)/',
|
||||
'html' => '/(<.+?>)/',
|
||||
'bbcode' => '/(\[.+?\])/',
|
||||
'tagname' => '/(.+?)\s/',
|
||||
'numbers' => '/^[0-9]+$/' ];
|
||||
|
||||
/**
|
||||
* Constructs the lexer.
|
||||
*
|
||||
* @access public
|
||||
* @param array $config The configuration: [ 'min_size' => int,
|
||||
* 'max_size' => int,
|
||||
* 'get_uris' => bool,
|
||||
* 'get_html' => bool,
|
||||
* 'get_bbcode' => bool,
|
||||
* 'allow_numbers' => bool ]
|
||||
* @return void
|
||||
*/
|
||||
function __construct(array $config)
|
||||
{
|
||||
// Validate config data
|
||||
foreach ($config as $name=>$value) {
|
||||
switch ($name) {
|
||||
case 'min_size':
|
||||
case 'max_size':
|
||||
$this->config[$name] = (int) $value;
|
||||
break;
|
||||
case 'allow_numbers':
|
||||
case 'get_uris':
|
||||
case 'get_html':
|
||||
case 'get_bbcode':
|
||||
$this->config[$name] = (bool) $value;
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(standard::class . ": Unknown configuration key: "
|
||||
. "\"$name\"");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits a text to tokens.
|
||||
*
|
||||
* @access public
|
||||
* @param string $text The text to disassemble
|
||||
* @return mixed Returns a list of tokens or an error code
|
||||
*/
|
||||
public function get_tokens(string $text)
|
||||
{
|
||||
// Check if we actually have a string ...
|
||||
if (is_string($text) === false) {
|
||||
return self::LEXER_TEXT_NOT_STRING;
|
||||
}
|
||||
|
||||
// ... and if it's empty
|
||||
if (empty($text) === true) {
|
||||
return self::LEXER_TEXT_EMPTY;
|
||||
}
|
||||
|
||||
// Re-convert the text to the original characters coded in UTF-8, as they have been coded in
|
||||
// html entities during the post process
|
||||
$this->processed_text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
|
||||
|
||||
// Reset the token list
|
||||
$this->tokens = array();
|
||||
|
||||
if ($this->config['get_uris'] === true) {
|
||||
// Get URIs
|
||||
$this->get_uris($this->processed_text);
|
||||
}
|
||||
|
||||
if ($this->config['get_html'] === true) {
|
||||
// Get HTML
|
||||
$this->get_markup($this->processed_text, $this->regexp['html']);
|
||||
}
|
||||
|
||||
if ($this->config['get_bbcode'] === true) {
|
||||
// Get BBCode
|
||||
$this->get_markup($this->processed_text, $this->regexp['bbcode']);
|
||||
}
|
||||
|
||||
// We always want to do a raw split of the (remaining) text, so:
|
||||
$this->raw_split($this->processed_text);
|
||||
|
||||
// Be sure not to return an empty array
|
||||
if (count($this->tokens) == 0) {
|
||||
$this->tokens[self::LEXER_NO_TOKENS] = 1;
|
||||
}
|
||||
|
||||
// Return a list of all found tokens
|
||||
return $this->tokens;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates a token.
|
||||
*
|
||||
* @access private
|
||||
* @param string $token The token string
|
||||
* @return bool Returns true if the token is valid, otherwise returns false.
|
||||
*/
|
||||
private function is_valid(string $token)
|
||||
{
|
||||
// Just to be sure that the token's name won't collide with b8's internal variables
|
||||
if (substr($token, 0, 3) == 'b8*') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Validate the size of the token
|
||||
$len = strlen($token);
|
||||
if ($len < $this->config['min_size'] || $len > $this->config['max_size']) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// We may want to exclude pure numbers
|
||||
if ($this->config['allow_numbers'] === false
|
||||
&& preg_match($this->regexp['numbers'], $token) > 0) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Token is okay
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the validity of a token and adds it to the token list if it's valid.
|
||||
*
|
||||
* @access private
|
||||
* @param string $token
|
||||
* @param string $word_to_remove Word to remove from the processed string
|
||||
* @return void
|
||||
*/
|
||||
private function add_token(string $token, string $word_to_remove = null)
|
||||
{
|
||||
// Check the validity of the token
|
||||
if (! $this->is_valid($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Add it to the list or increase it's counter
|
||||
if (! isset($this->tokens[$token])) {
|
||||
$this->tokens[$token] = 1;
|
||||
} else {
|
||||
$this->tokens[$token] += 1;
|
||||
}
|
||||
|
||||
// If requested, remove the word or it's original version from the text
|
||||
if ($word_to_remove !== null) {
|
||||
$this->processed_text = str_replace($word_to_remove, '', $this->processed_text);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets URIs.
|
||||
*
|
||||
* @access private
|
||||
* @param string $text
|
||||
* @return void
|
||||
*/
|
||||
private function get_uris(string $text)
|
||||
{
|
||||
// Find URIs
|
||||
preg_match_all($this->regexp['uris'], $text, $raw_tokens);
|
||||
foreach ($raw_tokens[1] as $word) {
|
||||
// Remove a possible trailing dot
|
||||
$word = rtrim($word, '.');
|
||||
// Try to add the found tokens to the list
|
||||
$this->add_token($word, $word);
|
||||
// Also process the parts of the found URIs
|
||||
$this->raw_split($word);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets HTML or BBCode markup, depending on the regexp used.
|
||||
*
|
||||
* @access private
|
||||
* @param string $text
|
||||
* @param string $regexp
|
||||
* @return void
|
||||
*/
|
||||
private function get_markup(string $text, string $regexp)
|
||||
{
|
||||
// Search for the markup
|
||||
preg_match_all($regexp, $text, $raw_tokens);
|
||||
foreach ($raw_tokens[1] as $word) {
|
||||
$actual_word = $word;
|
||||
|
||||
// If the tag has parameters, just use the tag itself
|
||||
if (strpos($word, ' ') !== false) {
|
||||
preg_match($this->regexp['tagname'], $word, $match);
|
||||
$actual_word = $match[1];
|
||||
$word = "$actual_word..." . substr($word, -1);
|
||||
}
|
||||
|
||||
// Try to add the found tokens to the list
|
||||
$this->add_token($word, $actual_word);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Does a raw split.
|
||||
*
|
||||
* @access private
|
||||
* @param string $text
|
||||
* @return void
|
||||
*/
|
||||
private function raw_split(string $text)
|
||||
{
|
||||
foreach (preg_split($this->regexp['raw_split'], $text) as $word) {
|
||||
// Check the word and add it to the token list if it's valid
|
||||
$this->add_token($word);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
110
modules/b8/storage/mysql.php
Normal file
110
modules/b8/storage/mysql.php
Normal file
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
|
||||
/* Copyright (C) 2019 Tobias Leupold <tobias.leupold@gmx.de>
|
||||
|
||||
This file is part of the b8 package
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation in version 2.1 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
namespace b8\storage;
|
||||
|
||||
/**
|
||||
* A MySQL storage backend
|
||||
*
|
||||
* @license LGPL 2.1
|
||||
* @package b8
|
||||
* @author Tobias Leupold <tobias.leupold@gmx.de>
|
||||
*/
|
||||
|
||||
class mysql extends storage_base
|
||||
{
|
||||
|
||||
private $mysql = null;
|
||||
private $table = null;
|
||||
|
||||
protected function setup_backend(array $config)
|
||||
{
|
||||
if (! isset($config['resource'])
|
||||
|| get_class($config['resource']) !== 'mysqli') {
|
||||
|
||||
throw new \Exception(mysql::class . ": No valid mysqli object passed");
|
||||
}
|
||||
$this->mysql = $config['resource'];
|
||||
|
||||
if (! isset($config['table'])) {
|
||||
throw new \Exception(mysql::class . ": No b8 wordlist table name passed");
|
||||
}
|
||||
$this->table = $config['table'];
|
||||
}
|
||||
|
||||
protected function fetch_token_data(array $tokens)
|
||||
{
|
||||
$data = [];
|
||||
|
||||
$escaped = [];
|
||||
foreach ($tokens as $token) {
|
||||
$escaped[] = $this->mysql->real_escape_string($token);
|
||||
}
|
||||
$result = $this->mysql->query('SELECT token, count_ham, count_spam'
|
||||
. ' FROM ' . $this->table
|
||||
. ' WHERE token IN '
|
||||
. "('" . implode("','", $escaped) . "')");
|
||||
|
||||
while ($row = $result->fetch_row()) {
|
||||
$data[$row[0]] = [ \b8\b8::KEY_COUNT_HAM => $row[1],
|
||||
\b8\b8::KEY_COUNT_SPAM => $row[2] ];
|
||||
}
|
||||
|
||||
$result->free_result();
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function add_token(string $token, array $count)
|
||||
{
|
||||
$query = $this->mysql->prepare('INSERT INTO ' . $this->table
|
||||
. '(token, count_ham, count_spam) VALUES(?, ?, ?)');
|
||||
$query->bind_param('sii', $token, $count[\b8\b8::KEY_COUNT_HAM],
|
||||
$count[\b8\b8::KEY_COUNT_SPAM]);
|
||||
$query->execute();
|
||||
}
|
||||
|
||||
protected function update_token(string $token, array $count)
|
||||
{
|
||||
$query = $this->mysql->prepare('UPDATE ' . $this->table
|
||||
. ' SET count_ham = ?, count_spam = ? WHERE token = ?');
|
||||
$query->bind_param('iis', $count[\b8\b8::KEY_COUNT_HAM], $count[\b8\b8::KEY_COUNT_SPAM],
|
||||
$token);
|
||||
$query->execute();
|
||||
}
|
||||
|
||||
protected function delete_token(string $token)
|
||||
{
|
||||
$query = $this->mysql->prepare('DELETE FROM ' . $this->table . ' WHERE token = ?');
|
||||
$query->bind_param('s', $token);
|
||||
$query->execute();
|
||||
}
|
||||
|
||||
protected function start_transaction()
|
||||
{
|
||||
$this->mysql->begin_transaction();
|
||||
}
|
||||
|
||||
protected function finish_transaction()
|
||||
{
|
||||
$this->mysql->commit();
|
||||
}
|
||||
|
||||
}
|
316
modules/b8/storage/storage_base.php
Normal file
316
modules/b8/storage/storage_base.php
Normal file
|
@ -0,0 +1,316 @@
|
|||
<?php
|
||||
|
||||
/* Copyright (C) 2006-2019 Tobias Leupold <tobias.leupold@gmx.de>
|
||||
|
||||
This file is part of the b8 package
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation in version 2.1 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Abstract base class for storage backends
|
||||
*
|
||||
* @license LGPL 2.1
|
||||
* @package b8
|
||||
* @author Tobias Leupold <tobias.leupold@gmx.de>
|
||||
*/
|
||||
|
||||
namespace b8\storage;
|
||||
|
||||
abstract class storage_base
|
||||
{
|
||||
protected $degenerator = null;
|
||||
|
||||
/**
|
||||
* Sets up the backend
|
||||
*
|
||||
* @access public
|
||||
* @param array The configuration for the respective backend
|
||||
*/
|
||||
abstract protected function setup_backend(array $config);
|
||||
|
||||
/**
|
||||
* Does the actual interaction with the database when fetching data
|
||||
*
|
||||
* @access protected
|
||||
* @param array $tokens List of token names to fetch
|
||||
* @return mixed Returns an array of the returned data in the format array(token => data)
|
||||
or an empty array if there was no data.
|
||||
*/
|
||||
abstract protected function fetch_token_data(array $tokens);
|
||||
|
||||
/**
|
||||
* Stores a new token to the database
|
||||
*
|
||||
* @access protected
|
||||
* @param string $token The token's name
|
||||
* @param array $count The ham and spam counters [ \b8\b8::KEY_COUNT_HAM => int,
|
||||
\b8\b8::KEY_COUNT_SPAM => int ]
|
||||
* @return bool true on success or false on failure
|
||||
*/
|
||||
abstract protected function add_token(string $token, array $count);
|
||||
|
||||
/**
|
||||
* Updates an existing token
|
||||
*
|
||||
* @access protected
|
||||
* @param string $token The token's name
|
||||
* @param array $count The ham and spam counters [ \b8\b8::KEY_COUNT_HAM => int,
|
||||
\b8\b8::KEY_COUNT_SPAM => int ]
|
||||
* @return bool true on success or false on failure
|
||||
*/
|
||||
abstract protected function update_token(string $token, array $count);
|
||||
|
||||
/**
|
||||
* Removes a token from the database
|
||||
*
|
||||
* @access protected
|
||||
* @param string $token The token's name
|
||||
* @return bool true on success or false on failure
|
||||
*/
|
||||
abstract protected function delete_token(string $token);
|
||||
|
||||
/**
|
||||
* Starts a transaction (if the underlying database supports/needs this)
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
abstract protected function start_transaction();
|
||||
|
||||
/**
|
||||
* Finishes a transaction (if the underlying database supports/needs this)
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
abstract protected function finish_transaction();
|
||||
|
||||
/**
|
||||
* Passes the degenerator to the instance and calls the backend setup
|
||||
*
|
||||
* @access public
|
||||
* @param array The respective backen's configuration
|
||||
* @param object The degenerator to use
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $config, object $degenerator)
|
||||
{
|
||||
$this->degenerator = $degenerator;
|
||||
$this->setup_backend($config);
|
||||
|
||||
$internals = $this->get_internals();
|
||||
if (! isset($internals[\b8\b8::KEY_DB_VERSION])
|
||||
|| $internals[\b8\b8::KEY_DB_VERSION] !== \b8\b8::DBVERSION) {
|
||||
|
||||
throw new \Exception(storage_base::class . ': The connected database is not a b8 v'
|
||||
. \b8\b8::DBVERSION . ' database.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the database's internal variables.
|
||||
*
|
||||
* @access public
|
||||
* @return array Returns an array of all internals.
|
||||
*/
|
||||
public function get_internals()
|
||||
{
|
||||
$internals = $this->fetch_token_data([ \b8\b8::INTERNALS_TEXTS,
|
||||
\b8\b8::INTERNALS_DBVERSION ]);
|
||||
|
||||
// Just in case this is called by check_database() and it's not yet clear if we actually
|
||||
// have a b8 database
|
||||
$texts_ham = null;
|
||||
$texts_spam = null;
|
||||
$dbversion = null;
|
||||
if(isset($internals[\b8\b8::INTERNALS_TEXTS][\b8\b8::KEY_COUNT_HAM])) {
|
||||
$texts_ham = (int) $internals[\b8\b8::INTERNALS_TEXTS][\b8\b8::KEY_COUNT_HAM];
|
||||
}
|
||||
if(isset($internals[\b8\b8::INTERNALS_TEXTS][\b8\b8::KEY_COUNT_SPAM])) {
|
||||
$texts_spam = (int) $internals[\b8\b8::INTERNALS_TEXTS][\b8\b8::KEY_COUNT_SPAM];
|
||||
}
|
||||
if(isset($internals[\b8\b8::INTERNALS_DBVERSION][\b8\b8::KEY_COUNT_HAM])) {
|
||||
$dbversion = (int) $internals[\b8\b8::INTERNALS_DBVERSION][\b8\b8::KEY_COUNT_HAM];
|
||||
}
|
||||
|
||||
return [ \b8\b8::KEY_TEXTS_HAM => $texts_ham,
|
||||
\b8\b8::KEY_TEXTS_SPAM => $texts_spam,
|
||||
\b8\b8::KEY_DB_VERSION => $dbversion ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all data about a list of tokens from the database.
|
||||
*
|
||||
* @access public
|
||||
* @param array The tokens list
|
||||
* @return mixed Returns False on failure, otherwise returns array of returned data
|
||||
in the format [ 'tokens' => [ token => count ],
|
||||
'degenerates' => [ token => [ degenerate => count ] ] ].
|
||||
*/
|
||||
public function get(array $tokens)
|
||||
{
|
||||
// First we see what we have in the database
|
||||
$token_data = $this->fetch_token_data($tokens);
|
||||
|
||||
// Check if we have to degenerate some tokens
|
||||
$missing_tokens = array();
|
||||
foreach ($tokens as $token) {
|
||||
if (! isset($token_data[$token])) {
|
||||
$missing_tokens[] = $token;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($missing_tokens) > 0) {
|
||||
// We have to degenerate some tokens
|
||||
$degenerates_list = [];
|
||||
|
||||
// Generate a list of degenerated tokens for the missing tokens ...
|
||||
$degenerates = $this->degenerator->degenerate($missing_tokens);
|
||||
|
||||
// ... and look them up
|
||||
foreach ($degenerates as $token => $token_degenerates) {
|
||||
$degenerates_list = array_merge($degenerates_list, $token_degenerates);
|
||||
}
|
||||
|
||||
$token_data = array_merge($token_data, $this->fetch_token_data($degenerates_list));
|
||||
}
|
||||
|
||||
// Here, we have all available data in $token_data.
|
||||
|
||||
$return_data_tokens = [];
|
||||
$return_data_degenerates = [];
|
||||
|
||||
foreach ($tokens as $token) {
|
||||
if (isset($token_data[$token])) {
|
||||
// The token was found in the database
|
||||
$return_data_tokens[$token] = $token_data[$token];
|
||||
} else {
|
||||
// The token was not found, so we look if we can return data for degenerated tokens
|
||||
foreach ($this->degenerator->degenerates[$token] as $degenerate) {
|
||||
if (isset($token_data[$degenerate])) {
|
||||
// A degenertaed version of the token way found in the database
|
||||
$return_data_degenerates[$token][$degenerate] = $token_data[$degenerate];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Now, all token data directly found in the database is in $return_data_tokens and all
|
||||
// data for degenerated versions is in $return_data_degenerates, so
|
||||
return [ 'tokens' => $return_data_tokens,
|
||||
'degenerates' => $return_data_degenerates ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Stores or deletes a list of tokens from the given category.
|
||||
*
|
||||
* @access public
|
||||
* @param array The tokens list
|
||||
* @param string Either \b8\b8::HAM or \b8\b8::SPAM
|
||||
* @param string Either \b8\b8::LEARN or \b8\b8::UNLEARN
|
||||
* @return void
|
||||
*/
|
||||
public function process_text(array $tokens, string $category, string $action)
|
||||
{
|
||||
// No matter what we do, we first have to check what data we have.
|
||||
|
||||
// First get the internals, including the ham texts and spam texts counter
|
||||
$internals = $this->get_internals();
|
||||
// Then, fetch all data for all tokens we have
|
||||
$token_data = $this->fetch_token_data(array_keys($tokens));
|
||||
|
||||
$this->start_transaction();
|
||||
|
||||
// Process all tokens to learn/unlearn
|
||||
foreach ($tokens as $token => $count) {
|
||||
if (isset($token_data[$token])) {
|
||||
// We already have this token, so update it's data
|
||||
|
||||
// Get the existing data
|
||||
$count_ham = $token_data[$token][\b8\b8::KEY_COUNT_HAM];
|
||||
$count_spam = $token_data[$token][\b8\b8::KEY_COUNT_SPAM];
|
||||
|
||||
// Increase or decrease the right counter
|
||||
if ($action === \b8\b8::LEARN) {
|
||||
if ($category === \b8\b8::HAM) {
|
||||
$count_ham += $count;
|
||||
} elseif ($category === \b8\b8::SPAM) {
|
||||
$count_spam += $count;
|
||||
}
|
||||
} elseif ($action == \b8\b8::UNLEARN) {
|
||||
if ($category === \b8\b8::HAM) {
|
||||
$count_ham -= $count;
|
||||
} elseif ($category === \b8\b8::SPAM) {
|
||||
$count_spam -= $count;
|
||||
}
|
||||
}
|
||||
|
||||
// We don't want to have negative values
|
||||
if ($count_ham < 0) {
|
||||
$count_ham = 0;
|
||||
}
|
||||
if ($count_spam < 0) {
|
||||
$count_spam = 0;
|
||||
}
|
||||
|
||||
// Now let's see if we have to update or delete the token
|
||||
if ($count_ham != 0 or $count_spam != 0) {
|
||||
$this->update_token($token, [ \b8\b8::KEY_COUNT_HAM => $count_ham,
|
||||
\b8\b8::KEY_COUNT_SPAM => $count_spam ]);
|
||||
} else {
|
||||
$this->delete_token($token);
|
||||
}
|
||||
} else {
|
||||
// We don't have the token. If we unlearn a text, we can't delete it as we don't
|
||||
// have it anyway, so just do something if we learn a text
|
||||
if ($action === \b8\b8::LEARN) {
|
||||
if ($category === \b8\b8::HAM) {
|
||||
$this->add_token($token, [ \b8\b8::KEY_COUNT_HAM => $count,
|
||||
\b8\b8::KEY_COUNT_SPAM => 0 ]);
|
||||
} elseif ($category === \b8\b8::SPAM) {
|
||||
$this->add_token($token, [ \b8\b8::KEY_COUNT_HAM => 0,
|
||||
\b8\b8::KEY_COUNT_SPAM => $count ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Now, all token have been processed, so let's update the right text
|
||||
if ($action === \b8\b8::LEARN) {
|
||||
if ($category === \b8\b8::HAM) {
|
||||
$internals[\b8\b8::KEY_TEXTS_HAM]++;
|
||||
} elseif ($category === \b8\b8::SPAM) {
|
||||
$internals[\b8\b8::KEY_TEXTS_SPAM]++;
|
||||
}
|
||||
} elseif ($action === \b8\b8::UNLEARN) {
|
||||
if ($category === \b8\b8::HAM) {
|
||||
if ($internals[\b8\b8::KEY_TEXTS_HAM] > 0) {
|
||||
$internals[\b8\b8::KEY_TEXTS_HAM]--;
|
||||
}
|
||||
} elseif ($category === \b8\b8::SPAM) {
|
||||
if ($internals[\b8\b8::KEY_TEXTS_SPAM] > 0) {
|
||||
$internals[\b8\b8::KEY_TEXTS_SPAM]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->update_token(\b8\b8::INTERNALS_TEXTS,
|
||||
[ \b8\b8::KEY_COUNT_HAM => $internals[\b8\b8::KEY_TEXTS_HAM],
|
||||
\b8\b8::KEY_COUNT_SPAM => $internals[\b8\b8::KEY_TEXTS_SPAM] ]);
|
||||
|
||||
$this->finish_transaction();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,155 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
Bad Behavior - detects and blocks unwanted Web accesses
|
||||
Copyright (C) 2005,2006,2007,2008,2009,2010,2011,2012 Michael Hampton
|
||||
|
||||
Bad Behavior is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 3 of the License, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Please report any problems to bad . bots AT ioerror DOT us
|
||||
http://bad-behavior.ioerror.us/
|
||||
*/
|
||||
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
|
||||
define('BB2_CWD', dirname(__FILE__));
|
||||
|
||||
// Settings you can adjust for Bad Behavior.
|
||||
// Most of these are unused in non-database mode.
|
||||
// DO NOT EDIT HERE; instead make changes in settings.ini.
|
||||
// These settings are used when settings.ini is not present.
|
||||
$bb2_settings_defaults = array(
|
||||
'log_table' => 'bad_behavior',
|
||||
'display_stats' => false,
|
||||
'strict' => false,
|
||||
'verbose' => false,
|
||||
'logging' => true,
|
||||
'httpbl_key' => '',
|
||||
'httpbl_threat' => '25',
|
||||
'httpbl_maxage' => '30',
|
||||
'offsite_forms' => false,
|
||||
'eu_cookie' => false,
|
||||
'reverse_proxy' => false,
|
||||
'reverse_proxy_header' => 'X-Forwarded-For',
|
||||
'reverse_proxy_addresses' => array(),
|
||||
);
|
||||
|
||||
// Bad Behavior callback functions.
|
||||
|
||||
// Return current time in the format preferred by your database.
|
||||
function bb2_db_date() {
|
||||
return gmdate('Y-m-d H:i:s'); // Example is MySQL format
|
||||
}
|
||||
|
||||
// Return affected rows from most recent query.
|
||||
function bb2_db_affected_rows() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Escape a string for database usage
|
||||
function bb2_db_escape($string) {
|
||||
// return mysql_real_escape_string($string);
|
||||
return $string; // No-op when database not in use.
|
||||
}
|
||||
|
||||
// Return the number of rows in a particular query.
|
||||
function bb2_db_num_rows($result) {
|
||||
if ($result !== FALSE)
|
||||
return count($result);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Run a query and return the results, if any.
|
||||
// Should return FALSE if an error occurred.
|
||||
// Bad Behavior will use the return value here in other callbacks.
|
||||
function bb2_db_query($query) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Return all rows in a particular query.
|
||||
// Should contain an array of all rows generated by calling mysql_fetch_assoc()
|
||||
// or equivalent and appending the result of each call to an array.
|
||||
function bb2_db_rows($result) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Create the SQL query for inserting a record in the database.
|
||||
// See example for MySQL elsewhere.
|
||||
function bb2_insert($settings, $package, $key)
|
||||
{
|
||||
return "--";
|
||||
}
|
||||
|
||||
// Return emergency contact email address.
|
||||
function bb2_email() {
|
||||
return "example@example.com"; // You need to change this.
|
||||
}
|
||||
|
||||
// retrieve whitelist
|
||||
function bb2_read_whitelist() {
|
||||
return @parse_ini_file(dirname(BB2_CORE) . "/whitelist.ini");
|
||||
}
|
||||
|
||||
// retrieve settings from database
|
||||
// Settings are hard-coded for non-database use
|
||||
function bb2_read_settings() {
|
||||
global $bb2_settings_defaults;
|
||||
$settings = @parse_ini_file(dirname(__FILE__) . "/settings.ini");
|
||||
if (!$settings) $settings = array();
|
||||
return @array_merge($bb2_settings_defaults, $settings);
|
||||
}
|
||||
|
||||
// write settings to database
|
||||
function bb2_write_settings($settings) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// installation
|
||||
function bb2_install() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Screener
|
||||
// Insert this into the <head> section of your HTML through a template call
|
||||
// or whatever is appropriate. This is optional we'll fall back to cookies
|
||||
// if you don't use it.
|
||||
function bb2_insert_head() {
|
||||
global $bb2_javascript;
|
||||
echo $bb2_javascript;
|
||||
}
|
||||
|
||||
// Display stats? This is optional.
|
||||
function bb2_insert_stats($force = false) {
|
||||
$settings = bb2_read_settings();
|
||||
|
||||
if ($force || $settings['display_stats']) {
|
||||
$blocked = bb2_db_query("SELECT COUNT(*) FROM " . $settings['log_table'] . " WHERE `key` NOT LIKE '00000000'");
|
||||
if ($blocked !== FALSE) {
|
||||
echo sprintf('<p><a href="http://bad-behavior.ioerror.us/">%1$s</a> %2$s <strong>%3$s</strong> %4$s</p>', __('Bad Behavior'), __('has blocked'), $blocked[0]["COUNT(*)"], __('access attempts in the last 7 days.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return the top-level relative path of wherever we are (for cookies)
|
||||
// You should provide in $url the top-level URL for your site.
|
||||
function bb2_relative_path() {
|
||||
//$url = parse_url(get_bloginfo('url'));
|
||||
//return $url['path'] . '/';
|
||||
return '/';
|
||||
}
|
||||
|
||||
// Calls inward to Bad Behavor itself.
|
||||
require_once(BB2_CWD . "/bad-behavior/core.inc.php");
|
||||
bb2_install(); // FIXME: see above
|
||||
|
||||
bb2_start(bb2_read_settings());
|
|
@ -1,65 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Functions called when a request has been denied
|
||||
// This part can be gawd-awful slow, doesn't matter :)
|
||||
|
||||
require_once(BB2_CORE . "/responses.inc.php");
|
||||
|
||||
function bb2_housekeeping($settings, $package)
|
||||
{
|
||||
if (!$settings['logging']) return;
|
||||
|
||||
// FIXME Yes, the interval's hard coded (again) for now.
|
||||
$query = "DELETE FROM `" . $settings['log_table'] . "` WHERE `date` < DATE_SUB('" . bb2_db_date() . "', INTERVAL 7 DAY)";
|
||||
bb2_db_query($query);
|
||||
|
||||
// Waste a bunch more of the spammer's time, sometimes.
|
||||
if (rand(1,1000) == 1) {
|
||||
$query = "OPTIMIZE TABLE `" . $settings['log_table'] . "`";
|
||||
bb2_db_query($query);
|
||||
}
|
||||
}
|
||||
|
||||
function bb2_display_denial($settings, $package, $key, $previous_key = false)
|
||||
{
|
||||
define('DONOTCACHEPAGE', true); // WP Super Cache
|
||||
if (!$previous_key) $previous_key = $key;
|
||||
if ($key == "e87553e1") {
|
||||
// FIXME: lookup the real key
|
||||
}
|
||||
// Create support key
|
||||
$ip = explode(".", $package['ip']);
|
||||
$ip_hex = "";
|
||||
foreach ($ip as $octet) {
|
||||
$ip_hex .= str_pad(dechex($octet), 2, 0, STR_PAD_LEFT);
|
||||
}
|
||||
$support_key = implode("-", str_split("$ip_hex$key", 4));
|
||||
|
||||
// Get response data
|
||||
$response = bb2_get_response($previous_key);
|
||||
header("HTTP/1.1 " . $response['response'] . " Bad Behavior");
|
||||
header("Status: " . $response['response'] . " Bad Behavior");
|
||||
$request_uri = $_SERVER["REQUEST_URI"];
|
||||
if (!$request_uri) $request_uri = $_SERVER['SCRIPT_NAME']; # IIS
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--< html xmlns="http://www.w3.org/1999/xhtml">-->
|
||||
<head>
|
||||
<title>HTTP Error <?php echo $response['response']; ?></title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Error <?php echo $response['response']; ?></h1>
|
||||
<p>We're sorry, but we could not fulfill your request for
|
||||
<?php echo htmlspecialchars($request_uri) ?> on this server.</p>
|
||||
<p><?php echo $response['explanation']; ?></p>
|
||||
<p>Your technical support key is: <strong><?php echo $support_key; ?></strong></p>
|
||||
<p>You can use this key to <a href="http://www.ioerror.us/bb2-support-key?key=<?php echo $support_key; ?>">fix this problem yourself</a>.</p>
|
||||
<p>If you are unable to fix the problem yourself, please contact <a href="mailto:<?php echo htmlspecialchars(str_replace("@", "+nospam@nospam.", bb2_email())); ?>"><?php echo htmlspecialchars(str_replace("@", " at ", bb2_email())); ?></a> and be sure to provide the technical support key shown above.</p>
|
||||
<?php
|
||||
}
|
||||
|
||||
function bb2_log_denial($settings, $package, $key, $previous_key=false)
|
||||
{
|
||||
if (!$settings['logging']) return;
|
||||
bb2_db_query(bb2_insert($settings, $package, $key));
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Look up address on various blackhole lists.
|
||||
// These should not be used for GET requests under any circumstances!
|
||||
// FIXME: Note that this code is no longer in use
|
||||
function bb2_blackhole($package) {
|
||||
// Can't use IPv6 addresses yet
|
||||
if (@is_ipv6($package['ip'])) return false;
|
||||
|
||||
// Workaround for "MySQL server has gone away"
|
||||
bb2_db_query("SET @@session.wait_timeout = 90");
|
||||
|
||||
// Only conservative lists
|
||||
$bb2_blackhole_lists = array(
|
||||
"sbl-xbl.spamhaus.org", // All around nasties
|
||||
// "dnsbl.sorbs.net", // Old useless data.
|
||||
// "list.dsbl.org", // Old useless data.
|
||||
// "dnsbl.ioerror.us", // Bad Behavior Blackhole
|
||||
);
|
||||
|
||||
// Things that shouldn't be blocked, from aggregate lists
|
||||
$bb2_blackhole_exceptions = array(
|
||||
"sbl-xbl.spamhaus.org" => array("127.0.0.4"), // CBL is problematic
|
||||
"dnsbl.sorbs.net" => array("127.0.0.10",), // Dynamic IPs only
|
||||
"list.dsbl.org" => array(),
|
||||
"dnsbl.ioerror.us" => array(),
|
||||
);
|
||||
|
||||
// Check the blackhole lists
|
||||
$ip = $package['ip'];
|
||||
$find = implode('.', array_reverse(explode('.', $ip)));
|
||||
foreach ($bb2_blackhole_lists as $dnsbl) {
|
||||
$result = gethostbynamel($find . "." . $dnsbl . ".");
|
||||
if (!empty($result)) {
|
||||
// Got a match and it isn't on the exception list
|
||||
$result = @array_diff($result, $bb2_blackhole_exceptions[$dnsbl]);
|
||||
if (!empty($result)) {
|
||||
return '136673cd';
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function bb2_httpbl($settings, $package) {
|
||||
// Can't use IPv6 addresses yet
|
||||
if (@is_ipv6($package['ip'])) return false;
|
||||
|
||||
if (@!$settings['httpbl_key']) return false;
|
||||
|
||||
// Workaround for "MySQL server has gone away"
|
||||
bb2_db_query("SET @@session.wait_timeout = 90");
|
||||
|
||||
$find = implode('.', array_reverse(explode('.', $package['ip'])));
|
||||
$result = gethostbynamel($settings['httpbl_key'].".${find}.dnsbl.httpbl.org.");
|
||||
if (!empty($result)) {
|
||||
$ip = explode('.', $result[0]);
|
||||
if ($ip[0] == 127 && ($ip[3] & 7) && $ip[2] >= $settings['httpbl_threat'] && $ip[1] <= $settings['httpbl_maxage']) {
|
||||
return '2b021b1f';
|
||||
}
|
||||
// Check if search engine
|
||||
if ($ip[3] == 0) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1,195 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
function bb2_blacklist($package) {
|
||||
|
||||
// Blacklisted user agents
|
||||
// These user agent strings occur at the beginning of the line.
|
||||
$bb2_spambots_0 = array(
|
||||
"-", // brute force password attempts, malicious botnet
|
||||
"8484 Boston Project", // video poker/porn spam
|
||||
"ArchiveTeam", // ignores robots.txt and hammers server
|
||||
"adwords", // referrer spam
|
||||
"autoemailspider", // spam harvester
|
||||
"blogsearchbot-martin", // from honeypot
|
||||
"BrowserEmulator/", // open proxy software
|
||||
"CherryPicker", // spam harvester
|
||||
"core-project/", // FrontPage extension exploits
|
||||
"Diamond", // delivers spyware/adware
|
||||
"Digger", // spam harvester
|
||||
"ecollector", // spam harvester
|
||||
"EmailCollector", // spam harvester
|
||||
"Email Siphon", // spam harvester
|
||||
"EmailSiphon", // spam harvester
|
||||
"Forum Poster", // forum spambot
|
||||
"grub crawler", // misc comment/email spam
|
||||
"HttpProxy", // misc comment/email spam
|
||||
"Internet Explorer", // XMLRPC exploits seen
|
||||
"ISC Systems iRc", // spam harvester
|
||||
"Jakarta Commons", // customised spambots
|
||||
"Java 1.", // unidentified robots
|
||||
"Java/1.", // unidentified robots
|
||||
"libwww-perl", // unidentified robots
|
||||
"LWP", // unidentified robots
|
||||
"lwp", // unidentified robots
|
||||
"Microsoft Internet Explorer/", // too old; assumed robot
|
||||
"Microsoft URL", // unidentified robots
|
||||
"Missigua", // spam harvester
|
||||
"MJ12bot/v1.0.8", // malicious botnet
|
||||
"Morfeus", // vulnerability scanner
|
||||
"Movable Type", // customised spambots
|
||||
// msnbot is using this fake user agent string now
|
||||
//"Mozilla ", // malicious software
|
||||
"Mozilla/0", // malicious software
|
||||
"Mozilla/1", // malicious software
|
||||
"Mozilla/2", // malicious software
|
||||
"Mozilla/3", // malicious software
|
||||
"Mozilla/4.0(", // from honeypot
|
||||
"Mozilla/4.0+(compatible;+", // suspicious harvester
|
||||
"Mozilla/4.0 (Hydra)", // brute force tool
|
||||
"MSIE", // malicious software
|
||||
"MVAClient", // automated hacking attempts
|
||||
"Nessus", // vulnerability scanner
|
||||
"NutchCVS", // unidentified robots
|
||||
"Nutscrape/", // misc comment spam
|
||||
"OmniExplorer", // spam harvester
|
||||
"Opera/9.64(", // comment spam bot
|
||||
"PMAFind", // vulnerability scanner
|
||||
"psycheclone", // spam harvester
|
||||
"PussyCat ", // misc comment spam
|
||||
"PycURL", // misc comment spam
|
||||
"Python-urllib", // commonly abused
|
||||
"revolt", // vulnerability scanner
|
||||
// WP 2.5 now has Flash; FIXME
|
||||
// "Shockwave Flash", // spam harvester
|
||||
"sqlmap/", // SQL injection
|
||||
"Super Happy Fun ", // spam harvester
|
||||
"TrackBack/", // trackback spam
|
||||
"user", // suspicious harvester
|
||||
"User Agent: ", // spam harvester
|
||||
"User-Agent: ", // spam harvester
|
||||
"w3af", // vulnerability scanner
|
||||
"WebSite-X Suite", // misc comment spam
|
||||
"Winnie Poh", // Automated Coppermine hacks
|
||||
"Wordpress", // malicious software
|
||||
"\"", // malicious software
|
||||
);
|
||||
|
||||
// These user agent strings occur anywhere within the line.
|
||||
$bb2_spambots = array(
|
||||
"\r", // A really dumb bot
|
||||
"<sc", // XSS exploit attempts
|
||||
"; Widows ", // misc comment/email spam
|
||||
": ;", // shellshock
|
||||
":;", // shellshock
|
||||
"a href=", // referrer spam
|
||||
"ArchiveBot", // ignores robots.txt and hammers server
|
||||
"Bad Behavior Test", // Add this to your user-agent to test BB
|
||||
"compatible ; MSIE", // misc comment/email spam
|
||||
"compatible-", // misc comment/email spam
|
||||
"DTS Agent", // misc comment/email spam
|
||||
"Email Extractor", // spam harvester
|
||||
"Firebird/", // too old; assumed robot
|
||||
"Gecko/2525", // revisit this in 500 years
|
||||
"grub-client", // search engine ignores robots.txt
|
||||
"hanzoweb", // very badly behaved crawler
|
||||
"Havij", // SQL injection tool
|
||||
"Indy Library", // misc comment/email spam
|
||||
"Ming Mong", // brute force tool
|
||||
"MSIE 7.0; Windows NT 5.2", // Cyveillance
|
||||
"Murzillo compatible", // comment spam bot
|
||||
".NET CLR 1)", // free poker, etc.
|
||||
".NET CLR1", // spam harvester
|
||||
"Netsparker", // vulnerability scanner
|
||||
"Nikto/", // vulnerability scanner
|
||||
"Perman Surfer", // old and very broken harvester
|
||||
"POE-Component-Client", // free poker, etc.
|
||||
"Teh Forest Lobster", // brute force tool
|
||||
"Turing Machine", // www.anonymizer.com abuse
|
||||
"Ubuntu/9.25", // comment spam bot
|
||||
"unspecified.mail", // stealth harvesters
|
||||
"User-agent: ", // spam harvester/splogger
|
||||
"WebaltBot", // spam harvester
|
||||
"WISEbot", // spam harvester
|
||||
"WISEnutbot", // spam harvester
|
||||
"Win95", // too old; assumed robot
|
||||
"Win98", // too old; assumed robot
|
||||
"WinME", // too old; assumed robot
|
||||
"Win 9x 4.90", // too old; assumed robot
|
||||
"Windows 3", // too old; assumed robot
|
||||
"Windows 95", // too old; assumed robot
|
||||
"Windows 98", // too old; assumed robot
|
||||
"Windows NT 4", // too old; assumed robot
|
||||
"Windows NT;", // too old; assumed robot
|
||||
#"Windows NT 4.0;)", // wikispam bot
|
||||
"Windows NT 5.0;)", // wikispam bot
|
||||
"Windows NT 5.1;)", // wikispam bot
|
||||
"Windows XP 5", // spam harvester
|
||||
"WordPress/4.01", // pingback spam
|
||||
"Xedant Human Emulator",// spammer script engine
|
||||
"ZmEu", // exploit scanner
|
||||
"\\\\)", // spam harvester
|
||||
);
|
||||
|
||||
// These are regular expression matches.
|
||||
$bb2_spambots_regex = array(
|
||||
"/^[A-Z]{10}$/", // misc email spam
|
||||
"/[bcdfghjklmnpqrstvwxz ]{8,}/",
|
||||
// "/(;\){1,2}$/", // misc spammers/harvesters
|
||||
"/MSIE.*Windows XP/", // misc comment spam
|
||||
"/MSIE [2345]/", // too old; assumed robot
|
||||
);
|
||||
|
||||
// Blacklisted URL strings
|
||||
// These strings are considered case-insensitive.
|
||||
$bb2_spambots_url = array(
|
||||
"0x31303235343830303536", // Havij
|
||||
"../", // path traversal
|
||||
"..\\", // path traversal
|
||||
"%60information_schema%60", // SQL injection probe
|
||||
"+%2F*%21", // SQL injection probe
|
||||
"%27--", // SQL injection
|
||||
"%27 --", // SQL injection
|
||||
"%27%23", // SQL injection
|
||||
"%27 %23", // SQL injection
|
||||
"benchmark%28", // SQL injection probe
|
||||
"insert+into+", // SQL injection
|
||||
"r3dm0v3", // SQL injection probe
|
||||
"select+1+from", // SQL injection probe
|
||||
"union+all+select", // SQL injection probe
|
||||
"union+select", // SQL injection probe
|
||||
"waitfor+delay+", // SQL injection probe
|
||||
"w00tw00t", // vulnerability scanner
|
||||
);
|
||||
|
||||
// Do not edit below this line.
|
||||
|
||||
@$ua = $package['headers_mixed']['User-Agent'];
|
||||
@$uri = $package['request_uri'];
|
||||
|
||||
foreach ($bb2_spambots_0 as $spambot) {
|
||||
$pos = strpos($ua, $spambot);
|
||||
if ($pos !== FALSE && $pos == 0) {
|
||||
return "17f4e8c8";
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($bb2_spambots as $spambot) {
|
||||
if (strpos($ua, $spambot) !== FALSE) {
|
||||
return "17f4e8c8";
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($bb2_spambots_regex as $spambot) {
|
||||
if (preg_match($spambot, $ua)) {
|
||||
return "17f4e8c8";
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($bb2_spambots_url as $spambot) {
|
||||
if (stripos($uri, $spambot) !== FALSE) {
|
||||
return "96c0bd29";
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Analyze user agents claiming to be Konqueror
|
||||
|
||||
function bb2_konqueror($package)
|
||||
{
|
||||
// CafeKelsa is a dev project at Yahoo which indexes job listings for
|
||||
// Yahoo! HotJobs. It identifies as Konqueror so we skip these checks.
|
||||
if (stripos($package['headers_mixed']['User-Agent'], "YahooSeeker/CafeKelsa") === FALSE || match_cidr($package['ip'], "209.73.160.0/19") === FALSE) {
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Lynx
|
||||
|
||||
function bb2_lynx($package)
|
||||
{
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Mozilla
|
||||
|
||||
function bb2_mozilla($package)
|
||||
{
|
||||
// First off, workaround for Google Desktop, until they fix it FIXME
|
||||
// Google Desktop fixed it, but apparently some old versions are
|
||||
// still out there. :(
|
||||
// Always check accept header for Mozilla user agents
|
||||
if (strpos($package['headers_mixed']['User-Agent'], "Google Desktop") === FALSE && strpos($package['headers_mixed']['User-Agent'], "PLAYSTATION 3") === FALSE) {
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be MSIE
|
||||
|
||||
function bb2_msie($package)
|
||||
{
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
|
||||
// MSIE does NOT send "Windows ME" or "Windows XP" in the user agent
|
||||
if (strpos($package['headers_mixed']['User-Agent'], "Windows ME") !== FALSE || strpos($package['headers_mixed']['User-Agent'], "Windows XP") !== FALSE || strpos($package['headers_mixed']['User-Agent'], "Windows 2000") !== FALSE || strpos($package['headers_mixed']['User-Agent'], "Win32") !== FALSE) {
|
||||
return "a1084bad";
|
||||
}
|
||||
|
||||
// MSIE does NOT send Connection: TE but Akamai does
|
||||
// Bypass this test when Akamai detected
|
||||
// The latest version of IE for Windows CE also uses Connection: TE
|
||||
if (!array_key_exists('Akamai-Origin-Hop', $package['headers_mixed']) && strpos($package['headers_mixed']['User-Agent'], "IEMobile") === FALSE && @preg_match('/\bTE\b/i', $package['headers_mixed']['Connection'])) {
|
||||
return "2b90f772";
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Opera
|
||||
|
||||
function bb2_opera($package)
|
||||
{
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Safari
|
||||
|
||||
function bb2_safari($package)
|
||||
{
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Analyze requests claiming to be from CloudFlare
|
||||
|
||||
require_once(BB2_CORE . "/roundtripdns.inc.php");
|
||||
|
||||
function bb2_cloudflare($package)
|
||||
{
|
||||
# Disabled due to http://bugs.php.net/bug.php?id=53092
|
||||
# if (!bb2_roundtripdns($package['cloudflare'], "cloudflare.com")) {
|
||||
# return '70e45496';
|
||||
# }
|
||||
return false;
|
||||
}
|
|
@ -1,152 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Enforce adherence to protocol version claimed by user-agent.
|
||||
|
||||
function bb2_protocol($settings, $package)
|
||||
{
|
||||
// We should never see Expect: for HTTP/1.0 requests
|
||||
if (array_key_exists('Expect', $package['headers_mixed']) && stripos($package['headers_mixed']['Expect'], "100-continue") !== FALSE && !strcmp($package['server_protocol'], "HTTP/1.0")) {
|
||||
return "a0105122";
|
||||
}
|
||||
|
||||
// Is it claiming to be HTTP/1.1? Then it shouldn't do HTTP/1.0 things
|
||||
// Blocks some common corporate proxy servers in strict mode
|
||||
if ($settings['strict'] && !strcmp($package['server_protocol'], "HTTP/1.1")) {
|
||||
if (array_key_exists('Pragma', $package['headers_mixed']) && strpos($package['headers_mixed']['Pragma'], "no-cache") !== FALSE && !array_key_exists('Cache-Control', $package['headers_mixed'])) {
|
||||
return "41feed15";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function bb2_cookies($settings, $package)
|
||||
{
|
||||
// Enforce RFC 2965 sec 3.3.5 and 9.1
|
||||
// The only valid value for $Version is 1 and when present,
|
||||
// the user agent MUST send a Cookie2 header.
|
||||
// First-gen Amazon Kindle is broken; Amazon has been notified 9/24/08
|
||||
// NOTE: RFC 2965 is obsoleted by RFC 6265. Current software MUST NOT
|
||||
// use Cookie2 or $Version in Cookie.
|
||||
if (@strpos($package['headers_mixed']['Cookie'], '$Version=0') !== FALSE && !array_key_exists('Cookie2', $package['headers_mixed']) && strpos($package['headers_mixed']['User-Agent'], "Kindle/") === FALSE) {
|
||||
return '6c502ff1';
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function bb2_misc_headers($settings, $package)
|
||||
{
|
||||
@$ua = $package['headers_mixed']['User-Agent'];
|
||||
|
||||
if (!strcmp($package['request_method'], "POST") && empty($ua)) {
|
||||
return "f9f2b8b9";
|
||||
}
|
||||
|
||||
// Broken spambots send URLs with various invalid characters
|
||||
// Some broken browsers send the #vector in the referer field :(
|
||||
// Worse yet, some Javascript client-side apps do the same in
|
||||
// blatant violation of the protocol and good sense.
|
||||
// if (strpos($package['request_uri'], "#") !== FALSE || strpos($package['headers_mixed']['Referer'], "#") !== FALSE) {
|
||||
if ($settings['strict'] && strpos($package['request_uri'], "#") !== FALSE) {
|
||||
return "dfd9b1ad";
|
||||
}
|
||||
// A pretty nasty SQL injection attack on IIS servers
|
||||
if (strpos($package['request_uri'], ";DECLARE%20@") !== FALSE) {
|
||||
return "dfd9b1ad";
|
||||
}
|
||||
|
||||
// Range: field exists and begins with 0
|
||||
// Real user-agents do not start ranges at 0
|
||||
// NOTE: this blocks the whois.sc bot. No big loss.
|
||||
// Exceptions: MT (not fixable); LJ (refuses to fix; may be
|
||||
// blocked again in the future); Facebook
|
||||
if ($settings['strict'] && array_key_exists('Range', $package['headers_mixed']) && strpos($package['headers_mixed']['Range'], "=0-") !== FALSE) {
|
||||
if (strncmp($ua, "MovableType", 11) && strncmp($ua, "URI::Fetch", 10) && strncmp($ua, "php-openid/", 11) && strncmp($ua, "facebookexternalhit", 19)) {
|
||||
return "7ad04a8a";
|
||||
}
|
||||
}
|
||||
|
||||
// Content-Range is a response header, not a request header
|
||||
if (array_key_exists('Content-Range', $package['headers_mixed'])) {
|
||||
return '7d12528e';
|
||||
}
|
||||
|
||||
// Lowercase via is used by open proxies/referrer spammers
|
||||
// Exceptions: Clearswift uses lowercase via (refuses to fix;
|
||||
// may be blocked again in the future)
|
||||
if ($settings['strict'] &&
|
||||
array_key_exists('via', $package['headers']) &&
|
||||
strpos($package['headers']['via'],'Clearswift') === FALSE &&
|
||||
strpos($ua,'CoralWebPrx') === FALSE) {
|
||||
return "9c9e4979";
|
||||
}
|
||||
|
||||
// pinappleproxy is used by referrer spammers
|
||||
if (array_key_exists('Via', $package['headers_mixed'])) {
|
||||
if (stripos($package['headers_mixed']['Via'], "pinappleproxy") !== FALSE || stripos($package['headers_mixed']['Via'], "PCNETSERVER") !== FALSE || stripos($package['headers_mixed']['Via'], "Invisiware") !== FALSE) {
|
||||
return "939a6fbb";
|
||||
}
|
||||
}
|
||||
|
||||
// TE: if present must have Connection: TE
|
||||
// RFC 2616 14.39
|
||||
// Blocks Microsoft ISA Server 2004 in strict mode. Contact Microsoft
|
||||
// to obtain a hotfix.
|
||||
if ($settings['strict'] && array_key_exists('Te', $package['headers_mixed'])) {
|
||||
if (!preg_match('/\bTE\b/', $package['headers_mixed']['Connection'])) {
|
||||
return "582ec5e4";
|
||||
}
|
||||
}
|
||||
|
||||
if (array_key_exists('Connection', $package['headers_mixed'])) {
|
||||
// Connection: keep-alive and close are mutually exclusive
|
||||
if (preg_match('/\bKeep-Alive\b/i', $package['headers_mixed']['Connection']) && preg_match('/\bClose\b/i', $package['headers_mixed']['Connection'])) {
|
||||
return "a52f0448";
|
||||
}
|
||||
// Close shouldn't appear twice
|
||||
if (preg_match('/\bclose,\s?close\b/i', $package['headers_mixed']['Connection'])) {
|
||||
return "a52f0448";
|
||||
}
|
||||
// Keey-Alive shouldn't appear twice either
|
||||
if (preg_match('/\bkeep-alive,\s?keep-alive\b/i', $package['headers_mixed']['Connection'])) {
|
||||
return "a52f0448";
|
||||
}
|
||||
// Keep-Alive format in RFC 2068; some bots mangle these headers
|
||||
if (stripos($package['headers_mixed']['Connection'], "Keep-Alive: ") !== FALSE) {
|
||||
return "b0924802";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Headers which are not seen from normal user agents; only malicious bots
|
||||
if (array_key_exists('X-Aaaaaaaaaaaa', $package['headers_mixed']) || array_key_exists('X-Aaaaaaaaaa', $package['headers_mixed'])) {
|
||||
return "b9cc1d86";
|
||||
}
|
||||
// Proxy-Connection does not exist and should never be seen in the wild
|
||||
// http://lists.w3.org/Archives/Public/ietf-http-wg-old/1999JanApr/0032.html
|
||||
// http://lists.w3.org/Archives/Public/ietf-http-wg-old/1999JanApr/0040.html
|
||||
if ($settings['strict'] && array_key_exists('Proxy-Connection', $package['headers_mixed'])) {
|
||||
return "b7830251";
|
||||
}
|
||||
|
||||
if (array_key_exists('Referer', $package['headers_mixed'])) {
|
||||
// Referer, if it exists, must not be blank
|
||||
if (empty($package['headers_mixed']['Referer'])) {
|
||||
return "69920ee5";
|
||||
}
|
||||
|
||||
// Referer, if it exists, must contain a :
|
||||
// While a relative URL is technically valid in Referer, all known
|
||||
// legitimate user-agents send an absolute URL
|
||||
if (strpos($package['headers_mixed']['Referer'], ":") === FALSE) {
|
||||
return "45b35e30";
|
||||
}
|
||||
}
|
||||
|
||||
// "uk" is not a language (ISO 639) nor a country (ISO 3166)
|
||||
// oops, yes it is :( Please shoot any Ukrainian spammers you see.
|
||||
# if (preg_match('/\buk\b/', $package['headers_mixed']['Accept-Language'])) {
|
||||
# return "35ea7ffa";
|
||||
# }
|
||||
|
||||
return false;
|
||||
}
|
|
@ -1,241 +0,0 @@
|
|||
<?php if (!defined('BB2_CWD')) die("I said no cheating!");
|
||||
define('BB2_VERSION', "2.2.19");
|
||||
|
||||
// Bad Behavior entry point is bb2_start()
|
||||
// If you're reading this, you are probably lost.
|
||||
// Go read the bad-behavior-generic.php file.
|
||||
|
||||
define('BB2_CORE', dirname(__FILE__));
|
||||
define('BB2_COOKIE', 'bb2_screener_');
|
||||
|
||||
require_once(BB2_CORE . "/functions.inc.php");
|
||||
|
||||
// Kill 'em all!
|
||||
function bb2_banned($settings, $package, $key, $previous_key=false)
|
||||
{
|
||||
// Some spambots hit too hard. Slow them down a bit.
|
||||
sleep(2);
|
||||
|
||||
require_once(BB2_CORE . "/banned.inc.php");
|
||||
bb2_display_denial($settings, $package, $key, $previous_key);
|
||||
bb2_log_denial($settings, $package, $key, $previous_key);
|
||||
if (is_callable('bb2_banned_callback')) {
|
||||
bb2_banned_callback($settings, $package, $key);
|
||||
}
|
||||
// Penalize the spammers some more
|
||||
bb2_housekeeping($settings, $package);
|
||||
die();
|
||||
}
|
||||
|
||||
function bb2_approved($settings, $package)
|
||||
{
|
||||
// Dirk wanted this
|
||||
if (is_callable('bb2_approved_callback')) {
|
||||
bb2_approved_callback($settings, $package);
|
||||
}
|
||||
|
||||
// Decide what to log on approved requests.
|
||||
if (($settings['verbose'] && $settings['logging']) || empty($package['user_agent'])) {
|
||||
bb2_db_query(bb2_insert($settings, $package, "00000000"));
|
||||
}
|
||||
}
|
||||
|
||||
# If this is reverse-proxied or load balanced, obtain the actual client IP
|
||||
function bb2_reverse_proxy($settings, $headers_mixed)
|
||||
{
|
||||
# Detect if option is on when it should be off
|
||||
$header = uc_all($settings['reverse_proxy_header']);
|
||||
if (!array_key_exists($header, $headers_mixed)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$addrs = @array_reverse(preg_split("/[\s,]+/", $headers_mixed[$header]));
|
||||
# Skip our known reverse proxies and private addresses
|
||||
if (!empty($settings['reverse_proxy_addresses'])) {
|
||||
foreach ($addrs as $addr) {
|
||||
if (!match_cidr($addr, $settings['reverse_proxy_addresses']) && !is_rfc1918($addr)) {
|
||||
return $addr;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ($addrs as $addr) {
|
||||
if (!is_rfc1918($addr)) {
|
||||
return $addr;
|
||||
}
|
||||
}
|
||||
}
|
||||
# If we got here, someone is playing a trick on us.
|
||||
return false;
|
||||
}
|
||||
|
||||
# FIXME: Bug #12. But this code doesn't currently work.
|
||||
function bb2_unpack_php_post_array($key, $value)
|
||||
{
|
||||
$unpacked = array();
|
||||
foreach ($value as $k => $v) {
|
||||
$i = $key. '[' . $k . ']';
|
||||
if (is_array($v))
|
||||
$v = bb2_unpack_php_post_array($i, $v);
|
||||
$unpacked[$i] = $v;
|
||||
}
|
||||
return $unpacked;
|
||||
}
|
||||
|
||||
// Let God sort 'em out!
|
||||
function bb2_start($settings)
|
||||
{
|
||||
// Gather up all the information we need, first of all.
|
||||
$headers = bb2_load_headers();
|
||||
// Postprocess the headers to mixed-case
|
||||
// TODO: get the world to stop using PHP as CGI
|
||||
$headers_mixed = array();
|
||||
foreach ($headers as $h => $v) {
|
||||
$headers_mixed[uc_all($h)] = $v;
|
||||
}
|
||||
|
||||
// IPv6 - IPv4 compatibility mode hack
|
||||
$_SERVER['REMOTE_ADDR'] = preg_replace("/^::ffff:/", "", $_SERVER['REMOTE_ADDR']);
|
||||
|
||||
// Reconstruct the HTTP entity, if present.
|
||||
$request_entity = array();
|
||||
if (!strcasecmp($_SERVER['REQUEST_METHOD'], "POST") || !strcasecmp($_SERVER['REQUEST_METHOD'], "PUT")) {
|
||||
foreach ($_POST as $h => $v) {
|
||||
if (is_array($v)) {
|
||||
# Workaround, see Bug #12
|
||||
$v = "Array";
|
||||
}
|
||||
$request_entity[$h] = $v;
|
||||
}
|
||||
}
|
||||
|
||||
$request_uri = $_SERVER["REQUEST_URI"];
|
||||
if (!$request_uri) $request_uri = $_SERVER['SCRIPT_NAME']; # IIS
|
||||
|
||||
if ($settings['reverse_proxy'] && $ip = bb2_reverse_proxy($settings, $headers_mixed)) {
|
||||
$headers['X-Bad-Behavior-Remote-Address'] = $_SERVER['REMOTE_ADDR'];
|
||||
$headers_mixed['X-Bad-Behavior-Remote-Address'] = $_SERVER['REMOTE_ADDR'];
|
||||
} else {
|
||||
$ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
@$package = array('ip' => $ip, 'headers' => $headers, 'headers_mixed' => $headers_mixed, 'request_method' => $_SERVER['REQUEST_METHOD'], 'request_uri' => $request_uri, 'server_protocol' => $_SERVER['SERVER_PROTOCOL'], 'request_entity' => $request_entity, 'user_agent' => $_SERVER['HTTP_USER_AGENT'], 'is_browser' => false,);
|
||||
|
||||
$result = bb2_screen($settings, $package);
|
||||
if ($result && !defined('BB2_TEST')) bb2_banned($settings, $package, $result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
function bb2_screen($settings, $package)
|
||||
{
|
||||
// Please proceed to the security checkpoint, have your identification
|
||||
// and boarding pass ready, and prepare to be nakedized or fondled.
|
||||
|
||||
// CloudFlare-specific checks not handled by reverse proxy code
|
||||
// Thanks to butchs at Simple Machines
|
||||
if (array_key_exists('Cf-Connecting-Ip', $package['headers_mixed'])) {
|
||||
require_once(BB2_CORE . "/cloudflare.inc.php");
|
||||
$r = bb2_cloudflare($package);
|
||||
if ($r !== false && $r != $package['ip']) return $r;
|
||||
}
|
||||
|
||||
// First check the whitelist
|
||||
require_once(BB2_CORE . "/whitelist.inc.php");
|
||||
if (!bb2_run_whitelist($package)) {
|
||||
// Now check the blacklist
|
||||
require_once(BB2_CORE . "/blacklist.inc.php");
|
||||
if ($r = bb2_blacklist($package)) return $r;
|
||||
|
||||
// Check the http:BL
|
||||
require_once(BB2_CORE . "/blackhole.inc.php");
|
||||
if ($r = bb2_httpbl($settings, $package)) {
|
||||
if ($r == 1) return false; # whitelisted
|
||||
return $r;
|
||||
}
|
||||
|
||||
// Check for common stuff
|
||||
require_once(BB2_CORE . "/common_tests.inc.php");
|
||||
if ($r = bb2_protocol($settings, $package)) return $r;
|
||||
if ($r = bb2_cookies($settings, $package)) return $r;
|
||||
if ($r = bb2_misc_headers($settings, $package)) return $r;
|
||||
|
||||
// Specific checks
|
||||
@$ua = $package['user_agent'];
|
||||
// Search engine checks come first
|
||||
if (stripos($ua, "bingbot") !== FALSE || stripos($ua, "msnbot") !== FALSE || stripos($ua, "MS Search") !== FALSE) {
|
||||
require_once(BB2_CORE . "/searchengine.inc.php");
|
||||
if ($r = bb2_msnbot($package)) {
|
||||
if ($r == 1) return false; # whitelisted
|
||||
return $r;
|
||||
}
|
||||
return false;
|
||||
} elseif (stripos($ua, "Googlebot") !== FALSE || stripos($ua, "Mediapartners-Google") !== FALSE || stripos($ua, "Google Web Preview") !== FALSE) {
|
||||
require_once(BB2_CORE . "/searchengine.inc.php");
|
||||
if ($r = bb2_google($package)) {
|
||||
if ($r == 1) return false; # whitelisted
|
||||
return $r;
|
||||
}
|
||||
return false;
|
||||
} elseif (stripos($ua, "Yahoo! Slurp") !== FALSE || stripos($ua, "Yahoo! SearchMonkey") !== FALSE) {
|
||||
require_once(BB2_CORE . "/searchengine.inc.php");
|
||||
if ($r = bb2_yahoo($package)) {
|
||||
if ($r == 1) return false; # whitelisted
|
||||
return $r;
|
||||
}
|
||||
return false;
|
||||
} elseif (stripos($ua, "Baidu") !== FALSE) {
|
||||
require_once(BB2_CORE . "/searchengine.inc.php");
|
||||
if ($r = bb2_baidu($package)) {
|
||||
if ($r == 1) return false; # whitelisted
|
||||
return $r;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// MSIE checks
|
||||
if (stripos($ua, "; MSIE") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if (stripos($ua, "Opera") !== FALSE) {
|
||||
if ($r = bb2_opera($package)) return $r;
|
||||
} else {
|
||||
if ($r = bb2_msie($package)) return $r;
|
||||
}
|
||||
} elseif (stripos($ua, "Konqueror") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_konqueror($package)) return $r;
|
||||
} elseif (stripos($ua, "Opera") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_opera($package)) return $r;
|
||||
} elseif (stripos($ua, "Safari") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_safari($package)) return $r;
|
||||
} elseif (stripos($ua, "Lynx") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_lynx($package)) return $r;
|
||||
} elseif (stripos($ua, "MovableType") !== FALSE) {
|
||||
require_once(BB2_CORE . "/movabletype.inc.php");
|
||||
if ($r = bb2_movabletype($package)) return $r;
|
||||
} elseif (stripos($ua, "Mozilla") !== FALSE && stripos($ua, "Mozilla") == 0) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_mozilla($package)) return $r;
|
||||
}
|
||||
|
||||
// More intensive screening applies to POST requests
|
||||
if (!strcasecmp('POST', $package['request_method'])) {
|
||||
require_once(BB2_CORE . "/post.inc.php");
|
||||
if ($r = bb2_post($settings, $package)) return $r;
|
||||
}
|
||||
}
|
||||
|
||||
// Last chance screening.
|
||||
require_once(BB2_CORE . "/screener.inc.php");
|
||||
bb2_screener($settings, $package);
|
||||
|
||||
// And that's about it.
|
||||
bb2_approved($settings, $package);
|
||||
return false;
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die("I said no cheating!");
|
||||
|
||||
// Miscellaneous helper functions.
|
||||
|
||||
// Quick and dirty check for an IPv6 address
|
||||
function is_ipv6($address) {
|
||||
return (strpos($address, ":")) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
// stripos() needed because stripos is only present on PHP 5
|
||||
if (!function_exists('stripos')) {
|
||||
function stripos($haystack,$needle,$offset = 0) {
|
||||
return(strpos(strtolower($haystack),strtolower($needle),$offset));
|
||||
}
|
||||
}
|
||||
|
||||
// str_split() needed because str_split is only present on PHP 5
|
||||
if (!function_exists('str_split')) {
|
||||
function str_split($string, $split_length=1)
|
||||
{
|
||||
if ($split_length < 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ($pos=0, $chunks = array(); $pos < strlen($string); $pos+=$split_length) {
|
||||
$chunks[] = substr($string, $pos, $split_length);
|
||||
}
|
||||
return $chunks;
|
||||
}
|
||||
}
|
||||
|
||||
// Convert a string to mixed-case on word boundaries.
|
||||
function uc_all($string) {
|
||||
$temp = preg_split('/(\W)/', str_replace("_", "-", $string), -1, PREG_SPLIT_DELIM_CAPTURE);
|
||||
foreach ($temp as $key=>$word) {
|
||||
$temp[$key] = ucfirst(strtolower($word));
|
||||
}
|
||||
return join ('', $temp);
|
||||
}
|
||||
|
||||
// Determine if an IP address resides in a CIDR netblock or netblocks.
|
||||
function match_cidr($addr, $cidr) {
|
||||
$output = false;
|
||||
|
||||
if (is_array($cidr)) {
|
||||
foreach ($cidr as $cidrlet) {
|
||||
if (match_cidr($addr, $cidrlet)) {
|
||||
$output = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@list($ip, $mask) = explode('/', $cidr);
|
||||
if (!$mask) $mask = 32;
|
||||
$mask = pow(2,32) - pow(2, (32 - $mask));
|
||||
$output = ((ip2long($addr) & $mask) == (ip2long($ip) & $mask));
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Determine if an IP address is reserved by RFC 1918.
|
||||
function is_rfc1918($addr) {
|
||||
return match_cidr($addr, array("10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"));
|
||||
}
|
||||
// Obtain all the HTTP headers.
|
||||
// NB: on PHP-CGI we have to fake it out a bit, since we can't get the REAL
|
||||
// headers. Run PHP as Apache 2.0 module if possible for best results.
|
||||
function bb2_load_headers() {
|
||||
if (!is_callable('getallheaders')) {
|
||||
$headers = array();
|
||||
foreach ($_SERVER as $h => $v)
|
||||
if (preg_match('/HTTP_(.+)/', $h, $hp))
|
||||
$headers[str_replace("_", "-", uc_all($hp[1]))] = $v;
|
||||
} else {
|
||||
$headers = getallheaders();
|
||||
}
|
||||
return $headers;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
Viewing directory contents is not permitted.
|
|
@ -1,12 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
function bb2_movabletype($package)
|
||||
{
|
||||
// Is it a trackback?
|
||||
if (strcasecmp($package['request_method'], "POST")) {
|
||||
if (strcmp($package['headers_mixed']['Range'], "bytes=0-99999")) {
|
||||
return "7d12528e";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1,109 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Specialized screening for trackbacks
|
||||
function bb2_trackback($package)
|
||||
{
|
||||
// Web browsers don't send trackbacks
|
||||
if ($package['is_browser']) {
|
||||
return 'f0dcb3fd';
|
||||
}
|
||||
|
||||
// Proxy servers don't send trackbacks either
|
||||
if (array_key_exists('Via', $package['headers_mixed']) || array_key_exists('Max-Forwards', $package['headers_mixed']) || array_key_exists('X-Forwarded-For', $package['headers_mixed']) || array_key_exists('Client-Ip', $package['headers_mixed'])) {
|
||||
return 'd60b87c7';
|
||||
}
|
||||
|
||||
// Fake WordPress trackbacks
|
||||
// Real ones do not contain Accept:, and have a charset defined
|
||||
// Real WP trackbacks may contain Accept: depending on the HTTP
|
||||
// transport being used by the sending host
|
||||
if (strpos($package['headers_mixed']['User-Agent'], "WordPress/") !== FALSE) {
|
||||
if (strpos($package['headers_mixed']['Content-Type'], "charset=") === FALSE) {
|
||||
return 'e3990b47';
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// All tests which apply specifically to POST requests
|
||||
function bb2_post($settings, $package)
|
||||
{
|
||||
// Check blackhole lists for known spam/malicious activity
|
||||
// require_once(BB2_CORE . "/blackhole.inc.php");
|
||||
// if ($r = bb2_blackhole($package)) return $r;
|
||||
|
||||
// MovableType needs specialized screening
|
||||
if (stripos($package['headers_mixed']['User-Agent'], "MovableType") !== FALSE) {
|
||||
if (strcmp($package['headers_mixed']['Range'], "bytes=0-99999")) {
|
||||
return "7d12528e";
|
||||
}
|
||||
}
|
||||
|
||||
// Trackbacks need special screening
|
||||
$request_entity = $package['request_entity'];
|
||||
if (isset($request_entity['title']) && isset($request_entity['url']) && isset($request_entity['blog_name'])) {
|
||||
return bb2_trackback($package);
|
||||
}
|
||||
|
||||
// Catch a few completely broken spambots
|
||||
foreach ($request_entity as $key => $value) {
|
||||
$pos = strpos($key, " document.write");
|
||||
if ($pos !== FALSE) {
|
||||
return "dfd9b1ad";
|
||||
}
|
||||
}
|
||||
|
||||
// If Referer exists, it should refer to a page on our site
|
||||
if (!$settings['offsite_forms'] && array_key_exists('Referer', $package['headers_mixed'])) {
|
||||
$url = parse_url($package['headers_mixed']['Referer']);
|
||||
$url['host'] = preg_replace('|^www\.|', '', $url['host']);
|
||||
$host = preg_replace('|^www\.|', '', $package['headers_mixed']['Host']);
|
||||
# Strip port
|
||||
$host = preg_replace('|:\d+$|', '', $host);
|
||||
if (strcasecmp($host, $url['host'])) {
|
||||
return "cd361abb";
|
||||
}
|
||||
}
|
||||
|
||||
// Screen by cookie/JavaScript form add
|
||||
if (isset($_COOKIE[BB2_COOKIE]) && !$settings['eu_cookie']) {
|
||||
$screener1 = explode(" ", $_COOKIE[BB2_COOKIE]);
|
||||
} else {
|
||||
$screener1 = array(0);
|
||||
}
|
||||
if (isset($_POST[BB2_COOKIE])) {
|
||||
$screener2 = explode(" ", $_POST[BB2_COOKIE]);
|
||||
} else {
|
||||
$screener2 = array(0);
|
||||
}
|
||||
$screener = max($screener1[0], $screener2[0]);
|
||||
|
||||
if ($screener > 0) {
|
||||
// Posting too fast? 5 sec
|
||||
// FIXME: even 5 sec is too intrusive
|
||||
// if ($screener + 5 > time())
|
||||
// return "408d7e72";
|
||||
// Posting too slow? 48 hr
|
||||
if ($screener + 172800 < time())
|
||||
return "b40c8ddc";
|
||||
|
||||
// Screen by IP address
|
||||
$ip = ip2long($package['ip']);
|
||||
$ip_screener = ip2long($screener[1]);
|
||||
// FIXME: This is b0rked, but why?
|
||||
// if ($ip && $ip_screener && abs($ip_screener - $ip) > 256)
|
||||
// return "c1fa729b";
|
||||
|
||||
if (!empty($package['headers_mixed']['X-Forwarded-For'])) {
|
||||
$ip = $package['headers_mixed']['X-Forwarded-For'];
|
||||
}
|
||||
// Screen for user agent changes
|
||||
// User connected previously with blank user agent
|
||||
// $q = bb2_db_query("SELECT `ip` FROM " . $settings['log_table'] . " WHERE (`ip` = '" . $package['ip'] . "' OR `ip` = '" . $screener[1] . "') AND `user_agent` != '" . $package['user_agent'] . "' AND `date` > DATE_SUB('" . bb2_db_date() . "', INTERVAL 5 MINUTE)");
|
||||
// Damnit, too many ways for this to fail :(
|
||||
// if ($q !== FALSE && $q != NULL && bb2_db_num_rows($q) > 0)
|
||||
// return "799165c2";
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Defines the responses which Bad Behavior might return.
|
||||
|
||||
function bb2_get_response($key) {
|
||||
$bb2_responses = array(
|
||||
'00000000' => array('response' => 200, 'explanation' => '', 'log' => 'Permitted'),
|
||||
'136673cd' => array('response' => 403, 'explanation' => 'Your Internet Protocol address is listed on a blacklist of addresses involved in malicious or illegal activity. See the listing below for more details on specific blacklists and removal procedures.', 'log' => 'IP address found on external blacklist'),
|
||||
'17566707' => array('response' => 403, 'explanation' => 'An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'Required header \'Accept\' missing'),
|
||||
'17f4e8c8' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'User-Agent was found on blacklist'),
|
||||
'21f11d3f' => array('response' => 403, 'explanation' => 'An invalid request was received. You claimed to be a mobile Web device, but you do not actually appear to be a mobile Web device.', 'log' => 'User-Agent claimed to be AvantGo, claim appears false'),
|
||||
'2b021b1f' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'IP address found on http:BL blacklist'),
|
||||
'2b90f772' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. If you are using the Opera browser, then Opera must appear in your user agent.', 'log' => 'Connection: TE present, not supported by MSIE'),
|
||||
'35ea7ffa' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Check your browser\'s language and locale settings.', 'log' => 'Invalid language specified'),
|
||||
'408d7e72' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'POST comes too quickly after GET'),
|
||||
'41feed15' => array('response' => 400, 'explanation' => 'An invalid request was received. This may be caused by a malfunctioning proxy server. Bypass the proxy server and connect directly, or contact your proxy server administrator.', 'log' => 'Header \'Pragma\' without \'Cache-Control\' prohibited for HTTP/1.1 requests'),
|
||||
'45b35e30' => array('response' => 400, 'explanation' => 'An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'Header \'Referer\' is corrupt'),
|
||||
'57796684' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'Prohibited header \'X-Aaaaaaaaaa\' or \'X-Aaaaaaaaaaaa\' present'),
|
||||
'582ec5e4' => array('response' => 400, 'explanation' => 'An invalid request was received. If you are using a proxy server, bypass the proxy server or contact your proxy server administrator. This may also be caused by a bug in the Opera web browser.', 'log' => '"Header \'TE\' present but TE not specified in \'Connection\' header'),
|
||||
'69920ee5' => array('response' => 400, 'explanation' => 'An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'Header \'Referer\' present but blank'),
|
||||
'6c502ff1' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'Bot not fully compliant with RFC 2965'),
|
||||
'70e45496' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'User agent claimed to be CloudFlare, claim appears false'),
|
||||
'71436a15' => array('response' => 403, 'explanation' => 'An invalid request was received. You claimed to be a major search engine, but you do not appear to actually be a major search engine.', 'log' => 'User-Agent claimed to be Yahoo, claim appears to be false'),
|
||||
'799165c2' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'Rotating user-agents detected'),
|
||||
'7a06532b' => array('response' => 400, 'explanation' => 'An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'Required header \'Accept-Encoding\' missing'),
|
||||
'7ad04a8a' => array('response' => 400, 'explanation' => 'The automated program you are using is not permitted to access this server. Please use a different program or a standard Web browser.', 'log' => 'Prohibited header \'Range\' present'),
|
||||
'7d12528e' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'Prohibited header \'Range\' or \'Content-Range\' in POST request'),
|
||||
'939a6fbb' => array('response' => 403, 'explanation' => 'The proxy server you are using is not permitted to access this server. Please bypass the proxy server, or contact your proxy server administrator.', 'log' => 'Banned proxy server in use'),
|
||||
'96c0bd29' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'URL pattern found on blacklist'),
|
||||
'9c9e4979' => array('response' => 403, 'explanation' => 'The proxy server you are using is not permitted to access this server. Please bypass the proxy server, or contact your proxy server administrator.', 'log' => 'Prohibited header \'via\' present'),
|
||||
'a0105122' => array('response' => 417, 'explanation' => 'Expectation failed. Please retry your request.', 'log' => 'Header \'Expect\' prohibited; resend without Expect'),
|
||||
'a1084bad' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'User-Agent claimed to be MSIE, with invalid Windows version'),
|
||||
'a52f0448' => array('response' => 400, 'explanation' => 'An invalid request was received. This may be caused by a malfunctioning proxy server or browser privacy software. If you are using a proxy server, bypass the proxy server or contact your proxy server administrator.', 'log' => 'Header \'Connection\' contains invalid values'),
|
||||
'b0924802' => array('response' => 400, 'explanation' => 'An invalid request was received. This may be caused by malicious software on your computer.', 'log' => 'Incorrect form of HTTP/1.0 Keep-Alive'),
|
||||
'b40c8ddc' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, close your browser, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'POST more than two days after GET'),
|
||||
'b7830251' => array('response' => 400, 'explanation' => 'Your proxy server sent an invalid request. Please contact the proxy server administrator to have this problem fixed.', 'log' => 'Prohibited header \'Proxy-Connection\' present'),
|
||||
'b9cc1d86' => array('response' => 403, 'explanation' => 'The proxy server you are using is not permitted to access this server. Please bypass the proxy server, or contact your proxy server administrator.', 'log' => 'Prohibited header \'X-Aaaaaaaaaa\' or \'X-Aaaaaaaaaaaa\' present'),
|
||||
'c1fa729b' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'Use of rotating proxy servers detected'),
|
||||
'cd361abb' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Data may not be posted from offsite forms.', 'log' => 'Referer did not point to a form on this site'),
|
||||
'd60b87c7' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, please remove any viruses or spyware from your computer.', 'log' => 'Trackback received via proxy server'),
|
||||
'dfd9b1ad' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'Request contained a malicious JavaScript or SQL injection attack'),
|
||||
'e3990b47' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, please remove any viruses or spyware from your computer.', 'log' => 'Obviously fake trackback received'),
|
||||
'e4de0453' => array('response' => 403, 'explanation' => 'An invalid request was received. You claimed to be a major search engine, but you do not appear to actually be a major search engine.', 'log' => 'User-Agent claimed to be msnbot, claim appears to be false'),
|
||||
'e87553e1' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'I know you and I don\'t like you, dirty spammer.'),
|
||||
'f0dcb3fd' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'Web browser attempted to send a trackback'),
|
||||
'f1182195' => array('response' => 403, 'explanation' => 'An invalid request was received. You claimed to be a major search engine, but you do not appear to actually be a major search engine.', 'log' => 'User-Agent claimed to be Googlebot, claim appears to be false.'),
|
||||
'f9f2b8b9' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'A User-Agent is required but none was provided.'),
|
||||
);
|
||||
|
||||
if (array_key_exists($key, $bb2_responses)) return $bb2_responses[$key];
|
||||
return array('00000000');
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die("I said no cheating!");
|
||||
|
||||
# Round trip DNS verification
|
||||
|
||||
# Returns TRUE if DNS matches; FALSE on mismatch
|
||||
# Returns $ip if an error occurs
|
||||
# TODO: Not IPv6 safe
|
||||
# FIXME: Returns false on DNS server failure; PHP provides no distinction
|
||||
# between no records and error condition
|
||||
function bb2_roundtripdns($ip,$domain)
|
||||
{
|
||||
if (@is_ipv6($ip)) return $ip;
|
||||
|
||||
$host = gethostbyaddr($ip);
|
||||
$host_result = strpos(strrev($host), strrev($domain));
|
||||
if ($host_result === false || $host_result > 0) return false;
|
||||
$addrs = gethostbynamel($host);
|
||||
if (in_array($ip, $addrs)) return true;
|
||||
return false;
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
<?php if (!defined('BB2_CWD')) die("I said no cheating!");
|
||||
|
||||
// Bad Behavior browser screener
|
||||
|
||||
function bb2_screener_cookie($settings, $package, $cookie_name, $cookie_value)
|
||||
{
|
||||
if ($settings['eu_cookie']) {
|
||||
// Delete existing cookie, if any
|
||||
setcookie($cookie_name, $cookie_value, 1, bb2_relative_path());
|
||||
} else {
|
||||
// Set session cookie
|
||||
setcookie($cookie_name, $cookie_value, 0, bb2_relative_path());
|
||||
}
|
||||
}
|
||||
|
||||
function bb2_screener_javascript($settings, $package, $cookie_name, $cookie_value)
|
||||
{
|
||||
global $bb2_javascript;
|
||||
|
||||
// FIXME: do something
|
||||
$bb2_javascript = "<script type=\"text/javascript\">
|
||||
<!--
|
||||
function bb2_addLoadEvent(func) {
|
||||
var oldonload = window.onload;
|
||||
if (typeof window.onload != 'function') {
|
||||
window.onload = func;
|
||||
} else {
|
||||
window.onload = function() {
|
||||
oldonload();
|
||||
func();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bb2_addLoadEvent(function() {
|
||||
for ( i=0; i < document.forms.length; i++ ) {
|
||||
if (document.forms[i].method == 'post') {
|
||||
var myElement = document.createElement('input');
|
||||
myElement.setAttribute('type', 'hidden');
|
||||
myElement.name = '$cookie_name';
|
||||
myElement.value = '$cookie_value';
|
||||
document.forms[i].appendChild(myElement);
|
||||
}
|
||||
}
|
||||
});
|
||||
// --></script>
|
||||
";
|
||||
}
|
||||
|
||||
function bb2_screener($settings, $package)
|
||||
{
|
||||
$cookie_name = BB2_COOKIE;
|
||||
|
||||
// Set up a simple cookie
|
||||
$screener = array(time(), $package['ip']);
|
||||
if (isset($package['headers_mixed']['X-Forwarded-For'])) {
|
||||
array_push($screener, $package['headers_mixed']['X-Forwarded-For']);
|
||||
}
|
||||
if (isset($package['headers_mixed']['Client-Ip'])) {
|
||||
array_push($screener, $package['headers_mixed']['Client-Ip']);
|
||||
}
|
||||
|
||||
$cookie_value = implode(" ", $screener);
|
||||
|
||||
bb2_screener_cookie($settings, $package, BB2_COOKIE, $cookie_value);
|
||||
bb2_screener_javascript($settings, $package, BB2_COOKIE, $cookie_value);
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
require_once(BB2_CORE . "/roundtripdns.inc.php");
|
||||
|
||||
// Analyze user agents claiming to be Googlebot
|
||||
|
||||
function bb2_google($package)
|
||||
{
|
||||
if (@is_ipv6($package['ip'])) return false; # TODO
|
||||
if (match_cidr($package['ip'], array("66.249.64.0/19", "64.233.160.0/19", "72.14.192.0/18", "203.208.32.0/19", "74.125.0.0/16", "216.239.32.0/19", "209.85.128.0/17")) === FALSE) {
|
||||
return false; # Soft fail, must pass other screening
|
||||
#return "f1182195"; # Hard fail
|
||||
}
|
||||
# Disabled due to http://bugs.php.net/bug.php?id=53092
|
||||
# if (!bb2_roundtripdns($package['ip'], "googlebot.com")) {
|
||||
# return "f1182195";
|
||||
# }
|
||||
return 1; # Real Googlebot; bypass all other checks
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be msnbot
|
||||
|
||||
function bb2_msnbot($package)
|
||||
{
|
||||
if (@is_ipv6($package['ip'])) return false; # TODO
|
||||
if (match_cidr($package['ip'], array("207.46.0.0/16", "65.52.0.0/14", "207.68.128.0/18", "207.68.192.0/20", "64.4.0.0/18", "157.54.0.0/15", "157.60.0.0/16", "157.56.0.0/14", "131.253.21.0/24", "131.253.22.0/23", "131.253.24.0/21", "131.253.32.0/20", "40.76.0.0/14")) === FALSE) {
|
||||
return false; # Soft fail, must pass other screening
|
||||
#return "e4de0453"; # Hard fail
|
||||
}
|
||||
# Disabled due to http://bugs.php.net/bug.php?id=53092
|
||||
# if (!bb2_roundtripdns($package['ip'], "msn.com")) {
|
||||
# return "e4de0453";
|
||||
# }
|
||||
return 1; # Real msnbot; bypass all other checks
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Yahoo!
|
||||
|
||||
function bb2_yahoo($package)
|
||||
{
|
||||
if (@is_ipv6($package['ip'])) return false; # TODO
|
||||
if (match_cidr($package['ip'], array("202.160.176.0/20", "67.195.0.0/16", "203.209.252.0/24", "72.30.0.0/16", "98.136.0.0/14", "74.6.0.0/16")) === FALSE) {
|
||||
return false; # Soft fail, must pass other screening
|
||||
#return '71436a15'; # Hard fail
|
||||
}
|
||||
# Disabled due to http://bugs.php.net/bug.php?id=53092
|
||||
# if (!bb2_roundtripdns($package['ip'], "crawl.yahoo.net")) {
|
||||
# return "71436a15";
|
||||
# }
|
||||
return 1; # Real Yahoo bot; bypass all other checks
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Baidu
|
||||
|
||||
function bb2_baidu($package)
|
||||
{
|
||||
if (@is_ipv6($package['ip'])) return false; # TODO
|
||||
if (match_cidr($package['ip'], array("119.63.192.0/21", "123.125.71.0/24", "180.76.0.0/16", "220.181.0.0/16")) === FALSE) {
|
||||
return false; # Soft fail, must pass other screening
|
||||
}
|
||||
return 1; # Real Baidu bot; bypass all other checks
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
function bb2_run_whitelist($package)
|
||||
{
|
||||
# FIXME: Transitional, until port maintainters implement bb2_read_whitelist
|
||||
if (function_exists('bb2_read_whitelist')) {
|
||||
$whitelists = bb2_read_whitelist();
|
||||
} else {
|
||||
$whitelists = @parse_ini_file(dirname(BB2_CORE) . "/whitelist.ini");
|
||||
}
|
||||
|
||||
if (@!empty($whitelists['ip'])) {
|
||||
foreach (array_filter($whitelists['ip']) as $range) {
|
||||
if (match_cidr($package['ip'], $range)) return true;
|
||||
}
|
||||
}
|
||||
if (@!empty($whitelists['useragent'])) {
|
||||
foreach (array_filter($whitelists['useragent']) as $user_agent) {
|
||||
if (!strcmp($package['headers_mixed']['User-Agent'], $user_agent)) return true;
|
||||
}
|
||||
}
|
||||
if (@!empty($whitelists['url'])) {
|
||||
if (strpos($package['request_uri'], "?") === FALSE) {
|
||||
$request_uri = $package['request_uri'];
|
||||
} else {
|
||||
$request_uri = substr($package['request_uri'], 0, strpos($package['request_uri'], "?"));
|
||||
}
|
||||
foreach (array_filter($whitelists['url']) as $url) {
|
||||
$pos = strpos($request_uri, $url);
|
||||
if ($pos !== false && $pos == 0) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
Viewing directory contents is not permitted.
|
|
@ -19,126 +19,110 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
*******************************************************************************/
|
||||
|
||||
class Captcha
|
||||
{
|
||||
function check_captcha($code,$entered_code)
|
||||
{
|
||||
if(strtolower($entered_code) == strtolower($code)) return true;
|
||||
else return false;
|
||||
}
|
||||
class Captcha {
|
||||
function check_captcha($code, $entered_code) {
|
||||
if (strtolower($entered_code) == strtolower($code)) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
function generate_code($letters='abcdefhjkmnpqrstuvwxyz234568')
|
||||
{
|
||||
mt_srand((double)microtime()*1000000);
|
||||
$code='';
|
||||
for($i=0;$i<5;$i++)
|
||||
{
|
||||
$code.=substr($letters,mt_rand(0,strlen($letters)-1),1);
|
||||
}
|
||||
return $code;
|
||||
}
|
||||
function generate_code($letters = 'abcdefhjkmnpqrstuvwxyz234568') {
|
||||
mt_srand((double)microtime()*1000000);
|
||||
$code = '';
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
$code .= substr($letters, mt_rand(0, strlen($letters) -1), 1);
|
||||
}
|
||||
return $code;
|
||||
}
|
||||
|
||||
function generate_image($code,$backgrounds_folder='',$fonts_folder='')
|
||||
{
|
||||
$font_size = 23;
|
||||
$font_pos_x = 10;
|
||||
$font_pos_y = 30;
|
||||
function generate_image($code, $backgrounds_folder = '', $fonts_folder = '') {
|
||||
$font_size = 23;
|
||||
$font_pos_x = 10;
|
||||
$font_pos_y = 30;
|
||||
|
||||
// get background images:
|
||||
if($backgrounds_folder!='')
|
||||
{
|
||||
$handle=opendir($backgrounds_folder);
|
||||
while ($file = readdir($handle))
|
||||
{
|
||||
if(preg_match('/\.png$/i', $file) || preg_match('/\.gif$/i', $file) || preg_match('/\.jpg$/i', $file)) $backgrounds[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
// get background images:
|
||||
if ($backgrounds_folder != '') {
|
||||
$handle = opendir($backgrounds_folder);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.png$/i', $file) || preg_match('/\.gif$/i', $file) || preg_match('/\.jpg$/i', $file)) $backgrounds[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
|
||||
// get fonts:
|
||||
if($fonts_folder!='')
|
||||
{
|
||||
$handle=opendir($fonts_folder);
|
||||
while($file = readdir($handle))
|
||||
{
|
||||
if(preg_match('/\.ttf$/i', $file)) $fonts[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
// get fonts:
|
||||
if ($fonts_folder != '') {
|
||||
$handle = opendir($fonts_folder);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.ttf$/i', $file)) $fonts[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
|
||||
// split code into chars:
|
||||
$code_length = strlen($code);
|
||||
for($i=0;$i<$code_length;$i++)
|
||||
{
|
||||
$code_chars_array[] = substr($code,$i,1);
|
||||
}
|
||||
// split code into chars:
|
||||
$code_length = strlen($code);
|
||||
for ($i = 0; $i < $code_length; $i++) {
|
||||
$code_chars_array[] = substr($code, $i, 1);
|
||||
}
|
||||
|
||||
// if background images are available, craete image from one of them:
|
||||
if(isset($backgrounds))
|
||||
{
|
||||
$bg = $backgrounds[mt_rand(0,count($backgrounds)-1)];
|
||||
if(preg_match('/\.png$/i', $bg)) $im = ImageCreateFromPNG($backgrounds_folder.$bg);
|
||||
elseif(preg_match('/\.gif$/i', $bg)) $im = ImageCreateFromGIF($backgrounds_folder.$bg);
|
||||
else $im = ImageCreateFromJPEG($backgrounds_folder.$bg);
|
||||
if(function_exists('imagerotate') && mt_rand(0,1)==1) $im = imagerotate($im, 180, 0);
|
||||
}
|
||||
// if not, create an empty image:
|
||||
else
|
||||
{
|
||||
$im = ImageCreate(180, 40);
|
||||
$background_color = ImageColorAllocate ($im, 234, 234, 234);
|
||||
}
|
||||
// if background images are available, craete image from one of them:
|
||||
if (isset($backgrounds)) {
|
||||
$bg = $backgrounds[mt_rand(0,count($backgrounds)-1)];
|
||||
if (preg_match('/\.png$/i', $bg)) $im = ImageCreateFromPNG($backgrounds_folder.$bg);
|
||||
else if (preg_match('/\.gif$/i', $bg)) $im = ImageCreateFromGIF($backgrounds_folder.$bg);
|
||||
else $im = ImageCreateFromJPEG($backgrounds_folder.$bg);
|
||||
if (function_exists('imageflip') && mt_rand(0, 5) % 2 == 0) {
|
||||
$flipConsts = [IMG_FLIP_HORIZONTAL, IMG_FLIP_VERTICAL, IMG_FLIP_BOTH];
|
||||
$flipper = mt_rand(0, 2);
|
||||
imageflip($im, $flipConsts[$flipper]);
|
||||
}
|
||||
} else {
|
||||
// if not, create an empty image:
|
||||
$im = ImageCreate(180, 40);
|
||||
$background_color = ImageColorAllocate ($im, 234, 234, 234);
|
||||
}
|
||||
|
||||
// set text color:
|
||||
$text_color = ImageColorAllocate ($im, 0, 0, 0);
|
||||
// set text color:
|
||||
$text_color = ImageColorAllocate ($im, 0, 0, 0);
|
||||
|
||||
// use fonts, if available:
|
||||
if(isset($fonts))
|
||||
{
|
||||
foreach($code_chars_array as $char)
|
||||
{
|
||||
$angle = intval(rand((30 * -1), 30));
|
||||
ImageTTFText($im, $font_size, $angle, $font_pos_x, $font_pos_y, $text_color, $fonts_folder.$fonts[mt_rand(0,count($fonts)-1)],$char);
|
||||
$font_pos_x=$font_pos_x+($font_size+13);
|
||||
}
|
||||
}
|
||||
// if not, use internal font:
|
||||
else
|
||||
{
|
||||
ImageString($im, 5, 30, 10, $code, $text_color);
|
||||
}
|
||||
header("Expires: Expires: Sat, 20 Oct 2007 00:00:00 GMT");
|
||||
header("Cache-Control: max-age=0");
|
||||
header("Content-type: image/png");
|
||||
ImagePNG($im);
|
||||
exit();
|
||||
}
|
||||
// use fonts, if available:
|
||||
if (isset($fonts)) {
|
||||
foreach ($code_chars_array as $char) {
|
||||
$angle = intval(rand((30 * -1), 30));
|
||||
ImageTTFText($im, $font_size, $angle, $font_pos_x, $font_pos_y, $text_color, $fonts_folder.$fonts[mt_rand(0, count($fonts) -1)], $char);
|
||||
$font_pos_x = $font_pos_x + ($font_size + 13);
|
||||
}
|
||||
} else {
|
||||
// if not, use internal font:
|
||||
ImageString($im, 5, 30, 10, $code, $text_color);
|
||||
}
|
||||
header("Expires: Expires: Sat, 20 Oct 2007 00:00:00 GMT");
|
||||
header("Cache-Control: max-age=0");
|
||||
header("Content-type: image/png");
|
||||
ImagePNG($im);
|
||||
exit();
|
||||
}
|
||||
|
||||
function generate_dummy_image()
|
||||
{
|
||||
$im = @ImageCreate(180, 40);
|
||||
$background_color = ImageColorAllocate ($im, 234, 234, 234);
|
||||
$text_color = ImageColorAllocate ($im, 0, 0, 0);
|
||||
#ImageString($im, 3, 7, 4, 'CAPTCHA not available', $text_color);
|
||||
header("Expires: Expires: Sat, 20 Oct 2007 00:00:00 GMT");
|
||||
header("Cache-Control: max-age=0");
|
||||
header("Content-type: image/png");
|
||||
ImagePNG($im);
|
||||
}
|
||||
function generate_dummy_image() {
|
||||
$im = @ImageCreate(180, 40);
|
||||
$background_color = ImageColorAllocate ($im, 234, 234, 234);
|
||||
$text_color = ImageColorAllocate ($im, 0, 0, 0);
|
||||
//ImageString($im, 3, 7, 4, 'CAPTCHA not available', $text_color);
|
||||
header("Expires: Expires: Sat, 20 Oct 2007 00:00:00 GMT");
|
||||
header("Cache-Control: max-age=0");
|
||||
header("Content-type: image/png");
|
||||
ImagePNG($im);
|
||||
}
|
||||
|
||||
// for math CAPTCHA:
|
||||
function generate_math_captcha($number1from=1,$number1to=10,$number2from=0,$number2to=10)
|
||||
{
|
||||
$number[0] = rand($number1from,$number1to);
|
||||
$number[1] = rand($number2from,$number2to);
|
||||
$number[2] = $number[0] + $number[1];
|
||||
return $number;
|
||||
}
|
||||
// for math CAPTCHA:
|
||||
function generate_math_captcha($number1from = 1, $number1to = 10, $number2from = 0, $number2to = 10) {
|
||||
$number[0] = rand($number1from, $number1to);
|
||||
$number[1] = rand($number2from, $number2to);
|
||||
$number[2] = $number[0] + $number[1];
|
||||
return $number;
|
||||
}
|
||||
|
||||
function check_math_captcha($result, $entered_result)
|
||||
{
|
||||
if(intval($result) == intval($entered_result)) return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
function check_math_captcha($result, $entered_result) {
|
||||
if (intval($result) == intval($entered_result)) return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
<?php
|
||||
ini_set('error_reporting','E_ALL');
|
||||
// ini_set('error_reporting', 'E_ALL');
|
||||
session_set_cookie_params(['samesite' => 'strict']);
|
||||
session_start();
|
||||
require('captcha.php');
|
||||
$captcha = new Captcha();
|
||||
if(isset($_SESSION['captcha_session']))
|
||||
{
|
||||
$captcha->generate_image($_SESSION['captcha_session'],'backgrounds/','fonts/');
|
||||
}
|
||||
else
|
||||
{
|
||||
$captcha->generate_dummy_image();
|
||||
}
|
||||
if (isset($_SESSION['captcha_session'])) {
|
||||
$captcha->generate_image($_SESSION['captcha_session'], 'backgrounds/', 'fonts/');
|
||||
} else {
|
||||
$captcha->generate_dummy_image();
|
||||
}
|
||||
?>
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,13 +1,13 @@
|
|||
<?php
|
||||
/*************************************************************************************
|
||||
* html4strict.php
|
||||
* html5.php
|
||||
* ---------------
|
||||
* Author: Nigel McNie (nigel@geshi.org)
|
||||
* Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
|
||||
* Release Version: 1.0.8.11
|
||||
* Release Version: 1.0.9.0
|
||||
* Date Started: 2004/07/10
|
||||
*
|
||||
* HTML 4.01 strict language file for GeSHi.
|
||||
* HTML 5 language file for GeSHi.
|
||||
*
|
||||
* CHANGES
|
||||
* -------
|
||||
|
@ -50,7 +50,7 @@
|
|||
************************************************************************************/
|
||||
|
||||
$language_data = array (
|
||||
'LANG_NAME' => 'HTML',
|
||||
'LANG_NAME' => 'HTML5',
|
||||
'COMMENT_SINGLE' => array(),
|
||||
'COMMENT_MULTI' => array(),
|
||||
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
|
||||
|
@ -58,42 +58,64 @@ $language_data = array (
|
|||
'ESCAPE_CHAR' => '',
|
||||
'KEYWORDS' => array(
|
||||
2 => array(
|
||||
'a', 'abbr', 'acronym', 'address', 'applet', 'area',
|
||||
'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',
|
||||
'caption', 'center', 'cite', 'code', 'colgroup', 'col',
|
||||
'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',
|
||||
'em',
|
||||
'fieldset', 'font', 'form', 'frame', 'frameset',
|
||||
'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',
|
||||
'a', 'abbr', 'address', 'article', 'area', 'aside', 'audio',
|
||||
|
||||
'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'b',
|
||||
|
||||
'caption', 'cite', 'code', 'colgroup', 'col', 'canvas', 'command', 'datalist', 'details',
|
||||
|
||||
'dd', 'del', 'dfn', 'div', 'dl', 'dt',
|
||||
|
||||
'em', 'embed',
|
||||
|
||||
'fieldset', 'form', 'figcaption', 'figure', 'footer',
|
||||
|
||||
'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html', 'header', 'hgroup',
|
||||
|
||||
'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',
|
||||
'kbd',
|
||||
|
||||
'kbd', 'keygen',
|
||||
|
||||
'label', 'legend', 'link', 'li',
|
||||
'map', 'meta',
|
||||
'noframes', 'noscript',
|
||||
'object', 'ol', 'optgroup', 'option',
|
||||
'param', 'pre', 'p',
|
||||
|
||||
'map', 'meta', 'mark', 'meter',
|
||||
|
||||
'noscript', 'nav',
|
||||
|
||||
'object', 'ol', 'optgroup', 'option', 'output',
|
||||
|
||||
'param', 'pre', 'p', 'progress',
|
||||
|
||||
'q',
|
||||
'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',
|
||||
'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',
|
||||
'ul', 'u',
|
||||
'var',
|
||||
|
||||
'rp', 'rt', 'ruby',
|
||||
|
||||
'samp', 'script', 'select', 'small', 'span', 'strong', 'style', 'sub', 'sup', 's', 'section', 'source', 'summary',
|
||||
|
||||
'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'time',
|
||||
|
||||
'ul',
|
||||
|
||||
'var', 'video',
|
||||
|
||||
'wbr',
|
||||
),
|
||||
3 => array(
|
||||
'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
|
||||
'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis', 'autocomplete', 'autofocus',
|
||||
'background', 'bgcolor', 'border',
|
||||
'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
|
||||
'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
|
||||
'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords', 'contenteditable', 'contextmenu',
|
||||
'data', 'datetime', 'declare', 'defer', 'dir', 'disabled', 'draggable', 'dropzone',
|
||||
'enctype',
|
||||
'face', 'for', 'frame', 'frameborder',
|
||||
'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
|
||||
'face', 'for', 'frame', 'frameborder', 'form', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget',
|
||||
'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv', 'hidden',
|
||||
'id', 'ismap',
|
||||
'label', 'lang', 'language', 'link', 'longdesc',
|
||||
'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
|
||||
'name', 'nohref', 'noresize', 'noshade', 'nowrap',
|
||||
'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
|
||||
'profile', 'prompt',
|
||||
'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
|
||||
'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
|
||||
'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple', 'min', 'max',
|
||||
'name', 'nohref', 'noresize', 'noshade', 'nowrap', 'novalidate',
|
||||
'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onselect', 'onsubmit', 'onunload', 'onafterprint', 'onbeforeprint', 'onbeforeonload', 'onerror', 'onhaschange', 'onmessage', 'onoffline', 'ononline', 'onpagehide', 'onpageshow', 'onpopstate', 'onredo', 'onresize', 'onstorage', 'onundo', 'oncontextmenu', 'onformchange', 'onforminput', 'oninput', 'oninvalid', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onmousewheel', 'onscroll', 'oncanplay', 'oncanplaythrough', 'ondurationchange', 'onemptied', 'onended', 'onloadeddata', 'onloadedmetadata', 'onloadstart', 'onpause', 'onplay', 'onplaying', 'onprogress', 'onratechange', 'onreadystatechange', 'onseeked', 'onseeking', 'onstalled', 'onsuspend', 'ontimeupdate', 'onvolumechange', 'onwaiting',
|
||||
'profile', 'prompt', 'pattern', 'placeholder',
|
||||
'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules', 'required',
|
||||
'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary', 'spellcheck', 'step',
|
||||
'tabindex', 'target', 'text', 'title', 'type',
|
||||
'usemap',
|
||||
'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
|
||||
|
@ -186,5 +208,3 @@ $language_data = array (
|
|||
)
|
||||
)
|
||||
);
|
||||
|
||||
?>
|
|
@ -4,7 +4,7 @@
|
|||
* --------------
|
||||
* Author: Ben Keen (ben.keen@gmail.com)
|
||||
* Copyright: (c) 2004 Ben Keen (ben.keen@gmail.com), Nigel McNie (http://qbnz.com/highlighter)
|
||||
* Release Version: 1.0.8.11
|
||||
* Release Version: 1.0.9.0
|
||||
* Date Started: 2004/06/20
|
||||
*
|
||||
* JavaScript language file for GeSHi.
|
||||
|
@ -170,5 +170,3 @@ $language_data = array (
|
|||
1 => true
|
||||
)
|
||||
);
|
||||
|
||||
?>
|
|
@ -4,7 +4,7 @@
|
|||
* --------
|
||||
* Author: Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com)
|
||||
* Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/)
|
||||
* Release Version: 1.0.8.11
|
||||
* Release Version: 1.0.9.0
|
||||
* Date Started: 2004/08/20
|
||||
*
|
||||
* Perl language file for GeSHi.
|
||||
|
@ -209,5 +209,3 @@ $language_data = array (
|
|||
)
|
||||
)
|
||||
);
|
||||
|
||||
?>
|
|
@ -4,7 +4,7 @@
|
|||
* --------
|
||||
* Author: Nigel McNie (nigel@geshi.org)
|
||||
* Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
|
||||
* Release Version: 1.0.8.11
|
||||
* Release Version: 1.0.9.0
|
||||
* Date Started: 2004/06/20
|
||||
*
|
||||
* PHP language file for GeSHi.
|
||||
|
@ -90,15 +90,15 @@ $language_data = array(
|
|||
'as','break','case','continue','default','do','else','elseif',
|
||||
'endfor','endforeach','endif','endswitch','endwhile','for',
|
||||
'foreach','if','include','include_once','require','require_once',
|
||||
'return','switch','throw','while',
|
||||
'return','switch','throw','while', 'yield',
|
||||
|
||||
'echo','print'
|
||||
),
|
||||
2 => array(
|
||||
'&new','</script>','<?php','<script language',
|
||||
'abstract','class','const','declare','extends','function','global',
|
||||
'interface','namespace','new','private','protected','public','self',
|
||||
'use','var'
|
||||
'implements', 'interface','namespace','new','private','protected',
|
||||
'public','self','trait','use','var'
|
||||
),
|
||||
3 => array(
|
||||
'abs','acos','acosh','addcslashes','addslashes','aggregate',
|
||||
|
@ -1113,5 +1113,3 @@ $language_data = array(
|
|||
),
|
||||
'TAB_WIDTH' => 4
|
||||
);
|
||||
|
||||
?>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Contributors:
|
||||
* - Jürgen Thomas (Juergen.Thomas@vs-polis.de)
|
||||
* Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
|
||||
* Release Version: 1.0.8.11
|
||||
* Release Version: 1.0.9.0
|
||||
* Date Started: 2004/06/04
|
||||
*
|
||||
* SQL language file for GeSHi.
|
||||
|
@ -71,8 +71,8 @@ $language_data = array (
|
|||
'DATA', 'DATABASE', 'DATABASES', 'DATE', 'DAY', 'DEC', 'DECIMAL', 'DECLARE',
|
||||
'DEFAULT', 'DELAYED', 'DELETE', 'DESC', 'DESCRIBE', 'DISTINCT', 'DOUBLE',
|
||||
'DOMAIN', 'DROP',
|
||||
'ELSE', 'ENCLOSED', 'END', 'ESCAPED', 'EXCEPT', 'EXEC', 'EXECUTE', 'EXISTS', 'EXP',
|
||||
'EXPLAIN', 'EXTRACT',
|
||||
'ELSE', 'ELSEIF', 'ENCLOSED', 'END', 'ESCAPED', 'EXCEPT', 'EXEC', 'EXECUTE', 'EXISTS',
|
||||
'EXP', 'EXPLAIN', 'EXTRACT',
|
||||
'FALSE', 'FIELD', 'FIELDS', 'FILTER', 'FIRST', 'FLOAT', 'FLOOR', 'FLUSH', 'FOR',
|
||||
'FOREIGN', 'FROM', 'FULL', 'FUNCTION',
|
||||
'GET', 'GROUP', 'GROUPING', 'GO', 'GOTO', 'GRANT', 'GRANTED',
|
||||
|
@ -159,7 +159,10 @@ $language_data = array (
|
|||
'SCRIPT_DELIMITERS' => array(
|
||||
),
|
||||
'HIGHLIGHT_STRICT_BLOCK' => array(
|
||||
),
|
||||
'PARSER_CONTROL' => array(
|
||||
'KEYWORDS' => array( //'
|
||||
'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\.\|\#|^&])"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
?>
|
|
@ -4,7 +4,7 @@
|
|||
* -------
|
||||
* Author: Nigel McNie (nigel@geshi.org)
|
||||
* Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
|
||||
* Release Version: 1.0.8.11
|
||||
* Release Version: 1.0.9.0
|
||||
* Date Started: 2004/09/01
|
||||
*
|
||||
* XML language file for GeSHi. Based on the idea/file by Christian Weiske
|
||||
|
@ -153,5 +153,3 @@ $language_data = array (
|
|||
)
|
||||
)
|
||||
);
|
||||
|
||||
?>
|
||||
|
|
40
modules/phpmailer/Exception.php
Normal file
40
modules/phpmailer/Exception.php
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHPMailer Exception class.
|
||||
* PHP Version 5.5.
|
||||
*
|
||||
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
||||
*
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||
* @author Brent R. Matzelle (original founder)
|
||||
* @copyright 2012 - 2020 Marcus Bointon
|
||||
* @copyright 2010 - 2012 Jim Jagielski
|
||||
* @copyright 2004 - 2009 Andy Prevost
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
namespace PHPMailer\PHPMailer;
|
||||
|
||||
/**
|
||||
* PHPMailer exception handler.
|
||||
*
|
||||
* @author Marcus Bointon <phpmailer@synchromedia.co.uk>
|
||||
*/
|
||||
class Exception extends \Exception
|
||||
{
|
||||
/**
|
||||
* Prettify error message output.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function errorMessage()
|
||||
{
|
||||
return '<strong>' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "</strong><br />\n";
|
||||
}
|
||||
}
|
139
modules/phpmailer/OAuth.php
Normal file
139
modules/phpmailer/OAuth.php
Normal file
|
@ -0,0 +1,139 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHPMailer - PHP email creation and transport class.
|
||||
* PHP Version 5.5.
|
||||
*
|
||||
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
||||
*
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||
* @author Brent R. Matzelle (original founder)
|
||||
* @copyright 2012 - 2020 Marcus Bointon
|
||||
* @copyright 2010 - 2012 Jim Jagielski
|
||||
* @copyright 2004 - 2009 Andy Prevost
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
namespace PHPMailer\PHPMailer;
|
||||
|
||||
use League\OAuth2\Client\Grant\RefreshToken;
|
||||
use League\OAuth2\Client\Provider\AbstractProvider;
|
||||
use League\OAuth2\Client\Token\AccessToken;
|
||||
|
||||
/**
|
||||
* OAuth - OAuth2 authentication wrapper class.
|
||||
* Uses the oauth2-client package from the League of Extraordinary Packages.
|
||||
*
|
||||
* @see http://oauth2-client.thephpleague.com
|
||||
*
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
*/
|
||||
class OAuth implements OAuthTokenProvider
|
||||
{
|
||||
/**
|
||||
* An instance of the League OAuth Client Provider.
|
||||
*
|
||||
* @var AbstractProvider
|
||||
*/
|
||||
protected $provider;
|
||||
|
||||
/**
|
||||
* The current OAuth access token.
|
||||
*
|
||||
* @var AccessToken
|
||||
*/
|
||||
protected $oauthToken;
|
||||
|
||||
/**
|
||||
* The user's email address, usually used as the login ID
|
||||
* and also the from address when sending email.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $oauthUserEmail = '';
|
||||
|
||||
/**
|
||||
* The client secret, generated in the app definition of the service you're connecting to.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $oauthClientSecret = '';
|
||||
|
||||
/**
|
||||
* The client ID, generated in the app definition of the service you're connecting to.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $oauthClientId = '';
|
||||
|
||||
/**
|
||||
* The refresh token, used to obtain new AccessTokens.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $oauthRefreshToken = '';
|
||||
|
||||
/**
|
||||
* OAuth constructor.
|
||||
*
|
||||
* @param array $options Associative array containing
|
||||
* `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
$this->provider = $options['provider'];
|
||||
$this->oauthUserEmail = $options['userName'];
|
||||
$this->oauthClientSecret = $options['clientSecret'];
|
||||
$this->oauthClientId = $options['clientId'];
|
||||
$this->oauthRefreshToken = $options['refreshToken'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a new RefreshToken.
|
||||
*
|
||||
* @return RefreshToken
|
||||
*/
|
||||
protected function getGrant()
|
||||
{
|
||||
return new RefreshToken();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a new AccessToken.
|
||||
*
|
||||
* @return AccessToken
|
||||
*/
|
||||
protected function getToken()
|
||||
{
|
||||
return $this->provider->getAccessToken(
|
||||
$this->getGrant(),
|
||||
['refresh_token' => $this->oauthRefreshToken]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a base64-encoded OAuth token.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOauth64()
|
||||
{
|
||||
//Get a new token if it's not available or has expired
|
||||
if (null === $this->oauthToken || $this->oauthToken->hasExpired()) {
|
||||
$this->oauthToken = $this->getToken();
|
||||
}
|
||||
|
||||
return base64_encode(
|
||||
'user=' .
|
||||
$this->oauthUserEmail .
|
||||
"\001auth=Bearer " .
|
||||
$this->oauthToken .
|
||||
"\001\001"
|
||||
);
|
||||
}
|
||||
}
|
44
modules/phpmailer/OAuthTokenProvider.php
Normal file
44
modules/phpmailer/OAuthTokenProvider.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHPMailer - PHP email creation and transport class.
|
||||
* PHP Version 5.5.
|
||||
*
|
||||
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
||||
*
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||
* @author Brent R. Matzelle (original founder)
|
||||
* @copyright 2012 - 2020 Marcus Bointon
|
||||
* @copyright 2010 - 2012 Jim Jagielski
|
||||
* @copyright 2004 - 2009 Andy Prevost
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
namespace PHPMailer\PHPMailer;
|
||||
|
||||
/**
|
||||
* OAuthTokenProvider - OAuth2 token provider interface.
|
||||
* Provides base64 encoded OAuth2 auth strings for SMTP authentication.
|
||||
*
|
||||
* @see OAuth
|
||||
* @see SMTP::authenticate()
|
||||
*
|
||||
* @author Peter Scopes (pdscopes)
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
*/
|
||||
interface OAuthTokenProvider
|
||||
{
|
||||
/**
|
||||
* Generate a base64-encoded OAuth token ensuring that the access token has not expired.
|
||||
* The string to be base 64 encoded should be in the form:
|
||||
* "user=<user_email_address>\001auth=Bearer <access_token>\001\001"
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOauth64();
|
||||
}
|
5071
modules/phpmailer/PHPMailer.php
Normal file
5071
modules/phpmailer/PHPMailer.php
Normal file
File diff suppressed because it is too large
Load diff
462
modules/phpmailer/POP3.php
Normal file
462
modules/phpmailer/POP3.php
Normal file
|
@ -0,0 +1,462 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHPMailer POP-Before-SMTP Authentication Class.
|
||||
* PHP Version 5.5.
|
||||
*
|
||||
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
||||
*
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||
* @author Brent R. Matzelle (original founder)
|
||||
* @copyright 2012 - 2020 Marcus Bointon
|
||||
* @copyright 2010 - 2012 Jim Jagielski
|
||||
* @copyright 2004 - 2009 Andy Prevost
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
namespace PHPMailer\PHPMailer;
|
||||
|
||||
/**
|
||||
* PHPMailer POP-Before-SMTP Authentication Class.
|
||||
* Specifically for PHPMailer to use for RFC1939 POP-before-SMTP authentication.
|
||||
* 1) This class does not support APOP authentication.
|
||||
* 2) Opening and closing lots of POP3 connections can be quite slow. If you need
|
||||
* to send a batch of emails then just perform the authentication once at the start,
|
||||
* and then loop through your mail sending script. Providing this process doesn't
|
||||
* take longer than the verification period lasts on your POP3 server, you should be fine.
|
||||
* 3) This is really ancient technology; you should only need to use it to talk to very old systems.
|
||||
* 4) This POP3 class is deliberately lightweight and incomplete, implementing just
|
||||
* enough to do authentication.
|
||||
* If you want a more complete class there are other POP3 classes for PHP available.
|
||||
*
|
||||
* @author Richard Davey (original author) <rich@corephp.co.uk>
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||
*/
|
||||
class POP3
|
||||
{
|
||||
/**
|
||||
* The POP3 PHPMailer Version number.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const VERSION = '6.6.0';
|
||||
|
||||
/**
|
||||
* Default POP3 port number.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEFAULT_PORT = 110;
|
||||
|
||||
/**
|
||||
* Default timeout in seconds.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEFAULT_TIMEOUT = 30;
|
||||
|
||||
/**
|
||||
* POP3 class debug output mode.
|
||||
* Debug output level.
|
||||
* Options:
|
||||
* @see POP3::DEBUG_OFF: No output
|
||||
* @see POP3::DEBUG_SERVER: Server messages, connection/server errors
|
||||
* @see POP3::DEBUG_CLIENT: Client and Server messages, connection/server errors
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $do_debug = self::DEBUG_OFF;
|
||||
|
||||
/**
|
||||
* POP3 mail server hostname.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $host;
|
||||
|
||||
/**
|
||||
* POP3 port number.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $port;
|
||||
|
||||
/**
|
||||
* POP3 Timeout Value in seconds.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tval;
|
||||
|
||||
/**
|
||||
* POP3 username.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $username;
|
||||
|
||||
/**
|
||||
* POP3 password.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $password;
|
||||
|
||||
/**
|
||||
* Resource handle for the POP3 connection socket.
|
||||
*
|
||||
* @var resource
|
||||
*/
|
||||
protected $pop_conn;
|
||||
|
||||
/**
|
||||
* Are we connected?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $connected = false;
|
||||
|
||||
/**
|
||||
* Error container.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $errors = [];
|
||||
|
||||
/**
|
||||
* Line break constant.
|
||||
*/
|
||||
const LE = "\r\n";
|
||||
|
||||
/**
|
||||
* Debug level for no output.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEBUG_OFF = 0;
|
||||
|
||||
/**
|
||||
* Debug level to show server -> client messages
|
||||
* also shows clients connection errors or errors from server
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEBUG_SERVER = 1;
|
||||
|
||||
/**
|
||||
* Debug level to show client -> server and server -> client messages.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEBUG_CLIENT = 2;
|
||||
|
||||
/**
|
||||
* Simple static wrapper for all-in-one POP before SMTP.
|
||||
*
|
||||
* @param string $host The hostname to connect to
|
||||
* @param int|bool $port The port number to connect to
|
||||
* @param int|bool $timeout The timeout value
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @param int $debug_level
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function popBeforeSmtp(
|
||||
$host,
|
||||
$port = false,
|
||||
$timeout = false,
|
||||
$username = '',
|
||||
$password = '',
|
||||
$debug_level = 0
|
||||
) {
|
||||
$pop = new self();
|
||||
|
||||
return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level);
|
||||
}
|
||||
|
||||
/**
|
||||
* Authenticate with a POP3 server.
|
||||
* A connect, login, disconnect sequence
|
||||
* appropriate for POP-before SMTP authorisation.
|
||||
*
|
||||
* @param string $host The hostname to connect to
|
||||
* @param int|bool $port The port number to connect to
|
||||
* @param int|bool $timeout The timeout value
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @param int $debug_level
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0)
|
||||
{
|
||||
$this->host = $host;
|
||||
//If no port value provided, use default
|
||||
if (false === $port) {
|
||||
$this->port = static::DEFAULT_PORT;
|
||||
} else {
|
||||
$this->port = (int) $port;
|
||||
}
|
||||
//If no timeout value provided, use default
|
||||
if (false === $timeout) {
|
||||
$this->tval = static::DEFAULT_TIMEOUT;
|
||||
} else {
|
||||
$this->tval = (int) $timeout;
|
||||
}
|
||||
$this->do_debug = $debug_level;
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
//Reset the error log
|
||||
$this->errors = [];
|
||||
//Connect
|
||||
$result = $this->connect($this->host, $this->port, $this->tval);
|
||||
if ($result) {
|
||||
$login_result = $this->login($this->username, $this->password);
|
||||
if ($login_result) {
|
||||
$this->disconnect();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//We need to disconnect regardless of whether the login succeeded
|
||||
$this->disconnect();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to a POP3 server.
|
||||
*
|
||||
* @param string $host
|
||||
* @param int|bool $port
|
||||
* @param int $tval
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function connect($host, $port = false, $tval = 30)
|
||||
{
|
||||
//Are we already connected?
|
||||
if ($this->connected) {
|
||||
return true;
|
||||
}
|
||||
|
||||
//On Windows this will raise a PHP Warning error if the hostname doesn't exist.
|
||||
//Rather than suppress it with @fsockopen, capture it cleanly instead
|
||||
set_error_handler([$this, 'catchWarning']);
|
||||
|
||||
if (false === $port) {
|
||||
$port = static::DEFAULT_PORT;
|
||||
}
|
||||
|
||||
//Connect to the POP3 server
|
||||
$errno = 0;
|
||||
$errstr = '';
|
||||
$this->pop_conn = fsockopen(
|
||||
$host, //POP3 Host
|
||||
$port, //Port #
|
||||
$errno, //Error Number
|
||||
$errstr, //Error Message
|
||||
$tval
|
||||
); //Timeout (seconds)
|
||||
//Restore the error handler
|
||||
restore_error_handler();
|
||||
|
||||
//Did we connect?
|
||||
if (false === $this->pop_conn) {
|
||||
//It would appear not...
|
||||
$this->setError(
|
||||
"Failed to connect to server $host on port $port. errno: $errno; errstr: $errstr"
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//Increase the stream time-out
|
||||
stream_set_timeout($this->pop_conn, $tval, 0);
|
||||
|
||||
//Get the POP3 server response
|
||||
$pop3_response = $this->getResponse();
|
||||
//Check for the +OK
|
||||
if ($this->checkResponse($pop3_response)) {
|
||||
//The connection is established and the POP3 server is talking
|
||||
$this->connected = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log in to the POP3 server.
|
||||
* Does not support APOP (RFC 2828, 4949).
|
||||
*
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function login($username = '', $password = '')
|
||||
{
|
||||
if (!$this->connected) {
|
||||
$this->setError('Not connected to POP3 server');
|
||||
return false;
|
||||
}
|
||||
if (empty($username)) {
|
||||
$username = $this->username;
|
||||
}
|
||||
if (empty($password)) {
|
||||
$password = $this->password;
|
||||
}
|
||||
|
||||
//Send the Username
|
||||
$this->sendString("USER $username" . static::LE);
|
||||
$pop3_response = $this->getResponse();
|
||||
if ($this->checkResponse($pop3_response)) {
|
||||
//Send the Password
|
||||
$this->sendString("PASS $password" . static::LE);
|
||||
$pop3_response = $this->getResponse();
|
||||
if ($this->checkResponse($pop3_response)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnect from the POP3 server.
|
||||
*/
|
||||
public function disconnect()
|
||||
{
|
||||
$this->sendString('QUIT');
|
||||
|
||||
// RFC 1939 shows POP3 server sending a +OK response to the QUIT command.
|
||||
// Try to get it. Ignore any failures here.
|
||||
try {
|
||||
$this->getResponse();
|
||||
} catch (Exception $e) {
|
||||
//Do nothing
|
||||
}
|
||||
|
||||
//The QUIT command may cause the daemon to exit, which will kill our connection
|
||||
//So ignore errors here
|
||||
try {
|
||||
@fclose($this->pop_conn);
|
||||
} catch (Exception $e) {
|
||||
//Do nothing
|
||||
}
|
||||
|
||||
// Clean up attributes.
|
||||
$this->connected = false;
|
||||
$this->pop_conn = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a response from the POP3 server.
|
||||
*
|
||||
* @param int $size The maximum number of bytes to retrieve
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getResponse($size = 128)
|
||||
{
|
||||
$response = fgets($this->pop_conn, $size);
|
||||
if ($this->do_debug >= self::DEBUG_SERVER) {
|
||||
echo 'Server -> Client: ', $response;
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send raw data to the POP3 server.
|
||||
*
|
||||
* @param string $string
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
protected function sendString($string)
|
||||
{
|
||||
if ($this->pop_conn) {
|
||||
if ($this->do_debug >= self::DEBUG_CLIENT) { //Show client messages when debug >= 2
|
||||
echo 'Client -> Server: ', $string;
|
||||
}
|
||||
|
||||
return fwrite($this->pop_conn, $string, strlen($string));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the POP3 server response.
|
||||
* Looks for for +OK or -ERR.
|
||||
*
|
||||
* @param string $string
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function checkResponse($string)
|
||||
{
|
||||
if (strpos($string, '+OK') !== 0) {
|
||||
$this->setError("Server reported an error: $string");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an error to the internal error store.
|
||||
* Also display debug output if it's enabled.
|
||||
*
|
||||
* @param string $error
|
||||
*/
|
||||
protected function setError($error)
|
||||
{
|
||||
$this->errors[] = $error;
|
||||
if ($this->do_debug >= self::DEBUG_SERVER) {
|
||||
echo '<pre>';
|
||||
foreach ($this->errors as $e) {
|
||||
print_r($e);
|
||||
}
|
||||
echo '</pre>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of error messages, if any.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getErrors()
|
||||
{
|
||||
return $this->errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* POP3 connection error handler.
|
||||
*
|
||||
* @param int $errno
|
||||
* @param string $errstr
|
||||
* @param string $errfile
|
||||
* @param int $errline
|
||||
*/
|
||||
protected function catchWarning($errno, $errstr, $errfile, $errline)
|
||||
{
|
||||
$this->setError(
|
||||
'Connecting to the POP3 server raised a PHP warning:' .
|
||||
"errno: $errno errstr: $errstr; errfile: $errfile; errline: $errline"
|
||||
);
|
||||
}
|
||||
}
|
1456
modules/phpmailer/SMTP.php
Normal file
1456
modules/phpmailer/SMTP.php
Normal file
File diff suppressed because it is too large
Load diff
|
@ -2,20 +2,21 @@
|
|||
/**
|
||||
* Smarty Autoloader
|
||||
*
|
||||
* @package Smarty
|
||||
* @package Smarty
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty Autoloader
|
||||
*
|
||||
* @package Smarty
|
||||
* @author Uwe Tews
|
||||
* @package Smarty
|
||||
* @author Uwe Tews
|
||||
* Usage:
|
||||
* require_once '...path/Autoloader.php';
|
||||
* Smarty_Autoloader::register();
|
||||
* $smarty = new Smarty();
|
||||
* Note: This autoloader is not needed if you use Composer.
|
||||
* Composer will automatically add the classes of the Smarty package to it common autoloader.
|
||||
* require_once '...path/Autoloader.php';
|
||||
* Smarty_Autoloader::register();
|
||||
* or
|
||||
* include '...path/bootstrap.php';
|
||||
*
|
||||
* $smarty = new Smarty();
|
||||
*/
|
||||
class Smarty_Autoloader
|
||||
{
|
||||
|
@ -24,21 +25,21 @@ class Smarty_Autoloader
|
|||
*
|
||||
* @var string
|
||||
*/
|
||||
public static $SMARTY_DIR = '';
|
||||
public static $SMARTY_DIR = null;
|
||||
|
||||
/**
|
||||
* Filepath to Smarty internal plugins
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public static $SMARTY_SYSPLUGINS_DIR = '';
|
||||
public static $SMARTY_SYSPLUGINS_DIR = null;
|
||||
|
||||
/**
|
||||
* Array with Smarty core classes and their filename
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $rootClasses = array('smarty' => 'Smarty.class.php', 'smartybc' => 'SmartyBC.class.php',);
|
||||
public static $rootClasses = array('smarty' => 'Smarty.class.php');
|
||||
|
||||
/**
|
||||
* Registers Smarty_Autoloader backward compatible to older installations.
|
||||
|
@ -53,8 +54,8 @@ class Smarty_Autoloader
|
|||
if (!defined('SMARTY_SPL_AUTOLOAD')) {
|
||||
define('SMARTY_SPL_AUTOLOAD', 0);
|
||||
}
|
||||
if (SMARTY_SPL_AUTOLOAD &&
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
|
||||
if (SMARTY_SPL_AUTOLOAD
|
||||
&& set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
|
||||
) {
|
||||
$registeredAutoLoadFunctions = spl_autoload_functions();
|
||||
if (!isset($registeredAutoLoadFunctions[ 'spl_autoload' ])) {
|
||||
|
@ -75,11 +76,7 @@ class Smarty_Autoloader
|
|||
self::$SMARTY_DIR = defined('SMARTY_DIR') ? SMARTY_DIR : dirname(__FILE__) . DIRECTORY_SEPARATOR;
|
||||
self::$SMARTY_SYSPLUGINS_DIR = defined('SMARTY_SYSPLUGINS_DIR') ? SMARTY_SYSPLUGINS_DIR :
|
||||
self::$SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR;
|
||||
if (version_compare(phpversion(), '5.3.0', '>=')) {
|
||||
spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
|
||||
} else {
|
||||
spl_autoload_register(array(__CLASS__, 'autoload'));
|
||||
}
|
||||
spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -89,18 +86,20 @@ class Smarty_Autoloader
|
|||
*/
|
||||
public static function autoload($class)
|
||||
{
|
||||
$_class = strtolower($class);
|
||||
if (strpos($_class, 'smarty') !== 0) {
|
||||
if ($class[ 0 ] !== 'S' || strpos($class, 'Smarty') !== 0) {
|
||||
return;
|
||||
}
|
||||
$file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
|
||||
if (is_file($file)) {
|
||||
include $file;
|
||||
} else if (isset(self::$rootClasses[ $_class ])) {
|
||||
$_class = strtolower($class);
|
||||
if (isset(self::$rootClasses[ $_class ])) {
|
||||
$file = self::$SMARTY_DIR . self::$rootClasses[ $_class ];
|
||||
if (is_file($file)) {
|
||||
include $file;
|
||||
}
|
||||
} else {
|
||||
$file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
|
||||
if (is_file($file)) {
|
||||
include $file;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,455 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Project: Smarty: the PHP compiling template engine
|
||||
* File: SmartyBC.class.php
|
||||
* SVN: $Id: $
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* For questions, help, comments, discussion, etc., please join the
|
||||
* Smarty mailing list. Send a blank e-mail to
|
||||
* smarty-discussion-subscribe@googlegroups.com
|
||||
*
|
||||
* @link http://www.smarty.net/
|
||||
* @copyright 2008 New Digital Group, Inc.
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @author Uwe Tews
|
||||
* @author Rodney Rehm
|
||||
* @package Smarty
|
||||
*/
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
require_once(dirname(__FILE__) . '/Smarty.class.php');
|
||||
|
||||
/**
|
||||
* Smarty Backward Compatibility Wrapper Class
|
||||
*
|
||||
* @package Smarty
|
||||
*/
|
||||
class SmartyBC extends Smarty
|
||||
{
|
||||
/**
|
||||
* Smarty 2 BC
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $_version = self::SMARTY_VERSION;
|
||||
|
||||
/**
|
||||
* This is an array of directories where trusted php scripts reside.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $trusted_dir = array();
|
||||
|
||||
/**
|
||||
* Initialize new SmartyBC object
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* wrapper for assign_by_ref
|
||||
*
|
||||
* @param string $tpl_var the template variable name
|
||||
* @param mixed &$value the referenced value to assign
|
||||
*/
|
||||
public function assign_by_ref($tpl_var, &$value)
|
||||
{
|
||||
$this->assignByRef($tpl_var, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* wrapper for append_by_ref
|
||||
*
|
||||
* @param string $tpl_var the template variable name
|
||||
* @param mixed &$value the referenced value to append
|
||||
* @param boolean $merge flag if array elements shall be merged
|
||||
*/
|
||||
public function append_by_ref($tpl_var, &$value, $merge = false)
|
||||
{
|
||||
$this->appendByRef($tpl_var, $value, $merge);
|
||||
}
|
||||
|
||||
/**
|
||||
* clear the given assigned template variable.
|
||||
*
|
||||
* @param string $tpl_var the template variable to clear
|
||||
*/
|
||||
public function clear_assign($tpl_var)
|
||||
{
|
||||
$this->clearAssign($tpl_var);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers custom function to be used in templates
|
||||
*
|
||||
* @param string $function the name of the template function
|
||||
* @param string $function_impl the name of the PHP function to register
|
||||
* @param bool $cacheable
|
||||
* @param mixed $cache_attrs
|
||||
*/
|
||||
public function register_function($function, $function_impl, $cacheable = true, $cache_attrs = null)
|
||||
{
|
||||
$this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister custom function
|
||||
*
|
||||
* @param string $function name of template function
|
||||
*/
|
||||
public function unregister_function($function)
|
||||
{
|
||||
$this->unregisterPlugin('function', $function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers object to be used in templates
|
||||
*
|
||||
* @param string $object name of template object
|
||||
* @param object $object_impl the referenced PHP object to register
|
||||
* @param array $allowed list of allowed methods (empty = all)
|
||||
* @param boolean $smarty_args smarty argument format, else traditional
|
||||
* @param array $block_methods list of methods that are block format
|
||||
*
|
||||
* @throws SmartyException
|
||||
* @internal param array $block_functs list of methods that are block format
|
||||
*/
|
||||
public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true,
|
||||
$block_methods = array())
|
||||
{
|
||||
settype($allowed, 'array');
|
||||
settype($smarty_args, 'boolean');
|
||||
$this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister object
|
||||
*
|
||||
* @param string $object name of template object
|
||||
*/
|
||||
public function unregister_object($object)
|
||||
{
|
||||
$this->unregisterObject($object);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers block function to be used in templates
|
||||
*
|
||||
* @param string $block name of template block
|
||||
* @param string $block_impl PHP function to register
|
||||
* @param bool $cacheable
|
||||
* @param mixed $cache_attrs
|
||||
*/
|
||||
public function register_block($block, $block_impl, $cacheable = true, $cache_attrs = null)
|
||||
{
|
||||
$this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister block function
|
||||
*
|
||||
* @param string $block name of template function
|
||||
*/
|
||||
public function unregister_block($block)
|
||||
{
|
||||
$this->unregisterPlugin('block', $block);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers compiler function
|
||||
*
|
||||
* @param string $function name of template function
|
||||
* @param string $function_impl name of PHP function to register
|
||||
* @param bool $cacheable
|
||||
*/
|
||||
public function register_compiler_function($function, $function_impl, $cacheable = true)
|
||||
{
|
||||
$this->registerPlugin('compiler', $function, $function_impl, $cacheable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister compiler function
|
||||
*
|
||||
* @param string $function name of template function
|
||||
*/
|
||||
public function unregister_compiler_function($function)
|
||||
{
|
||||
$this->unregisterPlugin('compiler', $function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers modifier to be used in templates
|
||||
*
|
||||
* @param string $modifier name of template modifier
|
||||
* @param string $modifier_impl name of PHP function to register
|
||||
*/
|
||||
public function register_modifier($modifier, $modifier_impl)
|
||||
{
|
||||
$this->registerPlugin('modifier', $modifier, $modifier_impl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister modifier
|
||||
*
|
||||
* @param string $modifier name of template modifier
|
||||
*/
|
||||
public function unregister_modifier($modifier)
|
||||
{
|
||||
$this->unregisterPlugin('modifier', $modifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a resource to fetch a template
|
||||
*
|
||||
* @param string $type name of resource
|
||||
* @param array $functions array of functions to handle resource
|
||||
*/
|
||||
public function register_resource($type, $functions)
|
||||
{
|
||||
$this->registerResource($type, $functions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister a resource
|
||||
*
|
||||
* @param string $type name of resource
|
||||
*/
|
||||
public function unregister_resource($type)
|
||||
{
|
||||
$this->unregisterResource($type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a prefilter function to apply
|
||||
* to a template before compiling
|
||||
*
|
||||
* @param callable $function
|
||||
*/
|
||||
public function register_prefilter($function)
|
||||
{
|
||||
$this->registerFilter('pre', $function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister a prefilter function
|
||||
*
|
||||
* @param callable $function
|
||||
*/
|
||||
public function unregister_prefilter($function)
|
||||
{
|
||||
$this->unregisterFilter('pre', $function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a postfilter function to apply
|
||||
* to a compiled template after compilation
|
||||
*
|
||||
* @param callable $function
|
||||
*/
|
||||
public function register_postfilter($function)
|
||||
{
|
||||
$this->registerFilter('post', $function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister a postfilter function
|
||||
*
|
||||
* @param callable $function
|
||||
*/
|
||||
public function unregister_postfilter($function)
|
||||
{
|
||||
$this->unregisterFilter('post', $function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an output filter function to apply
|
||||
* to a template output
|
||||
*
|
||||
* @param callable $function
|
||||
*/
|
||||
public function register_outputfilter($function)
|
||||
{
|
||||
$this->registerFilter('output', $function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister an outputfilter function
|
||||
*
|
||||
* @param callable $function
|
||||
*/
|
||||
public function unregister_outputfilter($function)
|
||||
{
|
||||
$this->unregisterFilter('output', $function);
|
||||
}
|
||||
|
||||
/**
|
||||
* load a filter of specified type and name
|
||||
*
|
||||
* @param string $type filter type
|
||||
* @param string $name filter name
|
||||
*/
|
||||
public function load_filter($type, $name)
|
||||
{
|
||||
$this->loadFilter($type, $name);
|
||||
}
|
||||
|
||||
/**
|
||||
* clear cached content for the given template and cache id
|
||||
*
|
||||
* @param string $tpl_file name of template file
|
||||
* @param string $cache_id name of cache_id
|
||||
* @param string $compile_id name of compile_id
|
||||
* @param string $exp_time expiration time
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
|
||||
{
|
||||
return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time);
|
||||
}
|
||||
|
||||
/**
|
||||
* clear the entire contents of cache (all templates)
|
||||
*
|
||||
* @param string $exp_time expire time
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function clear_all_cache($exp_time = null)
|
||||
{
|
||||
return $this->clearCache(null, null, null, $exp_time);
|
||||
}
|
||||
|
||||
/**
|
||||
* test to see if valid cache exists for this template
|
||||
*
|
||||
* @param string $tpl_file name of template file
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
|
||||
{
|
||||
return $this->isCached($tpl_file, $cache_id, $compile_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* clear all the assigned template variables.
|
||||
*/
|
||||
public function clear_all_assign()
|
||||
{
|
||||
$this->clearAllAssign();
|
||||
}
|
||||
|
||||
/**
|
||||
* clears compiled version of specified template resource,
|
||||
* or all compiled template files if one is not specified.
|
||||
* This function is for advanced use only, not normally needed.
|
||||
*
|
||||
* @param string $tpl_file
|
||||
* @param string $compile_id
|
||||
* @param string $exp_time
|
||||
*
|
||||
* @return boolean results of {@link smarty_core_rm_auto()}
|
||||
*/
|
||||
public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
|
||||
{
|
||||
return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether requested template exists.
|
||||
*
|
||||
* @param string $tpl_file
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function template_exists($tpl_file)
|
||||
{
|
||||
return $this->templateExists($tpl_file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array containing template variables
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_template_vars($name = null)
|
||||
{
|
||||
return $this->getTemplateVars($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array containing config variables
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_config_vars($name = null)
|
||||
{
|
||||
return $this->getConfigVars($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* load configuration values
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $section
|
||||
* @param string $scope
|
||||
*/
|
||||
public function config_load($file, $section = null, $scope = 'global')
|
||||
{
|
||||
$this->ConfigLoad($file, $section, $scope);
|
||||
}
|
||||
|
||||
/**
|
||||
* return a reference to a registered object
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
public function get_registered_object($name)
|
||||
{
|
||||
return $this->getRegisteredObject($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* clear configuration values
|
||||
*
|
||||
* @param string $var
|
||||
*/
|
||||
public function clear_config($var = null)
|
||||
{
|
||||
$this->clearConfig($var);
|
||||
}
|
||||
|
||||
/**
|
||||
* trigger Smarty error
|
||||
*
|
||||
* @param string $error_msg
|
||||
* @param integer $error_type
|
||||
*/
|
||||
public function trigger_error($error_msg, $error_type = E_USER_WARNING)
|
||||
{
|
||||
trigger_error("Smarty error: $error_msg", $error_type);
|
||||
}
|
||||
}
|
16
modules/smarty/bootstrap.php
Normal file
16
modules/smarty/bootstrap.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
/**
|
||||
* This file is part of the Smarty package.
|
||||
*
|
||||
* (c) Sebastian Bergmann <sebastian@phpunit.de>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
/**
|
||||
* Load and register Smarty Autoloader
|
||||
*/
|
||||
if (!class_exists('Smarty_Autoloader')) {
|
||||
include dirname(__FILE__) . '/Autoloader.php';
|
||||
}
|
||||
Smarty_Autoloader::register(true);
|
|
@ -113,10 +113,10 @@
|
|||
<div>
|
||||
{foreach $template_data as $template}
|
||||
<font color=brown>{$template.name}</font>
|
||||
<br> <span class="exectime">
|
||||
<br /> <span class="exectime">
|
||||
(compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"})
|
||||
</span>
|
||||
<br>
|
||||
<br />
|
||||
{/foreach}
|
||||
</div>
|
||||
{/if}
|
||||
|
@ -127,7 +127,7 @@
|
|||
{foreach $assigned_vars as $vars}
|
||||
<tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
|
||||
<td><h3><font color=blue>${$vars@key}</font></h3>
|
||||
{if isset($vars['nocache'])}<b>Nocache</b></br>{/if}
|
||||
{if isset($vars['nocache'])}<b>Nocache</b><br />{/if}
|
||||
{if isset($vars['scope'])}<b>Origin:</b> {$vars['scope']|debug_print_var nofilter}{/if}
|
||||
</td>
|
||||
<td><h3>Value</h3>{$vars['value']|debug_print_var:10:80 nofilter}</td>
|
||||
|
|
|
@ -5,24 +5,22 @@
|
|||
* @package Smarty
|
||||
* @subpackage PluginsBlock
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {textformat}{/textformat} block plugin
|
||||
* Type: block function<br>
|
||||
* Name: textformat<br>
|
||||
* Type: block function
|
||||
* Name: textformat
|
||||
* Purpose: format text a certain way with preset styles
|
||||
* or custom wrap/indent settings<br>
|
||||
* or custom wrap/indent settings
|
||||
* Params:
|
||||
* <pre>
|
||||
*
|
||||
* - style - string (email)
|
||||
* - indent - integer (0)
|
||||
* - wrap - integer (80)
|
||||
* - wrap_char - string ("\n")
|
||||
* - indent_char - string (" ")
|
||||
* - wrap_boundary - boolean (true)
|
||||
* </pre>
|
||||
*
|
||||
* @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
|
||||
* @link https://www.smarty.net/manual/en/language.function.textformat.php {textformat}
|
||||
* (Smarty online manual)
|
||||
*
|
||||
* @param array $params parameters
|
||||
|
@ -32,13 +30,23 @@
|
|||
*
|
||||
* @return string content re-formatted
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @throws \SmartyException
|
||||
*/
|
||||
function smarty_block_textformat($params, $content, $template, &$repeat)
|
||||
function smarty_block_textformat($params, $content, Smarty_Internal_Template $template, &$repeat)
|
||||
{
|
||||
if (is_null($content)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Smarty::$_MBSTRING) {
|
||||
$template->_checkPlugins(
|
||||
array(
|
||||
array(
|
||||
'function' => 'smarty_modifier_mb_wordwrap',
|
||||
'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php'
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
$style = null;
|
||||
$indent = 0;
|
||||
$indent_first = 0;
|
||||
|
@ -47,53 +55,55 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
|
|||
$wrap_char = "\n";
|
||||
$wrap_cut = false;
|
||||
$assign = null;
|
||||
|
||||
foreach ($params as $_key => $_val) {
|
||||
switch ($_key) {
|
||||
case 'style':
|
||||
case 'indent_char':
|
||||
case 'wrap_char':
|
||||
case 'assign':
|
||||
$$_key = (string) $_val;
|
||||
$$_key = (string)$_val;
|
||||
break;
|
||||
|
||||
case 'indent':
|
||||
case 'indent_first':
|
||||
case 'wrap':
|
||||
$$_key = (int) $_val;
|
||||
$$_key = (int)$_val;
|
||||
break;
|
||||
|
||||
case 'wrap_cut':
|
||||
$$_key = (bool) $_val;
|
||||
$$_key = (bool)$_val;
|
||||
break;
|
||||
|
||||
default:
|
||||
trigger_error("textformat: unknown attribute '$_key'");
|
||||
trigger_error("textformat: unknown attribute '{$_key}'");
|
||||
}
|
||||
}
|
||||
|
||||
if ($style == 'email') {
|
||||
if ($style === 'email') {
|
||||
$wrap = 72;
|
||||
}
|
||||
// split into paragraphs
|
||||
$_paragraphs = preg_split('![\r\n]{2}!', $content);
|
||||
|
||||
foreach ($_paragraphs as &$_paragraph) {
|
||||
if (!$_paragraph) {
|
||||
continue;
|
||||
}
|
||||
// convert mult. spaces & special chars to single space
|
||||
$_paragraph =
|
||||
preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER),
|
||||
array(' ', ''), $_paragraph);
|
||||
preg_replace(
|
||||
array(
|
||||
'!\s+!' . Smarty::$_UTF8_MODIFIER,
|
||||
'!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER
|
||||
),
|
||||
array(
|
||||
' ',
|
||||
''
|
||||
),
|
||||
$_paragraph
|
||||
);
|
||||
// indent first line
|
||||
if ($indent_first > 0) {
|
||||
$_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
|
||||
}
|
||||
// wordwrap sentences
|
||||
if (Smarty::$_MBSTRING) {
|
||||
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php');
|
||||
$_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
|
||||
$_paragraph = smarty_modifier_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
|
||||
} else {
|
||||
$_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
|
||||
}
|
||||
|
@ -103,7 +113,6 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
|
|||
}
|
||||
}
|
||||
$_output = implode($wrap_char . $wrap_char, $_paragraphs);
|
||||
|
||||
if ($assign) {
|
||||
$template->assign($assign, $_output);
|
||||
} else {
|
||||
|
|
|
@ -5,15 +5,14 @@
|
|||
* @package Smarty
|
||||
* @subpackage PluginsFunction
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {counter} function plugin
|
||||
* Type: function<br>
|
||||
* Name: counter<br>
|
||||
* Type: function
|
||||
* Name: counter
|
||||
* Purpose: print out a counter value
|
||||
*
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
|
||||
* @link https://www.smarty.net/manual/en/language.function.counter.php {counter}
|
||||
* (Smarty online manual)
|
||||
*
|
||||
* @param array $params parameters
|
||||
|
@ -24,50 +23,40 @@
|
|||
function smarty_function_counter($params, $template)
|
||||
{
|
||||
static $counters = array();
|
||||
|
||||
$name = (isset($params[ 'name' ])) ? $params[ 'name' ] : 'default';
|
||||
if (!isset($counters[ $name ])) {
|
||||
$counters[ $name ] = array('start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1);
|
||||
}
|
||||
$counter =& $counters[ $name ];
|
||||
|
||||
if (isset($params[ 'start' ])) {
|
||||
$counter[ 'start' ] = $counter[ 'count' ] = (int) $params[ 'start' ];
|
||||
$counter[ 'start' ] = $counter[ 'count' ] = (int)$params[ 'start' ];
|
||||
}
|
||||
|
||||
if (!empty($params[ 'assign' ])) {
|
||||
$counter[ 'assign' ] = $params[ 'assign' ];
|
||||
}
|
||||
|
||||
if (isset($counter[ 'assign' ])) {
|
||||
$template->assign($counter[ 'assign' ], $counter[ 'count' ]);
|
||||
}
|
||||
|
||||
if (isset($params[ 'print' ])) {
|
||||
$print = (bool) $params[ 'print' ];
|
||||
$print = (bool)$params[ 'print' ];
|
||||
} else {
|
||||
$print = empty($counter[ 'assign' ]);
|
||||
}
|
||||
|
||||
if ($print) {
|
||||
$retval = $counter[ 'count' ];
|
||||
} else {
|
||||
$retval = null;
|
||||
}
|
||||
|
||||
if (isset($params[ 'skip' ])) {
|
||||
$counter[ 'skip' ] = $params[ 'skip' ];
|
||||
}
|
||||
|
||||
if (isset($params[ 'direction' ])) {
|
||||
$counter[ 'direction' ] = $params[ 'direction' ];
|
||||
}
|
||||
|
||||
if ($counter[ 'direction' ] == "down") {
|
||||
if ($counter[ 'direction' ] === 'down') {
|
||||
$counter[ 'count' ] -= $counter[ 'skip' ];
|
||||
} else {
|
||||
$counter[ 'count' ] += $counter[ 'skip' ];
|
||||
}
|
||||
|
||||
return $retval;
|
||||
}
|
||||
|
|
|
@ -5,15 +5,14 @@
|
|||
* @package Smarty
|
||||
* @subpackage PluginsFunction
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {cycle} function plugin
|
||||
* Type: function<br>
|
||||
* Name: cycle<br>
|
||||
* Date: May 3, 2002<br>
|
||||
* Purpose: cycle through given values<br>
|
||||
* Type: function
|
||||
* Name: cycle
|
||||
* Date: May 3, 2002
|
||||
* Purpose: cycle through given values
|
||||
* Params:
|
||||
* <pre>
|
||||
*
|
||||
* - name - name of cycle (optional)
|
||||
* - values - comma separated list of values to cycle, or an array of values to cycle
|
||||
* (this can be left out for subsequent calls)
|
||||
|
@ -22,84 +21,72 @@
|
|||
* - advance - boolean - whether or not to advance the cycle
|
||||
* - delimiter - the value delimiter, default is ","
|
||||
* - assign - boolean, assigns to template var instead of printed.
|
||||
* </pre>
|
||||
* Examples:<br>
|
||||
* <pre>
|
||||
*
|
||||
* Examples:
|
||||
*
|
||||
* {cycle values="#eeeeee,#d0d0d0d"}
|
||||
* {cycle name=row values="one,two,three" reset=true}
|
||||
* {cycle name=row}
|
||||
* </pre>
|
||||
*
|
||||
* @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
|
||||
* @link https://www.smarty.net/manual/en/language.function.cycle.php {cycle}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @author credit to Mark Priatel <mpriatel@rogers.com>
|
||||
* @author credit to Gerard <gerard@interfold.com>
|
||||
* @author credit to Jason Sweat <jsweat_php@yahoo.com>
|
||||
* @version 1.3
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @author credit to Mark Priatel <mpriatel@rogers.com>
|
||||
* @author credit to Gerard <gerard@interfold.com>
|
||||
* @author credit to Jason Sweat <jsweat_php@yahoo.com>
|
||||
* @version 1.3
|
||||
*
|
||||
* @param array $params parameters
|
||||
* @param Smarty_Internal_Template $template template object
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
|
||||
function smarty_function_cycle($params, $template)
|
||||
{
|
||||
static $cycle_vars;
|
||||
|
||||
$name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ];
|
||||
$print = (isset($params[ 'print' ])) ? (bool) $params[ 'print' ] : true;
|
||||
$advance = (isset($params[ 'advance' ])) ? (bool) $params[ 'advance' ] : true;
|
||||
$reset = (isset($params[ 'reset' ])) ? (bool) $params[ 'reset' ] : false;
|
||||
|
||||
$print = (isset($params[ 'print' ])) ? (bool)$params[ 'print' ] : true;
|
||||
$advance = (isset($params[ 'advance' ])) ? (bool)$params[ 'advance' ] : true;
|
||||
$reset = (isset($params[ 'reset' ])) ? (bool)$params[ 'reset' ] : false;
|
||||
if (!isset($params[ 'values' ])) {
|
||||
if (!isset($cycle_vars[ $name ][ 'values' ])) {
|
||||
trigger_error("cycle: missing 'values' parameter");
|
||||
|
||||
trigger_error('cycle: missing \'values\' parameter');
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] != $params[ 'values' ]) {
|
||||
if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] !== $params[ 'values' ]) {
|
||||
$cycle_vars[ $name ][ 'index' ] = 0;
|
||||
}
|
||||
$cycle_vars[ $name ][ 'values' ] = $params[ 'values' ];
|
||||
}
|
||||
|
||||
if (isset($params[ 'delimiter' ])) {
|
||||
$cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ];
|
||||
} elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) {
|
||||
$cycle_vars[ $name ][ 'delimiter' ] = ',';
|
||||
}
|
||||
|
||||
if (is_array($cycle_vars[ $name ][ 'values' ])) {
|
||||
$cycle_array = $cycle_vars[ $name ][ 'values' ];
|
||||
} else {
|
||||
$cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]);
|
||||
}
|
||||
|
||||
if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) {
|
||||
$cycle_vars[ $name ][ 'index' ] = 0;
|
||||
}
|
||||
|
||||
if (isset($params[ 'assign' ])) {
|
||||
$print = false;
|
||||
$template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]);
|
||||
}
|
||||
|
||||
if ($print) {
|
||||
$retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ];
|
||||
} else {
|
||||
$retval = null;
|
||||
}
|
||||
|
||||
if ($advance) {
|
||||
if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) {
|
||||
$cycle_vars[ $name ][ 'index' ] = 0;
|
||||
} else {
|
||||
$cycle_vars[ $name ][ 'index' ] ++;
|
||||
$cycle_vars[ $name ][ 'index' ]++;
|
||||
}
|
||||
}
|
||||
|
||||
return $retval;
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue