Compare commits

...
Sign in to create a new pull request.

259 commits

Author SHA1 Message Date
Heiko August
a4bc7726a0
Merge pull request #516 from fcaspar/legacy_2.4
Voting feature
2023-01-22 21:30:04 +01:00
Heiko August
ad40232432
Merge branch 'voting-feature' into legacy_2.4 2023-01-22 21:08:57 +01:00
Heiko August
5ce298180d Change: add the changes of version 2.4.24 to the changelog 2020-10-12 21:56:31 +02:00
Heiko August
4bb25dbecb Change: add version number 2.4.24 to index.php and config/VERSION 2020-10-12 21:44:41 +02:00
Heiko August
b9c096654d Change: add version 2.4.23 to the list of updatable versions 2020-10-12 21:42:34 +02:00
Heiko August
578b111b07 Change: list of changed files for update to version 2.4.24 2020-10-12 21:41:47 +02:00
Heiko August
280a2a76a8 Fix: don't fix language dependent issues in CSS that takes effect in any language 2020-10-12 21:21:02 +02:00
Heiko August
d55ab87840 Change: adapt the changes from master commit 9456cd2330 (unified RSS link structure) 2020-10-12 21:16:21 +02:00
Heiko August
a8d9aeab88 Change: add field user_type to the thread tree informations and add classes to the user name elements 2020-10-12 21:08:44 +02:00
Heiko August
206b042df1 Change: add version 2.4.22 to the list of updatable versions 2020-09-30 16:39:07 +02:00
Heiko August
56c752ee8a Change: add the list of files to update for version 2.4.23 2020-09-30 16:38:17 +02:00
Heiko August
bd15bebbb5 Change: add the description of the fixes in 2.4.23 to the changelog 2020-09-30 16:37:15 +02:00
Heiko August
ed339082af Change: add new version number 2.4.23 2020-09-30 16:36:51 +02:00
Michael Loesler
dfd915806e CSS for RSS of the Thread (#533)
- added padding to to the link to the rss-feed of the thread (in entry view)
- padding was removed during re-organisation of the footer, cf. https://github.com/ilosuna/mylittleforum/pull/531, but the link is not part of the footer
2020-09-30 13:36:16 +02:00
Michael Loesler
d1e07039e9 Corrected comment (#532)
- corrected comment in i18n files, i.e. replaced `</--` by `<!--`
- see https://github.com/ilosuna/mylittleforum/pull/530
2020-09-30 13:35:41 +02:00
Heiko August
d4457f7d24 Change: add entries for version 2.4.22 to the changelog 2020-09-29 22:22:00 +02:00
Heiko August
5144cc5f7c Change: add pull request #531 in the comments of the affected files 2020-09-29 22:05:56 +02:00
Heiko August
ab2b72f306 Change: removed unnecessary semicolons in the last rules in a set 2020-09-29 22:03:16 +02:00
Heiko August
a68948b12f Fix: correct invalid HTML structure for the footer menu no. 2
Every link in the menu is now encapsulated in its own list item.
The padding of the links with an icon got realigned.
2020-09-29 22:01:29 +02:00
Heiko August
03df36115f Change: add list of files and directories for the update to 2.4.22 2020-09-29 11:39:22 +02:00
Heiko August
fe1997e562 Change: add version 2.4.21 to the list of updatable versions 2020-09-29 11:37:08 +02:00
Heiko August
b8bb2d811b Change: new version number 2.4.22 2020-09-29 11:36:29 +02:00
Heiko August
852c0e8f53 Change: add link to top of page to every entry and the footer of every page 2020-09-27 23:28:00 +02:00
Heiko August
e89e21cd90 Fix: forgotten string enclosing for the timestamp of a subscription 2020-09-22 22:51:37 +02:00
Heiko August
460fc7243a Fix: fix for fix, column 'email_notification' does not exist since 2.4.14 but references was not removed everywhere 2020-09-22 22:23:49 +02:00
Heiko August
cc3ac57727 Fix: correct wrong string concatenation (forgotten dot) 2020-09-22 22:15:33 +02:00
Heiko August
b017952093 Change: take new backup modes (11, 12) into consideration 2020-09-22 22:14:46 +02:00
Heiko August
dbd9f971bd Fix: provide backup functionality for the tags tables 2020-09-22 22:06:15 +02:00
Heiko August
04105b5e96 Fix: round up the backup file sizes and provide four decimals for displaying file sizes
backup files with very smal file sizes was displayed with "0 MB". That was misleading because the files seemed to be empty but wasn't.
2020-09-18 00:02:43 +02:00
Heiko August
630eb91f28 Fix: add forgotten backup function for subscriptions 2020-09-15 23:14:14 +02:00
Heiko August
10f81d9d53 Fix: provide the column names in the backup code of temporary information table and respect possible NULL value for 'time' 2020-09-15 23:06:43 +02:00
Heiko August
84fe01f898 Fix: provide the column names in the backup code of read status table 2020-09-15 22:43:00 +02:00
Heiko August
8b70861131 Fix: provide the column names in the backup code of bookmarks table 2020-09-15 22:41:45 +02:00
Heiko August
28309e637e Fix: provide the column names in the backup code of pages table 2020-09-15 22:41:05 +02:00
Heiko August
e195948a5b Fix: provide the column names in the backup code of userdata table 2020-09-15 22:39:58 +02:00
Heiko August
59fa47dbfd Fix: provide the column names in the backup code of smilies table 2020-09-15 22:38:29 +02:00
Heiko August
75e537071e Fix: provide the column names in the backup code of settings table 2020-09-15 22:37:48 +02:00
Heiko August
2f8e7ef84d Fix: provide the column names in the backup code of entries table and add forgotten column 'email_notification' 2020-09-15 22:35:43 +02:00
Heiko August
156ae776c9 Fix: provide the column names in the backup code of categories table 2020-09-15 22:33:51 +02:00
Heiko August
41f3e96a98 Fix: provide the column names in the backup code of banlists table 2020-09-15 22:32:06 +02:00
Michael Loesler
cf1befe791 Key for error message (#523)
- Key 'error_email_wrong' was not unique and provides error message "Array"
- changed one key in lang-files 'error_email_wrong' --> 'admin_reg_error_email_wrong'
- see https://mylittleforum.net/forum/index.php?id=12205
2020-09-11 16:45:47 +02:00
Heiko August
3a7c974d6d Change: natural, case insensitive sorting for the tag list on the main page (#512)
Thanks for the proposal goes to Candleman. :-)
2020-09-11 16:36:28 +02:00
Michael Loesler
f41ca0eff8 Remove deprecated function each() (#410)
- replaced deprecated function each() by its foreach representation
- see https://github.com/ilosuna/mylittleforum/issues/409
2020-08-24 11:16:42 +02:00
Heiko August
68628eb3ad Change: add includes/rss.inc.php to the list of files to update 2020-04-25 21:45:17 +02:00
Heiko August
9ec0d41910 Change: documentation of another fix, provided with version 2.4.21 2020-04-25 21:19:01 +02:00
Heiko August
865344f840 Fix: generate the image sources in a complete manner
We do need an image URL including protocol, domain and path and not only the local, relative path on the domain.
2020-04-25 21:01:07 +02:00
Heiko August
09c83ecb19 Change: add the new version number to config/VERSION and to the index.php 2020-04-25 20:44:47 +02:00
Heiko August
674f9e2d95 Change: add the description of the fix to the changelog 2020-04-25 20:44:10 +02:00
Heiko August
dfc2fb9d73 Change: add version 2.4.20 to the array of updateable versions 2020-04-25 20:43:05 +02:00
Heiko August
e211274535 Change: signle-item-list of changed files from version 2.4.20 to 2.4.21 2020-04-25 20:42:09 +02:00
Heiko August
2a5cc796ca Fix: regex-syntax changes because of introduction of PCRE2 in PHP 7.3
This makes the check of the e-mail-addresses compatible with PHP 7.3 and newer.
2020-04-25 20:25:20 +02:00
Florian Caspar
37ea1ba699 refactoring: removal of dead code 2020-01-19 13:29:44 +01:00
Florian Caspar
180d4b324f template update for voting management 2020-01-19 04:48:03 +01:00
Florian Caspar
1a0dfcfa86 style update for voting management 2020-01-19 04:45:51 +01:00
Florian Caspar
9353748c0a implementation voting management 2020-01-19 04:44:21 +01:00
Florian Caspar
694e260b1b DB settings update for voting management 2020-01-19 04:41:56 +01:00
Florian Caspar
dabe72c76b update of language files for voting management 2020-01-19 04:39:59 +01:00
Florian Caspar
49065059e7 DB scheme update for voting management 2020-01-19 04:21:09 +01:00
Florian Caspar
760cc6316b DB scheme update for voting management 2020-01-19 04:15:03 +01:00
Florian Caspar
143d2fc2a8 SQL install/update corrected 2020-01-02 01:42:13 +01:00
Florian Caspar
9d374a2f90 updated language files 2020-01-02 01:33:58 +01:00
Florian Caspar
8c79ad769b Voting feature added. 2020-01-02 01:26:37 +01:00
Heiko August
d5758ff0b1 Change: add changes for version 2.4.20 to the changelog 2019-05-15 20:33:38 +02:00
Heiko August
3887c33bed Change: add the last version number to the list of updateable versions 2019-05-15 20:32:45 +02:00
Heiko August
1227438f62 Change: add the new version number to config/VERSION and index.php 2019-05-15 20:32:28 +02:00
Heiko August
a77698508b Change: add the list of changed files to the update script 2019-05-15 20:30:48 +02:00
Michael Loesler
6c2611a3bb Checking CSRF-token
- checked CSRF on delete posting
2019-05-15 20:08:24 +02:00
Michael Loesler
a5e6751722 CSRF token in delete links
- added CSRF token in template files at delete links
2019-05-15 20:03:05 +02:00
Michael Loesler
a3e4b73fe5 Mail encoding (#467)
- removed get_mail_encoding function
- set charset to defined value in i18n file
- reformatted my_mail function
- see https://mylittleforum.net/forum/index.php?id=11715
2019-05-15 20:01:14 +02:00
Michael Loesler
03f38af6bf missing function (#466)
- remove missing function call, see https://mylittleforum.net/forum/index.php?id=11612 and https://github.com/ilosuna/mylittleforum/pull/437
2019-05-15 19:59:18 +02:00
Heiko August
336d72f6a9 Change: new version string 2.4.19.1 for index.php and config/VERSION 2019-02-07 22:21:07 +01:00
Heiko August
11f0e4eb85 Change: add the version 2.4.19 to the list of updateable versions 2019-02-07 22:20:39 +01:00
Heiko August
dd25fb9e90 Change: add the list of changed files for version 2.4.19.1 2019-02-07 22:19:59 +01:00
Heiko August
548aa4d8f8 Change: add changes of version 2.4.19.1 to the changelog 2019-02-07 22:19:19 +01:00
Heiko August
eca7cb0ecf Fix: mysqli_fetch_all does not work everywhere, use mysqli_fetch_assoc in a loop instead 2019-02-07 20:48:14 +01:00
Heiko August
bdf47939fe Fix: fetching one line of a database request results in a flat array, there is no line 0 2019-02-07 20:46:52 +01:00
Heiko August
7385c95571 Fix: provide a column list because we want to fill only these two columns 2019-02-03 21:16:35 +01:00
Heiko August
a6bca1fa21 Fix: let's also use here backticks instead apostrophes for column names 2019-02-03 19:48:18 +01:00
Heiko August
43fc778327 Fix: setting last_changes was and should be a Unix timestamp 2019-02-03 19:28:28 +01:00
Heiko August
86f159034b Fix: fetch_assoc returns only one row, we need all rows, so use fetch_all instead 2019-02-03 18:47:20 +01:00
Heiko August
e82fa99c01 Fix: insert also the current version to make it updateable at the end of the update process 2019-02-03 18:20:56 +01:00
Heiko August
c3c0a0a178 Change: insert the real values from the forum for temporary settings 2019-02-03 18:08:47 +01:00
Heiko August
8c851aecbe Fix: use backticks for enclosing of column names, not apostrophes 2019-02-03 17:59:53 +01:00
Heiko August
6fe47340bf Change: new version number 2.4.19 2019-02-03 16:57:40 +01:00
Heiko August
650ced1ac9 Change: add the changes of version 2.4.19 to the changelog 2019-02-03 16:55:50 +01:00
Heiko August
c7bfce24e8 Change: put the database queries into the update.sql for documentation 2019-02-03 16:04:12 +01:00
Heiko August
e90dcf0e39 Fix: remove spelling error in a comment 2019-02-03 15:19:48 +01:00
Heiko August
d734ad82fd Change: version number string resides in temporary settings beginning with version 2.4.19 2019-02-03 15:18:45 +01:00
Heiko August
30d83e0560 Change: add block for update to version 2.4.19 2019-02-03 15:18:01 +01:00
Heiko August
76caa70564 Change: removed an outdated update section and items from the array of updateable version 2019-02-03 15:16:35 +01:00
Heiko August
f68c2a62af Change: add the list of files to update 2019-02-03 14:10:45 +01:00
Heiko August
5113096551 Change: add version 2.4.18.1 to the list of updateable versions 2019-02-03 14:10:21 +01:00
Heiko August
2ea335d7a6 Fix: wrong syntax for UPDATE, used AND instead the correct comma 2019-02-03 13:14:48 +01:00
Heiko August
6c6a2ec71a Change: replace use of $settings with new request for data to exclude temporary infos
A few temporary infos are amended to the settings array for the normal service.
2019-02-03 13:11:15 +01:00
Heiko August
0a3e109dd2 Change: installation queries for moved settings 2019-02-03 13:04:15 +01:00
Heiko August
da6746fdbf Change: move setting version to table mlf2_temp_infos 2019-02-03 13:03:22 +01:00
Heiko August
b38014e7a8 Change: move setting access_permission_checks to table mlf2_temp_infos 2019-02-03 13:01:36 +01:00
Heiko August
68f544b876 Change: move setting last_changes to the table mlf2_temp_infos 2019-02-03 12:58:44 +01:00
Heiko August
bd9e16b1f0 Change: move setting next_daily_actions to the table mlf2_temp_infos 2019-02-03 12:57:27 +01:00
Heiko August
4462463abf Change: make the link text for hiding spam from the main view more descriptive 2019-02-03 12:04:58 +01:00
Heiko August
4b5a1a504d Fix: set image height to auto because images was elongated in Ajax preview 2019-02-03 12:01:25 +01:00
Heiko August
04ddac272f Change: new version number 2.4.18.1 2019-01-14 09:58:52 +01:00
Heiko August
21ce758695 Change: add changes of version 2.4.18.1 to the changelog 2019-01-14 09:16:44 +01:00
Heiko August
9befe111c0 Fix: backticks around table name made prefix replacement during installation impossible 2019-01-14 09:10:33 +01:00
Heiko August
8e4e0dc69a Fix: database queries for de- and reactivation of the forum during the update failed because of wrong formulation 2019-01-13 19:27:07 +01:00
Heiko August
57fc074511 Change: concretisation of the description of the forum deactivation during database operations of the update 2019-01-13 19:25:39 +01:00
Heiko August
94377203a6 Change: documentation of the queries, that runs during the update from 2.4.17 to 2.4.18 2019-01-13 19:06:19 +01:00
Heiko August
3644cc0e84 Change: new version number for index.php and config/VERSION, add 2.4.17 to the list of updateable versions 2019-01-13 19:03:04 +01:00
Heiko August
0c1bc23a37 Change: add the changes of version 2.4.18 to the changelog 2019-01-13 19:01:48 +01:00
Heiko August
a43f1162d3 Change: disable the forum during update, reenable it afterwards 2019-01-13 18:41:04 +01:00
Heiko August
b96244bfaa Change: add queries for subscription handling for installation and update to 2.4.18 2019-01-13 18:23:03 +01:00
Heiko August
b1299e2eb5 Change: add the directory "js" to the list of updateable files and folders 2019-01-13 17:41:47 +01:00
Heiko August
baebfceae9 Change: correct the URL of the project website, uses HTTPS only nowadays 2019-01-13 17:40:49 +01:00
Heiko August
5ed311fd23 Change: set https:// instead http:// as the default protocol in JS prompts, adapts PR #411, author: @loesler 2019-01-13 17:39:11 +01:00
Heiko August
1c7362a670 Change: add list of changed files for the update to 2.4.18 2019-01-13 16:15:35 +01:00
Heiko August
f6d7e2c53e Fix: add forgotten template, introduced with 2.4.14, may be missed in some installations 2019-01-13 16:07:25 +01:00
Heiko August
48d162a249 Fix: remove forgotten marking of a solved commit conflict 2019-01-13 15:56:31 +01:00
Heiko August
2c1e9750da Fix: deleting a posting could leave orphaned subscriptions, delete them too (#446) 2019-01-13 15:55:07 +01:00
Heiko August
d11b75fea5 Change: make the link text more descriptiv (#445)
"show spam" was to near to "list spam". The first toggles the visibility in the main view, the latter shows a list of only spam entries. With "display spam in thread list" the purpose of the link function gets more clear.
2019-01-13 15:47:42 +01:00
Michael Loesler
6d27aa07a2 Timestamp (#443)
- added `setReceiptTimestamp()` call to estimate the time span, see https://mylittleforum.net/forum/index.php?id=11230
2019-01-13 15:45:27 +01:00
Heiko August
4a32a1c4aa Fix: thumbnails was elongated to the complete height of the entry (#442) 2019-01-13 15:43:49 +01:00
Michael Loesler
0fe94c70c0 Regexp (#441)
* Improve regexp for passwort check

Improved regexp by lookahead (?=) technique to force the number of (required) letters (but not one after another!), e.g. a password should contain two uppercase letters `MyPassword` is valid but the former expression returns false

* Parenthesis

- added missing parenthesis
2019-01-13 15:42:49 +01:00
Heiko August
35c8112179 Change: added PR-number 439 to the affected list entries 2019-01-06 18:49:44 +01:00
Heiko August
f600bd5d27 Fix: add the forgotten files and the query part for password-strength-feature to the updatescript 2019-01-06 14:16:20 +01:00
Heiko August
45c146c6de Change: add the list of fixes, features and changes to the changelog 2019-01-06 14:08:12 +01:00
Heiko August
755b9caaf0 Change: add version 2.4.16 to the list of updateable versions 2019-01-06 13:32:11 +01:00
Heiko August
a066ed5563 Change: new version number string (2.4.17) in index.php and config/VERSION 2019-01-06 13:31:32 +01:00
Heiko August
739718450e Change: add list of changed files and the new-settings-query for version 2.4.17 2019-01-06 13:29:11 +01:00
Heiko August
1f99fe7a05 Fix: Flash setting checkbox got removed by accident, will get removed with 2.5 not 2.4.x 2019-01-06 00:18:36 +01:00
Heiko August
a6ded1dc9e Change: add code to enforce minimal count of chars from character classes in a password (PR: #438, #439, author: @loesler) 2019-01-02 22:42:17 +01:00
Heiko August
db229a594a Fix: correct URL to the Github account of Michael Loesler (@loesler) 2019-01-02 22:07:45 +01:00
Heiko August
e924ec1631 Change: enforce a new acceptance of the terms of use or privacy agreement for registered users 2019-01-02 21:58:08 +01:00
Heiko August
e53bb1d911 Change: rearrange the german strings for the reset of the terms of use and privacy agreements 2019-01-02 21:53:32 +01:00
Heiko August
2e236d20be Change: use edit.png as icon for the reset of terms of use and/or privacy agreements 2019-01-02 21:52:41 +01:00
Heiko August
1ee1361cbd Change: add new links for resetting the acceptance of agreements after changes 2019-01-02 21:51:07 +01:00
Heiko August
083b7d126e Change: new link texts for the reset of the agreements 2019-01-02 21:50:22 +01:00
Heiko August
f2c3760033 Change: remove setting of classes and ids for "disabled" form fields 2019-01-02 21:45:50 +01:00
Heiko August
25cfd84faa Change: remove function to gray out unselected radio buttons and checkboxes via CSS-classes 2019-01-02 21:40:44 +01:00
Michael Loesler
f470f50482 Change user password (#435)
- removed field to confirm changed password in user area
- see: https://github.com/ilosuna/mylittleforum/pull/412, https://github.com/ilosuna/mylittleforum/pull/403
2019-01-02 21:39:25 +01:00
Michael Loesler
177e5d7308 Remove account (#434)
* Remove user account

- added option _remove user account_ to user area

* Validate password

- requesting password to remove user account

* Remove button/clean code

- removed button as suggested by @auge8472 (https://mylittleforum.net/forum/index.php?id=11181)
- cleaned lang-files and template
2019-01-02 21:37:15 +01:00
Heiko August
dd128a4920 Change: remove bb-code msg (#432) 2019-01-02 21:31:05 +01:00
Michael Loesler
c94ae9627a LC_NUMERIC (#429)
- added `setlocale(LC_NUMERIC, "C");` to handle the decimal separator (in case of content switching)
- https://github.com/ilosuna/mylittleforum/issues/428
2019-01-02 21:05:18 +01:00
Michael Loesler
b7239b5b88 max receipt time (#423)
- correcting condition for checking max. receipt_time
- https://github.com/ilosuna/mylittleforum/pull/413
2019-01-02 21:03:54 +01:00
Heiko August
1e64282ca0 Change: Timespan for form completion (#413) 2019-01-02 21:01:29 +01:00
Heiko August
4ca11f7ee7 Change: added the previous version 2.4.15 and the list of changed files to the update script 2018-12-07 14:05:59 +01:00
Heiko August
dff60cc05f Change: log the changes of the new version 2.4.16 2018-12-07 14:05:18 +01:00
Heiko August
03899f676b Change: new version number 2.4.16 2018-12-07 14:04:51 +01:00
Heiko August
ee208f3257 Fix: hardcoded table names will fail in environments with different table name prefixes 2018-12-07 13:52:42 +01:00
Michael Loesler
5720b2ea98 Check NULL value (#419)
- check sql result for NULL value
2018-12-07 13:51:55 +01:00
Heiko August
26da1b5ea7 Change: list of changed files for version 2.4.15 2018-11-30 12:00:26 +01:00
Heiko August
5de70f4f42 Change: add version 2.4.14 to the array of updateable versions 2018-11-30 11:59:32 +01:00
Heiko August
3d967c691c Change: new version number in index.php and config/VERSION 2018-11-30 11:58:57 +01:00
Heiko August
729c6bb3dd Change: documentation of the changes of version 2.4.15 2018-11-30 11:58:18 +01:00
Heiko August
3a06f43162 Change: reformatting a few lines and functions 2018-11-30 11:43:50 +01:00
Heiko August
4ef7a8eeb5 Fix: a changed subscription status wasn't stored/deleted after a posting edit 2018-11-30 11:13:14 +01:00
Heiko August
13aa34bd53 Fix: one was unable to edit an entry because of forgotten occurences of old subscription field name in queries 2018-11-29 23:39:00 +01:00
Heiko August
b7dfe0d74e Change: add changelog for version 2.4.14 2018-11-26 22:58:37 +01:00
Heiko August
fe95fde61b Change: new version number 2.4.14 2018-11-26 22:55:24 +01:00
Heiko August
ad75b62aff Change: search only for the thread subscription in case of parent posting = thread opener 2018-11-26 22:47:55 +01:00
Heiko August
7a861330fa Fix: script ran into parsing error because it lacked a semicolon 2018-11-26 22:17:37 +01:00
Heiko August
6d90728883 Change: add database queries to the file update.sql 2018-11-26 22:09:09 +01:00
Heiko August
e7d12e1c6b Fix: remove backticks from table name, script is not able to replace the table prefix with them 2018-11-26 22:08:06 +01:00
Heiko August
8ab31523b2 Fix: remove hyperfluid semicolon, caused parsing error 2018-11-26 22:07:13 +01:00
Heiko August
ae73356aba Fix: forgot to add uload_image.inc.php to the list of files to update 2018-11-25 21:48:25 +01:00
Heiko August
c6cef9bc43 Change: increase the number of images to show in the upload popup 2018-11-25 21:44:40 +01:00
Heiko August
8d5b5ec80d Change: add the code to generate and enlive the subscriptions table 2018-11-25 21:14:14 +01:00
Heiko August
f48c2e8b96 Change: create the list of files to replace during the update to 2.4.14 2018-11-25 21:11:32 +01:00
Heiko August
81d101a1fa Change: add new entry 2.4.13 to the list of updateable versions 2018-11-25 21:11:14 +01:00
Heiko August
336bfd389a Changhe: update of the danish translation, author: Tommy Nilsson 2018-11-22 23:07:36 +01:00
Heiko August
827f492a58 Change: removed the workaround of using US-locales for a PHP-bug that was solved ages ago with PHP 5.2 (#405)
fixes #361
2018-11-22 22:53:13 +01:00
Heiko August
a374791642 add unsubscribing function for messages about replies (#399)
* Change: add a link to unsubscribe from the e-mails informing about replies to a specific own entry
* Change: processing subscription quitting, code, text and subtemplate
* Change: add a new table for the handling of subscriptions
* Change: remove subscription flag from antres table, set it in subscriptions table instead
* Change: rename the entry-id and the UUID-column, add a timestamp
* Change: remove the GET-parameter checker, is unnecessary
* Change: add query to delete the row of the subscription from the database table
* Change: rebuild the function emailNotification2ParentAuthor
2018-11-22 22:50:32 +01:00
flatnick
b1dce240ae Change: Update norwegian.lang (#400), author: Github user @flatnick
Added new strings, that was introduced meanwhile (@auge8472).
2018-11-22 22:48:42 +01:00
Michael Loesler
ddd1891d87 Typo (#404)
- replaced hidde by hide
2018-11-22 22:42:08 +01:00
Michael Loesler
80174a1bc8 Password visibility (#403)
- add a check box behind the passwords field
- add two lang. phrases to display a helpful tooltip
- if the check box is checked, the password is shown in plain text otherwise the text field function for passwords is used (e.g. showing *****) 
- see https://github.com/ilosuna/mylittleforum/pull/402
- remove uri to YUI compressor 
- password confirmation field removed
- `error_pw_conf_wrong` key removed
2018-11-22 22:38:53 +01:00
Michael Loesler
fb025551e7 underline character (#401)
- underline character in data_privacy_statement removed in lang-files
2018-11-22 22:32:56 +01:00
Michael Loesler
df0282dfb6 Change: allow SVG graphics as smilies (see pull request #397)
- add svg extension in regexp for imgage files
2018-11-22 22:29:44 +01:00
Michael Loesler
9a12ab222e CSRF token (#396)
- add token to admin function to avoid cross site request forgery (CSRF)
- see http://owendarlene.com/csrf-my-little-forum/
2018-11-22 22:10:18 +01:00
Heiko August
d78e09162c Change: add list of changes files to the update script and 2.4.12 to the array of updateable versions 2018-08-12 17:55:39 +02:00
Heiko August
261a560a32 Change: add the new version number 2.4.13 to the index.php and config/VERSION 2018-08-12 17:54:54 +02:00
Heiko August
0858520742 Change: add list of fixes to the changelog file 2018-08-12 17:39:08 +02:00
Heiko August
e52f132c61 Fix: add the code for opening the data privacy statement in a popup to the minimised JS-file 2018-08-12 16:59:21 +02:00
Heiko August
c4622d4fa2 Fix: always set the forum address as sender of an e-mail
Put the e-mail-address a user can provide to the Reply-to header.
2018-08-12 16:58:24 +02:00
Heiko August
c17d77df6e Fix: add forgotten minified main.min.js, includes the changes of #392 2018-08-12 16:57:48 +02:00
Heiko August
8c3da39fcf Fix: another occurence of single quotes in a string, has to be masked 2018-08-12 16:56:54 +02:00
Heiko August
9877661bc3 Cleanup: remove some unnecessary tabs and linebreaks 2018-08-12 16:56:13 +02:00
Heiko August
8c47fc98cc Fix: open the page of the privacy statement per default as popup 2018-08-12 16:55:23 +02:00
Heiko August
0c652b3d1d Fix: remove no longer existing column 'mlf2_entries.tags' from backup script 2018-08-12 16:53:36 +02:00
Heiko August
2dc67d472c Fix: values of the birthday column have to be surrounded by quotes 2018-08-12 16:52:33 +02:00
Heiko August
71f15aa283 Fix: add the forgotten new columns, introduced in version 2.4.10, to the backup script 2018-08-12 16:51:36 +02:00
Heiko August
836b984400 Fix: applied non-existing variable for the privacy checkbox to the posting template (#388) 2018-08-12 16:49:15 +02:00
Heiko August
cc69218e75 Change: several fields in the posting-form get randomised names 2018-08-12 16:47:51 +02:00
Heiko August
540cd4cfca Change: reorder the input fields of the registration form to prevent unintended prefilled fields in firefox 2018-08-12 16:45:30 +02:00
Heiko August
6df781a71c Change: several fields in the registration-form get randomised names 2018-08-12 16:44:04 +02:00
Michael Loesler
64381b6e7b add missing css class thread-locked (#384)
- adding missing css class `thread-locked` to enable ballon icon for ajax preview
- see https://mylittleforum.net/forum/index.php?id=10873
2018-08-12 16:40:32 +02:00
Heiko August
dc78841a64 Change: add the new version number to the index.php and to config/VERSION 2018-06-29 13:22:40 +02:00
Heiko August
4c8c1fdc65 Change: add the description of the fix to the changelog 2018-06-29 13:21:34 +02:00
Heiko August
0da2dd4ff1 Change: add the version 2.4.11 to the list of updateable versions 2018-06-29 13:21:07 +02:00
Heiko August
4b32e10054 Change: add a block for correcting a failed update from 2.3.x to 2.4.10 2018-06-29 13:19:48 +02:00
Heiko August
83cd84adc0 Fix: correct spelling error in variable name 2018-06-29 13:18:47 +02:00
Heiko August
c1e90bce18 Fix: add missed elements of the array in the if-clause
The bug caused older versions as 2.3.99.1 not to alter the database structure.
2018-06-29 12:45:20 +02:00
Heiko August
df5b040043 Change: new entry in the array of updateable versions and changed files 2018-06-25 16:17:44 +02:00
Heiko August
3459984d55 Change: new version number in the files index.php and config/VERSION 2018-06-25 16:16:49 +02:00
Heiko August
6ea32379ef Change: add the list of changes in 2.4.11 to the changelog 2018-06-25 16:15:12 +02:00
Heiko August
66cb782782 Fix: correct wrong settings-key for the terms of use URL (#381) 2018-06-25 16:05:19 +02:00
Heiko August
4ce5cec472 Fix: removed errorneous and hyperfuid underscore (#380)
Thanks for the hint goes [to Taurec](https://mylittleforum.net/forum/index.php?id=10841).
2018-06-25 16:04:34 +02:00
Heiko August
a1d21e5c50 Change: added the information about the changed plugin versions 2018-06-13 21:49:36 +02:00
Heiko August
e6e5cadd17 Change: added the changelog for version 2.4.10 2018-06-13 21:43:33 +02:00
Heiko August
4347ec69e3 Change: add the pathes for the pull requests #378 and #379 to the list of changed files 2018-06-13 21:19:40 +02:00
Heiko August
c4094d9579 Change: reset the height of the agreement iframe with CSS (#379) 2018-06-13 21:14:31 +02:00
Heiko August
f08b188244 A small fix and a few cleanups (#378)
* Cleanup: remove a few unnecessary spaces
* Change: put meta elemt for charset in front of the title element. This prevents broken displaying of the title in case of a missing charset header from the webserver.
2018-06-13 21:13:54 +02:00
Heiko August
39d130e5a5 Fix: fix the version number comparision for sublevels, ending with a zero
A version number like 2.4.10 was interpreted as 2.4.1 and was therefore errorneous lower than 2.4.9.
2018-06-13 21:09:30 +02:00
Heiko August
2a9686e1dd Fix: correct the pathes to the subtemplates, missed a directory level 2018-06-13 21:07:56 +02:00
Heiko August
9410559074 Fix: add the agreements columns when creating the default account during the installation 2018-06-13 21:06:17 +02:00
Heiko August
936cc89694 Change: version number 2.4.10 2018-06-11 19:37:38 +02:00
Heiko August
988f698e6b Change: add changed files and queries for update to version 2.4.10 2018-06-11 19:36:50 +02:00
Heiko August
80f9d18557 Fix: add checks for the relevant settings to prevent code execution if the named setting is disabled 2018-06-10 19:25:26 +02:00
Heiko August
f11e4394fc Change: enforce a redirect to the agreement form if a user hasn't accepted the agreement and tries to send a posting 2018-06-10 19:24:08 +02:00
Heiko August
f299a96185 Change: update the userdata if the user has agreed to the data privacy statement or the terms of use 2018-06-10 19:22:19 +02:00
Heiko August
80834f6487 Change: set the default height of the iframe to 400 pixels, will be overwritten with CSS 2018-06-10 19:21:25 +02:00
Heiko August
9a18cae746 Fix: redirect at all 2018-06-10 19:20:35 +02:00
Heiko August
9541c8cb2b Fix: redirect to the data privacy statement when necessary, not to the terms of use 2018-06-10 19:19:48 +02:00
Heiko August
f59b3cdd00 Fix: add dedicated button strings for agreement and disagreement 2018-06-10 19:18:50 +02:00
Heiko August
3e81c092e9 Change: output the agreement page with the data privacy statement or the terms of use 2018-06-10 19:17:47 +02:00
Heiko August
76c882c670 Change: prepare the output of the agreement page, otherwise redirect 2018-06-10 19:15:50 +02:00
Heiko August
cf6dd8167c Change: check for necessary reconfirmation of the data privacy statement or the terms of use 2018-06-10 18:20:15 +02:00
Heiko August
f33295e5be Fix: use the correct key name for the error message 2018-06-10 18:18:32 +02:00
Heiko August
843bd37246 Change: make accepting of the data privacy statement mandatory to save the entry, if enabled 2018-06-10 18:17:39 +02:00
Heiko August
45ff85a7d2 Change: add the checkbox for data privacy statement and the necessary code to the registration form 2018-06-10 18:14:49 +02:00
Heiko August
52d66468be Change: add timestamp fields for terms of use and data privacy statement to the userdata table 2018-06-10 18:11:15 +02:00
Heiko August
d9919d5b5c Change: add default value for setting data_privacy_agreement for empty checkbox 2018-06-10 18:09:47 +02:00
Heiko August
7942b6c783 Change: add settings for an explicit data privacy statement, resolve conflict 2018-06-10 18:07:24 +02:00
Heiko August
e23a043fe8 Change: set minimal MySQL-version to 5.0 because Bad behavior sets it as required
We do not use MySQL with Bad behavior per default, but it could be configured that way.
2018-05-01 22:04:26 +02:00
Heiko August
bb474d30c2 Change: update Smarty from version 3.1.30 to version 3.1.32 2018-05-01 22:03:56 +02:00
Heiko August
05306eca37 Change: update Bad Behavior from 2.2.19 to 2.2.20 2018-05-01 22:03:42 +02:00
Heiko August
4a17ca3e83 Change: update GesHi from 1.0.8.11 to 1.0.9 2018-05-01 22:03:29 +02:00
Michael Loesler
3f0322c113 improve check update (#373)
- replace argument of checkUpdate function
- using last stored version (taken from feed) instead of installed
version
- https://mylittleforum.net/forum/index.php?id=10668
2018-05-01 22:02:59 +02:00
Michael Loesler
43fed913af Check update function (#372)
due to content changes of github atom feed, the checkUpdate returns
wrong uri
2018-05-01 22:01:52 +02:00
Heiko August
d9b6716840 Fix: three cases of forgotten exclamation mark as part of HTML-comment-syntax 2018-04-16 20:04:37 +02:00
Heiko August
8bad83b557 Fix: superfluous and erroneous single quotes 2018-04-16 20:04:05 +02:00
Heiko August
b269237827 Change: added the changelog for version 2.4.9 2018-04-13 17:23:10 +02:00
Heiko August
1fde98adb4 Change: new entry in versions-array and list of changed files for update to 2.4.9 2018-04-13 17:21:10 +02:00
Heiko August
de717507e4 Change: new version number in index.php and config/VERSION 2018-04-13 17:20:30 +02:00
Heiko August
d648d33e46 Fix: added cursor:pointer; for labels also to the minified CSS file 2018-04-13 17:08:33 +02:00
Heiko August
6f51f5ab3b Fix: added the changes for notice about automatic e-mails to all language files 2018-04-13 17:08:00 +02:00
Heiko August
18fd14702c Bugfix, use correct setting name instead name of abandoned setting (#366)
* Fix: used non existing setting for removing read state after X days

The database query for removing the read state from entries after X days was broken.
The query used the setting "read_state_expiration_date" which was itself removed with version 2.4.3.
2018-04-13 13:45:04 +02:00
Heiko August
229753bd93 Change: width and height attributes to img tag of uploaded images (#368)
Add width and height attributes to in entries included images with an upload as source.
2018-04-13 13:32:42 +02:00
Heiko August
39e104f53c Merge remote-tracking branch 'origin/legacy_2.4' into legacy_2.4 2018-03-30 13:25:46 +02:00
Michael Loesler
75d9484ea3 Date format (#363)
- change date format to prevent encoding problems for special characters
(e.g. März)
- https://mylittleforum.net/forum/index.php?id=10623
2018-03-30 13:22:03 +02:00
Michael Loesler
251c19313f Add email note (#362)
- add notification of generated message
- https://github.com/ilosuna/mylittleforum/issues/358
2018-03-30 13:21:11 +02:00
Michael Loesler
4650456544 Parameter for folding (#360)
- fix type conflict for storing folding state
- https://github.com/ilosuna/mylittleforum/issues/293
- https://mylittleforum.net/forum/index.php?id=10561
2018-03-30 13:18:55 +02:00
Micha
c7639c96bc Change project page link (#357)
- add link to mylittleforum.net
2018-03-30 13:17:44 +02:00
Heiko August
f731921683 cursor: pointer; for HTML-element label (#365)
* Change: set the mouse pointer to pointer (hand) when hovering over a label because it's an interactive element.
2018-03-30 13:15:00 +02:00
Michael Loesler
9e1b673f11 Add email note (#362)
- add notification of generated message
- https://github.com/ilosuna/mylittleforum/issues/358
2018-03-14 13:34:29 +01:00
Michael Loesler
79834034bb Parameter for folding (#360)
- fix type conflict for storing folding state
- https://github.com/ilosuna/mylittleforum/issues/293
- https://mylittleforum.net/forum/index.php?id=10561
2018-03-14 13:33:45 +01:00
Micha
48abb6b661 Change project page link (#357)
- add link to mylittleforum.net
2018-03-14 13:33:07 +01:00
Micha
98a017ec3c Avatar handling (#353)
- add getAvatar on several placed to handle name convention
- Overwrite https://github.com/ilosuna/mylittleforum/pull/352 because it
is incomplete and due to a conflict in editing this issue
2018-03-14 13:32:21 +01:00
Heiko August
06a3a9fa90 Fix: add getAvatar on several placed to handle name convention
Fix is made by @loesler, rebuilt it because of a merge conflict
2018-02-23 11:03:45 +01:00
Heiko August
c3a7d2d679 Fix: add missed string for avatar, user edit in the admin panel got no label 2018-02-22 21:39:22 +01:00
Heiko August
9d1ab0744a Fix: read avatar with the function getAvatar also in the admin panel 2018-02-22 21:38:53 +01:00
259 changed files with 13202 additions and 8620 deletions

138
CHANGELOG
View file

@ -1,6 +1,144 @@
my little forum changelog
-------------------------
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.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.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

View file

@ -9,7 +9,7 @@ my little forum
System requirements
-------------------
* Webserver with PHP >= 5.4 and MySQL >= 4.1
* Webserver with PHP >= 5.4 and MySQL >= 5.0
Installation
------------

View file

@ -1 +1 @@
2.4.8
2.4.24

View file

@ -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,10 @@ $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['vote_table'] = 'mlf2_votes';
$db_settings['score_table'] = 'mlf2_scores';
$db_settings['threadcount_view'] = 'mlf2_v_threadcount';
$db_settings['postcount_view'] = 'mlf2_v_postcount';
$db_settings['totalscore_view'] = 'mlf2_v_totalscore';
?>

View file

@ -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,12 +43,12 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
$smarty->assign('errors',$errors);
}
}
$action='categories';
$action='categories';
}
if (isset($_GET['edit_user'])) {
$edit_user_id = intval($_GET['edit_user']);
$result = mysqli_query($connid, "SELECT user_type, user_name, user_real_name, user_email, email_contact, user_hp, user_location, signature, profile, user_view, new_posting_notification, new_user_notification, gender, birthday, activate_code, language, time_zone, time_difference, theme FROM ".$db_settings['userdata_table']." WHERE user_id = '". $edit_user_id ."'") or raise_error('database_error', mysqli_error($connid));
$result = mysqli_query($connid, "SELECT user_type, user_name, user_real_name, user_email, email_contact, user_hp, user_location, signature, profile, user_view, new_posting_notification, new_user_notification, gender, birthday, activate_code, language, time_zone, time_difference, theme, voting_allowed FROM ".$db_settings['userdata_table']." WHERE user_id = '". $edit_user_id ."'") or raise_error('database_error', mysqli_error($connid));
$field = mysqli_fetch_array($result);
mysqli_free_result($result);
@ -94,12 +98,12 @@ 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"]));
$smarty->assign('voting_allowed', intval($field["voting_allowed"]));
if (trim($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];
@ -176,10 +180,12 @@ 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)) {
// voting:
$user_voting = trim($_POST['user_voting']);
$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];
@ -248,22 +254,17 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
if(empty($errors)) {
$queryUserDataEdit = "UPDATE ".$db_settings['userdata_table']." SET user_name='". mysqli_real_escape_string($connid, $edit_user_name) ."', user_type='". intval($edit_user_type) ."', user_email='". mysqli_real_escape_string($connid, $user_email) ."', 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 .= ", 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;
$queryUserDataEdit .= ", voting_allowed = ". mysqli_real_escape_string($connid, $user_voting);
$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 +331,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,7 +346,7 @@ 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 = str_replace('"', '\'', $category);
@ -389,7 +390,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 +446,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)) {
@ -574,7 +575,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 +628,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 +651,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 +669,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 +679,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']);
}
}
}
@ -738,7 +732,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)) {
@ -819,7 +813,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;
@ -835,13 +829,13 @@ 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)) {
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 +845,17 @@ 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);
# update voting permissions
$settings['voting_min_registered_days'] = $_POST['voting_min_registered_days'];
$settings['voting_min_threadcount'] = $_POST['voting_min_threadcount'];
$settings['voting_min_postcount'] = $_POST['voting_min_postcount'];
$settings['voting_min_ownscore'] = $_POST['voting_min_ownscore'];
updateVotingPermissions();
if (isset($_POST['return_to']) and $_POST['return_to'] === 'advanced_settings') {
header("Location: index.php?mode=admin&action=advanced_settings&saved=true");
} else {
@ -878,8 +883,10 @@ 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'];
@ -922,9 +929,10 @@ 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';
@ -975,7 +983,7 @@ 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']);
@ -1009,6 +1017,18 @@ 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 (empty($action)) $action='main';
$smarty->assign('action', $action);
@ -1180,19 +1200,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 +1229,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';
@ -1265,10 +1288,10 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
if (isset($files)) {
arsort($files); // order by date
$i = 0;
while(list($key, $val) = each($files)) {
foreach ($files as $key => $val) {
$backup_files[$i]['file'] = htmlspecialchars($key);
$backup_files[$i]['date'] = $val;
$backup_files[$i]['size'] = number_format(filesize('backup/'.$key) / 1048576,2) .' MB';
$backup_files[$i]['size'] = number_format(round(filesize('backup/'.$key) / 1048576, 4, PHP_ROUND_HALF_UP), 4) .' MB';
$i++;
}
$smarty->assign('backup_files',$backup_files);
@ -1407,7 +1430,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;
}
}
@ -1464,7 +1487,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;
}
}
@ -1575,7 +1598,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
if (trim($banned_ips) == '' && 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;

View file

@ -58,17 +58,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 +78,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);

View file

@ -16,6 +16,9 @@ if(isset($_POST['message_submit'])) $action = 'message_submit';
switch($action) {
case 'main':
// set timestamp for SPAM protection
setReceiptTimestamp();
// 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));
@ -70,24 +73,29 @@ switch($action) {
$smarty->assign('recipient_user_id', intval($_REQUEST['user_id']));
}
}
$_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['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']);
// 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)) {
@ -219,7 +227,6 @@ switch($action) {
if (!my_mail($recipient_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));

View file

@ -32,12 +32,13 @@
UNIX_TIMESTAMP(ft.time) AS time, 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
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, rst.user_id AS req_user, sct.score
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['score_table'] . " AS sct ON sct.posting_id = ft.id
WHERE ft.id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
/*
@ -70,6 +71,35 @@
$rstatus = save_read_status($connid, $user_id, $id);
}
if (isset($_SESSION[$settings['session_prefix'] . 'user_id']) && intval($entrydata['locked'])==0) {
// vote handling
$user_id = $_SESSION[$settings['session_prefix'] . 'user_id'];
$result = @mysqli_query($connid, "SELECT TRUE AS 'exists' FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($user_id) . " AND voting_allowed >= 1 LIMIT 1") or raise_error('database_error', mysqli_error($connid));
$exists = mysqli_fetch_row($result);
mysqli_free_result($result);
if (isset($exists) && intval($exists) == 1) {
# voting for user allowed
$vote_result = mysqli_query($connid, "SELECT TRUE AS 'vote' FROM " . $db_settings['vote_table'] . " WHERE `user_id` = " . intval($user_id) . " AND `posting_id` = " . intval($id) . "") or raise_error('database_error', mysqli_error($connid));
$vote = mysqli_fetch_row($vote_result);
mysqli_free_result($vote_result);
if (isset($vote) && intval($vote) == 1) {
# vote is existing -> allow deletion
$options['delete_vote'] = true;
} else {
if ($user_id != $entrydata['user_id']) {
# vote is not existing and not own entry -> allow voting
$options['add_vote'] = true;
} else {
# vote is not existing, but own entry -> do not allow voting
# do nothing
}
}
} else {
# voting for user not allowed
# do nothing
}
}
if ($entrydata['req_user'] !== NULL and is_numeric($entrydata['req_user'])) {
$entrydata['is_read'] = true;
} else {
@ -134,9 +164,10 @@
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
UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, user_type, subject, category, marked, text, spam, rst.user_id AS req_user, sct.score 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['score_table'] . " AS sct ON sct.posting_id = ft.id
WHERE tid = " . $thread . $display_spam_query_and . " ORDER BY time ASC");
if (!$result)
raise_error('database_error', mysqli_error($connid));
@ -248,6 +279,14 @@
$options['edit'] = true;
if ($authorization['delete'] == true)
$options['delete'] = true;
if ($entrydata['user_id'] == $tmp_user_id)
$own_entry = true;
$smarty->assign("own_entry", $own_entry);
$smarty->assign("score", intval($entrydata['score']));
$smarty->assign("score_threshold_1",$settings['voting_score_threshold_1']);
$smarty->assign("score_threshold_2",$settings['voting_score_threshold_2']);
$smarty->assign("score_threshold_3",$settings['voting_score_threshold_3']);
if (isset($direct_replies))
$smarty->assign('direct_replies', $direct_replies);

View file

@ -66,7 +66,10 @@ function count_failed_logins()
function get_settings()
{
global $connid, $db_settings;
$result = mysqli_query($connid, "SELECT name, value FROM ".$db_settings['settings_table']) or raise_error('database_error',mysqli_error($connid));
$qGetSettings = "SELECT name, value FROM " . $db_settings['settings_table'] . "
UNION SELECT name, value FROM " . $db_settings['temp_infos_table'] . "
WHERE name IN('access_permission_checks', 'version')";
$result = mysqli_query($connid, $qGetSettings) or raise_error('database_error',mysqli_error($connid));
while($line = mysqli_fetch_array($result))
{
$settings[$line['name']] = $line['value'];
@ -82,9 +85,11 @@ function get_settings()
*/
function daily_actions($current_time=0) {
global $settings, $db_settings, $connid;
if($current_time==0)
$rNDA = mysqli_query($connid, "SELECT value FROM " . $db_settings['temp_infos_table'] . " WHERE name = 'next_daily_actions'");
$nda = mysqli_fetch_assoc($rNDA);
if($current_time==0)
$current_time = TIMESTAMP;
if($current_time > $settings['next_daily_actions']) {
if ($current_time > intval($nda['value'])) {
// clear up expired auto_login_codes:
if($settings['autologin'] == 1) {
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET auto_login_code='' WHERE auto_login_code != '' AND last_login < (NOW() - INTERVAL ".$settings['cookie_validity_days']." DAY)");
@ -104,11 +109,21 @@ function daily_actions($current_time=0) {
}
// remove read state by time:
if ($settings['read_state_expiration_method'] == 2 and $settings['read_state_expiration_value'] > 0) {
@mysqli_query($connid, "DELETE FROM `".$db_settings['read_status_table']."` WHERE `time` < (NOW() - INTERVAL ". intval($settings['read_state_expiration_date']) ." DAY)");
@mysqli_query($connid, "DELETE FROM `".$db_settings['read_status_table']."` WHERE `time` < (NOW() - INTERVAL ". intval($settings['read_state_expiration_value']) ." DAY)");
}
// voting permissions
updateVotingPermissions();
// if possible, load new version info from Github
if (isset($settings) && isset($settings['version'])) {
$latestRelease = checkUpdate($settings['version']);
// select stored version number from temp_infos_table (instead of the use of installed version)
$result = @mysqli_query($connid, "SELECT `value` FROM ".$db_settings['temp_infos_table']." WHERE `name` = 'last_version_check' LIMIT 1");
$lastCheckedVersion = '0.0';
if ($result && mysqli_num_rows($result) > 0) {
$data = mysqli_fetch_array($result);
$lastCheckedVersion = is_null($data['value']) ? $lastCheckedVersion : $data['value'];
mysqli_free_result($result);
}
$latestRelease = checkUpdate($lastCheckedVersion);
if ($latestRelease !== false) {
@mysqli_query($connid, "INSERT INTO ".$db_settings['temp_infos_table']." (`name`, `value`, `time`) VALUES ('last_version_check', '" . mysqli_real_escape_string($connid, $latestRelease->version) . "', NOW()) ON DUPLICATE KEY UPDATE `value` = '" . mysqli_real_escape_string($connid, $latestRelease->version) . "', `time` = NOW();");
@mysqli_query($connid, "INSERT INTO ".$db_settings['temp_infos_table']." (`name`, `value`) VALUES ('last_version_uri', '" . mysqli_real_escape_string($connid, $latestRelease->uri) . "') ON DUPLICATE KEY UPDATE `value` = '" . mysqli_real_escape_string($connid, $latestRelease->uri) . "';");
@ -126,7 +141,8 @@ function daily_actions($current_time=0) {
else {
$next_daily_actions = $current_time + 86400;
}
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".intval($next_daily_actions)."' WHERE name='next_daily_actions'");
#@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".intval($next_daily_actions)."' WHERE name='next_daily_actions'");
@mysqli_query($connid, "UPDATE " . $db_settings['temp_infos_table'] . " SET value='" . intval($next_daily_actions) . "', time = NOW() WHERE name='next_daily_actions'");
}
}
@ -376,7 +392,7 @@ function is_valid_url($url)
* @return bool
*/
function is_valid_email($email) {
if (!preg_match("/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,}|[0-9]{1,3})(\]?)$/", $email)) {
if (!preg_match("/^([\w\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,}|[0-9]{1,3})(\]?)$/", $email)) {
return false;
}
if (contains_invalid_string($email)) {
@ -450,35 +466,36 @@ function do_bbcode_msg($action, $attributes, $content, $params, $node_object)
/**
* processes BBCode img
*/
function do_bbcode_img($action, $attributes, $content, $params, $node_object)
{
if($action == 'validate')
{
if(!is_valid_url($content))
{
return false;
}
else
{
// [img]image[/img]
if(!isset($attributes['default'])) return true;
// [img=xxx]image[/img]
elseif(isset($attributes['default']) && ($attributes['default']=='left' || $attributes['default']=='right' || $attributes['default']=='thumbnail' || $attributes['default']=='thumbnail-left' || $attributes['default']=='thumbnail-right')) return true;
else return false;
}
}
else
{
// [img=xxx]image[/img]
if(isset($attributes['default']) && $attributes['default']=='left') return '<img src="'.htmlspecialchars($content).'" class="left" alt="[image]" />';
if(isset($attributes['default']) && $attributes['default']=='right') return '<img src="'.htmlspecialchars($content).'" class="right" alt="[image]" />';
if(isset($attributes['default']) && $attributes['default']=='thumbnail') return '<a rel="thumbnail" href="'.htmlspecialchars($content).'"><img src="'.htmlspecialchars($content).'" class="thumbnail" alt="[image]" /></a>';
if(isset($attributes['default']) && $attributes['default']=='thumbnail-left') return '<a rel="thumbnail" href="'.htmlspecialchars($content).'"><img src="'.htmlspecialchars($content).'" class="thumbnail left" alt="[image]" /></a>';
if(isset($attributes['default']) && $attributes['default']=='thumbnail-right') return '<a rel="thumbnail" href="'.htmlspecialchars($content).'"><img src="'.htmlspecialchars($content).'" class="thumbnail right" alt="[image]" /></a>';
// [img]image[/img]
return '<img src="'.htmlspecialchars($content).'" alt="[image]" />';
}
}
function do_bbcode_img($action, $attributes, $content, $params, $node_object) {
if ($action == 'validate') {
if (!is_valid_url($content)) {
return false;
} else {
// [img]image[/img]
if (!isset($attributes['default'])) return true;
// [img=xxx]image[/img]
elseif (isset($attributes['default']) && ($attributes['default'] == 'left' || $attributes['default'] == 'right' || $attributes['default'] == 'thumbnail' || $attributes['default'] == 'thumbnail-left' || $attributes['default'] == 'thumbnail-right')) return true;
else return false;
}
} else {
// [img=xxx]image[/img]
$strSize = '';
if (strpos($content, 'images/uploaded/', 0) !== false) {
$size = @getimagesize($content);
if ($size !== false && (is_numeric($size[0]) && $size[0] > 0) && (is_numeric($size[1]) && $size[1] > 0)) {
$strSize = $size[3];
#$strSize = 'width="256" height="256"';
}
}
if (isset($attributes['default']) && $attributes['default'] == 'left') return '<img src="'. htmlspecialchars($content) .'" class="left" alt="[image]" '. $strSize .' />';
if (isset($attributes['default']) && $attributes['default'] == 'right') return '<img src="'. htmlspecialchars($content) .'" class="right" alt="[image]" '. $strSize .' />';
if (isset($attributes['default']) && $attributes['default'] == 'thumbnail') return '<a rel="thumbnail" href="'. htmlspecialchars($content) .'"><img src="'.htmlspecialchars($content).'" class="thumbnail" alt="[image]" '. $strSize .' /></a>';
if (isset($attributes['default']) && $attributes['default'] == 'thumbnail-left') return '<a rel="thumbnail" href="'. htmlspecialchars($content) .'"><img src="'. htmlspecialchars($content) .'" class="thumbnail left" alt="[image]" '. $strSize .' /></a>';
if (isset($attributes['default']) && $attributes['default'] == 'thumbnail-right') return '<a rel="thumbnail" href="'. htmlspecialchars($content) .'"><img src="'. htmlspecialchars($content) .'" class="thumbnail right" alt="[image]" '. $strSize .' /></a>';
// [img]image[/img]
return '<img src="'. htmlspecialchars($content) .'" alt="[image]" '. $strSize .' />';
}
}
/**
* processes BBCode tex
@ -1251,6 +1268,7 @@ function delete_posting_recursive($id) {
@mysqli_query($connid, "DELETE FROM " . $db_settings['bookmark_table'] . " WHERE posting_id = " . intval($ids_data['id']));
@mysqli_query($connid, "DELETE FROM " . $db_settings['read_status_table'] . " WHERE posting_id = " . intval($ids_data['id']));
@mysqli_query($connid, "DELETE FROM " . $db_settings['entry_tags_table'] . " WHERE `bid` = " . intval($ids_data['id']));
@mysqli_query($connid, "DELETE FROM " . $db_settings['subscriptions_table'] . " WHERE `eid` = " . intval($ids_data['id']));
}
mysqli_free_result($ids_result);
// end clear cache
@ -1263,6 +1281,7 @@ function delete_posting_recursive($id) {
@mysqli_query($connid, "DELETE FROM " . $db_settings['bookmark_table'] . " WHERE posting_id = " . intval($id));
@mysqli_query($connid, "DELETE FROM " . $db_settings['read_status_table'] . " WHERE posting_id = " . intval($id));
@mysqli_query($connid, "DELETE FROM " . $db_settings['entry_tags_table'] . " WHERE `bid` = " . intval($id));
@mysqli_query($connid, "DELETE FROM " . $db_settings['subscriptions_table'] . " WHERE `eid` = " . intval($id));
if (isset($child_ids) && is_array($child_ids)) {
foreach ($child_ids as $child_id) {
@mysqli_query($connid, "DELETE FROM " . $db_settings['forum_table'] . " WHERE id = " . intval($child_id));
@ -1270,6 +1289,7 @@ function delete_posting_recursive($id) {
@mysqli_query($connid, "DELETE FROM " . $db_settings['bookmark_table'] . " WHERE posting_id = " . intval($child_id));
@mysqli_query($connid, "DELETE FROM " . $db_settings['read_status_table'] . " WHERE posting_id = " . intval($child_id));
@mysqli_query($connid, "DELETE FROM " . $db_settings['entry_tags_table'] . " WHERE `bid` = " . intval($child_id));
@mysqli_query($connid, "DELETE FROM " . $db_settings['subscriptions_table'] . " WHERE `eid` = " . intval($child_id));
}
}
// set last reply time:
@ -1350,95 +1370,74 @@ function is_valid_birthday($birthday)
* @param int $id : the id of the reply
* @param bool $delayed : true adds a delayed message (when postibg was activated manually)
*/
function emailNotification2ParentAuthor($id, $delayed=false)
{
global $settings, $db_settings, $lang, $connid;
$id=intval($id);
// data of posting:
$result = @mysqli_query($connid, "SELECT pid, tid, name, user_name, ".$db_settings['forum_table'].".user_id, subject, text
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)." LIMIT 1");
$data = mysqli_fetch_array($result);
mysqli_free_result($result);
// overwrite $data['name'] with $data['user_name'] if registered user:
if($data['user_id']>0)
{
if(!$data['user_name']) $data['name'] = $lang['unknown_user'];
else $data['name'] = $data['user_name'];
}
// if it's a reply (pid!=0) check if notification was desired by parent posting author:
if($data['pid']!=0)
{
$parent_result = mysqli_query($connid, "SELECT pid, user_id, name, email, subject, text, email_notification FROM ".$db_settings['forum_table']." WHERE id = ".intval($data['pid'])." LIMIT 1");
$parent_data = mysqli_fetch_array($parent_result);
mysqli_free_result($parent_result);
if($parent_data['email_notification'] == 1 && ($parent_data['user_id']>0 || $settings['email_notification_unregistered']))
{
// if message is by a registered user, fetch e-mail address from userdata:
if($parent_data['user_id'] > 0)
{
$email_result = mysqli_query($connid, "SELECT user_name, user_email FROM ".$db_settings['userdata_table']." WHERE user_id = ".intval($parent_data['user_id'])." LIMIT 1") or raise_error('database_error',mysqli_error($connid));
$field = mysqli_fetch_array($email_result);
mysqli_free_result($email_result);
$parent_data['name'] = $field['user_name'];
$parent_data['email'] = $field['user_email'];
}
$name = $data['name'];
$subject = $data['subject'];
$text = email_format($data['text']);
$parent_text = email_format($parent_data["text"]);
$emailbody = str_replace("[recipient]", $parent_data['name'], $lang['email_text']);
$emailbody = str_replace("[name]", $name, $emailbody);
$emailbody = str_replace("[subject]", $subject, $emailbody);
$emailbody = str_replace("[text]", $text, $emailbody);
$emailbody = str_replace("[posting_address]", $settings['forum_address']."index.php?id=".$id, $emailbody);
$emailbody = str_replace("[original_subject]", $parent_data['subject'], $emailbody);
$emailbody = str_replace("[original_text]", $parent_text, $emailbody);
$emailbody = str_replace("[forum_address]", $settings['forum_address'], $emailbody);
if($delayed==true) $emailbody = $emailbody . "\n\n" . $lang['email_text_delayed_addition'];
#$recipient = encode_mail_name($parent_data['name']).' <'.$parent_data['email'].'>';
$recipient = $parent_data['email'];
$subject = str_replace("[original_subject]", $parent_data['subject'], $lang['email_subject']);
my_mail($recipient, $subject, $emailbody);
}
if($parent_data['pid']!=0)
{
// parent posting wasn't thread start so check if thread starter autor wants to be notified:
$ts_result = mysqli_query($connid, "SELECT pid, user_id, name, email, subject, text, email_notification FROM ".$db_settings['forum_table']." WHERE id = ".intval($data['tid'])." LIMIT 1");
$ts_data = mysqli_fetch_array($ts_result);
mysqli_free_result($ts_result);
if($ts_data['email_notification'] == 1 && ($ts_data['user_id']>0 || $settings['email_notification_unregistered']))
{
// if message is by a registered user, fetch e-mail address from userdata:
if($ts_data['user_id'] > 0)
{
$email_result = mysqli_query($connid, "SELECT user_name, user_email FROM ".$db_settings['userdata_table']." WHERE user_id = ".intval($ts_data['user_id'])." LIMIT 1") or raise_error('database_error',mysqli_error($connid));
$field = mysqli_fetch_array($email_result);
mysqli_free_result($email_result);
$ts_data['name'] = $field['user_name'];
$ts_data['email'] = $field['user_email'];
}
$name = $data['name'];
$subject = $data['subject'];
$text = email_format($data['text']);
$starter_text = email_format($ts_data["text"]);
$emailbody = str_replace("[recipient]", $ts_data['name'], $lang['email_text']);
$emailbody = str_replace("[name]", $name, $emailbody);
$emailbody = str_replace("[subject]", $subject, $emailbody);
$emailbody = str_replace("[text]", $text, $emailbody);
$emailbody = str_replace("[posting_address]", $settings['forum_address']."index.php?id=".$id, $emailbody);
$emailbody = str_replace("[original_subject]", $ts_data['subject'], $emailbody);
$emailbody = str_replace("[original_text]", $starter_text, $emailbody);
$emailbody = str_replace("[forum_address]", $settings['forum_address'], $emailbody);
if($delayed==true) $emailbody = $emailbody . "\n\n" . $lang['email_text_delayed_addition'];
$recipient = $ts_data['email'];
$subject = str_replace("[original_subject]", $ts_data['subject'], $lang['email_subject']);
my_mail($recipient, $subject, $emailbody);
}
}
}
}
function emailNotification2ParentAuthor($id, $delayed = false) {
global $settings, $db_settings, $lang, $connid;
$id = intval($id);
// get data of posting:
$queryNewPosting = "SELECT pid, tid, name, user_name, ".$db_settings['forum_table'].".user_id, subject, text
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)." LIMIT 1";
$resultNewPosting = @mysqli_query($connid, $queryNewPosting);
$data = mysqli_fetch_assoc($resultNewPosting);
mysqli_free_result($resultNewPosting);
# overwrite $data['name'] with $data['user_name'] if registered user:
if ($data['user_id'] > 0) {
if (!$data['user_name']) $data['name'] = $lang['unknown_user'];
else $data['name'] = $data['user_name'];
}
# if it's a reply (pid!=0) check if notification was desired by parent posting author:
if ($data['pid'] != 0) {
if ($data['pid'] == $data['tid']) {
$parentSubscriptions = mysqli_query($connid, "SELECT user_id, eid, unsubscribe_code, 'opener' AS type FROM " . $db_settings['subscriptions_table'] . " WHERE eid = " . intval($data['tid']));
} else {
$parentSubscriptions = mysqli_query($connid, "SELECT user_id, eid, unsubscribe_code, 'child' AS type FROM " . $db_settings['subscriptions_table'] . " WHERE eid = " . intval($data['pid']) . " UNION SELECT user_id, eid, unsubscribe_code, 'opener' AS type FROM " . $db_settings['subscriptions_table'] . " WHERE eid = " . intval($data['tid']));
}
while ($parent_data = mysqli_fetch_assoc($parentSubscriptions)) {
if ($parent_data['user_id'] > 0) {
# user_id is greater than 0 and therefore we handle a subscription of a registered user
$queryEmailData = "SELECT user_id, user_name, user_email FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($parent_data['user_id']);
} else {
# user_id is 0 and therefore we handle a subscription of an unregistered user
$queryEmailData = "SELECT user_id, name AS user_name, email AS user_email FROM ".$db_settings['forum_table']." WHERE id = " . intval($parent_data['eid']) . " LIMIT 1";
}
$resultEmailData = @mysqli_query($connid, $queryEmailData);
if ($resultEmailData !== false) {
$emailData = mysqli_fetch_assoc($resultEmailData);
if ($parent_data['user_id'] > 0 || $settings['email_notification_unregistered'] == 1) {
if ($parent_data['type'] == 'opener') {
$queryParentPosting = "SELECT pid, user_id, name, email, subject, text
FROM " . $db_settings['forum_table'] . "
WHERE id = " . intval($data['tid']) . " LIMIT 1";
} else {
$queryParentPosting = "SELECT pid, user_id, name, email, subject, text
FROM " . $db_settings['forum_table'] . "
WHERE id = " . intval($data['pid']) . " LIMIT 1";
}
$resultParentPosting = mysqli_query($connid, $queryParentPosting);
$parentPosting = mysqli_fetch_assoc($resultParentPosting);
$name = $data['name'];
$subject = $data['subject'];
$text = email_format($data['text']);
$parent_text = email_format($parentPosting["text"]);
$emailbody = str_replace("[recipient]", $emailData['user_name'], $lang['email_text']);
$emailbody = str_replace("[unsubscribe_address]", $settings['forum_address']."index.php?mode=posting&unsubscribe=". $parent_data['unsubscribe_code'], $emailbody);
$emailbody = str_replace("[name]", $name, $emailbody);
$emailbody = str_replace("[subject]", $subject, $emailbody);
$emailbody = str_replace("[text]", $text, $emailbody);
$emailbody = str_replace("[posting_address]", $settings['forum_address']."index.php?id=".$id, $emailbody);
$emailbody = str_replace("[original_subject]", $parentPosting['subject'], $emailbody);
$emailbody = str_replace("[original_text]", $parent_text, $emailbody);
$emailbody = str_replace("[forum_address]", $settings['forum_address'], $emailbody);
if ($delayed == true) $emailbody = $emailbody . "\n\n" . $lang['email_text_delayed_addition'];
$recipient = $emailData['user_email'];
$subject = str_replace("[original_subject]", $parentPosting['subject'], $lang['email_subject']);
my_mail($recipient, $subject, $emailbody);
}
}
}
}
}
/**
* sends an e-mail notification to all admins and mods who have activated
@ -1599,8 +1598,7 @@ function tag_cloud($days, $scale_min, $scale_max) {
$tags_array[$tag] = 1;
}
ksort($tags_array);
ksort($tags_array, SORT_NATURAL | SORT_FLAG_CASE);
// minimum and maximum value:
foreach ($tags_array as $tag) {
if (empty($max))
@ -1623,7 +1621,7 @@ function tag_cloud($days, $scale_min, $scale_max) {
$t = $scale_min - $m * $min;
$i = 0;
while (list($key, $val) = each($tags_array)) {
foreach ($tags_array as $key => $val) {
if (my_strpos($key, ' ', 0, CHARSET))
$tag_escaped = '"' . $key . '"';
else
@ -1738,7 +1736,7 @@ function create_backup_file($mode=0)
global $settings, $db_settings, $connid;
#@set_time_limit(30);
$mode=intval($mode);
if($mode<0 || $mode > 10) $mode = 0;
if($mode < 0 || $mode > 12) $mode = 0;
require('includes/classes/Backup.class.php');
$backup = new Backup;
@ -1757,6 +1755,8 @@ function create_backup_file($mode=0)
case 8: $filename = 'mlf_backup_bookmarks_'.gmdate("YmdHis").'.sql'; break;
case 9: $filename = 'mlf_backup_read_status_'.gmdate("YmdHis").'.sql'; break;
case 10: $filename = 'mlf_backup_temp_infos_'.gmdate("YmdHis").'.sql'; break;
case 11: $filename = 'mlf_backup_subscriptions_'.gmdate("YmdHis").'.sql'; break;
case 12: $filename = 'mlf_backup_tags_'.gmdate("YmdHis").'.sql'; break;
}
$backup->set_file('backup/'.$filename);
@ -1774,7 +1774,7 @@ function create_backup_file($mode=0)
{
$data['name'] = mysqli_real_escape_string($connid, $data['name']);
$data['value'] = mysqli_real_escape_string($connid, $data['value']);
$backup->assign("INSERT INTO ".$db_settings['settings_table']." VALUES ('".$data['name']."', '".$data['value']."');\n");
$backup->assign("INSERT INTO ".$db_settings['settings_table']." (`name`, `value`) VALUES ('".$data['name']."', '".$data['value']."');\n");
}
mysqli_free_result($result);
}
@ -1792,7 +1792,7 @@ function create_backup_file($mode=0)
$data['description'] = mysqli_real_escape_string($connid, $data['description']);
$data['description'] = str_replace("\r", "\\r", $data['description']);
$data['description'] = str_replace("\n", "\\n", $data['description']);
$backup->assign("INSERT INTO ".$db_settings['category_table']." VALUES (".$data['id'].", ".$data['order_id'].", '".$data['category']."', '".$data['description']."', ".$data['accession'].");\n");
$backup->assign("INSERT INTO ".$db_settings['category_table']." (`id`, `order_id`, `category`, `description`, `accession`) VALUES (".$data['id'].", ".$data['order_id'].", '".$data['category']."', '".$data['description']."', ".$data['accession'].");\n");
}
mysqli_free_result($result);
}
@ -1811,7 +1811,7 @@ function create_backup_file($mode=0)
$data['content'] = str_replace("\r", "\\r", $data['content']);
$data['content'] = str_replace("\n", "\\n", $data['content']);
$data['menu_linkname'] = mysqli_real_escape_string($connid, $data['menu_linkname']);
$backup->assign("INSERT INTO ".$db_settings['pages_table']." VALUES (".$data['id'].", ".$data['order_id'].", '".$data['title']."', '".$data['content']."', '".$data['menu_linkname']."', ".$data['access'].");\n");
$backup->assign("INSERT INTO ".$db_settings['pages_table']." (`id`, `order_id`, `title`, `content`, `menu_linkname`, `access`) VALUES (".$data['id'].", ".$data['order_id'].", '".$data['title']."', '".$data['content']."', '".$data['menu_linkname']."', ".$data['access'].");\n");
}
mysqli_free_result($result);
}
@ -1832,7 +1832,7 @@ function create_backup_file($mode=0)
$data['code_4'] = mysqli_real_escape_string($connid, $data['code_4']);
$data['code_5'] = mysqli_real_escape_string($connid, $data['code_5']);
$data['title'] = mysqli_real_escape_string($connid, $data['title']);
$backup->assign("INSERT INTO ".$db_settings['smilies_table']." VALUES (".$data['id'].", ".$data['order_id'].", '".$data['file']."', '".$data['code_1']."', '".$data['code_2']."', '".$data['code_3']."', '".$data['code_4']."', '".$data['code_5']."', '".$data['title']."');\n");
$backup->assign("INSERT INTO ".$db_settings['smilies_table']." (`id`, `order_id`, `file`, `code_1`, `code_2`, `code_3`, `code_4`, `code_5`, `title`) VALUES (".$data['id'].", ".$data['order_id'].", '".$data['file']."', '".$data['code_1']."', '".$data['code_2']."', '".$data['code_3']."', '".$data['code_4']."', '".$data['code_5']."', '".$data['title']."');\n");
}
mysqli_free_result($result);
}
@ -1848,7 +1848,7 @@ function create_backup_file($mode=0)
{
$data['name'] = mysqli_real_escape_string($connid, $data['name']);
$data['list'] = mysqli_real_escape_string($connid, $data['list']);
$backup->assign("INSERT INTO ".$db_settings['banlists_table']." VALUES ('".$data['name']."', '".$data['list']."');\n");
$backup->assign("INSERT INTO ".$db_settings['banlists_table']." (`name`, `list`) VALUES ('".$data['name']."', '".$data['list']."');\n");
}
mysqli_free_result($result);
}
@ -1864,7 +1864,7 @@ function create_backup_file($mode=0)
{
$data['time'] = mysqli_real_escape_string($connid, $data['time']);
$data['subject'] = mysqli_real_escape_string($connid, $data['subject']);
$backup->assign("INSERT INTO ".$db_settings['bookmark_table']." VALUES (".$data['id'].", ".$data['user_id'].", ".$data['posting_id'].", '".$data['time']."', '".$data['subject']."', ".$data['order_id'].");\n");
$backup->assign("INSERT INTO ".$db_settings['bookmark_table']." (`id`, `user_id`, `posting_id`, `time`, `subject`, `order_id`) VALUES (".$data['id'].", ".$data['user_id'].", ".$data['posting_id'].", '".$data['time']."', '".$data['subject']."', ".$data['order_id'].");\n");
}
mysqli_free_result($result);
}
@ -1879,7 +1879,7 @@ function create_backup_file($mode=0)
while($data = mysqli_fetch_array($result))
{
$data['time'] = mysqli_real_escape_string($connid, $data['time']);
$backup->assign("INSERT INTO ".$db_settings['read_status_table']." VALUES (".$data['user_id'].", ".$data['posting_id'].", '".$data['time']."');\n");
$backup->assign("INSERT INTO ".$db_settings['read_status_table']." (`user_id`, `posting_id`, `time`) VALUES (".$data['user_id'].", ".$data['posting_id'].", '".$data['time']."');\n");
}
mysqli_free_result($result);
}
@ -1895,8 +1895,70 @@ function create_backup_file($mode=0)
{
$data['name'] = mysqli_real_escape_string($connid, $data['name']);
$data['value'] = mysqli_real_escape_string($connid, $data['value']);
$data['time'] = mysqli_real_escape_string($connid, $data['time']);
$backup->assign("INSERT INTO ".$db_settings['temp_infos_table']." VALUES ('".$data['name']."', '".$data['value']."', '".$data['time']."');\n");
$data['time'] = !is_null($data['time']) ? "'".mysqli_real_escape_string($connid, $data['time'])."'" : 'NULL';
$backup->assign("INSERT INTO ".$db_settings['temp_infos_table']." (`name`, `value`, `time`) VALUES ('".$data['name']."', '".$data['value']."', ".$data['time'].");\n");
}
mysqli_free_result($result);
}
if($mode==0 || $mode==11) // subscriptions
{
$backup->assign("#\n");
$backup->assign("# ".$db_settings['subscriptions_table']."\n");
$backup->assign("#\n");
$backup->assign("TRUNCATE TABLE ".$db_settings['subscriptions_table'].";\n");
$result = @mysqli_query($connid, "SELECT user_id, eid, unsubscribe_code, tstamp FROM ".$db_settings['subscriptions_table']) or $error=true;
while($data = mysqli_fetch_array($result))
{
$data['user_id'] = !is_null($data['user_id']) ? intval($data['user_id']) : 'NULL';
$data['unsubscribe_code'] = mysqli_real_escape_string($connid, $data['unsubscribe_code']);
$data['tstamp'] = !is_null($data['tstamp']) ? "'".mysqli_real_escape_string($connid, $data['tstamp'])."'" : 'NULL';
$backup->assign("INSERT INTO ".$db_settings['subscriptions_table']." (`user_id`, `eid`, `unsubscribe_code`, `tstamp`) VALUES (".$data['user_id'].", ".$data['eid'].", '".$data['unsubscribe_code']."', ".$data['tstamp'].");\n");
}
mysqli_free_result($result);
}
if($mode==0 || $mode==12) // tags
{
# tag table
$backup->assign("#\n");
$backup->assign("# ".$db_settings['tags_table']."\n");
$backup->assign("#\n");
$backup->assign("TRUNCATE TABLE ".$db_settings['tags_table'].";\n");
$result = @mysqli_query($connid, "SELECT id, tag FROM ".$db_settings['tags_table']) or $error=true;
while($data = mysqli_fetch_array($result))
{
$data['id'] = intval($data['id']);
$data['tag'] = mysqli_real_escape_string($connid, $data['tag']);
$backup->assign("INSERT INTO ".$db_settings['tags_table']." (`id`, `tag`) VALUES (".$data['id'].", '".$data['tag']."');\n");
}
mysqli_free_result($result);
# bookmark tag table
$backup->assign("\n");
$backup->assign("#\n");
$backup->assign("# ".$db_settings['bookmark_tags_table']."\n");
$backup->assign("#\n");
$backup->assign("TRUNCATE TABLE ".$db_settings['bookmark_tags_table'].";\n");
$result = @mysqli_query($connid, "SELECT bid, tid FROM ".$db_settings['bookmark_tags_table']) or $error=true;
while($data = mysqli_fetch_array($result))
{
$data['bid'] = intval($data['bid']);
$data['tid'] = intval($data['tid']);
$backup->assign("INSERT INTO ".$db_settings['bookmark_tags_table']." (`bid`, `tid`) VALUES (".$data['bid'].", ".$data['tid'].");\n");
}
mysqli_free_result($result);
# entries tag table
$backup->assign("\n");
$backup->assign("#\n");
$backup->assign("# ".$db_settings['entry_tags_table']."\n");
$backup->assign("#\n");
$backup->assign("TRUNCATE TABLE ".$db_settings['entry_tags_table'].";\n");
$result = @mysqli_query($connid, "SELECT bid, tid FROM ".$db_settings['entry_tags_table']) or $error=true;
while($data = mysqli_fetch_array($result))
{
$data['bid'] = intval($data['bid']);
$data['tid'] = intval($data['tid']);
$backup->assign("INSERT INTO ".$db_settings['entry_tags_table']." (`bid`, `tid`) VALUES (".$data['bid'].", ".$data['tid'].");\n");
}
mysqli_free_result($result);
}
@ -1908,13 +1970,13 @@ function create_backup_file($mode=0)
$backup->assign("#\n");
$backup->assign("TRUNCATE TABLE ".$db_settings['userdata_table'].";\n");
$backup->assign("TRUNCATE TABLE ".$db_settings['userdata_cache_table'].";\n");
$result = @mysqli_query($connid, "SELECT user_id, user_type, user_name, user_real_name, gender, birthday, user_pw, user_email, email_contact, user_hp, user_location, signature, profile, logins, last_login, last_logout, user_ip, registered, category_selection, thread_order, user_view, sidebar, fold_threads, thread_display, new_posting_notification, new_user_notification, user_lock, auto_login_code, pwf_code, activate_code, language, time_zone, time_difference, theme FROM ".$db_settings['userdata_table']) or $error=true;
$result = @mysqli_query($connid, "SELECT user_id, user_type, user_name, user_real_name, gender, birthday, user_pw, user_email, email_contact, user_hp, user_location, signature, profile, logins, last_login, last_logout, user_ip, registered, category_selection, thread_order, user_view, sidebar, fold_threads, thread_display, new_posting_notification, new_user_notification, user_lock, auto_login_code, pwf_code, activate_code, language, time_zone, time_difference, theme, tou_accepted, dps_accepted FROM ".$db_settings['userdata_table']) or $error=true;
$time_start = TIMESTAMP;
while($data = mysqli_fetch_array($result))
{
$data['user_name'] = mysqli_real_escape_string($connid, $data['user_name']);
$data['user_real_name'] = mysqli_real_escape_string($connid, $data['user_real_name']);
$data['birthday'] = !is_null($data['birthday']) ? mysqli_real_escape_string($connid, $data['birthday']) : 'NULL';
$data['birthday'] = !is_null($data['birthday']) ? "'".mysqli_real_escape_string($connid, $data['birthday'])."'" : 'NULL';
$data['user_pw'] = mysqli_real_escape_string($connid, $data['user_pw']);
$data['user_email'] = mysqli_real_escape_string($connid, $data['user_email']);
$data['user_hp'] = mysqli_real_escape_string($connid, $data['user_hp']);
@ -1936,7 +1998,9 @@ function create_backup_file($mode=0)
$data['auto_login_code'] = mysqli_real_escape_string($connid, $data['auto_login_code']);
$data['pwf_code'] = mysqli_real_escape_string($connid, $data['pwf_code']);
$data['activate_code'] = mysqli_real_escape_string($connid, $data['activate_code']);
$backup->assign("INSERT INTO ".$db_settings['userdata_table']." VALUES (".$data['user_id'].", ".$data['user_type'].", '".$data['user_name']."', '".$data['user_real_name']."', ".$data['gender'].", ".$data['birthday'].", '".$data['user_pw']."', '".$data['user_email']."', ".$data['email_contact'].", '".$data['user_hp']."', '".$data['user_location']."', '".$data['signature']."', '".$data['profile']."', ".$data['logins'].", ".$data['last_login'].", ".$data['last_logout'].", '".$data['user_ip']."', ".$data['registered'].", ".$data['category_selection'].", ".$data['thread_order'].", ".$data['user_view'].", ".$data['sidebar'].", ".$data['fold_threads'].", ".$data['thread_display'].", ".$data['new_posting_notification'].", ".$data['new_user_notification'].", ".$data['user_lock'].", '".$data['auto_login_code']."', '".$data['pwf_code']."', '".$data['activate_code']."', '".$data['language']."', '".$data['time_zone']."', ".$data['time_difference'].", '".$data['theme']."');\n");
$data['tou_accepted'] = !is_null($data['tou_accepted']) ? "'".mysqli_real_escape_string($connid, $data['tou_accepted'])."'" : 'NULL';
$data['dps_accepted'] = !is_null($data['dps_accepted']) ? "'".mysqli_real_escape_string($connid, $data['dps_accepted'])."'" : 'NULL';
$backup->assign("INSERT INTO ".$db_settings['userdata_table']." (`user_id`, `user_type`, `user_name`, `user_real_name`, `gender`, `birthday`, `user_pw`, `user_email`, `email_contact`, `user_hp`, `user_location`, `signature`, `profile`, `logins`, `last_login`, `last_logout`, `user_ip`, `registered`, `category_selection`, `thread_order`, `user_view`, `sidebar`, `fold_threads`, `thread_display`, `new_posting_notification`, `new_user_notification`, `user_lock`, `auto_login_code`, `pwf_code`, `activate_code`, `language`, `time_zone`, `time_difference`, `theme`, `tou_accepted`, `dps_accepted`) VALUES (".$data['user_id'].", ".$data['user_type'].", '".$data['user_name']."', '".$data['user_real_name']."', ".$data['gender'].", ".$data['birthday'].", '".$data['user_pw']."', '".$data['user_email']."', ".$data['email_contact'].", '".$data['user_hp']."', '".$data['user_location']."', '".$data['signature']."', '".$data['profile']."', ".$data['logins'].", ".$data['last_login'].", ".$data['last_logout'].", '".$data['user_ip']."', ".$data['registered'].", ".$data['category_selection'].", ".$data['thread_order'].", ".$data['user_view'].", ".$data['sidebar'].", ".$data['fold_threads'].", ".$data['thread_display'].", ".$data['new_posting_notification'].", ".$data['new_user_notification'].", ".$data['user_lock'].", '".$data['auto_login_code']."', '".$data['pwf_code']."', '".$data['activate_code']."', '".$data['language']."', '".$data['time_zone']."', ".$data['time_difference'].", '".$data['theme']."', ".$data['tou_accepted'].", ".$data['dps_accepted'].");\n");
}
mysqli_free_result($result);
}
@ -1948,7 +2012,7 @@ function create_backup_file($mode=0)
$backup->assign("#\n");
$backup->assign("TRUNCATE TABLE ".$db_settings['forum_table'].";\n");
$backup->assign("TRUNCATE TABLE ".$db_settings['entry_cache_table'].";\n");
$result = @mysqli_query($connid, "SELECT id,pid,tid,uniqid,time,last_reply,edited,edited_by,user_id,name,subject,category,email,hp,location,ip,text,show_signature,email_notification,marked,locked,sticky,views,spam,spam_check_status,edit_key FROM ".$db_settings['forum_table']) or $error=true;
$result = @mysqli_query($connid, "SELECT id,pid,tid,uniqid,time,last_reply,edited,edited_by,user_id,name,subject,category,email,hp,location,ip,text,show_signature,marked,locked,sticky,views,spam,spam_check_status,edit_key FROM ".$db_settings['forum_table']) or $error=true;
$time_start = TIMESTAMP;
while($data = mysqli_fetch_array($result))
{
@ -1962,13 +2026,12 @@ function create_backup_file($mode=0)
$data['email'] = mysqli_real_escape_string($connid, $data['email']);
$data['location'] = mysqli_real_escape_string($connid, $data['location']);
$data['ip'] = mysqli_real_escape_string($connid, $data['ip']);
$data['tags'] = mysqli_real_escape_string($connid, $data['tags']);
#$data['text'] = iconv("UTF-8","ISO-8859-1",$data['text']);
$data['text'] = mysqli_real_escape_string($connid, $data['text']);
$data['text'] = str_replace("\r", "\\r", $data['text']);
$data['text'] = str_replace("\n", "\\n", $data['text']);
$data['edit_key'] = mysqli_real_escape_string($connid, $data['edit_key']);
$backup->assign("INSERT INTO ".$db_settings['forum_table']." VALUES (".$data['id'].", ".$data['pid'].", ".$data['tid'].", '".$data['uniqid']."', ".$data['time'].", ".$data['last_reply'].", ".$data['edited'].", ".$data['edited_by'].", ".$data['user_id'].", '".$data['name']."', '".$data['subject']."', ".$data['category'].", '".$data['email']."', '".$data['hp']."', '".$data['location']."', '".$data['ip']."', '".$data['text']."', '".$data['tags']."', ".$data['show_signature'].", ".$data['email_notification'].", ".$data['marked'].", ".$data['locked'].", ".$data['sticky'].", ".$data['views'].", ".$data['spam'].", ".$data['spam_check_status'].", '".$data['edit_key']."');\n");
$backup->assign("INSERT INTO ".$db_settings['forum_table']." (`id`, `pid`, `tid`, `uniqid`, `time`, `last_reply`, `edited`, `edited_by`, `user_id`, `name`, `subject`, `category`, `email`, `hp`, `location`, `ip`, `text`, `show_signature`, `marked`, `locked`, `sticky`, `views`, `spam`, `spam_check_status`, `edit_key`) VALUES (".$data['id'].", ".$data['pid'].", ".$data['tid'].", '".$data['uniqid']."', ".$data['time'].", ".$data['last_reply'].", ".$data['edited'].", ".$data['edited_by'].", ".$data['user_id'].", '".$data['name']."', '".$data['subject']."', ".$data['category'].", '".$data['email']."', '".$data['hp']."', '".$data['location']."', '".$data['ip']."', '".$data['text']."', ".$data['show_signature'].", ".$data['marked'].", ".$data['locked'].", ".$data['sticky'].", ".$data['views'].", ".$data['spam'].", ".$data['spam_check_status'].", '".$data['edit_key']."');\n");
}
mysqli_free_result($result);
}
@ -2252,69 +2315,47 @@ function my_mb_encode_mimeheader($string, $charset, $transfer_encoding, $linefee
*
* @return string
*/
function my_quoted_printable_encode($input, $line_max=76, $space_conv = false )
{
$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$lines = preg_split('/(?:\r\n|\r|\n)/', $input);
$eol = "\n";
$escape = '=';
$output = '';
while(list(, $line) = each($lines))
{
$linlen = strlen($line);
$newline = '';
for($i = 0; $i < $linlen; $i++)
{
$c = substr($line, $i, 1);
$dec = ord( $c );
if(($i == 0) && ($dec == 46)) // convert first point in the line into =2E
{
$c = '=2E';
}
if($dec == 32)
{
if($i==($linlen-1)) // convert space at eol only
{
$c = '=20';
}
elseif($space_conv)
{
$c = '=20';
}
}
elseif(($dec == 61) || ($dec < 32) || ($dec > 126)) // always encode "\t", which is *not* required
{
$h2 = floor($dec/16);
$h1 = floor($dec%16);
$c = $escape.$hex[$h2].$hex[$h1];
}
if((strlen($newline) + strlen($c)) >= $line_max) // CRLF is not counted
{
$output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay
$newline = '';
if($dec == 46) // check if newline first character will be point or not
{
$c = '=2E';
}
}
$newline .= $c;
} // end of for
$output .= $newline.$eol;
} // end of while
return $output;
}
/**
* tries to find a simpler character encoding to encode the e-mail
*
* @param string $string
* @return string
*/
function get_mail_encoding($string)
{
if(preg_match('%^(?:[\x09\x0A\x0D\x20-\x7E])*$%xs', $string)) return 'US-ASCII';
else return strtoupper(CHARSET);
}
function my_quoted_printable_encode($input, $line_max=76, $space_conv = false ) {
$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$lines = preg_split('/(?:\r\n|\r|\n)/', $input);
$eol = "\n";
$escape = '=';
$output = '';
foreach ($lines as $line) {
$linlen = strlen($line);
$newline = '';
for($i = 0; $i < $linlen; $i++) {
$c = substr($line, $i, 1);
$dec = ord( $c );
if(($i == 0) && ($dec == 46)) { // convert first point in the line into =2E
$c = '=2E';
}
if($dec == 32) {
if($i==($linlen-1)) { // convert space at eol only
$c = '=20';
}
elseif($space_conv) {
$c = '=20';
}
}
elseif(($dec == 61) || ($dec < 32) || ($dec > 126)) { // always encode "\t", which is *not* required
$h2 = floor($dec/16);
$h1 = floor($dec%16);
$c = $escape.$hex[$h2].$hex[$h1];
}
if((strlen($newline) + strlen($c)) >= $line_max) { // CRLF is not counted
$output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay
$newline = '';
if($dec == 46) { // check if newline first character will be point or not
$c = '=2E';
}
}
$newline .= $c;
} // end of for
$output .= $newline.$eol;
} // end of while
return $output;
}
/**
* sends an email
@ -2325,55 +2366,37 @@ function get_mail_encoding($string)
* @param string $headers
* @return string
*/
function my_mail($to, $subject, $message, $from='')
{
global $settings;
$mail_header_separator = "\n"; // "\r\n" complies with RFC 2822 but might cause problems in some cases (see http://php.net/manual/en/function.mail.php)
function my_mail($to, $subject, $message, $from='') {
global $settings;
$mail_header_separator = "\n"; // "\r\n" complies with RFC 2822 but might cause problems in some cases (see http://php.net/manual/en/function.mail.php)
if($from=='') $mail_charset = get_mail_encoding($subject.$message.$settings['forum_name'].$settings['forum_email']);
else $mail_charset = get_mail_encoding($subject.$message.$from);
$mail_charset = strtoupper(CHARSET);
$to = mail_header_filter($to);
$subject = my_mb_encode_mimeheader(mail_header_filter($subject), $mail_charset, "Q", $mail_header_separator);
$message = my_quoted_printable_encode($message);
if($from == '')
{
$headers = "From: " . encode_mail_name($settings['forum_name'], $mail_charset, $mail_header_separator)." <".$settings['forum_email'].">". $mail_header_separator;
}
else
{
$headers = "From: " . mail_header_filter($from) . $mail_header_separator;
}
$to = mail_header_filter($to);
$subject = my_mb_encode_mimeheader(mail_header_filter($subject), $mail_charset, "Q", $mail_header_separator);
$message = my_quoted_printable_encode($message);
$headers = "From: " . encode_mail_name($settings['forum_name'], $mail_charset, $mail_header_separator)." <".$settings['forum_email'].">". $mail_header_separator;
if ($from != '')
$headers .= "Reply-to: " . mail_header_filter($from) . $mail_header_separator;
$headers .= "MIME-Version: 1.0" . $mail_header_separator;
$headers .= "X-Sender-IP: ". $_SERVER['REMOTE_ADDR'] . $mail_header_separator;
$headers .= "Content-Type: text/plain; charset=" . $mail_charset . $mail_header_separator;
$headers .= "Content-Transfer-Encoding: quoted-printable";
$headers .= "MIME-Version: 1.0" . $mail_header_separator;
$headers .= "X-Sender-IP: ". $_SERVER['REMOTE_ADDR'] . $mail_header_separator;
$headers .= "Content-Type: text/plain; charset=" . $mail_charset . $mail_header_separator;
$headers .= "Content-Transfer-Encoding: quoted-printable";
if($settings['mail_parameter']!='')
{
if(@mail($to, $subject, $message, $headers, $settings['mail_parameter']))
{
return true;
}
else
{
return false;
}
}
else
{
if(@mail($to, $subject, $message, $headers))
{
return true;
}
else
{
return false;
}
}
}
if ($settings['mail_parameter'] != '') {
if (@mail($to, $subject, $message, $headers, $settings['mail_parameter'])) {
return true;
}
}
else {
if (@mail($to, $subject, $message, $headers)) {
return true;
}
}
return false;
}
/**
* checks if the IP of the user is banned
@ -2614,7 +2637,7 @@ function isInfamousEmail($email) {
* returns the description of the latest version, if the current
* version is not the latest one otherwise false
*
* @return String $currentVersion
* @param String $currentVersion
* @return mix $releaseInfo
*/
function checkUpdate($currentVersion = '0.0') {
@ -2634,7 +2657,7 @@ function checkUpdate($currentVersion = '0.0') {
//$lastVersion = preg_replace ("/.+\/v/u", "", $lastVersion[0]);
$lastVersion = preg_replace("/.*?([^\/v?]+$)/u", "$1", $lastVersion[0]);
if (empty($updateDateOfInstalledVersion ))
if (empty($updateDateOfInstalledVersion))
$updateDateOfInstalledVersion = 0;
else
$updateDateOfInstalledVersion = strtotime($updateDateOfInstalledVersion[0]);
@ -2648,9 +2671,9 @@ function checkUpdate($currentVersion = '0.0') {
'title' => (string)$title[0],
'content' => (string)$content[0],
'version' => (string)$lastVersion,
'uri' => $baseURI . (string)$releaseURI[0]->href
//'uri' => $baseURI . (string)$releaseURI[0]->href
'uri' => (string)$releaseURI[0]->href
);
return $release;
}
}
@ -2663,111 +2686,91 @@ function checkUpdate($currentVersion = '0.0') {
* @param string $string
* @reurn bool
*/
function contains_special_characters($string)
{
#if(!preg_match("/^[a-zA-Z0-9_\- ]+$/", $string)) return true; // only alphanumeric characters, "-", "_" and " " allowed
if(preg_match("/([[:cntrl:]]|\p{Cf})/u", $string)) return true; // control characters and soft hyphen
if(preg_match("/(\x{200b})/u", $string)) return true; // zero width space
return false;
}
function contains_special_characters($string) {
#if (!preg_match("/^[a-zA-Z0-9_\- ]+$/", $string)) return true; // only alphanumeric characters, "-", "_" and " " allowed
if (preg_match("/([[:cntrl:]]|\p{Cf})/u", $string)) return true; // control characters and soft hyphen
if (preg_match("/(\x{200b})/u", $string)) return true; // zero width space
return false;
}
/**
* gets available timezones
*
* @reurn array
*/
function get_timezones()
{
if(!$timezones_raw = @file('config/time_zones')) return false;
foreach($timezones_raw as $line)
{
$line = trim($line);
if(!empty($line))
{
$timezones[] = $line;
}
}
if(isset($timezones)) return $timezones;
else return false;
}
function get_timezones() {
if (!$timezones_raw = @file('config/time_zones')) return false;
foreach ($timezones_raw as $line) {
$line = trim($line);
if (!empty($line)) {
$timezones[] = $line;
}
}
if (isset($timezones)) return $timezones;
else return false;
}
/**
* gets available languages
*
* @reurn array
*/
function get_languages($titles=false)
{
$handle=opendir('./'.LANG_DIR.'/');
while($file = readdir($handle))
{
if(strrchr($file, '.')=='.lang')
{
$language_files[] = $file;
}
}
closedir($handle);
if(isset($language_files))
{
if(!$titles)
{
return $language_files;
}
else
{
natcasesort($language_files);
$i=0;
foreach($language_files as $file)
{
$t_language_files[$i]['identifier'] = $file;
$t_language_files[$i]['title'] = ucfirst(str_replace('.lang','',$file));
$title_parts = explode('.', $t_language_files[$i]['title']);
if(isset($title_parts[1])) $t_language_files[$i]['title'] = $title_parts[0].' ('.$title_parts[1].')';
++$i;
}
return $t_language_files;
}
}
return false;
}
function get_languages($titles = false) {
$handle = opendir('./'.LANG_DIR.'/');
while ($file = readdir($handle)) {
if (strrchr($file, '.') == '.lang') {
$language_files[] = $file;
}
}
closedir($handle);
if (isset($language_files)) {
if (!$titles) {
return $language_files;
} else {
natcasesort($language_files);
$i = 0;
foreach ($language_files as $file) {
$t_language_files[$i]['identifier'] = $file;
$t_language_files[$i]['title'] = ucfirst(str_replace('.lang', '', $file));
$title_parts = explode('.', $t_language_files[$i]['title']);
if (isset($title_parts[1])) $t_language_files[$i]['title'] = $title_parts[0].' ('.$title_parts[1].')';
++$i;
}
return $t_language_files;
}
}
return false;
}
/**
* gets available themes
*
* @reurn array
*/
function get_themes($titles=false)
{
$handle=opendir('./'.THEMES_DIR.'/');
while($dir = readdir($handle))
{
if($dir != '.' && $dir != '..' && is_dir('./'.THEMES_DIR.'/'.$dir) && file_exists('./'.THEMES_DIR.'/'.$dir.'/main.tpl'))
{
$themes[] = $dir;
}
}
if(isset($themes))
{
if(!$titles)
{
return $themes;
}
else
{
natcasesort($themes);
$i=0;
foreach($themes as $t)
{
$t_themes[$i]['identifier'] = $t;
$t_themes[$i]['title'] = str_replace('_',' ', $t);
++$i;
}
return $t_themes;
}
}
else return false;
}
function get_themes($titles = false) {
$handle = opendir('./'.THEMES_DIR.'/');
while ($dir = readdir($handle)) {
if ($dir != '.' && $dir != '..' && is_dir('./'.THEMES_DIR.'/'.$dir) && file_exists('./'.THEMES_DIR.'/'.$dir.'/main.tpl')) {
$themes[] = $dir;
}
}
if (isset($themes)) {
if (!$titles) {
return $themes;
} else {
natcasesort($themes);
$i = 0;
foreach ($themes as $t) {
$t_themes[$i]['identifier'] = $t;
$t_themes[$i]['title'] = str_replace('_', ' ', $t);
++$i;
}
return $t_themes;
}
}
else return false;
}
/**
* Returns the avatar image by user id
*
@ -2790,6 +2793,26 @@ function getAvatar($user_id) {
return false;
}
/**
* Update voting permissions
*
* @param none
* @return none
*/
function updateVotingPermissions() {
global $connid, $settings, $db_settings;
$voting_min_registered_days = $settings['voting_min_registered_days'];
$voting_min_threadcount = $settings['voting_min_threadcount'];
$voting_min_postcount = $settings['voting_min_postcount'];
$voting_min_ownscore = $settings['voting_min_ownscore'];
# set, if all conditions are fullfilled
mysqli_query($connid, "UPDATE " . $db_settings['userdata_table']. " SET voting_allowed = 1 WHERE voting_allowed = 0 AND user_id IN (SELECT user_id FROM " . $db_settings['threadcount_view'] . " WHERE thread_cnt >= " . $voting_min_threadcount . ") AND user_id IN (SELECT user_id FROM " . $db_settings['postcount_view'] . " WHERE post_cnt >= " . $voting_min_postcount . ") AND user_id IN (SELECT user_id FROM " . $db_settings['totalscore_view'] . " WHERE totalScore >= " . $voting_min_ownscore . ") AND registered <= (NOW() - INTERVAL " . $voting_min_registered_days . " DAY)");
# revoke, if at least one condition is not fullfilled
mysqli_query($connid, "UPDATE " . $db_settings['userdata_table']. " SET voting_allowed = 0 WHERE voting_allowed = 1 AND (user_id IN (SELECT user_id FROM " . $db_settings['threadcount_view'] . " WHERE thread_cnt < " . $voting_min_threadcount . ") OR user_id IN (SELECT user_id FROM " . $db_settings['postcount_view'] . " WHERE post_cnt < " . $voting_min_postcount . ") OR user_id IN (SELECT user_id FROM " . $db_settings['totalscore_view'] . " WHERE totalScore < " . $voting_min_ownscore . ") OR registered > (NOW() - INTERVAL " . $voting_min_registered_days . " DAY))");
return true;
}
/**
* check, if HTTPS was used for the current request
*
@ -2910,6 +2933,14 @@ function addBookmark($user_id, $posting_id) {
}
}
function setReceiptTimestamp($offset = 0) {
global $settings;
// SPAM protection (Time (difference) between page reload)
if (isset($_SESSION[$settings['session_prefix'] . 'receipt_timestamp']) && intval($_SESSION[$settings['session_prefix'] . 'receipt_timestamp']) > 0)
$_SESSION[$settings['session_prefix'] . 'receipt_timestamp_difference'] = $_SERVER['REQUEST_TIME'] + $offset - $_SESSION[$settings['session_prefix'] . 'receipt_timestamp'];
$_SESSION[$settings['session_prefix'] . 'receipt_timestamp'] = $_SERVER['REQUEST_TIME'];
}
/**
* sends a status code, displays an error message and halts the script
*

View file

@ -77,10 +77,11 @@ if ($categories == false) {
$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
$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, sct.score
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['score_table']." AS sct ON sct.posting_id = ft.id
WHERE tid = ".$zeile['tid'].$display_spam_query_and."
ORDER BY ft.time ASC") or raise_error('database_error', mysqli_error($connid));
@ -220,6 +221,9 @@ $smarty->assign("items_per_page",$settings['threads_per_page']);
$smarty->assign("thread_order",$thread_order);
$smarty->assign("descasc",$descasc);
$smarty->assign('fold_threads',$fold_threads);
$smarty->assign("score_threshold_1",$settings['voting_score_threshold_1']);
$smarty->assign("score_threshold_2",$settings['voting_score_threshold_2']);
$smarty->assign("score_threshold_3",$settings['voting_score_threshold_3']);
if ($category != 0) $cqsa = '&amp;category='.$category;
else $cqsa = '';

View file

@ -43,6 +43,8 @@ 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']); ?>";
<?php endif; ?>

View file

@ -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,7 +46,7 @@ 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, 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'])) {
@ -131,7 +133,11 @@ switch ($action) {
@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,6 +172,114 @@ 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($error)) {
@ -262,5 +376,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;
}
?>

View file

@ -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];
}
@ -47,6 +47,19 @@ else
// 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 +111,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']))
@ -114,6 +129,8 @@ if (isset($_GET['move_posting']))
$action = 'move_posting';
if (isset($_GET['bookmark']))
$action = 'bookmark_posting';
if (isset($_GET['vote']))
$action = 'vote_posting';
// permission to upload images:
if ($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0)
@ -287,7 +304,70 @@ 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 'vote_posting':
if (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
$user_id = intval($_SESSION[$settings['session_prefix'] . 'user_id']);
$result = @mysqli_query($connid, "SELECT TRUE AS 'exists' FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($user_id) . " AND voting_allowed >= 1 LIMIT 1") or raise_error('database_error', mysqli_error($connid));
$exists = mysqli_fetch_row($result);
mysqli_free_result($result);
if (isset($exists) && intval($exists) == 1) {
# voting for user allowed
$result = @mysqli_query($connid, "SELECT TRUE AS 'exists' FROM " . $db_settings['vote_table'] . " WHERE user_id = " . intval($user_id) . " AND posting_id = " . intval($_GET['vote']) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
$exists = mysqli_fetch_row($result);
mysqli_free_result($result);
if (isset($exists) && intval($exists) == 1) {
# remove existing vote
# delete from vote table
@mysqli_query($connid, "DELETE FROM " . $db_settings['vote_table'] . " WHERE `user_id` = " . intval($user_id) . " AND `posting_id` = " . intval($_GET['vote'])) or raise_error('database_error', mysqli_error($connid));
# decrement score in forum table
@mysqli_query($connid, "UPDATE " . $db_settings['score_table'] . " SET Score = Score - 1 WHERE `posting_id` = " . intval($_GET['vote'])) or raise_error('database_error', mysqli_error($connid));
} else {
# add new vote
# if entry is existing in forum table, but not for own entries
$result = @mysqli_query($connid, "SELECT TRUE AS 'exists' FROM " . $db_settings['forum_table'] . " WHERE user_id <> " . intval($user_id) . " AND id = " . intval($_GET['vote']) . " AND locked = 0 LIMIT 1") or raise_error('database_error', mysqli_error($connid));
$exists = mysqli_fetch_row($result);
mysqli_free_result($result);
if (isset($exists) && intval($exists) == 1) {
@mysqli_query($connid, "INSERT INTO " . $db_settings['vote_table'] . " (user_id, posting_id, vote) VALUES (" . intval($user_id) . ", " . intval($_GET['vote']) . ", " . "1" . ")") or raise_error('database_error', mysqli_error($connid));
# increment score in score table
$result = @mysqli_query($connid, "SELECT TRUE AS 'exists' FROM " . $db_settings['score_table'] . " WHERE posting_id = " . intval($_GET['vote']) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
$exists = mysqli_fetch_row($result);
mysqli_free_result($result);
if (isset($exists) && intval($exists) == 1) {
# score already existing
@mysqli_query($connid, "UPDATE " . $db_settings['score_table'] . " SET Score = Score + 1 WHERE `posting_id` = " . intval($_GET['vote'])) or raise_error('database_error', mysqli_error($connid));
} else {
# score not existing
@mysqli_query($connid, "INSERT INTO " . $db_settings['score_table'] . " (posting_id, score) VALUES (". intval($_GET['vote']) . ", 1)") or raise_error('database_error', mysqli_error($connid));
}
}
}
} else {
# voting for user not allowed
# do nothing
}
header("location: index.php?mode=" . $back . "&id=" . intval($_GET['vote']));
}
break;
case 'bookmark_posting':
if (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
$user_id = intval($_SESSION[$settings['session_prefix'] . 'user_id']);
@ -357,6 +437,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 +538,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,7 +556,6 @@ 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;
@ -482,28 +572,29 @@ switch ($action) {
$smarty->assign("subnav_link", $subnav_link);
$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'])) {
if (isset($_POST['text'])) {
$smarty->assign('no_authorisation', 'no_auth_session_expired');
$smarty->assign('text', htmlspecialchars($_POST['text']));
}
else {
} else {
$smarty->assign('no_authorisation', 'no_auth_post_reg_users');
}
$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,16 +603,17 @@ 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;
}
@ -551,16 +643,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']);
}
}
}
@ -689,13 +780,13 @@ switch ($action) {
break;
}
}
}
}
else
$tagsArray = false;
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'];
@ -811,6 +902,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';
}
}
@ -905,18 +998,21 @@ switch ($action) {
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, 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($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));
$newID = mysqli_insert_id($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));
}
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));
}
// 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);
@ -988,15 +1084,30 @@ 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) . ", spam = " . intval($spam) . ", spam_check_status = " . intval($spam_check_status) . " WHERE id = " . intval($id)) or die(mysqli_error($connid));
// save new of posting tags:
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));
}
}
$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));
@ -1046,6 +1157,13 @@ switch ($action) {
$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));
@ -1070,9 +1188,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 +1215,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 +1245,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 +1267,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 +1286,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 +1324,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 +1345,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 +1417,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) {
@ -1640,6 +1791,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:

View file

@ -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 = trim($_POST[$fname_user]);
$new_user_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)
@ -79,24 +117,26 @@ switch ($action) {
// look if name already exists:
$name_result = mysqli_query($connid, "SELECT user_name FROM ".$db_settings['userdata_table']." WHERE lower(user_name) = '". mysqli_real_escape_string($connid, my_strtolower($new_user_name, $lang['charset'])) ."'") or raise_error('database_error', mysqli_error($connid));
if (mysqli_num_rows($name_result) > 0)
if (mysqli_num_rows($name_result) > 0)
$errors[] = 'user_name_already_exists';
mysqli_free_result($name_result);
// look, if e-mail already exists:
$email_result = mysqli_query($connid, "SELECT user_email FROM ".$db_settings['userdata_table']." WHERE lower(user_email) = '". mysqli_real_escape_string($connid, my_strtolower($new_user_email, $lang['charset'])) ."'") or raise_error('database_error', mysqli_error($connid));
if (mysqli_num_rows($email_result) > 0)
if (mysqli_num_rows($email_result) > 0)
$errors[] = 'error_email_alr_exists';
mysqli_free_result($email_result);
// e-mail correct?
if (!is_valid_email($new_user_email))
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,19 +196,25 @@ 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';
}
}

View file

@ -50,7 +50,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']];

View file

@ -68,12 +68,13 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
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
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, edit_key, rst.user_id AS req_user, sct.score
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['score_table'] . " AS sct ON sct.posting_id = ft.id
WHERE tid = " . $tid . $display_spam_query_and . " ORDER BY ft.time ASC") or raise_error('database_error', mysqli_error($connid));
if (mysqli_num_rows($result) > 0) {
@ -240,7 +241,36 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
// read-status handling
$rstatus = save_read_status($connid, $user_id, $data['id']);
}
// set read or new status of messages
if (isset($_SESSION[$settings['session_prefix'] . 'user_id']) && intval($data['locked'])==0) {
// vote handling
$user_id = $_SESSION[$settings['session_prefix'] . 'user_id'];
$vote_result = @mysqli_query($connid, "SELECT TRUE AS 'exists' FROM " . $db_settings['userdata_table'] . " WHERE user_id = " . intval($user_id) . " AND voting_allowed >= 1 LIMIT 1") or raise_error('database_error', mysqli_error($connid));
$vote = mysqli_fetch_row($vote_result);
mysqli_free_result($vote_result);
if (isset($vote) && intval($vote) == 1) {
$vote_result = mysqli_query($connid, "SELECT TRUE AS 'vote' FROM " . $db_settings['vote_table'] . " WHERE `user_id` = " . intval($user_id) . " AND `posting_id` = " . intval($data['id']) . "") or raise_error('database_error', mysqli_error($connid));
$vote = mysqli_fetch_row($vote_result);
mysqli_free_result($vote_result);
if (isset($vote) && intval($vote) == 1) {
# vote is existing -> allow deletion
$data['options']['delete_vote'] = true;
} else {
if ($user_id != $data['user_id']) {
# vote is not existing and not own entry -> allow voting
$data['options']['add_vote'] = true;
} else {
# vote is not existing, but own entry -> do not allow voting
# do nothing
}
}
} else {
# voting for user not allowed
# do nothing
}
}
// set read or new status of messages
$data = getMessageStatus($data, $last_visit);
$data_array[$data["id"]] = $data;
@ -265,6 +295,9 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
$smarty->assign('page', $page);
$smarty->assign('order', $order);
$smarty->assign('category', $category);
$smarty->assign("score_threshold_1",$settings['voting_score_threshold_1']);
$smarty->assign("score_threshold_2",$settings['voting_score_threshold_2']);
$smarty->assign("score_threshold_3",$settings['voting_score_threshold_3']);
if ($thread_display == 0)
$smarty->assign('subtemplate', 'thread.inc.tpl');
else

View file

@ -6,7 +6,7 @@ if(!defined('IN_INDEX')) {
// upload folder:
$uploaded_images_path = 'images/uploaded/';
$images_per_page = 5;
$images_per_page = 10;
if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] > 0) || ($settings['upload_images'] == 2 && isset($_SESSION[$settings['session_prefix'].'user_id'])) || ($settings['upload_images'] == 3)) {
// upload:image:

View file

@ -15,6 +15,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
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'];
@ -296,7 +297,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
case 'edit_profile':
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
$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, auto_login_code, language, time_zone, time_difference, theme, voting_allowed 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 = '';
@ -365,6 +366,8 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
$smarty->assign('signature', htmlspecialchars($row['signature']));
if ($row['auto_login_code'] != '') $smarty->assign('auto_login', 1);
else $smarty->assign('auto_login', 0);
if ($row['voting_allowed'] >= 1) $smarty->assign('voting_allowed', 1);
else $smarty->assign('voting_allowed', 0);
if($settings['avatars'] > 0) {
$avatarInfo = getAvatar($_SESSION[$settings['session_prefix'].'user_id']);
@ -629,6 +632,77 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
}
}
break;
case 'remove_account':
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
$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&amp;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 (isset($_SESSION[$settings['session_prefix'].'user_id']) && 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'])) {
// set "edited_by" in own edited postings to 0:
@mysqli_query($connid, "UPDATE `".$db_settings['forum_table']."` SET `edited_by` = 0 WHERE `edited_by` = ". intval($user_id));
// save user name in forum table (like unregistered users) and set user_id = 0:
@mysqli_query($connid, "UPDATE `".$db_settings['forum_table']."` SET `user_id` = 0, `name` = '". mysqli_real_escape_string($connid, $user_name) ."' WHERE `user_id` = ". intval($user_id));
@mysqli_query($connid, "DELETE FROM `".$db_settings['userdata_table']."` WHERE `user_id` = ". intval($user_id));
@mysqli_query($connid, "DELETE FROM `".$db_settings['userdata_cache_table']."` WHERE `cache_id` = ". intval($user_id));
@mysqli_query($connid, "DELETE FROM `".$db_settings['bookmark_table']."` WHERE `user_id` = ". intval($user_id));
@mysqli_query($connid, "DELETE FROM `".$db_settings['read_status_table']."` WHERE `user_id` = ". intval($user_id));
// delete avatar:
$avatarInfo = getAvatar(intval($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']);
}
$_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', '', 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&amp;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'])) {
$breadcrumbs[0]['link'] = 'index.php?mode=user';
@ -647,16 +721,36 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $settings['user_a
$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)) {

View file

@ -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)
* @author Michael Lösler (https://github.com/loesler)
* @author Heiko August (https://github.com/auge8472)
* @copyright 2006-2018 Mark Alexander Hoschek
* @version 2.4.8 (2018-02-18)
* @version 2.4.24 (2020-10-12)
* @link https://mylittleforum.net/
*
* This program is free software: you can redistribute it and/or modify
@ -59,6 +59,7 @@ 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");
$smarty->assign('settings', $settings);

View file

@ -61,7 +61,7 @@ $newVersion = trim(file_get_contents('../config/VERSION'));
if(isset($_POST['language_file'])) $language_file = $_POST['language_file'];
// try to connect to the database...
// 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']))
@ -207,7 +207,8 @@ if(isset($_POST['install_submit']))
'temp_infos_table' => 'temp_infos',
'tags_table' => 'tags',
'bookmark_tags_table' => 'bookmark_tags',
'entry_tags_table' => 'entry_tags'
'entry_tags_table' => 'entry_tags',
'subscriptions_table' => 'subscriptions'
);
clearstatcache();
@ -280,7 +281,7 @@ if(isset($_POST['install_submit']))
$errors[] = $lang['error_sql']." (MySQL: ".mysqli_error($connid).")";
}
}
if(!@mysqli_query($connid, "INSERT INTO ".$db_settings['settings_table']." VALUES ('version', '". mysqli_real_escape_string($connid, $newVersion) ."');")) {
if(!@mysqli_query($connid, "INSERT INTO " . $db_settings['temp_infos_table'] . " (`name`, `value`) VALUES ('version', '". mysqli_real_escape_string($connid, $newVersion) ."');")) {
$errors[] = $lang['error_sql']." (MySQL: ".mysqli_error($connid).")";
}
@mysqli_query($connid, "COMMIT");

View file

@ -2,10 +2,10 @@
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_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', 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_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 '', tou_accepted DATETIME NULL DEFAULT NULL, dps_accepted DATETIME NULL DEFAULT NULL, 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;
@ -17,6 +17,12 @@ CREATE TABLE mlf2_temp_infos (name varchar(50) NOT NULL, value varchar(255) NOT
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_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`), INDEX `hash` (`unsubscribe_code`), INDEX `entry` (`eid`)) ENGINE = InnoDB CHARSET=utf8;
CREATE TABLE `mlf2_scores` (`posting_id` int(11) NOT NULL, `score` int(11) NOT NULL DEFAULT '0') CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE `mlf2_votes` (`user_id` int(11) NOT NULL, `posting_id` int(11) NOT NULL, `vote` int(11) NOT NULL, `tstamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP) CHARSET=utf8 COLLATE=utf8_general_ci;
ALTER TABLE `mlf2_scores` ADD PRIMARY KEY (`posting_id`);
ALTER TABLE `mlf2_votes` ADD PRIMARY KEY (`posting_id`,`user_id`,`vote`), ADD KEY `ix_posting_id` (`posting_id`), ADD KEY `ix_user_id` (`user_id`);
INSERT INTO mlf2_banlists VALUES ('user_agents', '');
INSERT INTO mlf2_banlists VALUES ('ips', '');
@ -130,14 +136,25 @@ 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 ('data_privacy_agreement', '0');
INSERT INTO mlf2_settings VALUES ('data_privacy_statement_url', '');
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 ('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_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 +163,6 @@ 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_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, '', NULL, NULL);

View file

@ -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,8 +27,6 @@
* 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/>. *
***********************************************************************/
/**
@ -38,41 +36,6 @@
*/
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
*
@ -132,7 +95,6 @@ function MyLittleAdmin() {
* Initialisiert die moeglichen Admin-Funktionen
*/
(function() {
initGlobalSettings();
initBackupControls();
}());
}

2
js/admin.min.js vendored
View file

@ -1 +1 @@
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")});
function MyLittleAdmin(){var a=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()}())}window.ready.push(function(){new MyLittleAdmin();new DragAndDropTable(document.getElementById("sortable"),"admin","action")});

View file

@ -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,8 +27,6 @@
* 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/>. *
***********************************************************************/
/**
@ -1342,7 +1340,7 @@ var ready = new (function () {
}
var querys = [
new Query("fold_threads", expand),
new Query("fold_threads", expand ? "0" : "1"),
new Query("ajax", "true")
];
@ -1368,7 +1366,7 @@ var ready = new (function () {
foldingLink.onclick = function(e) {
expandAllThreads( !isExpand );
this.className = this.className.replace(foldRegExp, "fold-" + (isExpand?2:1) );
this.className = this.className.replace(foldRegExp, "fold-" + (isExpand ? 2 : 1) );
this.firstChild.replaceData(0, this.firstChild.nodeValue.length, (isExpand?lang["expand_threads"]:lang["fold_threads"]) );
this.title = isExpand?lang["expand_threads_linktitle"]:lang["fold_threads_linktitle"];
isExpand = !isExpand;
@ -1393,7 +1391,7 @@ var ready = new (function () {
for (var i=0; i<els.length; i++) {
var el = els[i];
var li = el.parentNode;
var pLink = document.getFirstChildByElement(li, "a", ["ap", "reply", "thread", "replynew", "threadnew", "thread-sticky", "threadnew-sticky", "reply-search", "thread-search"]);
var pLink = document.getFirstChildByElement(li, "a", ["ap", "reply", "thread", "replynew", "threadnew", "thread-sticky", "threadnew-sticky", "reply-search", "thread-search", "thread-locked"]);
var pEmpty = !!document.getFirstChildByElement(li, "img", ["no-text"]);
var pid = parseInt( el.id.substring(1) );
if (!pid)
@ -1498,6 +1496,37 @@ var ready = new (function () {
}
};
/**
* Durchsucht Seite nach Formularen mit Passwort-Feldern im
* >CONTENT< Bereich und fuegt eine Checkbox hinter dem
* jeweiligen Passwort-Feld hinzu. Ist die Checkbox ausgewaehlt,
* so wird das Passwort im Klartext angezeigt ansonsten nicht.
*/
var togglePasswordVisibility = function() {
if (document.getElementById("content")) {
var f = document.getElementById("content").getElementsByTagName("form");
if (f && f.length>0) {
var passwordFields = [];
for (var i=0; i<f.length; i++) {
var fields = f[i].getElementsByTagName("input");
for (var j=0; j<fields.length; j++) {
if (fields[j].type == "password") {
var passwordField = fields[j];
// lang["fold_postings_title"]
var cb = document.createElementWithAttributes("input", {"type": "checkbox", "checked": false, "value": false, "field": passwordField, "title": lang["show_password_title"]}, passwordField.parentNode);
cb.onclick = function(e) {
var isShown = this.field.type == "text";
this.value = isShown;
this.title = isShown ? lang["show_password_title"] : lang["hide_password_title"];
this.field.type = isShown ? "password" : "text";
};
}
}
}
}
}
};
/**
* Oeffnet/Schliesst alle Antworten in einem Thread
* @param expand
@ -1539,14 +1568,14 @@ var ready = new (function () {
}
};
/**
* Initialisiert PopUp-Aufrufe
* bei einem Link
*/
var initPopUpLinks = function() {
var els = [[document.getElementById("terms_of_use") || false, settings["terms_of_use_popup_width"],settings["terms_of_use_popup_height"]],
[document.getElementById("edit_avatar") || false, settings["avatar_popup_width"],settings["avatar_popup_height"]]];
var els = [[document.getElementById("terms_of_use") || false, settings["terms_of_use_popup_width"], settings["terms_of_use_popup_height"]],
[document.getElementById("data_privacy_statement") || false, settings["terms_of_use_popup_width"], settings["terms_of_use_popup_height"]],
[document.getElementById("edit_avatar") || false, settings["avatar_popup_width"], settings["avatar_popup_height"]]];
for (var i=0; i<els.length; i++) {
if (els[i][0]) {
@ -1561,8 +1590,7 @@ var ready = new (function () {
};
}
}
};
};
/**
* Tauscht bzw. aktualisiert den Inhalt des Vorschaufensters
@ -1674,6 +1702,8 @@ var ready = new (function () {
setAutoSubmitSubNaviForms();
sidebar = new Sidebar(templatePath);
togglePasswordVisibility();
if (typeof preload == "object")
document.preloadImages(preload, templatePath);
};

2
js/main.min.js vendored

File diff suppressed because one or more lines are too long

View file

@ -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,8 +27,6 @@
* 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/>. *
***********************************************************************/
/**
@ -88,8 +86,6 @@ 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;
@ -98,18 +94,9 @@ function BBCodeLinkButton(el) {
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"],"http://");
if (!insert_link || insert_link == '' || insert_link == "http://")
var insert_link = (regExpURI.test( selectionRange ))?window.prompt(lang["bbcode_link_url"], selectionRange):window.prompt(lang["bbcode_link_url"],"https://");
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"], "");
if (selectionRange != null) {
@ -582,9 +569,9 @@ function ButtonGroup(f) {
break;
case "img":
if (list && list.length > 1)
bbCodeButton = new BBCodeOptionButton(button, list, lang["bbcode_image_url"], "http://" );
bbCodeButton = new BBCodeOptionButton(button, list, lang["bbcode_image_url"], "https://" );
else
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "http://" );
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "https://" );
break;
case "color":
bbCodeButton = new BBCodeColorChooserButton( button );

2
js/posting.min.js vendored

File diff suppressed because one or more lines are too long

View file

@ -31,6 +31,7 @@ replies = '回复'
views = '阅读'
category = '分类'
submit_button_ok = '&nbsp;确定&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = '是'
no = '否'
go = '走你'
@ -67,6 +68,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 = '按帖子发表时间排序 (默认)'
@ -104,6 +107,8 @@ back_to_entry_link = '回到[name]发表的帖子'
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 = '高级设定'
@ -136,6 +141,7 @@ subnav_userarea_show_posts = '作者: [var]'
subnav_userarea_edit_user = '编辑用户信息'
subnav_userarea_edit_pw = '更改密码'
subnav_userarea_edit_mail = '更改E-mail地址'
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
subnav_backup = '备份'
subnav_update = '升级'
subnav_update_run = '运行升级'
@ -173,7 +179,6 @@ error_invalid_date_format = '生日日期格式错误(DD.MM.YYYY)'
error_invalid_date = '生日日期错误'
error_email_wrong = '电子邮件地址错误'
error_hp_wrong = '主页地址错误'
error_pw_conf_wrong = '密码不一致'
error_akismet_connection = '服务器连接错误, 请稍后再试!'
error_akismet_connection_admin = '连接Akismet服务器错误, 无法验证API key!'
error_akismet_api_key = 'Wordpress API Key错误'
@ -237,6 +242,7 @@ error_invalid_form = 'Session失效! 请拷贝文本并登陆, 或
error_form_sent_too_fast = '提交表单间隔太短. 请稍后再试.'
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'
@ -256,6 +262,12 @@ 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 = '确认删除备份文件?'
@ -264,6 +276,9 @@ 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'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
@ -292,6 +307,12 @@ several_views = '[views]次阅读'
complete_thread_marking = '完整帖子:'
branch_marking = '当前帖子:'
direct_replies_marking = '直接回复此帖:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
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'
@ -442,6 +463,12 @@ 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 = '请将两个数字相加:'
@ -619,20 +646,38 @@ edit_user_theme = '主题:'
edit_user_default_theme = '默认主题 ([default_theme])'
edit_user_auto_login = '自动登录'
enable_auto_login = '启用自动登录'
edit_user_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
edit_user_notification = 'E-mail 通知:'
admin_mod_notif_posting = '当有新帖时'
admin_mod_notif_register = '当新用户注册时'
userdata_submit_button = 'OK - 保存'
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 = '更改密码时您的帐户需重新激活. 激活代码将发送至新的e-mail地址, 并需在一日内激活.'
@ -660,6 +705,10 @@ activation_failed = '激活帐户未成功.'
error_password_too_short = '密码至少包含[characters]个字符'
error_email_alr_exists = '已有用户使用这个E-mail地址'
error_reg_not_accepted_word = '防垃圾保护: E-mail或名字包含禁止字符或域名'
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-mail'
@ -764,6 +813,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 = '编辑自己的帖子:'
@ -887,7 +940,10 @@ activate_link = '激活帐户'
delete_selected_users = '删除所选'
add_user = '添加用户'
email_list = '注册用户E-mail列表'
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 = '确认删除下列用户?'
@ -900,7 +956,7 @@ 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] 天前的用户.'
@ -971,6 +1027,8 @@ backup_banlists = '禁止名单'
backup_bookmarks = '<!-- TODO -->bookmarks'
backup_read_status = '<!-- TODO -->read status'
backup_temp_infos = '<!-- TODO -->temporary informations'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = '下载备份文件'
delete_selected = '删除所选'
restore = '导入'
@ -1009,9 +1067,16 @@ update_download = '如果没有下列文件, 您可在此下载[
[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]
[name]对\"[original_subject]\"发表了回复:
标题: [subject]
[text]
本帖URL: [posting_address]
@ -1021,7 +1086,7 @@ email_text = """您好 [recipient],
[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 = '论坛新帖: [subject]'
admin_email_text = """[name]发表的新贴
@ -1029,13 +1094,17 @@ admin_email_text = """[name]发表的新贴
[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],
欢迎来到论坛!
@ -1048,7 +1117,9 @@ 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 = '论坛注册'
admin_activate_user_email_text = """Hi [name],
@ -1056,36 +1127,47 @@ 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],
欢迎加入论坛!
请点击以下链接激活您的帐户:
[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]
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 = """您好 [recipient],
一位新用户已订阅本论坛.
用户名: [name]
E-mail: [email]
重要提示: 此用户已被解锁, 可登陆论坛!"""
重要提示: 此用户已被解锁, 可登陆论坛!
This is an automatically generated information message, please do not reply to this email."""
edit_address_email_sj = '更改e-mail地址后帐户激活'
edit_address_email_txt = """您好 [name],
E-mail地址已更改. 您需点击以下链接再次激活帐户:
[activate_link]"""
[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]"""
[activating_link]
This is an automatically generated information message, please do not reply to this email."""
new_pw_email_sj = '<!-- TODO -->New user data for the forum'
new_pw_email_txt = """您好 [name],
新的用户信息:
@ -1096,7 +1178,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]
--

View file

@ -28,6 +28,7 @@ replies = 'Odgovora'
views = 'Otvaranja'
category = "Kategorija'
submit_button_ok = '&nbsp;U redu&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'da'
no = 'ne'
go = 'Kreni'
@ -64,6 +65,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)'
@ -101,6 +104,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 +138,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'
@ -170,7 +176,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č'
@ -234,6 +239,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,6 +259,12 @@ 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?'
@ -261,6 +273,9 @@ 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'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
@ -289,6 +304,12 @@ several_views = '[views] otvaranja'
complete_thread_marking = 'Čitava tema:'
branch_marking = 'Tekući ogranak teme:'
direct_replies_marking = 'Izravni odgovori na ovu poruku:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
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'
@ -439,6 +460,12 @@ 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:'
@ -616,20 +643,38 @@ 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_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
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.'
@ -657,6 +702,10 @@ 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'
@ -761,6 +810,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:'
@ -884,7 +937,10 @@ 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?'
@ -897,7 +953,7 @@ 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'
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.'
@ -968,6 +1024,8 @@ backup_banlists = 'popisa zabranjenih'
backup_bookmarks = '<!-- TODO -->bookmarks'
backup_read_status = '<!-- TODO -->read status'
backup_temp_infos = 'temporary informations'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Preuzmi sigurnosnu kopiju'
delete_selected = 'Obriši označeno'
restore = 'Vrati sigurnosnu kopiju'
@ -1006,9 +1064,16 @@ update_download = 'Ako nemate potrebne datoteke možete ih naći o
[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 +1083,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 +1091,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 +1114,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 +1124,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,7 +1176,9 @@ 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]
---

View file

@ -1,5 +1,5 @@
################################################################################
# Danish language file for my little forum 2.4.3 #
# Danish language file for my little forum 2.4.13 #
#------------------------------------------------------------------------------#
# - don't modify or translate the section names like "[general]" or "[entry]"! #
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
@ -42,6 +42,7 @@ replies = 'Svar'
views = 'Visninger'
category = 'Kategori'
submit_button_ok = '&nbsp;OK&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'ja'
no = 'nej'
go = 'Hop'
@ -78,6 +79,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 = '<!-- TODO -->To top'
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
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 +118,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 erklæring om databeskyttelse'
subnav_accept_tou = 'Acceptér vilkår for brugsaftale'
subnav_admin_area = 'Admin område'
subnav_settings = 'Forum indstillinger'
subnav_advanced_settings = 'Advancerede indstillinger'
@ -147,6 +152,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 = '<!-- TODO -->Delete account'
subnav_backup = 'Backup'
subnav_update = 'Opdater'
subnav_update_run = 'Kør opdatering'
@ -184,7 +190,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'
@ -243,11 +248,12 @@ search_user_default_value = 'Søg efter bruger …'
no_users = 'Ingen brugere fundet.'
no_text_title = 'Tom indlæg / ingen tekst'
no_text_alt = '[ Ingen tekst]'
no_text = '- No text -'
no_text = '- Ingen tekst -'
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 [[bruger betingelserne]]'
data_privacy_agreement = 'Jeg accepterer erklæring om databeskyttelse [[data privacy statement]]'
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'
@ -265,8 +271,14 @@ quote_title = 'Indsæt sitéret tekst i indlægget, der skal svare
error_no_name = 'Navn er ikke udfyldt'
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_register = 'Du skal acceptere brugerreglerne for at kunne fuldføre registreringen'
terms_of_use_error_posting = 'Du skal acceptere brugerreglerne for at kunne gemme dette indlæg'
terms_of_use_error_reconf = 'Du skal acceptere ændringerne til brugerbetingelserne for at kunne skrive flere indlæg'
data_priv_statement_error_reg = 'Du skal acceptere erklæring om databeskyttelse for at fuldføre registreringen'
data_priv_statement_error_post = 'Du skal acceptere erklæring om databeskyttelse for at kunne gemme dette indlæg '
data_priv_statement_error_reconf ='Du skal acceptere ændringerne i erklæring om databeskyttelse 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?'
@ -275,25 +287,28 @@ 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 = '<!-- TODO -->Show password in plain text'
hide_password_title = '<!-- TODO -->Hide password'
score_above_threshold = '<!-- TODO -->popular entry'
[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 = '(valgfrit, 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 = 'Anvend bogmærkefilter'
clear_bookmark_filter_linkname = 'Ryd bogmærkefilter'
clear_bookmark_filter_linktitle = 'Ryd nuværende bogmærkefilter og vis alle gemte bogmærker'
error_no_bookmark_subject = 'Intet emne er indtastet'
error_bookmark_subject_too_long = 'Emneteksten er for lang'
error_bookmark_word_too_long = 'Ordet "[word]" er for langt'
error_bookmark_tags_limit_reached = 'Grænsen for antallet af tags er nået'
[entry]
edited_by = 'redigeret af [name], [time]'
@ -303,6 +318,12 @@ several_views = '[views] visninger'
complete_thread_marking = 'Hele emnet:'
branch_marking = 'Nuværende gren af emnet:'
direct_replies_marking = 'Direkte svar til dette indlæg:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
add_bookmark_message_linkname = 'tilføj bogmærke'
add_bookmark_message_linktitle = 'Tilføj dette indlæg til dine bogmærker'
delete_bookmark_message_linkname = 'slet bogmærke'
@ -335,7 +356,7 @@ no_authorization_edit = 'Indlægget kan ikke redigeres! Enten er redigerings
posting_locked_no_reply = 'Du kan ikke svare på dette indlæg fordi det er låst.'
no_auth_post_reg_users = 'Kun registrerede brugere kan skrive beskeder!'
no_auth_session_expired = 'Session udløbet, kopier venligst din besked og log ind igen!'
no_auth_readonly = 'The forum is currently set to read only mode!'
no_auth_readonly = 'Forummet er i øjeblikket i skrivebeskyttet tilstand!'
new_topic_hl = 'Nyt emne'
reply_hl = 'Skriv svar'
edit_hl = 'Rediger indlæg'
@ -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:'
@ -453,6 +474,12 @@ 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 = '<!-- 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 beskyttelsestjek:'
captcha_expl_math = 'Regn venligst de to tal ud:'
@ -630,20 +657,37 @@ 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_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
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 = '<!-- 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 = '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 = '<!-- 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 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.'
@ -663,7 +707,7 @@ 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.'
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.'
@ -671,6 +715,10 @@ 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 = '<!-- 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-mail til webmaster'
@ -688,7 +736,7 @@ 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_spam_suspicion = 'Spam mistanke! Ændre venligst dit indlæg (fjern f.eks. links)'
[admin]
enabled = 'aktiveret'
@ -712,8 +760,8 @@ 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 = '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'
@ -775,6 +823,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 = 'Erklæring om databeskyttelse'
data_privacy_statement_desc = 'Obligatorisk for ikke-registrerede brugere at acceptere Erklæring om databeskyttelse ved skrivning og registrering'
data_privacy_settings_enabled = 'Erklæring om databeskyttelse aktiveret'
data_privacy_url = 'Erklæring om databeskyttelse URL:'
edit_postings = 'Redigering af indlæg'
edit_postings_desc = 'Redigering af indlæg opførsel'
edit_own_postings = 'Redigering af egne indlæg:'
@ -898,7 +950,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 = '<!-- TODO -->reset acceptance of the terms of use'
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
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,7 +966,7 @@ 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'
@ -982,6 +1037,8 @@ backup_banlists = 'banlister'
backup_bookmarks = 'bogmærker'
backup_read_status = 'læsestatus'
backup_temp_infos = 'midlertidige informationer'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Download backup fil'
delete_selected = 'Slet valgte'
restore = 'Gendan'
@ -1020,9 +1077,16 @@ update_download = 'Hvis du endnu ikke har disse filer kan du downloade
[emails]
email_subject = 'Svar til "[original_subject]"'
email_text = """Hej [recipient],
Dette er en automatisk genereret besked. Du modtager denne email, fordi du har aktiveret beskedfunktionen. Svar venligst ikke på denne email men i den specifikke tråd i forummet.
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 +1096,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 besked er forsinket fordi indlægget blev aktiveret manuelt. Dette er en automatisk genereret email. Svar venligst ikke på denne email."""
admin_email_subject = 'Nyt indlæg i forumet: [subject]'
admin_email_text = """Nyt Indlæg af [name]
@ -1040,13 +1104,17 @@ Emne: [subject]
[text]
URL til dette indlæg: [posting_address]"""
URL til dette indlæg: [posting_address]
Dette er en automatisk genereret besked. Svar venligst ikke på denne 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]
Dette er en automatisk genereret besked. Svar venligst ikke på denne email."""
admin_reg_user_email_subj = 'Forum registrering'
admin_reg_user_email_text = """Hej [name],
Velkommen til forummet!
@ -1059,7 +1127,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.
Dette er en automatisk genereret besked. Svar venligst ikke på denne email."""
admin_activate_user_email_subj = 'Forum registrering'
admin_activate_user_email_text = """Hej [name],
@ -1067,37 +1137,48 @@ Velkommen til forummet!
Link til log ind:
[login_link]
"""
Dette er en automatisk genereret besked. Svar venligst ikke på denne 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]
Dette er en automatisk genereret besked. Svar venligst ikke på denne 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]
Dette er en automatisk genereret besked. Svar venligst ikke på denne 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!
Dette er en automatisk genereret besked. Svar venligst ikke på denne 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]
Dette er en automatisk genereret besked. Svar venligst ikke på denne 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.
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, når du klikker på linket. Hvis denne e-mail er sendt ved en fejl (enten af dig selv eller en anden) skal du blot ignorere denne e-mail.
Link til at bekræfte din tilmelding:
[activating_link]"""
[activating_link]
Dette er en automatisk genereret besked. Svar venligst ikke på denne email."""
new_pw_email_sj = 'Nye bruger data til forummet'
new_pw_email_txt = """Hej [name],
her er dine nye bruger data:
@ -1108,7 +1189,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.
Dette er en automatisk genereret besked. Svar venligst ikke på denne email."""
contact_email_txt = """[message]
---

View file

@ -39,6 +39,7 @@ replies = 'Replies'
views = 'Views'
category = 'Category'
submit_button_ok = '&nbsp;OK&nbsp;'
submit_button_cancel = '&nbsp;Cancel&nbsp;'
yes = 'yes'
no = 'no'
go = 'Go'
@ -75,6 +76,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 +115,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 +149,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'
@ -181,7 +187,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'
@ -194,8 +199,8 @@ unmark_linktitle = 'Unmark posting'
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'
@ -245,6 +250,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,6 +270,12 @@ 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?'
@ -272,6 +284,9 @@ 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'
score_above_threshold = 'popular entry'
[bookmark]
delete_bookmark_submit = 'OK - Delete Bookmark'
@ -300,6 +315,12 @@ several_views = '[views] views'
complete_thread_marking = 'Complete thread:'
branch_marking = 'Current branch of thread:'
direct_replies_marking = 'Direct replies to this posting:'
add_vote_message_linkname = 'Like it!'
add_vote_message_linktitle = 'Add a positive vote for this posting'
delete_vote_message_linkname = 'Revoke vote'
delete_vote_message_linktitle = 'Revoke vote'
message_score1 = 'liked by one user'
message_score = 'liked by [score] user'
add_bookmark_message_linkname = 'add bookmark'
add_bookmark_message_linktitle = 'Add this posting to your personal bookmark list'
delete_bookmark_message_linkname ='delete bookmark'
@ -450,6 +471,12 @@ 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:'
@ -627,20 +654,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_voting = 'Right to vote:'
voting_allowed = 'yes'
voting_not_allowed = 'no'
voting_option_0 = 'no'
voting_option_1 = 'no (automatically)'
voting_option_2 = 'yes (automatically)'
voting_option_3 = 'yes'
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_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.'
@ -668,6 +713,10 @@ activation_failed = 'The activation of the account failed.'
error_password_too_short = 'The password must contain at least [characters] characters'
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'
@ -772,6 +821,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:'
@ -895,7 +948,10 @@ 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?'
@ -908,7 +964,7 @@ 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'
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.'
@ -979,6 +1035,8 @@ backup_banlists = 'banlists'
backup_bookmarks = 'bookmarks'
backup_read_status = 'read status'
backup_temp_infos = 'temporary informations'
backup_subscriptions = 'subscriptions'
backup_tags = 'tags'
download_backup_file = 'Download backup file'
delete_selected = 'Delete selected'
restore = 'Restore'
@ -1017,9 +1075,16 @@ update_download = 'If you do not have these files yet you can do
[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 +1094,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,13 +1102,17 @@ 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!
@ -1056,7 +1125,9 @@ 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],
@ -1064,37 +1135,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 = '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:
@ -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]
--

View file

@ -31,6 +31,7 @@ replies = 'Réponses'
views = 'Vues'
category = 'Categorie'
submit_button_ok = '&nbsp;OK&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'oui'
no = 'non'
go = 'aller'
@ -67,6 +68,8 @@ search_default_value = 'Rechercher...'
search_title = 'Rechercher des entrées'
new_topic_link = 'Nouveau sujet'
new_topic_link_title = 'Poster un nouveau sujet'
back_to_top_link = '<!-- TODO -->To top'
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
order_link = 'Trier'
order_link_title_1 = 'Trier par date de dernière réponse'
order_link_title_2 = 'Trier par date de discussion (defaut)'
@ -104,6 +107,8 @@ back_to_entry_link = 'Retour au message de [name]'
back_to_entry_link_title = 'Retour au message de [name]'
subnav_login = 'Connexion'
subnav_pw_forgotten = 'Oubli du mot de passe'
subnav_accept_dps = '<!-- TODO -->Accept the data privacy statement'
subnav_accept_tou = '<!-- TODO -->Accept the terms of use agreement'
subnav_admin_area = 'Zone d\'administration'
subnav_settings = 'Préférences du forum'
subnav_advanced_settings = 'Configuration avancée'
@ -136,6 +141,7 @@ subnav_userarea_show_posts = 'Posté par [var]'
subnav_userarea_edit_user = 'Editer le profil'
subnav_userarea_edit_pw = 'Changer le mot de passe'
subnav_userarea_edit_mail = 'Changer l\'adresse email'
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
subnav_backup = 'Sauvegarde'
subnav_update = 'Mise à jour'
subnav_update_run = 'Démarrer la mise à jour'
@ -173,7 +179,6 @@ error_invalid_date_format = 'Format de date de naissance incorrect (AAAA-M
error_invalid_date = 'Date de naissance incorrecte'
error_email_wrong = 'L\'adresse mail est incorrecte'
error_hp_wrong = 'Le site web est incorrect'
error_pw_conf_wrong = 'Le mot de passe n\'est pas le même que celui entré la première fois'
error_akismet_connection = 'Serveur occupé, veuillez réessayer!'
error_akismet_connection_admin = 'Ne peut pas établir de connexion au serveur Akismet pour vérifier la clé API!'
error_akismet_api_key = 'Clé Wordpress API incorrecte'
@ -237,6 +242,7 @@ error_invalid_form = 'La session a expiré! Veuillez copier le text
error_form_sent_too_fast = 'Le formulaire a été envoyé trop rapidement - attendez quelques secondes et recommencez (protection contre les robots)'
error_form_sent_too_slow = 'Le formulaire n\'est plus valide - veuillez copier le texte et recharger la page'
terms_of_use_agreement = 'J\'accepte les [[conditions d\'utilisation]]'
data_privacy_agreement = '<!-- TODO -->I agree to the [[data privacy statement]]'
error_not_accepted_word = 'Mot non autorisé : [not_accepted_word]'
error_not_accepted_words = 'Mots non autorisés : [not_accepted_words]'
error_username_invalid_chars = 'Le nom de l\'utilisateur contient des caractères spéciaux'
@ -256,6 +262,12 @@ error_no_subject = 'Aucun sujet n\'a été entré'
error_no_text = 'Aucun texte n\'a été entré'
terms_of_use_error_register = 'Vous devez accepter les conditions d\'utilisation pour terminer votre enregistrement'
terms_of_use_error_posting = 'Vous devez accepter les conditions d\'utilisation pour publier le message'
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 = 'Cocher tout'
uncheck_all = 'Décocher tout'
delete_backup_confirm = 'Etes-vous sûr de vouloir supprimer ce fichier de sauvegarde ?'
@ -264,6 +276,9 @@ drag_and_drop_title = 'déplacer et lâcher pour monter ou descendre
show_all_postings_link = 'montrer les messages'
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'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
@ -292,6 +307,10 @@ several_views = '[views] vues'
complete_thread_marking = 'Fil complet:'
branch_marking = 'Branche courante du fil :'
direct_replies_marking = 'Réponses liées à ce message:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
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'
@ -300,6 +319,8 @@ edit_message_linkname = 'éditer'
edit_message_linktitle = 'éditer le message'
delete_message_linkname = 'Supprimer'
delete_message_linktitle = 'Supprimer le message'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
move_posting_linkname = 'déplacer'
move_posting_linktitle = 'déplacer le message'
report_spam_linkname = 'Spam'
@ -442,6 +463,12 @@ report_flag_ham_submit = 'Déclarer et valider comme non spam'
flag_ham_submit = 'Déclarer comme non spam seulement'
no_authorisation_delete = 'Le message ne peut être supprimé! Il se peut que le délai de suppression des messages soit dépassé, ou que le fil soit verrouillé, ou qu\'il y ait déjà des réponses à ce message.'
[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 = 'Protection contre le spam :'
captcha_expl_math = 'Veuillez additionner ces deux nombres:'
@ -619,20 +646,38 @@ edit_user_theme = 'Thème:'
edit_user_default_theme = 'Default ([default_theme])'
edit_user_auto_login = 'Connexion automatique'
enable_auto_login = 'Activer la connexion automatique'
edit_user_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
edit_user_notification = 'notification par email:'
admin_mod_notif_posting = 'une fois qu\'un nouveau message a été publié'
admin_mod_notif_register = 'une fois qu\'un nouvel utilisateur s\'est enregistré'
userdata_submit_button = 'OK - Sauvegarder'
profile_saved = 'Votre profil a été sauvegardé.'
pw_changed = 'Le mot de passe a été modifié.'
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 = 'Mot de passe:'
error_pw_wrong = 'Le mot de passe est incorrect'
[edit_pw]
edit_pw_old = 'Ancien mot de passe:'
edit_pw_new = 'Nouveau mot de passe :'
edit_pw_conf = 'Répéter le nouveau mot de passe :'
error_old_pw_wrong = 'L\'ancien mot de passe est erroné'
error_pw_conf_uneven = 'Le nouveau mot de passe n\'est pas le même que celui entré la première fois'
error_new_pw_too_short = 'Le nouveau mot de passe doit contenir au moins [characters] caractères'
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 = 'Lors d\'un changment d\'adresse mail vous serez déconnecté et le compte devra être réactivé. Une clef d\'activation sera envoyée à votre nouvelle adresse email. Assurez-vous que l\'adresse email est valide! Le compte sera activé prochainement.'
@ -660,6 +705,10 @@ activation_failed = 'La validation du compte a échoué.'
error_password_too_short = 'Le mot de passe doit contenir au moins [characters] caractères'
error_email_alr_exists = 'Il y a déjà un utilisateur avec cette adresse email'
error_reg_not_accepted_word = 'Protection contre le spam : l\'email ou le nom contient un mot ou un domaine non accepté'
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 = 'Envoyer un message à l\'administrateur du forum'
@ -764,6 +813,10 @@ terms_of_use_settings = 'Règles d\'usage'
terms_of_use_settings_desc = 'Obligation pour les utilisateurs non enregistrés d\'accepter les règles d\'usage pour publier des messages et pour s\'enregistrer'
terms_of_use_settings_enabled = 'Règles d\'usage activées'
terms_of_use_url = 'Adresse des règles d\'usage:'
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 = 'Editer les messages'
edit_postings_desc = 'Editer les comportements des messages'
edit_own_postings = 'Editer mes messages:'
@ -887,7 +940,10 @@ activate_link = 'Activer le compte'
delete_selected_users = 'Supprimer la sélection'
add_user = 'Ajouter un utilisateur'
email_list = 'Liste des emails des utilisateurs enregistrés'
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 = 'Effacer les données des utilisateurs'
edit_user_avatar = '<!-- TODO -->Avatar:'
delete_avatar = 'Supprimer l\'avatar'
delete_user_confirmation = 'Etes-vous sûr de vouloir supprimer cet utilisateur ?'
delete_users_confirmation = 'Etes-vous sûr de vouloir supprimer les utilisateurs suivants ?'
@ -900,7 +956,7 @@ register_pw = 'Mot de passe :'
register_pw_conf = 'Confirmation du mot de passe :'
register_send_userdata = 'Les informations sur l\'utilisateur ont été envoyées à l\'adresse email indiquée.'
error_send_userdata = 'Si vous laissez vide le mot de passe, les informations sont à envoyer à l\'adresse email indiquée'
error_email_wrong = 'L\'adresse email est invalide'
admin_reg_error_email_wrong = 'L\'adresse email est invalide'
new_user_registered = 'L\'utilisateur "[name]" a été enregistré.'
new_user_reg_send_error = 'L\'utilisateur "[name]" a été enregistré mais les informations sur cet utilisateur ne peuvent pas être envoyées.'
clear_userdata_condition = 'Supprimer les utilisateurs qui se connectent au maximum [logins] fois et la dernière fois il y a plus de [days] jours.'
@ -971,6 +1027,8 @@ backup_banlists = 'listes noires'
backup_bookmarks = '<!-- TODO -->bookmarks'
backup_read_status = '<!-- TODO -->read status'
backup_temp_infos = 'temporary informations'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Télécharger le fichier de sauvegarde'
delete_selected = 'Supprimer la sélection'
restore = 'Restaurer'
@ -1009,9 +1067,16 @@ update_download = 'Si vous n\'avez pas ces fichiers vous pouvez
[emails]
email_subject = 'Réponse de "[original_subject]"'
email_text = """Bonjour [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] a posté une réponse à \"[original_subject]\":
Subject: [subject]
[text]
URL of this posting: [posting_address]
@ -1021,7 +1086,7 @@ URL of this posting: [posting_address]
[original_text]"""
email_text_delayed_addition = """---
La publication est en attente car le message a été validé manuellement"""
La publication est en attente car le message a été validé manuellement. This is an automatically generated email, please do not reply to this email."""
admin_email_subject = 'Nouveau sujet dans le forum : [subject]'
admin_email_text = """Nouveau sujet par [name]
@ -1029,13 +1094,17 @@ Subject: [subject]
[text]
Adresse du message : [posting_address]"""
Adresse du message : [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_email_text_reply = """Réponse par [name]
Subject: [subject]
[text]
Adresse du message : [posting_address]"""
Adresse du message : [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_reg_user_email_subj = 'Enregistrement pour le Forum'
admin_reg_user_email_text = """Bonjour [name],
bienvenue sur le forum!
@ -1048,7 +1117,9 @@ Mot de passe : [password]
Lien pour se connecter directement:
[login_link]
Le mot de passe peut être changé après s'être connecté."""
Le mot de passe peut être changé après s'être connecté.
This is an automatically generated information message, please do not reply to this email."""
admin_activate_user_email_subj = 'Enregistrement pour le Forum'
admin_activate_user_email_text = """Bonjour [name],
@ -1056,36 +1127,47 @@ bienvenue sur le 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 = 'Enregistrement sur le forum'
new_user_email_txt = """Bonjour [name],
Bienvenue sur le forum !
pour activer votre compte veuiller cliquer sur le lien:
[activate_link]"""
[activate_link]
This is an automatically generated information message, please do not reply to this email."""
new_user_notif_sj = 'Enregistrement d\'un nouvel utilisateur'
new_user_notif_txt = """Bonjour [recipient],
un nouvel utilisateur s'est enregistré sur le forum.
Identifiant : [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 = """Bonjour [recipient],
un nouvel utilisateur s'est enregistré sur le forum.
Identifiant : [name]
E-mail: [email]
IMPORTANT: Cet utilisateur doit être validé afin qu'il puisse se connecter!"""
IMPORTANT: Cet utilisateur doit être validé afin qu'il puisse se connecter!
This is an automatically generated information message, please do not reply to this email."""
edit_address_email_sj = 'Activation d\'un compte après changement d\'adresse email'
edit_address_email_txt = """Bonjour [name],
l'adresse email a changé. Vous devez maintenant activer de nouveau votre compte en cliquant sur le lien suivant :
[activate_link]"""
[activate_link]
This is an automatically generated information message, please do not reply to this email."""
pwf_activating_email_sj = 'Demande d\'un nouveau mot de passe'
pwf_activating_email_txt = """Bonjour [name],
Cet email a été envoyé par le forum ([forum_address]) car un nouveau mot de passe a été demandé. Veuillez cliquer sur le lien ci-dessous pour confirmer votre demande. Cette action générera un nouveau mot de passe qui vous sera envoyé. Si cet email a été envoyé par erreur (que ce soit par vous ou par d'autres) veuillez ignorer cet email.
[activating_link]"""
[activating_link]
This is an automatically generated information message, please do not reply to this email."""
new_pw_email_sj = 'Nouvelles données pour un utilisateur du forum'
new_pw_email_txt = """Bonjour [name],
voici vos nouvelles données comme utilisateur :
@ -1096,7 +1178,9 @@ Mot de passe : [password]
Cliquer ici pour se connecter directement:
[login_link]
Le mot de passe peut être changé après s'être connecté."""
Le mot de passe peut être changé après s'être connecté.
This is an automatically generated information message, please do not reply to this email."""
contact_email_txt = """[message]
--

View file

@ -11,11 +11,11 @@ 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_full = %A, %d.%m.%Y, %H:%M
forum_time = 'Forumszeit: [time]'
forum_time_with_time_zone = 'Forumszeit: [time] ([time_zone])'
unknown_user = 'unbekannt'
@ -30,6 +30,7 @@ replies = 'Antworten'
views = 'Views'
category = 'Kategorie'
submit_button_ok = '&nbsp;OK&nbsp;'
submit_button_cancel = '&nbsp;Abbrechen&nbsp;'
yes = 'ja'
no = 'nein'
go = 'Los'
@ -66,6 +67,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 +106,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 +140,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'
@ -172,7 +178,6 @@ error_invalid_date_format = 'ungültiges Datums-Format des Geburtstages (J
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'
@ -185,8 +190,8 @@ unmark_linktitle = 'Markierung entfernen'
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'
@ -236,6 +241,7 @@ error_invalid_form = 'ungültiges Formular versendet - bitte nochma
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'
@ -253,8 +259,14 @@ quote_title = 'zitierten Text des Postings einfügen, auf da
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?'
@ -263,6 +275,9 @@ 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'
score_above_threshold = 'beliebter Beitrag'
[bookmark]
delete_bookmark_submit = 'OK - Lesezeichen löschen'
@ -291,6 +306,12 @@ several_views = '[views] Views'
complete_thread_marking = 'gesamter Thread:'
branch_marking = 'Aktueller Diskussionszweig:'
direct_replies_marking = 'Direkte Antworten auf diesen Eintrag:'
add_vote_message_linkname = 'Gefällt mir!'
add_vote_message_linktitle = 'Diesen Eintrag positiv bewerten'
delete_vote_message_linkname = 'Bewertung löschen'
delete_vote_message_linktitle = 'Bewertung löschen'
message_score1 = 'gefällt einem Benutzer'
message_score = 'gefällt [score] Benutzern'
add_bookmark_message_linkname = 'Lesezeichen hinzufügen'
add_bookmark_message_linktitle = 'Diesen Eintrag den eigenen Lesezeichen hinzufügen'
delete_bookmark_message_linkname ='Lesezeichen löschen'
@ -441,6 +462,12 @@ report_flag_ham_submit = 'als Ham (kein Spam) kennzeichnen und melden'
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_expl_math = 'Bitte die beiden Zahlen addieren:'
@ -618,20 +645,38 @@ 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_voting = 'Voting-Teilnahme:'
voting_allowed = 'erlaubt'
voting_not_allowed = 'nicht erlaubt'
voting_option_0 = 'nein'
voting_option_1 = 'nein (Automatik)'
voting_option_2 = 'ja (Automatik)'
voting_option_3 = 'ja'
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'
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!'
@ -659,6 +704,10 @@ 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'
@ -763,6 +812,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:'
@ -835,7 +888,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'
@ -886,7 +939,10 @@ 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?'
@ -899,7 +955,7 @@ 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.'
@ -970,6 +1026,8 @@ backup_banlists = 'Bannlisten'
backup_bookmarks = 'Lesezeichen'
backup_read_status = 'Gelesen-Status'
backup_temp_infos = 'Temporäre Informationen'
backup_subscriptions = 'abonnierte Themen'
backup_tags = 'Tags'
download_backup_file = 'Backup-Datei herunterladen'
delete_selected = 'ausgewählte löschen'
restore = 'Backup wiederherstellen'
@ -1008,9 +1066,16 @@ update_download = 'Falls nicht verfügbar, können diese Dateien
[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 +1085,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 +1093,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 +1116,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 +1126,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 +1178,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]
--

View file

@ -29,6 +29,7 @@ replies = 'Risposte'
views = 'Viste'
category = 'Categoria'
submit_button_ok = '&nbsp;INVIA&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'si'
no = 'no'
go = 'Vai'
@ -65,6 +66,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 +105,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 +139,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'
@ -171,7 +177,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'
@ -235,6 +240,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,6 +260,12 @@ 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?'
@ -262,6 +274,9 @@ 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'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
@ -290,6 +305,12 @@ several_views = '[views] viste'
complete_thread_marking = 'Argomento completo:'
branch_marking = 'Argomenti recenti:'
direct_replies_marking = 'Risposte dirette a questo messaggio:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
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'
@ -440,6 +461,12 @@ report_flag_ham_submit = 'Riporta e classifica come attendibile (non-sp
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:'
@ -617,20 +644,38 @@ 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_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
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.'
@ -658,6 +703,10 @@ 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'
@ -762,6 +811,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:'
@ -885,7 +938,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 = '<!-- TODO -->Avatar:'
delete_avatar = 'Elimina avatar'
delete_user_confirmation = 'Confermi l\'eliminazione di questo utente?'
delete_users_confirmation = 'Confermi l\'eliminazione dei seguenti utenti?'
@ -898,7 +954,7 @@ 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.'
@ -969,6 +1025,8 @@ backup_banlists = 'lista dei ban'
backup_bookmarks = '<!-- TODO -->bookmarks'
backup_read_status = '<!-- TODO -->read status'
backup_temp_infos = '<!-- TODO -->temporary informations'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Scarica file di backup'
delete_selected = 'Elimina selezionati'
restore = 'Ripristina'
@ -1007,9 +1065,16 @@ update_download = 'Se non possiedi questi files, puoi scaricarti
[emails]
email_subject = 'Rispondi a "[original_subject]"'
email_text = """Ciao [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] ha risposto al tuo messaggio \"[original_subject]\":
Oggetto: [subject]
[text]
Indirizzo del messaggio (URL): [posting_address]
@ -1019,7 +1084,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. This is an automatically generated email, please do not reply to this email."""
admin_email_subject = 'Nuovo argomento nel forum: [subject]'
admin_email_text = """Nuovo argomento di [name]
@ -1027,13 +1092,17 @@ Oggetto: [subject]
[text]
Indirizzo del messaggio (URL): [posting_address]"""
Indirizzo del messaggio (URL): [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_email_text_reply = """Risposta di [name]
Oggetto: [subject]
[text]
Indirizzo del messaggio (URL): [posting_address]"""
Indirizzo del messaggio (URL): [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_reg_user_email_subj = 'Registrazione nel Forum'
admin_reg_user_email_text = """Ciao [name],
benvenuto nel Forum!
@ -1046,7 +1115,9 @@ 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.
This is an automatically generated information message, please do not reply to this email."""
admin_activate_user_email_subj = 'Registrazione nel Forum'
admin_activate_user_email_text = """Ciao [name],
@ -1054,36 +1125,47 @@ benvenuto nel 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 = '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]
This is an automatically generated information message, please do not reply to this email."""
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]
This is an automatically generated information message, please do not reply to this email."""
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!
This is an automatically generated information message, please do not reply to this email."""
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]
This is an automatically generated information message, please do not reply to this email."""
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]"""
[activating_link]
This is an automatically generated information message, please do not reply to this email."""
new_pw_email_sj = 'Nuovi dati utente nel forum'
new_pw_email_txt = """Hi [name],
ecco i nuovi tuoi dati:
@ -1094,7 +1176,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.
This is an automatically generated information message, please do not reply to this email."""
contact_email_txt = """[message]
--

View file

@ -28,6 +28,7 @@ replies = 'Svar'
views = 'Visninger'
category = 'Kategori'
submit_button_ok = '&nbsp;OK&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'ja'
no = 'nei'
go = 'Gå'
@ -64,6 +65,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 +104,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 +122,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 +138,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 +147,9 @@ 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_page_error = 'Feil'
subnav_page = '[var]'
counter = '[total_postings] innlegg i [total_threads] tråder. Forumet har [registered_users] registrerte brukere.'
@ -170,7 +176,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'
@ -182,11 +187,11 @@ mark_linktitle = 'Marker innlegg'
unmark_linktitle = 'Fjern markering'
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'
@ -234,6 +239,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,35 +257,44 @@ 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'
score_above_threshold = '<!-- TODO -->popular entry'
[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]'
@ -289,10 +304,16 @@ 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_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
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 +352,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:'
@ -439,6 +460,12 @@ 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:'
@ -576,11 +603,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]
@ -596,7 +623,7 @@ 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_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 +643,38 @@ 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_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
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.'
@ -649,7 +694,7 @@ 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.'
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.'
@ -657,6 +702,10 @@ 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'
@ -696,12 +745,12 @@ 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>'
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'
@ -723,18 +772,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)'
@ -762,6 +811,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:'
@ -885,13 +938,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,7 +955,7 @@ 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.'
@ -920,7 +975,7 @@ 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'
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.'
@ -932,7 +987,7 @@ 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'
akismet_registered = 'sjekk innlegg fra registrerte brukere'
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 +995,9 @@ 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'
# Reset / Uninstall:
reset_forum = 'Tilbakestill forum'
@ -968,9 +1023,11 @@ 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'
backup_bookmarks = 'favoritter'
backup_read_status = 'lest-status'
backup_temp_infos = 'midlertidig informasjon'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Last ned backup-fil'
delete_selected = 'Slett valgte'
restore = 'Tilbakestill'
@ -1009,9 +1066,16 @@ update_download = 'Dersom du ikke har disse filene kan de lastes
[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 +1085,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,13 +1093,17 @@ Emne: [subject]
[text]
Lenke til innlegget: [posting_address]"""
Lenke til innlegget: [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_email_text_reply = """Svar fra [name]
Emne: [subject]
[text]
Lenke til innlegget: [posting_address]"""
Lenke til innlegget: [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_reg_user_email_subj = 'Forumregistrering'
admin_reg_user_email_text = """Hei [name],
velkommen til forumet!
@ -1048,7 +1116,9 @@ 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.
This is an automatically generated information message, please do not reply to this email."""
admin_activate_user_email_subj = 'Forumregistering'
admin_activate_user_email_text = """Hei [name],
@ -1056,36 +1126,47 @@ velkommen til forumet!
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 = 'Forumregistrering'
new_user_email_txt = """Hei [name],
velkommen til forumet!
for å aktivere kontoen din, klikk på denne lenken:
[activate_link]"""
[activate_link]
This is an automatically generated information message, please do not reply to this email."""
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]
This is an automatically generated information message, please do not reply to this email."""
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!
This is an automatically generated information message, please do not reply to this email."""
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]
This is an automatically generated information message, please do not reply to this email."""
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]"""
[activating_link]
This is an automatically generated information message, please do not reply to this email."""
new_pw_email_sj = 'Nye brukerdata for forumet'
new_pw_email_txt = """Hei [name],
here er dine nye brukerdata:
@ -1096,7 +1177,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.
This is an automatically generated information message, please do not reply to this email."""
contact_email_txt = """[message]
--

View file

@ -42,6 +42,7 @@ replies = 'Комментарии'
views = 'Просмотры'
category = 'Категория'
submit_button_ok = '&nbsp;OK&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'да'
no = 'нет'
go = 'Поехали'
@ -78,6 +79,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 = 'Сортировать по дате содания тем (по-умолчанию)'
@ -115,6 +118,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 = 'Расширенные настройки'
@ -147,6 +152,7 @@ subnav_userarea_show_posts = 'Все посты от [var]'
subnav_userarea_edit_user = 'Редактирование профиля'
subnav_userarea_edit_pw = 'Смена Пароля'
subnav_userarea_edit_mail = 'Смена адреса E-mail'
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
subnav_backup = 'Резервное копирование'
subnav_update = 'Обновление'
subnav_update_run = 'Запустить обновление'
@ -184,7 +190,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'
@ -249,6 +254,7 @@ error_invalid_form = 'Сессия просрочена! Пожал
error_form_sent_too_fast = 'Форма была отправлена слишком быстро - пожалуйста, подождите несколько секунд и повторите отправку (работает защита от автоматического заполнения форм)'
error_form_sent_too_slow = 'Форма уже не актуальна - пожалуйста, скопируйте текст и обновите страницу'
terms_of_use_agreement = 'Я согласен с [[Правилами пользования]]'
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 = 'Имя пользователя содержит специальные символы'
@ -268,6 +274,12 @@ 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 = 'Вы уверены, что хотите удалить файл с резервной копией?'
@ -276,6 +288,9 @@ 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'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
@ -304,6 +319,12 @@ several_views = '[views] просмотров'
complete_thread_marking = 'Тема полностью:'
branch_marking = 'Данная ветка темы:'
direct_replies_marking = 'Прямые ответы на данное сообщение:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
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'
@ -454,6 +475,12 @@ 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 = 'Пожалуйста, сложите два числа:'
@ -563,7 +590,7 @@ online = 'на сайте'
lock_title = 'блокировать пользователя'
unlocked = 'разблокирован'
unlock_title = 'разблокировать пользователя'
currently_online = '</-- TODO -->Currently online'
currently_online = '<!-- TODO -->Currently online'
[user_show]
user_name = 'Пользователь:'
@ -632,20 +659,38 @@ edit_user_theme = 'Шаблон:'
edit_user_default_theme = 'По умолчанию ([default_theme])'
edit_user_auto_login = 'Автозаход:'
enable_auto_login = 'разрешить автоматический вход'
edit_user_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
edit_user_notification = 'Уведомление по e-mail:'
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 = 'При смене адреса e-mail произойдет выход из форума и потребуется повторная активация учетной записи. Ключ активации будет выслан на новый адрес e-mail, будьте уверены, что он указан правильно! Учётная запись должна быть активирована в течение суток.'
@ -674,6 +719,10 @@ activation_failed = 'Не получилось активиров
error_password_too_short = 'Пароль должен состоять как минимум из [characters] символов'
error_email_alr_exists = 'Пользователь с таким адресом e-mail уже зарегистрирован'
error_reg_not_accepted_word = 'Защита от спама: Адрес е-mail или имя содержат неприемлемое слово или домен'
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-mail Администратору форума'
@ -780,6 +829,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 = 'Редактирование своих сообщений:'
@ -861,8 +914,8 @@ enable_smilies = 'Включить смайлики'
add_smiley = 'Добавить смайлик:'
add_smiley_code = 'Код:'
smilies_disabled = 'Смайлики отключены.'
'
# страницы:'
# страницы:
page_title = 'Заголовок'
page_content = 'Содержание'
page_content_desc = 'Для форматирования страницы можно использовать HTML'
@ -878,8 +931,8 @@ page_doesnt_exist = 'Эта страница не существу
delete_page_confirm = 'Вы действительно хотите удалить эту страницу?'
delete_page_submit = 'Да, удалить'
error_no_page_title = 'Отсутствует заголовок'
'
# управление пользователями:'
# управление пользователями:
user_name_empty = 'Не указано имя пользователя'
num_registerd_users = '[number] зарегистрированных пользователей'
user_id = 'ID'
@ -903,7 +956,10 @@ activate_link = 'Активировать учётную за
delete_selected_users = 'Удалить выбранных пользователей'
add_user = 'Добавить пользователя'
email_list = 'Список адресов e-mail зарегистрированных пользователей'
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 = 'Вы уверены, что хотите удалить следующих пользователей?'
@ -917,7 +973,7 @@ 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] дней назад.'
@ -985,9 +1041,11 @@ backup_categories = 'категорий'
backup_pages = 'страниц'
backup_smilies = 'смайликов'
backup_banlists = 'забаненных'
backup_bookmarks = '<-- TODO -->bookmarks'
backup_read_status = '<-- TODO -->read status'
backup_temp_infos = '<-- TODO -->temporary informations'
backup_bookmarks = '<!-- TODO -->bookmarks'
backup_read_status = '<!-- TODO -->read status'
backup_temp_infos = '<!-- TODO -->temporary informations'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Скачать файл резервной копии'
delete_selected = 'Удалить выбранные'
restore = 'Восстановление'
@ -1026,9 +1084,16 @@ update_download = 'Если у вас ещё нет этих ф
[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]
[name] ответил на сообщение \"[original_subject]\":
Тема: [subject]
[text]
URL этого сообщения: [posting_address]
@ -1038,7 +1103,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,13 +1111,17 @@ admin_email_text = """Новое сообщение от [name]
[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]!
Добро пожаловать на форум!
@ -1065,7 +1134,9 @@ 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 = 'Регистрация на форуме'
admin_activate_user_email_text = """Здравствуйте, [name]!
@ -1073,36 +1144,47 @@ admin_activate_user_email_text = """Здравствуйте, [name]!
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]!
Добро пожаловать на форум!
Для активации вашей учётной записи проследуйте по ссылке:
[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]
Адрес e-mail: [email]
ВНИМАНИЕ! Для того, чтобы этот пользователь мог войти на форум, его необходимо разблокировать!"""
ВНИМАНИЕ! Для того, чтобы этот пользователь мог войти на форум, его необходимо разблокировать!
This is an automatically generated information message, please do not reply to this email."""
edit_address_email_sj = 'Активация учётной записи после смены адреса e-mail'
edit_address_email_txt = """Здравствуйте, [name]!
Адрес e-mail был изменён. Сейчас вам необходимо снова активировать вашу учётную запись, перейдя по ссылке:
[activate_link]"""
[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]"""
[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]!
Ваши новые данные:
@ -1113,7 +1195,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]
--

View file

@ -31,6 +31,7 @@ replies = 'Contestaciones'
views = 'Vistas'
category = 'Categoria'
submit_button_ok = '&nbsp;OK&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'si'
no = 'no'
go = 'Ir'
@ -67,6 +68,8 @@ search_default_value = 'Buscar …'
search_title = 'Busqueda de entradas'
new_topic_link = 'Nuevo mensaje'
new_topic_link_title = 'Publicar un nuevo mensaje'
back_to_top_link = '<!-- TODO -->To top'
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
order_link = 'Ordenar'
order_link_title_1 = 'Ordenar por la fecha de la contestacion'
order_link_title_2 = 'Ordenar por la fecha del hilo (default)'
@ -104,6 +107,8 @@ back_to_entry_link = 'Volver a la entrada [name]'
back_to_entry_link_title = 'Volver a la entrada [name]'
subnav_login = 'Conexion'
subnav_pw_forgotten = 'Contrasena olvidada'
subnav_accept_dps = '<!-- TODO -->Accept the data privacy statement'
subnav_accept_tou = '<!-- TODO -->Accept the terms of use agreement'
subnav_admin_area = 'Area de Administracion'
subnav_settings = 'Configuracion del Foro'
subnav_advanced_settings = 'Configuraciones avanzadas'
@ -136,6 +141,7 @@ subnav_userarea_show_posts = 'Publicado por [var]'
subnav_userarea_edit_user = 'Editar perfil'
subnav_userarea_edit_pw = 'Cambiar Contrasena'
subnav_userarea_edit_mail = 'Cambiar direcion E-mail'
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
subnav_backup = 'Copia de seguridad'
subnav_update = 'Actualizar'
subnav_update_run = 'Actualizar'
@ -173,7 +179,6 @@ error_invalid_date_format = 'Formato de fecha de nacimiento no valido (AAA
error_invalid_date = 'Fecha de nacimiento no valida'
error_email_wrong = 'La direccion de correo electronico no es valida'
error_hp_wrong = 'La direccionpagina principal no es valida
error_pw_conf_wrong = 'La contrasena no coincide con la anterior
error_akismet_connection = 'Servidor de tiempo de espera, por favor, intentelo de nuevo!
error_akismet_connection_admin = 'No se ha podido conectar con el servidor Akismet para verificar la clave de API!
error_akismet_api_key = 'No es valida la clave de Akismet'
@ -237,6 +242,7 @@ error_invalid_form = 'La sesion ha caducado! Por favor, copie el te
error_form_sent_too_fast = 'El formulario se presento muy rapido - por favor, espere unos segundos y vuelva a intentarlo (Sistema Automatizado de prevencion de envio de formularios)'
error_form_sent_too_slow = 'La formulario no es valido - Por favor, copia el texto y vuelva a cargar la pagina '
terms_of_use_agreement = 'Estoy de acuerdo [[T&Condiciones de uso]]'
data_privacy_agreement = '<!-- TODO -->I agree to the [[data privacy statement]]'
error_not_accepted_word = 'Palabra no aceptada: [not_accepted_word]'
error_not_accepted_words = 'Palabras no aceptadas: [not_accepted_words]'
error_username_invalid_chars = 'El nombre de usuario contiene caracteres especiales'
@ -256,6 +262,12 @@ error_no_subject = 'No ha sido ingresado el asunto'
error_no_text = 'No ha sido ingresado el mensaje'
terms_of_use_error_register = 'Usted tiene que estar de acuerdo con los terminos de uso con el fin de completar el registro'
terms_of_use_error_posting = 'Usted tiene que estar de acuerdo con los terminos de uso con el fin de presentar este mensaje'
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 = 'activar todo'
uncheck_all = 'desactivar todo'
delete_backup_confirm = '¿Estas seguro que quieres eliminar este archivo de copia de seguridad?'
@ -264,6 +276,9 @@ drag_and_drop_title = 'Arrastras & soltar para mover hacia arriba o
show_all_postings_link = 'mostrar mensajes'
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'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
@ -292,6 +307,12 @@ several_views = '[views] vistas'
complete_thread_marking = 'Hilo completo:'
branch_marking = 'Respuesta reciente:'
direct_replies_marking = 'Respuestas directas a este anuncio:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
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'
@ -442,6 +463,12 @@ report_flag_ham_submit = 'Informar y marcar como spam'
flag_ham_submit = 'Marcar como bueno (ham)'
no_authorisation_delete = 'El mensaje no se puede eliminar! Tal vez el plazo de para suprimir mensajes ha expirado, el hilo esta bloqueado o que ya hay respuestas a este anuncio.'
[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 = 'Verificacion de proteccion anti-spam:
captcha_expl_math = 'Por favor suma los 2 numeros:
@ -619,20 +646,38 @@ edit_user_theme = 'Tema:'
edit_user_default_theme = 'Default ([default_theme])'
edit_user_auto_login = 'Inicio de sesion automatico'
enable_auto_login = 'Habilitar Inicio de sesion automatico'
edit_user_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
edit_user_notification = 'E-mail notificacion:'
admin_mod_notif_posting = 'Una vez que un nuevo mensaje ha sido enviado'
admin_mod_notif_register = 'Una vez que un nuevo usuario ha firmado'
userdata_submit_button = 'OK-Guardar'
profile_saved = 'Su perfil ha sido guardado.'
pw_changed = 'La contrasena se ha cambiado.'
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 = 'Contrasena:'
error_pw_wrong = 'La contrasena es incorrecta'
[edit_pw]
edit_pw_old = 'Antigua contrasena:'
edit_pw_new = 'Nueva contrasena:'
edit_pw_conf = 'Repite la nueva contrasena:'
error_old_pw_wrong = 'La antigua contrasena es incorrecta'
error_pw_conf_uneven = 'Las nuevas contrasenas no coinciden'
error_new_pw_too_short = 'La nueva contrasena debe contener al menos [characters] caracteres'
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 = 'Cuando cambias de correo se cierra la sesion y la cuenta debe ser activada de nuevo. Se enviara a tu correo una clave de activacion. Asegurate que el nuevo e-mail es correcto! La cuenta debe ser activada antes de 24 horas.'
@ -660,6 +705,10 @@ activation_failed = 'La activacion de la cuenta ha sido fallida'
error_password_too_short = 'La contrasena debe contener al menos [characters] caracteres'
error_email_alr_exists = 'Ya existe un usuario con esta direccion de e-mail'
error_reg_not_accepted_word = 'Spam protecion: El E-mail o en nombre de usuario contienen palabras no aceptadas por el dominio'
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-mail al administrador del foro'
@ -770,6 +819,10 @@ terms_of_use_settings = 'Teminos y Condiciones de uso'
terms_of_use_settings_desc = 'Obligar a los usuarios no registrados a aceptar los Teminos y Condiciones de uso cuando escriban sus mensajes y se registren'
terms_of_use_settings_enabled = 'Teminos y Condiciones de uso Habilitadas'
terms_of_use_url = 'Teminos y Condiciones de uso 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 = 'Editando mensajes'
edit_postings_desc = 'Comportamientos para la edicion de mensajes'
edit_own_postings = 'Edicion de nuestros mensajes:'
@ -893,7 +946,10 @@ activate_link = 'Activar la cuenta'
delete_selected_users = 'Eliminar seleccionados'
add_user = 'Anadir usuario'
email_list = 'E-mail lista de usuarios registrados'
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 = 'Limpiar datos de usuario'
edit_user_avatar = '<!-- TODO -->Avatar:'
delete_avatar = 'Borrar avatar'
delete_user_confirmation = 'Esta usted seguro que desea borrar este usuario?'
delete_users_confirmation = 'Estas seguro que quieres eliminar los siguientes usuarios?'
@ -906,7 +962,7 @@ register_pw = 'Contrasena:'
register_pw_conf = 'Confirmar contrasena:'
register_send_userdata = 'Enviar los datos de usuario a la cuenta de correos especificada'
error_send_userdata = 'Si dejas en blanco la contrasena, los datos de usuario se enviaran al correo especificado'
error_email_wrong = 'La direccion de e-mail es incorrecta'
admin_reg_error_email_wrong = 'La direccion de e-mail es incorrecta'
new_user_registered = 'Acabas de registrar el usuario "[name]".'
new_user_reg_send_error = 'Acabas de registrar el usuario "[name]" pero no ha sido posible enviarte los datos de usuario.'
clear_userdata_condition = 'Borrar los usuarios que hayan iniciado sesion [logins] veces y la ultima vez hace mas de [days] dias.'
@ -977,6 +1033,8 @@ backup_banlists = 'Listas prohibidas'
backup_bookmarks = '<!-- TODO -->bookmarks'
backup_read_status = '<!-- TODO -->read status'
backup_temp_infos = '<!-- TODO -->temporary informations'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Descargar archivo de backup'
delete_selected = 'Borrar seleccion'
restore = 'Restaurar'
@ -1015,9 +1073,16 @@ update_download = 'Si no tienes estos archivos puedes descargarl
[emails]
email_subject = 'Responder en "[original_subject]"'
email_text = """Hola [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] ha enviado una respuesta a \"[original_subject]\":
Asunto: [subject]
[text]
Direccion del mensaje: [posting_address]
@ -1027,7 +1092,7 @@ Direccion del mensaje: [posting_address]
[original_text]"""
email_text_delayed_addition = """---
Este mensaje se retraso porque tuvo que ser activado manualmente"""
Este mensaje se retraso porque tuvo que ser activado manualmente. This is an automatically generated email, please do not reply to this email."""
admin_email_subject = 'Nuevo mensaje en el foro: [subject]'
admin_email_text = """Nuevo mensaje de [name]
@ -1035,13 +1100,17 @@ Asunto: [subject]
[text]
Direccion del mensaje: [posting_address]"""
Direccion del mensaje: [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_email_text_reply = """Respuesta de [name]
Asunto: [subject]
[text]
Direccion del mensaje: [posting_address]"""
Direccion del mensaje: [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_reg_user_email_subj = 'Nuevo registro en el foro'
admin_reg_user_email_text = """Hola [name],
Bienvenido al foro!
@ -1054,7 +1123,9 @@ Contrasena: [password]
Direccion para acceder:
[login_link]
Puedes cambiar la contrasena despues de entrar."""
Puedes cambiar la contrasena despues de entrar.
This is an automatically generated information message, please do not reply to this email."""
admin_activate_user_email_subj = 'Registro en el foro'
admin_activate_user_email_text = """Hola [name],
@ -1062,37 +1133,48 @@ Bienvenido al foro!
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 = 'Registro en el foro'
new_user_email_txt = """Hola [name],
Bienvenido al foro!
Para activar tu cuenta por favor visita el siguiente enlace (HAZ SOLO UN CLICK):
[activate_link]"""
[activate_link]
This is an automatically generated information message, please do not reply to this email."""
new_user_notif_sj = 'Nueva suscripcion'
new_user_notif_txt = """Hola [recipient],
Un nuevo usuario se ha suscrito al foro.
Nombre de usuario: [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 = """Hola [recipient],
Un nuevo usuario se ha suscrito al foro.
Nombre de usuario: [name]
E-mail: [email]
IMPORTANTE: Tienes que desbloquear a este usuario para que pueda iniciar sesion!"""
IMPORTANTE: Tienes que desbloquear a este usuario para que pueda iniciar sesion!
This is an automatically generated information message, please do not reply to this email."""
edit_address_email_sj = 'Activacion de cuenta despues de cambiar el e-mail'
edit_address_email_txt = """Hola [name],
La direccion de e-mail ha cambiado. Puedes activar la cuenta de nuevo usando el siguiente enlace (HAZ SOLO UN CLICK):
[activate_link]"""
[activate_link]
This is an automatically generated information message, please do not reply to this email."""
pwf_activating_email_sj = 'Solicitar una nueva contrasena'
pwf_activating_email_txt = """Hola [name],
El foro [forum_address] te ha enviado este correo porque has solicitado una nueva contrasena. Por favor pulsa el enlace para confirmar tu solicitud (HAZ UN SOLO CLICK), se generara una nueva contrasena y te la enviaremos por correo. Si has recibido este mensaje por error por favor ignoralo.
Enlace para confirmar tu solicitud:
[activating_link]"""
[activating_link]
This is an automatically generated information message, please do not reply to this email."""
new_pw_email_sj = 'Contrasena solicitada'
new_pw_email_txt = """Hola [name],
Aqui estan tus datos de acceso:
@ -1103,7 +1185,9 @@ Contrasena: [password]
Pulsa aqui para acceder directamente:
[login_link]
Puedes cambiar la contrasena despues de entrar."""
Puedes cambiar la contrasena despues de entrar.
This is an automatically generated information message, please do not reply to this email."""
contact_email_txt = """[message]
--

View file

@ -40,6 +40,7 @@ replies = 'Svar'
views = 'Visningar'
category = 'Kategori'
submit_button_ok = '&nbsp;Skicka&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'Ja'
no = 'Nej'
go = 'Kör'
@ -76,6 +77,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 +116,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 = '<!-- TODO -->Accept the data privacy statement'
subnav_accept_tou = '<!-- TODO -->Accept the terms of use agreement'
subnav_admin_area = 'Administrera'
subnav_settings = 'Foruminställningar'
subnav_advanced_settings = 'Avancerade inställningar'
@ -145,6 +150,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 = '<!-- TODO -->Delete account'
subnav_backup = 'Säkerhetskopia'
subnav_update = 'Uppdatera'
subnav_update_run = 'Kör uppdatering'
@ -182,7 +188,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!'
@ -246,6 +251,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 = '<!-- TODO -->I agree to the [[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,6 +271,12 @@ 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 = '<!-- 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 = 'Markera alla'
uncheck_all = 'Avmarkera alla'
delete_backup_confirm = 'Vill Du verkligen radera den här säkerhetskopian?'
@ -273,6 +285,9 @@ 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 = '<!-- TODO -->Show password in plain text'
hide_password_title = '<!-- TODO -->Hide password'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = 'OK - Radera bokmärke'
@ -301,6 +316,12 @@ several_views = '[views] visningar'
complete_thread_marking = 'Hela tråden:'
branch_marking = 'Nuvarande gren av tråd:'
direct_replies_marking = 'Direkt svar på detta inlägg:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
add_bookmark_message_linkname = 'Spara bokmärke'
add_bookmark_message_linktitle = 'Spara inlägg i din bokmärke lista'
delete_bookmark_message_linkname ='Radera bokmärke'
@ -451,6 +472,12 @@ 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 = '<!-- 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 = 'Spamskyddtest:'
captcha_expl_math = 'Summera siffrorna:
@ -628,20 +655,38 @@ 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_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
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 = '<!-- 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 = '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 = '<!-- 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 = '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.'
@ -669,6 +714,10 @@ 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 = '<!-- 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 till administratören'
@ -773,6 +822,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 = '<!-- 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 = 'Ändra inlägg'
edit_postings_desc = 'Inställningar för redigering av inlägg'
edit_own_postings = 'Ändra egna inlägg:'
@ -896,7 +949,10 @@ activate_link = 'Aktivera kontot'
delete_selected_users = 'Ta bort valda'
add_user = 'Lägg till användar'
email_list = 'E-postlista med alla användare'
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 = 'Radera äldre användare'
edit_user_avatar = '<!-- TODO -->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,9 +965,9 @@ 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'
@ -980,6 +1036,8 @@ backup_banlists = 'Bannlysningslistor'
backup_bookmarks = 'Bokmärken'
backup_read_status = 'Lässtatus'
backup_temp_infos = 'Tillfälliga uppgifter'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Ladda ner säkerhetskopian'
delete_selected = 'Radera markerad'
restore = 'Återställ'
@ -1018,9 +1076,16 @@ update_download = 'Om Du inte laddat ner filerna kan Du göra de
[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 +1095,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,13 +1103,17 @@ admin_email_text = """Nytt inlägg av [name]
[text]
Länk till inlägget: [posting_address]"""
Länk till inlägget: [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_email_text_reply = """Svar av [name]
Ämne: [subject]
[text]
Länk till inlägget: [posting_address]"""
Länk till inlägget: [posting_address]
This is an automatically generated information message, please do not reply to this email."""
admin_reg_user_email_subj = 'Registrering på forum'
admin_reg_user_email_text = """Hej [name],
Välkommen till forumet!
@ -1057,7 +1126,9 @@ 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!
This is an automatically generated information message, please do not reply to this email."""
admin_activate_user_email_subj = 'Registrering på forum'
admin_activate_user_email_text = """Hej [name],
@ -1065,37 +1136,48 @@ Välkommen till forumet!
Logga in direkt med denna länk:
[login_link]
"""
This is an automatically generated information message, please do not reply to this email."""
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]"""
[activate_link]
This is an automatically generated information message, please do not reply to this email."""
new_user_notif_sj = 'Ny användar registrerad'
new_user_notif_txt = """Hej [recipient],
En ny användar har registrerat sig på forumet.
Användarnamn: [name]
E-post: [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 användar har registrerat sig på forumet.
Användarnamn: [name]
E-post: [email]
VIKTIGT: Denna användar måste aktiveras!"""
VIKTIGT: Denna användar måste aktiveras!
This is an automatically generated information message, please do not reply to this email."""
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]
This is an automatically generated information message, please do not reply to this email."""
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]
This is an automatically generated information message, please do not reply to this email."""
new_pw_email_sj = 'Nya användaruppgifter till forumet'
new_pw_email_txt = """Hej [name],
Här är dina nya användaruppgifter:
@ -1106,7 +1188,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.
This is an automatically generated information message, please do not reply to this email."""
contact_email_txt = """[message]
--

View file

@ -27,6 +27,7 @@ replies = 'பதில்'
views = 'காட்ச்சிகள்'
category = 'வகை'
submit_button_ok = '&nbsp;சரி அநுப்பலாம்&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'ஆம்'
no = 'இல்லை'
go = 'பொ'
@ -63,6 +64,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 +103,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 +137,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 = 'புதுப்பிக்க செயல்படுத்து'
@ -169,7 +175,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 சரியானது அல்ல'
@ -233,6 +238,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,6 +258,12 @@ 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 = 'காத்து வைத்த கோப்பை அழிக்க வேண்டுமா?'
@ -260,6 +272,9 @@ 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'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
@ -288,10 +303,16 @@ several_views = '[views] காட்ச்சிகள்'
complete_thread_marking = 'முழுமையான திரட்:'
branch_marking = 'நிகழும் திரட்டின் கிளை:'
direct_replies_marking = 'போஸ்டின் நேரடி பதில்:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
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'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
edit_message_linkname = 'புதுபிக்கவும்'
edit_message_linktitle = 'போஸ்டிங்கை புதுபிக்கவும்'
delete_message_linkname = 'அழிக்க'
@ -438,6 +459,12 @@ 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 = 'தயவு செய்து இரணடு எண்களை கூட்டுக:
@ -615,20 +642,38 @@ edit_user_theme = 'மைய்ய கருத்து:'
edit_user_default_theme = '<!-- TODO -->Default ([default_theme])'
edit_user_auto_login = 'தானாகவே பொது மன்றத்திநுள் நுழை'
enable_auto_login = 'தானாகவே பொது மன்றத்திநுள் நுழையுமாறு செய்'
edit_user_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
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 = 'மின்-அசல் விலாசம் மாற்றும்போது, உங்கள் பொது மன்ற கணக்கு மீண்டும் செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டும். அதற்கான செயல்படுத்தும் சாவி இணைப்பை உங்களின் புதிய மின் - அஞ்சலுக்கு அநுப்பப்படும். ஆதலால் உங்கள் புதிய மின்-அஞ்சலில் விலாசம் சரியானதாக இருக்குமாறு பார்த்துக்கொள்ள வேண்டும்.மேலும் உங்கள் பொது மன்ற கணக்கு ஒரு நாளுக்குள் செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டும்.'
@ -656,6 +701,10 @@ 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 = 'பொது மன்ற நிர்வாகியின் மின்-அசல்'
@ -760,6 +809,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 = 'சொந்த போஸ்டிங்கை மாற்றுக'
@ -883,7 +936,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,7 +952,7 @@ 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] நாளுக்கு மேல் நுழைந்திருப்பவரையும் அழிக்கவும்.'
@ -967,6 +1023,8 @@ backup_banlists = 'தடைவிதிக்கப்பட்
backup_bookmarks = '<!-- TODO -->bookmarks'
backup_read_status = '<!-- TODO -->read status'
backup_temp_infos = '<!-- TODO -->temporary informations'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'முழுமையாக காத்து வைத்த கோப்பை இங்கு கொண்டுவருக'
delete_selected = 'தேர்வு செய்தவற்றை அழிக்க'
restore = 'திரும்பப்பெரு'
@ -1005,9 +1063,16 @@ update_download = 'நீங்கள் இன்னும்
[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 +1082,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,13 +1090,17 @@ 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,7 +1113,9 @@ 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],
@ -1052,36 +1123,46 @@ 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]"""
[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],
புதிய சந்தாதாரின் விபரம்:
@ -1092,7 +1173,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]
--

View file

@ -11,10 +11,6 @@ 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
@ -34,6 +30,7 @@ replies = 'Yanıtlar'
views = 'Görünüm'
category = 'Kategori'
submit_button_ok = '&nbsp;Tamam&nbsp;'
submit_button_cancel = '<!-- TODO -->&nbsp;Cancel&nbsp;'
yes = 'evet'
no = 'hayır'
go = 'Git'
@ -70,6 +67,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)'
@ -107,6 +106,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 +140,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'
@ -176,7 +178,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ı'
@ -240,6 +241,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'
@ -259,6 +261,12 @@ 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?'
@ -267,6 +275,9 @@ drag_and_drop_title = 'aşağı / yukarı taşımak için sürükle
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'
score_above_threshold = '<!-- TODO -->popular entry'
[bookmark]
delete_bookmark_submit = '<!-- TODO -->OK - Delete Bookmark'
@ -295,6 +306,12 @@ several_views = '[views] kez okundu'
complete_thread_marking = 'Tüm başlık:'
branch_marking = 'Başlığın mevcut listesi:'
direct_replies_marking = 'Bu iletiye gelen direkt yanıtlar:'
add_vote_message_linkname = '<!-- TODO -->Like it!'
add_vote_message_linktitle = '<!-- TODO -->Add a positive vote for this posting'
delete_vote_message_linkname = '<!-- TODO -->Revoke vote'
delete_vote_message_linktitle = '<!-- TODO -->Revoke vote'
message_score1 = '<!-- TODO -->liked by one user'
message_score = '<!-- TODO -->liked by [score] user'
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'
@ -445,6 +462,12 @@ 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:'
@ -622,20 +645,38 @@ 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_voting = '<!-- TODO -->Right to vote:'
voting_allowed = '<!-- TODO -->yes'
voting_not_allowed = '<!-- TODO -->no'
voting_option_0 = '<!-- TODO -->no'
voting_option_1 = '<!-- TODO -->no (automatically)'
voting_option_2 = '<!-- TODO -->yes (automatically)'
voting_option_3 = '<!-- TODO -->yes'
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 = '<!-- 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 = 'Ş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.'
@ -663,6 +704,10 @@ 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'
@ -767,6 +812,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:'
@ -890,7 +939,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,7 +955,7 @@ 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.'
@ -974,6 +1026,8 @@ backup_banlists = 'engel listesi'
backup_bookmarks = '<!-- TODO -->bookmarks'
backup_read_status = '<!-- TODO -->read status'
backup_temp_infos = '<!-- TODO -->temporary informations'
backup_subscriptions = '<!-- TODO -->subscriptions'
backup_tags = '<!-- TODO -->tags'
download_backup_file = 'Yedekleme dosyası indir'
delete_selected = 'Seçiliyi sil'
restore = 'Geri getir'
@ -1012,9 +1066,16 @@ update_download = 'Eğer henüz bu dosyalara sahip değilseniz [
[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 +1085,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,13 +1093,17 @@ 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!
@ -1051,7 +1116,9 @@ 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],
@ -1059,36 +1126,47 @@ 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]"""
[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:
@ -1099,7 +1177,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]
--

View file

@ -1,5 +1,5 @@
<?php if (!defined('BB2_CWD')) die("I said no cheating!");
define('BB2_VERSION', "2.2.19");
define('BB2_VERSION', "2.2.20");
// Bad Behavior entry point is bb2_start()
// If you're reading this, you are probably lost.
@ -98,7 +98,7 @@ function bb2_start($settings)
// Reconstruct the HTTP entity, if present.
$request_entity = array();
if (!strcasecmp($_SERVER['REQUEST_METHOD'], "POST") || !strcasecmp($_SERVER['REQUEST_METHOD'], "PUT")) {
if (isset($_SERVER['REQUEST_METHOD']) && (!strcasecmp($_SERVER['REQUEST_METHOD'], "POST") || !strcasecmp($_SERVER['REQUEST_METHOD'], "PUT"))) {
foreach ($_POST as $h => $v) {
if (is_array($v)) {
# Workaround, see Bug #12

View file

@ -2,15 +2,11 @@
// Bad Behavior browser screener
// Deprecated. Remove any cookies if they exist.
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());
}
// Delete existing cookie, if any
setcookie($cookie_name, $cookie_value, 1, bb2_relative_path());
}
function bb2_screener_javascript($settings, $package, $cookie_name, $cookie_value)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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 (
)
)
);
?>

View file

@ -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
)
);
?>

View file

@ -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 (
)
)
);
?>

View file

@ -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(
'&amp;new','&lt;/script&gt;','&lt;?php','&lt;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
);
?>

View file

@ -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\$_\.\|\#|^&])"
)
)
);
?>

View file

@ -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 (
)
)
);
?>

View file

@ -11,27 +11,28 @@
* @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
{
/**
/**
* Filepath to Smarty root
*
* @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
@ -75,7 +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', '>=')) {
if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
} else {
spl_autoload_register(array(__CLASS__, 'autoload'));
@ -89,18 +90,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

View file

@ -100,6 +100,8 @@ class SmartyBC extends Smarty
* @param string $function_impl the name of the PHP function to register
* @param bool $cacheable
* @param mixed $cache_attrs
*
* @throws \SmartyException
*/
public function register_function($function, $function_impl, $cacheable = true, $cache_attrs = null)
{
@ -153,6 +155,8 @@ class SmartyBC extends Smarty
* @param string $block_impl PHP function to register
* @param bool $cacheable
* @param mixed $cache_attrs
*
* @throws \SmartyException
*/
public function register_block($block, $block_impl, $cacheable = true, $cache_attrs = null)
{
@ -175,6 +179,8 @@ class SmartyBC extends Smarty
* @param string $function name of template function
* @param string $function_impl name of PHP function to register
* @param bool $cacheable
*
* @throws \SmartyException
*/
public function register_compiler_function($function, $function_impl, $cacheable = true)
{
@ -196,6 +202,8 @@ class SmartyBC extends Smarty
*
* @param string $modifier name of template modifier
* @param string $modifier_impl name of PHP function to register
*
* @throws \SmartyException
*/
public function register_modifier($modifier, $modifier_impl)
{
@ -238,6 +246,8 @@ class SmartyBC extends Smarty
* to a template before compiling
*
* @param callable $function
*
* @throws \SmartyException
*/
public function register_prefilter($function)
{
@ -259,6 +269,8 @@ class SmartyBC extends Smarty
* to a compiled template after compilation
*
* @param callable $function
*
* @throws \SmartyException
*/
public function register_postfilter($function)
{
@ -280,6 +292,8 @@ class SmartyBC extends Smarty
* to a template output
*
* @param callable $function
*
* @throws \SmartyException
*/
public function register_outputfilter($function)
{
@ -301,6 +315,8 @@ class SmartyBC extends Smarty
*
* @param string $type filter type
* @param string $name filter name
*
* @throws \SmartyException
*/
public function load_filter($type, $name)
{
@ -341,7 +357,9 @@ class SmartyBC extends Smarty
* @param string $cache_id
* @param string $compile_id
*
* @return boolean
* @return bool
* @throws \Exception
* @throws \SmartyException
*/
public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
{
@ -377,7 +395,8 @@ class SmartyBC extends Smarty
*
* @param string $tpl_file
*
* @return boolean
* @return bool
* @throws \SmartyException
*/
public function template_exists($tpl_file)
{

View file

@ -0,0 +1,17 @@
<?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')) {
require dirname(__FILE__) . '/Autoloader.php';
}
Smarty_Autoloader::register(true);

View file

@ -5,22 +5,21 @@
* @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}
* (Smarty online manual)
@ -32,12 +31,17 @@
*
* @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;
@ -68,11 +72,11 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
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
@ -84,16 +88,17 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
}
// 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);
}

View file

@ -8,8 +8,8 @@
/**
* 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>
@ -63,7 +63,7 @@ function smarty_function_counter($params, $template)
$counter[ 'direction' ] = $params[ 'direction' ];
}
if ($counter[ 'direction' ] == "down") {
if ($counter[ 'direction' ] === 'down') {
$counter[ 'count' ] -= $counter[ 'skip' ];
} else {
$counter[ 'count' ] += $counter[ 'skip' ];

View file

@ -8,12 +8,12 @@
/**
* 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,13 +22,13 @@
* - 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}
* (Smarty online manual)
@ -55,12 +55,12 @@ function smarty_function_cycle($params, $template)
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' ];

View file

@ -8,8 +8,8 @@
/**
* Smarty {fetch} plugin
* Type: function<br>
* Name: fetch<br>
* Type: function
* Name: fetch
* Purpose: fetch file, web or ftp data and display results
*
* @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
@ -25,7 +25,7 @@
function smarty_function_fetch($params, $template)
{
if (empty($params[ 'file' ])) {
trigger_error("[plugin] fetch parameter 'file' cannot be empty", E_USER_NOTICE);
trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE);
return;
}
@ -55,15 +55,15 @@ function smarty_function_fetch($params, $template)
}
$content = '';
if ($protocol == 'http') {
if ($protocol === 'http') {
// http fetch
if ($uri_parts = parse_url($params[ 'file' ])) {
// set defaults
$host = $server_name = $uri_parts[ 'host' ];
$timeout = 30;
$accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
$agent = "Smarty Template Engine " . Smarty::SMARTY_VERSION;
$referer = "";
$accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
$agent = 'Smarty Template Engine ' . Smarty::SMARTY_VERSION;
$referer = '';
$uri = !empty($uri_parts[ 'path' ]) ? $uri_parts[ 'path' ] : '/';
$uri .= !empty($uri_parts[ 'query' ]) ? '?' . $uri_parts[ 'query' ] : '';
$_is_proxy = false;
@ -81,29 +81,29 @@ function smarty_function_fetch($params, $template)
// loop through parameters, setup headers
foreach ($params as $param_key => $param_value) {
switch ($param_key) {
case "file":
case "assign":
case "assign_headers":
case 'file':
case 'assign':
case 'assign_headers':
break;
case "user":
case 'user':
if (!empty($param_value)) {
$user = $param_value;
}
break;
case "pass":
case 'pass':
if (!empty($param_value)) {
$pass = $param_value;
}
break;
case "accept":
case 'accept':
if (!empty($param_value)) {
$accept = $param_value;
}
break;
case "header":
case 'header':
if (!empty($param_value)) {
if (!preg_match('![\w\d-]+: .+!', $param_value)) {
trigger_error("[plugin] invalid header format '" . $param_value . "'", E_USER_NOTICE);
trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE);
return;
} else {
@ -111,41 +111,41 @@ function smarty_function_fetch($params, $template)
}
}
break;
case "proxy_host":
case 'proxy_host':
if (!empty($param_value)) {
$proxy_host = $param_value;
}
break;
case "proxy_port":
case 'proxy_port':
if (!preg_match('!\D!', $param_value)) {
$proxy_port = (int) $param_value;
} else {
trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE);
trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE);
return;
}
break;
case "agent":
case 'agent':
if (!empty($param_value)) {
$agent = $param_value;
}
break;
case "referer":
case 'referer':
if (!empty($param_value)) {
$referer = $param_value;
}
break;
case "timeout":
case 'timeout':
if (!preg_match('!\D!', $param_value)) {
$timeout = (int) $param_value;
} else {
trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE);
trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE);
return;
}
break;
default:
trigger_error("[plugin] unrecognized attribute '" . $param_key . "'", E_USER_NOTICE);
trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE);
return;
}
@ -185,7 +185,7 @@ function smarty_function_fetch($params, $template)
}
}
if (!empty($user) && !empty($pass)) {
fputs($fp, "Authorization: BASIC " . base64_encode("$user:$pass") . "\r\n");
fputs($fp, 'Authorization: BASIC ' . base64_encode("$user:$pass") . "\r\n");
}
fputs($fp, "\r\n");

View file

@ -5,22 +5,21 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_checkboxes} function plugin
* File: function.html_checkboxes.php<br>
* Type: function<br>
* Name: html_checkboxes<br>
* Date: 24.Feb.2003<br>
* Purpose: Prints out a list of checkbox input types<br>
* File: function.html_checkboxes.php
* Type: function
* Name: html_checkboxes
* Date: 24.Feb.2003
* Purpose: Prints out a list of checkbox input types
* Examples:
* <pre>
*
* {html_checkboxes values=$ids output=$names}
* {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
* {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
* </pre>
*
* Params:
* <pre>
*
* - name (optional) - string default "checkbox"
* - values (required) - array
* - options (optional) - associative array
@ -29,7 +28,7 @@
* - output (optional) - the output next to each checkbox
* - assign (optional) - assign the output as an array to this variable
* - escape (optional) - escape the content (not value), defaults to true
* </pre>
*
*
* @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
* (Smarty online manual)
@ -37,15 +36,17 @@
* @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0
*
* @param array $params parameters
* @param object $template template object
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
*
* @return string
* @uses smarty_function_escape_special_chars()
* @throws \SmartyException
*/
function smarty_function_html_checkboxes($params, $template)
function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$name = 'checkbox';
$values = null;
@ -87,11 +88,11 @@ function smarty_function_html_checkboxes($params, $template)
$selected = array();
foreach ($_val as $_sel) {
if (is_object($_sel)) {
if (method_exists($_sel, "__toString")) {
if (method_exists($_sel, '__toString')) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
} else {
trigger_error("html_checkboxes: selected attribute contains an object of class '" .
get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
trigger_error('html_checkboxes: selected attribute contains an object of class \'' .
get_class($_sel) . '\' without __toString() method', E_USER_NOTICE);
continue;
}
} else {
@ -100,11 +101,11 @@ function smarty_function_html_checkboxes($params, $template)
$selected[ $_sel ] = true;
}
} elseif (is_object($_val)) {
if (method_exists($_val, "__toString")) {
if (method_exists($_val, '__toString')) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) .
"' without __toString() method", E_USER_NOTICE);
trigger_error('html_checkboxes: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method', E_USER_NOTICE);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
@ -127,7 +128,7 @@ function smarty_function_html_checkboxes($params, $template)
case 'readonly':
if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
trigger_error("html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
E_USER_NOTICE);
}
@ -143,7 +144,7 @@ function smarty_function_html_checkboxes($params, $template)
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
}
break;
}
@ -176,18 +177,30 @@ function smarty_function_html_checkboxes($params, $template)
return implode("\n", $_html_result);
}
}
/**
* @param $name
* @param $value
* @param $output
* @param $selected
* @param $extra
* @param $separator
* @param $labels
* @param $label_ids
* @param bool $escape
*
* @return string
*/
function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels,
$label_ids, $escape = true)
$label_ids, $escape = true)
{
$_output = '';
if (is_object($value)) {
if (method_exists($value, "__toString")) {
if (method_exists($value, '__toString')) {
$value = (string) $value->__toString();
} else {
trigger_error("html_options: value is an object of class '" . get_class($value) .
"' without __toString() method", E_USER_NOTICE);
trigger_error('html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method', E_USER_NOTICE);
return '';
}
@ -196,11 +209,11 @@ function smarty_function_html_checkboxes_output($name, $value, $output, $selecte
}
if (is_object($output)) {
if (method_exists($output, "__toString")) {
if (method_exists($output, '__toString')) {
$output = (string) $output->__toString();
} else {
trigger_error("html_options: output is an object of class '" . get_class($output) .
"' without __toString() method", E_USER_NOTICE);
trigger_error('html_options: output is an object of class \'' . get_class($output) .
'\' without __toString() method', E_USER_NOTICE);
return '';
}

View file

@ -8,20 +8,20 @@
/**
* Smarty {html_image} function plugin
* Type: function<br>
* Name: html_image<br>
* Date: Feb 24, 2003<br>
* Purpose: format HTML tags for the image<br>
* Examples: {html_image file="/images/masthead.gif"}<br>
* Output: <img src="/images/masthead.gif" width=400 height=23><br>
* Type: function
* Name: html_image
* Date: Feb 24, 2003
* Purpose: format HTML tags for the image
* Examples: {html_image file="/images/masthead.gif"}
* Output: <img src="/images/masthead.gif" width=400 height=23>
* Params:
* <pre>
*
* - file - (required) - file (and path) of image
* - height - (optional) - image height (default actual height)
* - width - (optional) - image width (default actual width)
* - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
* - path_prefix - prefix for path output (optional, default empty)
* </pre>
*
*
* @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
* (Smarty online manual)
@ -36,9 +36,10 @@
* @return string
* @uses smarty_function_escape_special_chars()
*/
function smarty_function_html_image($params, $template)
function smarty_function_html_image($params, Smarty_Internal_Template $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$alt = '';
$file = '';
@ -64,7 +65,7 @@ function smarty_function_html_image($params, $template)
if (!is_array($_val)) {
$$_key = smarty_function_escape_special_chars($_val);
} else {
throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
throw new SmartyException ("html_image: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
}
break;
@ -78,19 +79,19 @@ function smarty_function_html_image($params, $template)
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
throw new SmartyException ("html_image: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
}
break;
}
}
if (empty($file)) {
trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE);
return;
}
if ($file[ 0 ] == '/') {
if ($file[ 0 ] === '/') {
$_image_path = $basedir . $file;
} else {
$_image_path = $file;
@ -124,15 +125,15 @@ function smarty_function_html_image($params, $template)
// FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
if (!$_image_data = @getimagesize($_image_path)) {
if (!file_exists($_image_path)) {
trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE);
return;
} elseif (!is_readable($_image_path)) {
trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE);
return;
} else {
trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE);
return;
}

View file

@ -5,15 +5,14 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_options} function plugin
* Type: function<br>
* Name: html_options<br>
* Type: function
* Name: html_options
* Purpose: Prints the list of <option> tags generated from
* the passed parameters<br>
* the passed parameters
* Params:
* <pre>
*
* - name (optional) - string default "select"
* - values (required) - if no options supplied) - array
* - options (required) - if no values supplied) - associative array
@ -21,21 +20,25 @@
* - output (required) - if not options supplied) - array
* - id (optional) - string default not set
* - class (optional) - string default not set
* </pre>
*
*
* @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
*
* @param array $params parameters
* @param array $params parameters
*
* @param \Smarty_Internal_Template $template
*
* @return string
* @uses smarty_function_escape_special_chars()
* @throws \SmartyException
*/
function smarty_function_html_options($params)
function smarty_function_html_options($params, Smarty_Internal_Template $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$name = null;
$values = null;
@ -69,11 +72,11 @@ function smarty_function_html_options($params)
$selected = array();
foreach ($_val as $_sel) {
if (is_object($_sel)) {
if (method_exists($_sel, "__toString")) {
if (method_exists($_sel, '__toString')) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
} else {
trigger_error("html_options: selected attribute contains an object of class '" .
get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
trigger_error('html_options: selected attribute contains an object of class \'' .
get_class($_sel) . '\' without __toString() method', E_USER_NOTICE);
continue;
}
} else {
@ -82,11 +85,11 @@ function smarty_function_html_options($params)
$selected[ $_sel ] = true;
}
} elseif (is_object($_val)) {
if (method_exists($_val, "__toString")) {
if (method_exists($_val, '__toString')) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
trigger_error("html_options: selected attribute is an object of class '" . get_class($_val) .
"' without __toString() method", E_USER_NOTICE);
trigger_error('html_options: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method', E_USER_NOTICE);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
@ -100,7 +103,7 @@ function smarty_function_html_options($params)
case 'readonly':
if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
trigger_error("html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
E_USER_NOTICE);
}
@ -116,7 +119,7 @@ function smarty_function_html_options($params)
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
trigger_error("html_options: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
}
break;
}
@ -152,7 +155,16 @@ function smarty_function_html_options($params)
return $_html_result;
}
/**
* @param $key
* @param $value
* @param $selected
* @param $id
* @param $class
* @param $idx
*
* @return string
*/
function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx)
{
if (!is_array($value)) {
@ -168,11 +180,11 @@ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $c
$_html_class = !empty($class) ? ' class="' . $class . ' option"' : '';
$_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : '';
if (is_object($value)) {
if (method_exists($value, "__toString")) {
if (method_exists($value, '__toString')) {
$value = smarty_function_escape_special_chars((string) $value->__toString());
} else {
trigger_error("html_options: value is an object of class '" . get_class($value) .
"' without __toString() method", E_USER_NOTICE);
trigger_error('html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method', E_USER_NOTICE);
return '';
}
@ -191,7 +203,16 @@ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $c
return $_html_result;
}
/**
* @param $key
* @param $values
* @param $selected
* @param $id
* @param $class
* @param $idx
*
* @return string
*/
function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
{
$optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";

View file

@ -5,16 +5,15 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_radios} function plugin
* File: function.html_radios.php<br>
* Type: function<br>
* Name: html_radios<br>
* Date: 24.Feb.2003<br>
* Purpose: Prints out a list of radio input types<br>
* File: function.html_radios.php
* Type: function
* Name: html_radios
* Date: 24.Feb.2003
* Purpose: Prints out a list of radio input types
* Params:
* <pre>
*
* - name (optional) - string default "radio"
* - values (required) - array
* - options (required) - associative array
@ -23,13 +22,13 @@
* - output (optional) - the output next to each radio button
* - assign (optional) - assign the output as an array to this variable
* - escape (optional) - escape the content (not value), defaults to true
* </pre>
*
* Examples:
* <pre>
*
* {html_radios values=$ids output=$names}
* {html_radios values=$ids name='box' separator='<br>' output=$names}
* {html_radios values=$ids checked=$checked separator='<br>' output=$names}
* </pre>
*
*
* @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
* (Smarty online manual)
@ -42,10 +41,12 @@
*
* @return string
* @uses smarty_function_escape_special_chars()
* @throws \SmartyException
*/
function smarty_function_html_radios($params, $template)
function smarty_function_html_radios($params, Smarty_Internal_Template $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$name = 'radio';
$values = null;
@ -70,11 +71,11 @@ function smarty_function_html_radios($params, $template)
if (is_array($_val)) {
trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
} elseif (is_object($_val)) {
if (method_exists($_val, "__toString")) {
if (method_exists($_val, '__toString')) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
trigger_error("html_radios: selected attribute is an object of class '" . get_class($_val) .
"' without __toString() method", E_USER_NOTICE);
trigger_error('html_radios: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method', E_USER_NOTICE);
}
} else {
$selected = (string) $_val;
@ -112,7 +113,7 @@ function smarty_function_html_radios($params, $template)
case 'readonly':
if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
trigger_error("html_options: {$_key} attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
E_USER_NOTICE);
}
@ -128,7 +129,7 @@ function smarty_function_html_radios($params, $template)
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
trigger_error("html_radios: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
}
break;
}
@ -163,18 +164,30 @@ function smarty_function_html_radios($params, $template)
return implode("\n", $_html_result);
}
}
/**
* @param $name
* @param $value
* @param $output
* @param $selected
* @param $extra
* @param $separator
* @param $labels
* @param $label_ids
* @param $escape
*
* @return string
*/
function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids,
$escape)
$escape)
{
$_output = '';
if (is_object($value)) {
if (method_exists($value, "__toString")) {
if (method_exists($value, '__toString')) {
$value = (string) $value->__toString();
} else {
trigger_error("html_options: value is an object of class '" . get_class($value) .
"' without __toString() method", E_USER_NOTICE);
trigger_error('html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method', E_USER_NOTICE);
return '';
}
@ -183,11 +196,11 @@ function smarty_function_html_radios_output($name, $value, $output, $selected, $
}
if (is_object($output)) {
if (method_exists($output, "__toString")) {
if (method_exists($output, '__toString')) {
$output = (string) $output->__toString();
} else {
trigger_error("html_options: output is an object of class '" . get_class($output) .
"' without __toString() method", E_USER_NOTICE);
trigger_error('html_options: output is an object of class \'' . get_class($output) .
'\' without __toString() method', E_USER_NOTICE);
return '';
}

View file

@ -5,23 +5,13 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* @ignore
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
/**
* @ignore
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
/**
* Smarty {html_select_date} plugin
* Type: function<br>
* Name: html_select_date<br>
* Type: function
* Name: html_select_date
* Purpose: Prints the dropdowns for date selection.
* ChangeLog:
* <pre>
*
* - 1.0 initial release
* - 1.1 added support for +/- N syntax for begin
* and end year values. (Monte)
@ -37,7 +27,7 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
* of 0000-00-00 dates (cybot, boots)
* - 2.0 complete rewrite for performance,
* added attributes month_names, *_id
* </pre>
*
*
* @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
* (Smarty online manual)
@ -46,12 +36,17 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
* @author Monte Ohrt <monte at ohrt dot com>
* @author Rodney Rehm
*
* @param array $params parameters
* @param array $params parameters
*
* @param \Smarty_Internal_Template $template
*
* @return string
* @throws \SmartyException
*/
function smarty_function_html_select_date($params)
function smarty_function_html_select_date($params, Smarty_Internal_Template $template)
{
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
// generate timestamps used for month names only
static $_month_timestamps = null;
static $_current_year = null;
@ -64,18 +59,18 @@ function smarty_function_html_select_date($params)
}
/* Default values. */
$prefix = "Date_";
$prefix = 'Date_';
$start_year = null;
$end_year = null;
$display_days = true;
$display_months = true;
$display_years = true;
$month_format = "%B";
$month_format = '%B';
/* Write months as numbers by default GL */
$month_value_format = "%m";
$day_format = "%02d";
$month_value_format = '%m';
$day_format = '%02d';
/* Write day values using this format MB */
$day_value_format = "%d";
$day_value_format = '%d';
$year_as_text = false;
/* Display years in reverse order? Ie. 2000,1999,.... */
$reverse_years = false;
@ -116,15 +111,17 @@ function smarty_function_html_select_date($params)
switch ($_key) {
case 'time':
if (!is_array($_value) && $_value !== null) {
$template->_checkPlugins(array(array('function' => 'smarty_make_timestamp',
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php')));
$time = smarty_make_timestamp($_value);
}
break;
case 'month_names':
if (is_array($_value) && count($_value) == 12) {
if (is_array($_value) && count($_value) === 12) {
$$_key = $_value;
} else {
trigger_error("html_select_date: month_names must be an array of 12 strings", E_USER_NOTICE);
trigger_error('html_select_date: month_names must be an array of 12 strings', E_USER_NOTICE);
}
break;
@ -169,7 +166,7 @@ function smarty_function_html_select_date($params)
if (!is_array($_value)) {
$extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
} else {
trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
}
break;
}
@ -180,7 +177,9 @@ function smarty_function_html_select_date($params)
if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
if (isset($params[ 'time' ][ $prefix . 'Year' ])) {
// $_REQUEST[$field_array] given
foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
foreach (array('Y' => 'Year',
'm' => 'Month',
'd' => 'Day') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName =
isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
@ -188,7 +187,9 @@ function smarty_function_html_select_date($params)
}
} elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Year' ])) {
// $_REQUEST given
foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
foreach (array('Y' => 'Year',
'm' => 'Month',
'd' => 'Day') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
$params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
@ -209,14 +210,15 @@ function smarty_function_html_select_date($params)
// make syntax "+N" or "-N" work with $start_year and $end_year
// Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
foreach (array('start', 'end') as $key) {
foreach (array('start',
'end') as $key) {
$key .= '_year';
$t = $$key;
if ($t === null) {
$$key = (int) $_current_year;
} elseif ($t[ 0 ] == '+') {
} elseif ($t[ 0 ] === '+') {
$$key = (int) ($_current_year + (int) trim(substr($t, 1)));
} elseif ($t[ 0 ] == '-') {
} elseif ($t[ 0 ] === '-') {
$$key = (int) ($_current_year - (int) trim(substr($t, 1)));
} else {
$$key = (int) $$key;
@ -304,8 +306,8 @@ function smarty_function_html_select_date($params)
for ($i = 1; $i <= 12; $i ++) {
$_val = sprintf('%02d', $i);
$_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[ $i ]) :
($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[ $i ]));
$_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[ $i ]);
($month_format === '%m' ? $_val : strftime($month_format, $_month_timestamps[ $i ]));
$_value = $month_value_format === '%m' ? $_val : strftime($month_value_format, $_month_timestamps[ $i ]);
$_html_months .= '<option value="' . $_value . '"' . ($_val == $_month ? ' selected="selected"' : '') .
'>' . $_text . '</option>' . $option_separator;
}
@ -342,8 +344,8 @@ function smarty_function_html_select_date($params)
for ($i = 1; $i <= 31; $i ++) {
$_val = sprintf('%02d', $i);
$_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i);
$_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i);
$_text = $day_format === '%02d' ? $_val : sprintf($day_format, $i);
$_value = $day_value_format === '%02d' ? $_val : sprintf($day_value_format, $i);
$_html_days .= '<option value="' . $_value . '"' . ($_val == $_day ? ' selected="selected"' : '') . '>' .
$_text . '</option>' . $option_separator;
}

View file

@ -5,20 +5,10 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* @ignore
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
/**
* @ignore
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
/**
* Smarty {html_select_time} function plugin
* Type: function<br>
* Name: html_select_time<br>
* Type: function
* Name: html_select_time
* Purpose: Prints the dropdowns for time selection
*
* @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
@ -26,14 +16,19 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
* @author Roberto Berto <roberto@berto.net>
* @author Monte Ohrt <monte AT ohrt DOT com>
*
* @param array $params parameters
* @param array $params parameters
*
* @param \Smarty_Internal_Template $template
*
* @return string
* @uses smarty_make_timestamp()
* @throws \SmartyException
*/
function smarty_function_html_select_time($params)
function smarty_function_html_select_time($params, Smarty_Internal_Template $template)
{
$prefix = "Time_";
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$prefix = 'Time_';
$field_array = null;
$field_separator = "\n";
$option_separator = "\n";
@ -83,6 +78,8 @@ function smarty_function_html_select_time($params)
switch ($_key) {
case 'time':
if (!is_array($_value) && $_value !== null) {
$template->_checkPlugins(array(array('function' => 'smarty_make_timestamp',
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php')));
$time = smarty_make_timestamp($_value);
}
break;
@ -142,7 +139,7 @@ function smarty_function_html_select_time($params)
if (!is_array($_value)) {
$extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
} else {
trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
}
break;
}
@ -151,7 +148,9 @@ function smarty_function_html_select_time($params)
if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
if (isset($params[ 'time' ][ $prefix . 'Hour' ])) {
// $_REQUEST[$field_array] given
foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
foreach (array('H' => 'Hour',
'i' => 'Minute',
's' => 'Second') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName =
isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
@ -164,7 +163,9 @@ function smarty_function_html_select_time($params)
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
} elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Hour' ])) {
// $_REQUEST given
foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
foreach (array('H' => 'Hour',
'i' => 'Minute',
's' => 'Second') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
$params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
@ -219,8 +220,8 @@ function smarty_function_html_select_time($params)
$end = $use_24_hours ? 23 : 12;
for ($i = $start; $i <= $end; $i ++) {
$_val = sprintf('%02d', $i);
$_text = $hour_format == '%02d' ? $_val : sprintf($hour_format, $i);
$_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i);
$_text = $hour_format === '%02d' ? $_val : sprintf($hour_format, $i);
$_value = $hour_value_format === '%02d' ? $_val : sprintf($hour_value_format, $i);
if (!$use_24_hours) {
$_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12);
@ -266,8 +267,8 @@ function smarty_function_html_select_time($params)
$selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
for ($i = 0; $i <= 59; $i += $minute_interval) {
$_val = sprintf('%02d', $i);
$_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i);
$_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i);
$_text = $minute_format === '%02d' ? $_val : sprintf($minute_format, $i);
$_value = $minute_value_format === '%02d' ? $_val : sprintf($minute_value_format, $i);
$_html_minutes .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
'>' . $_text . '</option>' . $option_separator;
}
@ -307,8 +308,8 @@ function smarty_function_html_select_time($params)
$selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
for ($i = 0; $i <= 59; $i += $second_interval) {
$_val = sprintf('%02d', $i);
$_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i);
$_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i);
$_text = $second_format === '%02d' ? $_val : sprintf($second_format, $i);
$_value = $second_value_format === '%02d' ? $_val : sprintf($second_value_format, $i);
$_html_seconds .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
'>' . $_text . '</option>' . $option_separator;
}
@ -353,7 +354,10 @@ function smarty_function_html_select_time($params)
}
$_html = '';
foreach (array('_html_hours', '_html_minutes', '_html_seconds', '_html_meridian') as $k) {
foreach (array('_html_hours',
'_html_minutes',
'_html_seconds',
'_html_meridian') as $k) {
if (isset($$k)) {
if ($_html) {
$_html .= $field_separator;

View file

@ -8,12 +8,12 @@
/**
* Smarty {html_table} function plugin
* Type: function<br>
* Name: html_table<br>
* Date: Feb 17, 2003<br>
* Purpose: make an html table from an array of data<br>
* Type: function
* Name: html_table
* Date: Feb 17, 2003
* Purpose: make an html table from an array of data
* Params:
* <pre>
*
* - loop - array to loop through
* - cols - number of columns, comma separated list of column names
* or array of column names
@ -28,13 +28,13 @@
* - hdir - horizontal direction (default: "right", means left-to-right)
* - inner - inner loop (default "cols": print $loop line by line,
* $loop will be printed column by column otherwise)
* </pre>
*
* Examples:
* <pre>
*
* {table loop=$data}
* {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
* {table loop=$data cols="first,second,third" tr_attr=$colors}
* </pre>
*
*
* @author Monte Ohrt <monte at ohrt dot com>
* @author credit to Messju Mohr <messju at lammfellpuschen dot de>
@ -127,7 +127,7 @@ function smarty_function_html_table($params)
}
if (is_array($cols)) {
$cols = ($hdir == 'right') ? $cols : array_reverse($cols);
$cols = ($hdir === 'right') ? $cols : array_reverse($cols);
$output .= "<thead><tr>\n";
for ($r = 0; $r < $cols_count; $r ++) {
@ -141,11 +141,11 @@ function smarty_function_html_table($params)
$output .= "<tbody>\n";
for ($r = 0; $r < $rows; $r ++) {
$output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
$rx = ($vdir == 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
$rx = ($vdir === 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
for ($c = 0; $c < $cols_count; $c ++) {
$x = ($hdir == 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
if ($inner != 'cols') {
$x = ($hdir === 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
if ($inner !== 'cols') {
/* shuffle x to loop over rows*/
$x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
}
@ -163,7 +163,13 @@ function smarty_function_html_table($params)
return $output;
}
/**
* @param $name
* @param $var
* @param $no
*
* @return string
*/
function smarty_function_html_table_cycle($name, $var, $no)
{
if (!is_array($var)) {

View file

@ -8,35 +8,35 @@
/**
* Smarty {mailto} function plugin
* Type: function<br>
* Name: mailto<br>
* Type: function
* Name: mailto
* Date: May 21, 2002
* Purpose: automate mailto address link creation, and optionally encode them.<br>
* Purpose: automate mailto address link creation, and optionally encode them.
* Params:
* <pre>
*
* - address - (required) - e-mail address
* - text - (optional) - text to display, default is address
* - encode - (optional) - can be one of:
* * none : no encoding (default)
* * javascript : encode with javascript
* * javascript_charcode : encode with javascript charcode
* * hex : encode with hexidecimal (no javascript)
* * hex : encode with hexadecimal (no javascript)
* - cc - (optional) - address(es) to carbon copy
* - bcc - (optional) - address(es) to blind carbon copy
* - subject - (optional) - e-mail subject
* - newsgroups - (optional) - newsgroup(s) to post to
* - followupto - (optional) - address(es) to follow up to
* - extra - (optional) - extra tags for the href link
* </pre>
*
* Examples:
* <pre>
*
* {mailto address="me@domain.com"}
* {mailto address="me@domain.com" encode="javascript"}
* {mailto address="me@domain.com" encode="hex"}
* {mailto address="me@domain.com" subject="Hello to you!"}
* {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
* {mailto address="me@domain.com" extra='class="mailto"'}
* </pre>
*
*
* @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
* (Smarty online manual)
@ -103,7 +103,7 @@ function smarty_function_mailto($params)
return;
}
// FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed!
if ($encode == 'javascript') {
if ($encode === 'javascript') {
$string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
$js_encode = '';
@ -112,7 +112,7 @@ function smarty_function_mailto($params)
}
return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>';
} elseif ($encode == 'javascript_charcode') {
} elseif ($encode === 'javascript_charcode') {
$string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
for ($x = 0, $y = strlen($string); $x < $y; $x ++) {
@ -123,7 +123,7 @@ function smarty_function_mailto($params)
implode(',', $ord) . "))" . "}\n" . "</script>\n";
return $_ret;
} elseif ($encode == 'hex') {
} elseif ($encode === 'hex') {
preg_match('!^(.*)(\?.*)$!', $address, $match);
if (!empty($match[ 2 ])) {
trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);

View file

@ -9,8 +9,8 @@
/**
* Smarty {math} function plugin
* Type: function<br>
* Name: math<br>
* Type: function
* Name: math
* Purpose: handle math computations in template
*
* @link http://www.smarty.net/manual/en/language.function.math.php {math}
@ -38,7 +38,7 @@ function smarty_function_math($params, $template)
$equation = $params[ 'equation' ];
// make sure parenthesis are balanced
if (substr_count($equation, "(") != substr_count($equation, ")")) {
if (substr_count($equation, '(') !== substr_count($equation, ')')) {
trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
return;
@ -58,30 +58,35 @@ function smarty_function_math($params, $template)
return;
}
foreach ($params as $key => $val) {
if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
// make sure value is not empty
if (strlen($val) === 0) {
trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING);
return;
}
if (!is_numeric($val)) {
trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING);
return;
}
}
}
// match all vars in equation, make sure all are passed
preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match);
foreach ($match[ 1 ] as $curr_var) {
if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) {
trigger_error("math: function call $curr_var not allowed", E_USER_WARNING);
trigger_error("math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'", E_USER_WARNING);
return;
}
}
foreach ($params as $key => $val) {
if ($key != "equation" && $key != "format" && $key != "assign") {
// make sure value is not empty
if (strlen($val) == 0) {
trigger_error("math: parameter $key is empty", E_USER_WARNING);
return;
}
if (!is_numeric($val)) {
trigger_error("math: parameter $key: is not numeric", E_USER_WARNING);
return;
}
if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
$equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
}
}

View file

@ -8,8 +8,8 @@
/**
* Smarty capitalize modifier plugin
* Type: modifier<br>
* Name: capitalize<br>
* Type: modifier
* Name: capitalize
* Purpose: capitalize words in the string
* {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
*
@ -72,7 +72,7 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals
return $upper_string;
}
/*
/*
*
* Bug: create_function() use exhausts memory when used in long loops
* Fix: use declared functions for callbacks instead of using create_function()
@ -80,21 +80,38 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals
*
* @author Kyle Renfrow
*/
/**
* @param $matches
*
* @return string
*/
function smarty_mod_cap_mbconvert_cb($matches)
{
return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
}
/**
* @param $matches
*
* @return string
*/
function smarty_mod_cap_mbconvert2_cb($matches)
{
return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
}
/**
* @param $matches
*
* @return string
*/
function smarty_mod_cap_ucfirst_cb($matches)
{
return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ]));
}
/**
* @param $matches
*
* @return string
*/
function smarty_mod_cap_ucfirst2_cb($matches)
{
return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 3 ]));

View file

@ -8,10 +8,10 @@
/**
* Smarty date_format modifier plugin
* Type: modifier<br>
* Name: date_format<br>
* Purpose: format datestamps via strftime<br>
* Input:<br>
* Type: modifier
* Name: date_format
* Purpose: format datestamps via strftime
* Input:
* - string: input date string
* - format: strftime format for output
* - default_date: default date if $string is empty
@ -35,18 +35,36 @@ function smarty_modifier_date_format($string, $format = null, $default_date = ''
/**
* require_once the {@link shared.make_timestamp.php} plugin
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
if ($string != '' && $string != '0000-00-00' && $string != '0000-00-00 00:00:00') {
static $is_loaded = false;
if (!$is_loaded) {
if (!is_callable('smarty_make_timestamp')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
}
$is_loaded = true;
}
if ($string !== '' && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') {
$timestamp = smarty_make_timestamp($string);
} elseif ($default_date != '') {
} elseif ($default_date !== '') {
$timestamp = smarty_make_timestamp($default_date);
} else {
return;
}
if ($formatter == 'strftime' || ($formatter == 'auto' && strpos($format, '%') !== false)) {
if (DS == '\\') {
$_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
$_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) {
if (Smarty::$_IS_WINDOWS) {
$_win_from = array('%D',
'%h',
'%n',
'%r',
'%R',
'%t',
'%T');
$_win_to = array('%m/%d/%y',
'%b',
"\n",
'%I:%M:%S %p',
'%H:%M',
"\t",
'%H:%M:%S');
if (strpos($format, '%e') !== false) {
$_win_from[] = '%e';
$_win_to[] = sprintf('%\' 2d', date('j', $timestamp));

View file

@ -8,8 +8,8 @@
/**
* Smarty debug_print_var modifier plugin
* Type: modifier<br>
* Name: debug_print_var<br>
* Type: modifier
* Name: debug_print_var
* Purpose: formats variable contents for display in the console
*
* @author Monte Ohrt <monte at ohrt dot com>
@ -28,7 +28,7 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
switch (gettype($var)) {
case 'array' :
$results = '<b>Array (' . count($var) . ')</b>';
if ($depth == $max) {
if ($depth === $max) {
break;
}
foreach ($var as $curr_key => $curr_val) {
@ -46,7 +46,7 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
$results .= ' called recursive';
break;
}
if ($depth == $max) {
if ($depth === $max) {
break;
}
$objects[] = $var;

View file

@ -8,8 +8,8 @@
/**
* Smarty escape modifier plugin
* Type: modifier<br>
* Name: escape<br>
* Type: modifier
* Name: escape
* Purpose: escape string for output
*
* @link http://www.smarty.net/docs/en/language.modifier.escape
@ -25,6 +25,8 @@
function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
{
static $_double_encode = null;
static $is_loaded_1 = false;
static $is_loaded_2 = false;
if ($_double_encode === null) {
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
}
@ -46,7 +48,9 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
// php <5.2.3 - prevent double encoding
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlspecialchars($string, ENT_QUOTES, $char_set);
$string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
$string = str_replace(array('%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'), array('&',
';'), $string);
return $string;
}
@ -67,7 +71,9 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlspecialchars($string, ENT_QUOTES, $char_set);
$string =
str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
str_replace(array('%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'), array('&',
';'), $string);
return $string;
}
@ -86,7 +92,9 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
} else {
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlentities($string, ENT_QUOTES, $char_set);
$string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
$string = str_replace(array('%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'), array('&',
';'), $string);
return $string;
}
@ -116,7 +124,12 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
case 'hexentity':
$return = '';
if (Smarty::$_MBSTRING) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
if (!$is_loaded_1) {
if (!is_callable('smarty_mb_to_unicode')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
}
$is_loaded_1 = true;
}
$return = '';
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
$return .= '&#x' . strtoupper(dechex($unicode)) . ';';
@ -135,7 +148,12 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
case 'decentity':
$return = '';
if (Smarty::$_MBSTRING) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
if (!$is_loaded_1) {
if (!is_callable('smarty_mb_to_unicode')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
}
$is_loaded_1 = true;
}
$return = '';
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
$return .= '&#' . $unicode . ';';
@ -153,23 +171,40 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
case 'javascript':
// escape quotes and backslashes, newlines, etc.
return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n',
return strtr($string, array('\\' => '\\\\',
"'" => "\\'",
'"' => '\\"',
"\r" => '\\r',
"\n" => '\\n',
'</' => '<\/'));
case 'mail':
if (Smarty::$_MBSTRING) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
if (!$is_loaded_2) {
if (!is_callable('smarty_mb_str_replace')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
}
$is_loaded_2 = true;
}
return smarty_mb_str_replace(array('@',
'.'), array(' [AT] ',
' [DOT] '), $string);
}
// no MBString fallback
return str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
return str_replace(array('@',
'.'), array(' [AT] ',
' [DOT] '), $string);
case 'nonstd':
// escape non-standard chars, such as ms document quotes
$return = '';
if (Smarty::$_MBSTRING) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
if (!$is_loaded_1) {
if (!is_callable('smarty_mb_to_unicode')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
}
$is_loaded_1 = true;
}
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
if ($unicode >= 126) {
$return .= '&#' . $unicode . ';';

View file

@ -0,0 +1,75 @@
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty wordwrap modifier plugin
* Type: modifier
* Name: mb_wordwrap
* Purpose: Wrap a string to a given number of characters
*
* @link http://php.net/manual/en/function.wordwrap.php for similarity
*
* @param string $str the string to wrap
* @param int $width the width of the output
* @param string $break the character used to break the line
* @param boolean $cut ignored parameter, just for the sake of
*
* @return string wrapped string
* @author Rodney Rehm
*/
function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
{
// break words into tokens using white space as a delimiter
$tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
$length = 0;
$t = '';
$_previous = false;
$_space = false;
foreach ($tokens as $_token) {
$token_length = mb_strlen($_token, Smarty::$_CHARSET);
$_tokens = array($_token);
if ($token_length > $width) {
if ($cut) {
$_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER,
$_token,
-1,
PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
}
}
foreach ($_tokens as $token) {
$_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
$token_length = mb_strlen($token, Smarty::$_CHARSET);
$length += $token_length;
if ($length > $width) {
// remove space before inserted break
if ($_previous) {
$t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
}
if (!$_space) {
// add the break before the token
if (!empty($t)) {
$t .= $break;
}
$length = $token_length;
}
} else if ($token === "\n") {
// hard break must reset counters
$length = 0;
}
$_previous = $_space;
// add the token
$t .= $token;
}
}
return $t;
}

View file

@ -8,8 +8,8 @@
/**
* Smarty regex_replace modifier plugin
* Type: modifier<br>
* Name: regex_replace<br>
* Type: modifier
* Name: regex_replace
* Purpose: regular expression search/replace
*
* @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php

View file

@ -8,8 +8,8 @@
/**
* Smarty replace modifier plugin
* Type: modifier<br>
* Name: replace<br>
* Type: modifier
* Name: replace
* Purpose: simple search/replace
*
* @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
@ -24,10 +24,15 @@
*/
function smarty_modifier_replace($string, $search, $replace)
{
static $is_loaded = false;
if (Smarty::$_MBSTRING) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
return smarty_mb_str_replace($search, $replace, $string);
if (!$is_loaded) {
if (!is_callable('smarty_mb_str_replace')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
}
$is_loaded = true;
}
return smarty_mb_str_replace($search, $replace, $string);
}
return str_replace($search, $replace, $string);

View file

@ -8,8 +8,8 @@
/**
* Smarty spacify modifier plugin
* Type: modifier<br>
* Name: spacify<br>
* Type: modifier
* Name: spacify
* Purpose: add spaces between characters in a string
*
* @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual)

View file

@ -8,8 +8,8 @@
/**
* Smarty truncate modifier plugin
* Type: modifier<br>
* Name: truncate<br>
* Type: modifier
* Name: truncate
* Purpose: Truncate a string to a certain length if necessary,
* optionally splitting in the middle of a word, and
* appending the $etc string or inserting $etc into the middle.
@ -27,7 +27,7 @@
*/
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
{
if ($length == 0) {
if ($length === 0) {
return '';
}

View file

@ -8,11 +8,11 @@
/**
* Smarty cat modifier plugin
* Type: modifier<br>
* Name: cat<br>
* Date: Feb 24, 2003<br>
* Purpose: catenate a value to a variable<br>
* Input: string to catenate<br>
* Type: modifier
* Name: cat
* Date: Feb 24, 2003
* Purpose: catenate a value to a variable
* Input: string to catenate
* Example: {$var|cat:"foo"}
*
* @link http://smarty.php.net/manual/en/language.modifier.cat.php cat

View file

@ -8,8 +8,8 @@
/**
* Smarty count_characters modifier plugin
* Type: modifier<br>
* Name: count_characteres<br>
* Type: modifier
* Name: count_characters
* Purpose: count the number of characters in a text
*
* @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
@ -21,7 +21,7 @@
*/
function smarty_modifiercompiler_count_characters($params)
{
if (!isset($params[ 1 ]) || $params[ 1 ] != 'true') {
if (!isset($params[ 1 ]) || $params[ 1 ] !== 'true') {
return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[ 0 ] . ', $tmp)';
}
if (Smarty::$_MBSTRING) {

View file

@ -8,8 +8,8 @@
/**
* Smarty count_paragraphs modifier plugin
* Type: modifier<br>
* Name: count_paragraphs<br>
* Type: modifier
* Name: count_paragraphs
* Purpose: count the number of paragraphs in a text
*
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php

View file

@ -8,7 +8,7 @@
/**
* Smarty count_sentences modifier plugin
* Type: modifier<br>
* Type: modifier
* Name: count_sentences
* Purpose: count the number of sentences in a text
*

View file

@ -8,8 +8,8 @@
/**
* Smarty count_words modifier plugin
* Type: modifier<br>
* Name: count_words<br>
* Type: modifier
* Name: count_words
* Purpose: count the number of words in a text
*
* @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)

View file

@ -8,8 +8,8 @@
/**
* Smarty default modifier plugin
* Type: modifier<br>
* Name: default<br>
* Type: modifier
* Name: default
* Purpose: designate default value for empty variables
*
* @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual)

View file

@ -5,29 +5,27 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* @ignore
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php');
/**
* Smarty escape modifier plugin
* Type: modifier<br>
* Name: escape<br>
* Type: modifier
* Name: escape
* Purpose: escape string for output
*
* @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
* @author Rodney Rehm
*
* @param array $params parameters
* @param $compiler
* @param array $params parameters
* @param Smarty_Internal_TemplateCompilerBase $compiler
*
* @return string with compiled code
* @throws \SmartyException
*/
function smarty_modifiercompiler_escape($params, $compiler)
function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompilerBase $compiler)
{
static $_double_encode = null;
static $is_loaded = false;
$compiler->template->_checkPlugins(array(array('function' => 'smarty_literal_compiler_param',
'file' => SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php')));
if ($_double_encode === null) {
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
}
@ -102,14 +100,14 @@ function smarty_modifiercompiler_escape($params, $compiler)
// could not optimize |escape call, so fallback to regular plugin
if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
$compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] =
$compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] =
SMARTY_PLUGINS_DIR . 'modifier.escape.php';
$compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] =
$compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] =
'smarty_modifier_escape';
} else {
$compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] =
$compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] =
SMARTY_PLUGINS_DIR . 'modifier.escape.php';
$compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] =
$compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] =
'smarty_modifier_escape';
}

View file

@ -8,8 +8,8 @@
/**
* Smarty from_charset modifier plugin
* Type: modifier<br>
* Name: from_charset<br>
* Type: modifier
* Name: from_charset
* Purpose: convert character encoding from $charset to internal encoding
*
* @author Rodney Rehm

View file

@ -8,8 +8,8 @@
/**
* Smarty indent modifier plugin
* Type: modifier<br>
* Name: indent<br>
* Type: modifier
* Name: indent
* Purpose: indent lines of text
*
* @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual)

View file

@ -8,8 +8,8 @@
/**
* Smarty lower modifier plugin
* Type: modifier<br>
* Name: lower<br>
* Type: modifier
* Name: lower
* Purpose: convert string to lowercase
*
* @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual)

View file

@ -8,8 +8,8 @@
/**
* Smarty noprint modifier plugin
* Type: modifier<br>
* Name: noprint<br>
* Type: modifier
* Name: noprint
* Purpose: return an empty string
*
* @author Uwe Tews

View file

@ -8,8 +8,8 @@
/**
* Smarty string_format modifier plugin
* Type: modifier<br>
* Name: string_format<br>
* Type: modifier
* Name: string_format
* Purpose: format strings via sprintf
*
* @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)

View file

@ -8,11 +8,11 @@
/**
* Smarty strip modifier plugin
* Type: modifier<br>
* Name: strip<br>
* Type: modifier
* Name: strip
* Purpose: Replace all repeated spaces, newlines, tabs
* with a single space or supplied replacement string.<br>
* Example: {$var|strip} {$var|strip:"&nbsp;"}<br>
* with a single space or supplied replacement string.
* Example: {$var|strip} {$var|strip:"&nbsp;"}
* Date: September 25th, 2002
*
* @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual)

View file

@ -8,8 +8,8 @@
/**
* Smarty strip_tags modifier plugin
* Type: modifier<br>
* Name: strip_tags<br>
* Type: modifier
* Name: strip_tags
* Purpose: strip html tags from text
*
* @link http://www.smarty.net/docs/en/language.modifier.strip.tags.tpl strip_tags (Smarty online manual)
@ -21,7 +21,7 @@
*/
function smarty_modifiercompiler_strip_tags($params)
{
if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') == 'true') {
if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') === 'true') {
return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";
} else {
return 'strip_tags(' . $params[ 0 ] . ')';

View file

@ -8,8 +8,8 @@
/**
* Smarty to_charset modifier plugin
* Type: modifier<br>
* Name: to_charset<br>
* Type: modifier
* Name: to_charset
* Purpose: convert character encoding from internal encoding to $charset
*
* @author Rodney Rehm

View file

@ -8,8 +8,8 @@
/**
* Smarty unescape modifier plugin
* Type: modifier<br>
* Name: unescape<br>
* Type: modifier
* Name: unescape
* Purpose: unescape html entities
*
* @author Rodney Rehm
@ -26,7 +26,7 @@ function smarty_modifiercompiler_unescape($params)
if (!isset($params[ 2 ])) {
$params[ 2 ] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
} else {
$params[ 2 ] = "'" . $params[ 2 ] . "'";
$params[ 2 ] = "'{$params[ 2 ]}'";
}
switch (trim($params[ 1 ], '"\'')) {

View file

@ -8,8 +8,8 @@
/**
* Smarty upper modifier plugin
* Type: modifier<br>
* Name: lower<br>
* Type: modifier
* Name: lower
* Purpose: convert string to uppercase
*
* @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual)

View file

@ -5,22 +5,22 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty wordwrap modifier plugin
* Type: modifier<br>
* Name: wordwrap<br>
* Type: modifier
* Name: wordwrap
* Purpose: wrap a string of text at a given length
*
* @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
* @author Uwe Tews
*
* @param array $params parameters
* @param $compiler
* @param array $params parameters
* @param \Smarty_Internal_TemplateCompilerBase $compiler
*
* @return string with compiled code
* @throws \SmartyException
*/
function smarty_modifiercompiler_wordwrap($params, $compiler)
function smarty_modifiercompiler_wordwrap($params, Smarty_Internal_TemplateCompilerBase $compiler)
{
if (!isset($params[ 1 ])) {
$params[ 1 ] = 80;
@ -33,19 +33,7 @@ function smarty_modifiercompiler_wordwrap($params, $compiler)
}
$function = 'wordwrap';
if (Smarty::$_MBSTRING) {
if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
$compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'wordwrap' ][ 'modifier' ][ 'file' ] =
SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
$compiler->template->required_plugins[ 'nocache' ][ 'wordwrap' ][ 'modifier' ][ 'function' ] =
'smarty_mb_wordwrap';
} else {
$compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'wordwrap' ][ 'modifier' ][ 'file' ] =
SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
$compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'wordwrap' ][ 'modifier' ][ 'function' ] =
'smarty_mb_wordwrap';
}
$function = 'smarty_mb_wordwrap';
$function = $compiler->getPlugin('mb_wordwrap','modifier');
}
return $function . '(' . $params[ 0 ] . ',' . $params[ 1 ] . ',' . $params[ 2 ] . ',' . $params[ 3 ] . ')';
}

View file

@ -24,7 +24,7 @@ function smarty_outputfilter_trimwhitespace($source)
$_offset = 0;
// Unify Line-Breaks to \n
$source = preg_replace("/\015\012|\015|\012/", "\n", $source);
$source = preg_replace('/\015\012|\015|\012/', "\n", $source);
// capture Internet Explorer and KnockoutJS Conditional Comments
if (preg_match_all('#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is', $source, $matches,

View file

@ -8,7 +8,7 @@
/**
* escape_special_chars common function
* Function: smarty_function_escape_special_chars<br>
* Function: smarty_function_escape_special_chars
* Purpose: used by other smarty functions to escape
* special chars except for already escaped ones
*

View file

@ -7,7 +7,7 @@
*/
/**
* Function: smarty_make_timestamp<br>
* Function: smarty_make_timestamp
* Purpose: used by other smarty functions to make a timestamp from a string.
*
* @author Monte Ohrt <monte at ohrt dot com>
@ -25,7 +25,7 @@ function smarty_make_timestamp($string)
(interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)
) {
return (int) $string->format('U'); // PHP 5.2 BC
} elseif (strlen($string) == 14 && ctype_digit($string)) {
} elseif (strlen($string) === 14 && ctype_digit($string)) {
// it is mysql timestamp format of YYYYMMDDHHMMSS?
return mktime(substr($string, 8, 2), substr($string, 10, 2), substr($string, 12, 2), substr($string, 4, 2),
substr($string, 6, 2), substr($string, 0, 4));
@ -35,7 +35,7 @@ function smarty_make_timestamp($string)
} else {
// strtotime should handle it
$time = strtotime($string);
if ($time == - 1 || $time === false) {
if ($time === - 1 || $time === false) {
// strtotime() was not able to parse $string, use "now":
return time();
}

View file

@ -6,14 +6,13 @@
* @subpackage PluginsShared
*/
if (!function_exists('smarty_mb_str_replace')) {
/**
* Multibyte string replace
*
* @param string $search the string to be searched
* @param string $replace the replacement string
* @param string $subject the source string
* @param int &$count number of matches found
* @param string|string[] $search the string to be searched
* @param string|string[] $replace the replacement string
* @param string $subject the source string
* @param int &$count number of matches found
*
* @return string replaced string
* @author Rodney Rehm
@ -29,7 +28,7 @@ if (!function_exists('smarty_mb_str_replace')) {
$string = smarty_mb_str_replace($search, $replace, $string, $c);
$count += $c;
}
} elseif (is_array($search)) {
} else if (is_array($search)) {
if (!is_array($replace)) {
foreach ($search as &$string) {
$subject = smarty_mb_str_replace($string, $replace, $subject, $c);
@ -37,7 +36,7 @@ if (!function_exists('smarty_mb_str_replace')) {
}
} else {
$n = max(count($search), count($replace));
while ($n --) {
while ($n--) {
$subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
$count += $c;
next($search);
@ -49,7 +48,6 @@ if (!function_exists('smarty_mb_str_replace')) {
$count = count($parts) - 1;
$subject = implode($replace, $parts);
}
return $subject;
}
}

View file

@ -20,12 +20,12 @@
function smarty_mb_to_unicode($string, $encoding = null)
{
if ($encoding) {
$expanded = mb_convert_encoding($string, "UTF-32BE", $encoding);
$expanded = mb_convert_encoding($string, 'UTF-32BE', $encoding);
} else {
$expanded = mb_convert_encoding($string, "UTF-32BE");
$expanded = mb_convert_encoding($string, 'UTF-32BE');
}
return unpack("N*", $expanded);
return unpack('N*', $expanded);
}
/**
@ -46,8 +46,8 @@ function smarty_mb_from_unicode($unicode, $encoding = null)
$encoding = mb_internal_encoding();
}
foreach ((array) $unicode as $utf32be) {
$character = pack("N*", $utf32be);
$t .= mb_convert_encoding($character, $encoding, "UTF-32BE");
$character = pack('N*', $utf32be);
$t .= mb_convert_encoding($character, $encoding, 'UTF-32BE');
}
return $t;

View file

@ -1,75 +0,0 @@
<?php
/**
* Smarty shared plugin
*
* @package Smarty
* @subpackage PluginsShared
*/
if (!function_exists('smarty_mb_wordwrap')) {
/**
* Wrap a string to a given number of characters
*
* @link http://php.net/manual/en/function.wordwrap.php for similarity
*
* @param string $str the string to wrap
* @param int $width the width of the output
* @param string $break the character used to break the line
* @param boolean $cut ignored parameter, just for the sake of
*
* @return string wrapped string
* @author Rodney Rehm
*/
function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
{
// break words into tokens using white space as a delimiter
$tokens =
preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
$length = 0;
$t = '';
$_previous = false;
$_space = false;
foreach ($tokens as $_token) {
$token_length = mb_strlen($_token, Smarty::$_CHARSET);
$_tokens = array($_token);
if ($token_length > $width) {
if ($cut) {
$_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1,
PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
}
}
foreach ($_tokens as $token) {
$_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
$token_length = mb_strlen($token, Smarty::$_CHARSET);
$length += $token_length;
if ($length > $width) {
// remove space before inserted break
if ($_previous) {
$t = mb_substr($t, 0, - 1, Smarty::$_CHARSET);
}
if (!$_space) {
// add the break before the token
if (!empty($t)) {
$t .= $break;
}
$length = $token_length;
}
} elseif ($token == "\n") {
// hard break must reset counters
$_previous = 0;
$length = 0;
}
$_previous = $_space;
// add the token
$t .= $token;
}
}
return $t;
}
}

Some files were not shown because too many files have changed in this diff Show more