summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_test/tests/inc/changelog_getlastrevisionat.test.php127
-rw-r--r--_test/tests/inc/common_ml.test.php11
-rw-r--r--_test/tests/inc/common_wl.test.php11
-rw-r--r--doku.php39
-rw-r--r--inc/auth.php1
-rw-r--r--inc/changelog.php20
-rw-r--r--inc/common.php3
-rw-r--r--inc/compatibility.php16
-rw-r--r--inc/config_cascade.php114
-rw-r--r--inc/html.php15
-rw-r--r--inc/init.php18
-rw-r--r--inc/lang/ar/lang.php1
-rw-r--r--inc/lang/ar/searchpage.txt2
-rw-r--r--inc/lang/az/lang.php1
-rw-r--r--inc/lang/az/searchpage.txt2
-rw-r--r--inc/lang/bg/lang.php1
-rw-r--r--inc/lang/bg/searchpage.txt2
-rw-r--r--inc/lang/ca-valencia/lang.php1
-rw-r--r--inc/lang/ca-valencia/searchpage.txt2
-rw-r--r--inc/lang/ca/lang.php1
-rw-r--r--inc/lang/ca/searchpage.txt2
-rw-r--r--inc/lang/cs/lang.php1
-rw-r--r--inc/lang/cs/searchpage.txt2
-rw-r--r--inc/lang/da/lang.php1
-rw-r--r--inc/lang/da/searchpage.txt2
-rw-r--r--inc/lang/de-informal/lang.php1
-rw-r--r--inc/lang/de-informal/searchpage.txt2
-rw-r--r--inc/lang/de/lang.php1
-rw-r--r--inc/lang/de/searchpage.txt2
-rw-r--r--inc/lang/el/searchpage.txt2
-rw-r--r--inc/lang/en/lang.php3
-rw-r--r--inc/lang/en/searchpage.txt2
-rw-r--r--inc/lang/eo/lang.php1
-rw-r--r--inc/lang/eo/searchpage.txt2
-rw-r--r--inc/lang/es/lang.php1
-rw-r--r--inc/lang/es/searchpage.txt2
-rw-r--r--inc/lang/et/lang.php1
-rw-r--r--inc/lang/et/searchpage.txt2
-rw-r--r--inc/lang/eu/lang.php1
-rw-r--r--inc/lang/eu/searchpage.txt2
-rw-r--r--inc/lang/fa/lang.php1
-rw-r--r--inc/lang/fa/searchpage.txt2
-rw-r--r--inc/lang/fi/lang.php1
-rw-r--r--inc/lang/fi/searchpage.txt2
-rw-r--r--inc/lang/fo/lang.php1
-rw-r--r--inc/lang/fo/searchpage.txt2
-rw-r--r--inc/lang/fr/lang.php1
-rw-r--r--inc/lang/fr/searchpage.txt2
-rw-r--r--inc/lang/gl/lang.php1
-rw-r--r--inc/lang/gl/searchpage.txt2
-rw-r--r--inc/lang/he/lang.php1
-rw-r--r--inc/lang/he/searchpage.txt2
-rw-r--r--inc/lang/hr/lang.php1
-rw-r--r--inc/lang/hr/searchpage.txt2
-rw-r--r--inc/lang/hu/lang.php1
-rw-r--r--inc/lang/hu/searchpage.txt2
-rw-r--r--inc/lang/ia/lang.php1
-rw-r--r--inc/lang/ia/searchpage.txt2
-rw-r--r--inc/lang/id/lang.php1
-rw-r--r--inc/lang/id/searchpage.txt2
-rw-r--r--inc/lang/it/lang.php1
-rw-r--r--inc/lang/it/searchpage.txt2
-rw-r--r--inc/lang/ja/lang.php1
-rw-r--r--inc/lang/ja/searchpage.txt2
-rw-r--r--inc/lang/ko/lang.php3
-rw-r--r--inc/lang/ko/searchpage.txt4
-rw-r--r--inc/lang/ku/lang.php1
-rw-r--r--inc/lang/ku/searchpage.txt2
-rw-r--r--inc/lang/la/searchpage.txt2
-rw-r--r--inc/lang/lb/lang.php1
-rw-r--r--inc/lang/lb/searchpage.txt2
-rw-r--r--inc/lang/lt/lang.php1
-rw-r--r--inc/lang/lt/searchpage.txt2
-rw-r--r--inc/lang/lv/lang.php1
-rw-r--r--inc/lang/lv/searchpage.txt3
-rw-r--r--inc/lang/mg/lang.php2
-rw-r--r--inc/lang/mg/searchpage.txt2
-rw-r--r--inc/lang/mr/lang.php1
-rw-r--r--inc/lang/mr/searchpage.txt2
-rw-r--r--inc/lang/ne/lang.php1
-rw-r--r--inc/lang/ne/searchpage.txt4
-rw-r--r--inc/lang/nl/lang.php1
-rw-r--r--inc/lang/nl/searchpage.txt2
-rw-r--r--inc/lang/no/lang.php3
-rw-r--r--inc/lang/no/searchpage.txt2
-rw-r--r--inc/lang/pl/lang.php1
-rw-r--r--inc/lang/pl/searchpage.txt2
-rw-r--r--inc/lang/pt-br/lang.php1
-rw-r--r--inc/lang/pt-br/searchpage.txt2
-rw-r--r--inc/lang/pt/lang.php1
-rw-r--r--inc/lang/pt/searchpage.txt2
-rw-r--r--inc/lang/ro/lang.php1
-rw-r--r--inc/lang/ro/searchpage.txt2
-rw-r--r--inc/lang/ru/lang.php1
-rw-r--r--inc/lang/ru/searchpage.txt2
-rw-r--r--inc/lang/sk/lang.php1
-rw-r--r--inc/lang/sk/searchpage.txt2
-rw-r--r--inc/lang/sl/lang.php1
-rw-r--r--inc/lang/sl/searchpage.txt2
-rw-r--r--inc/lang/sq/lang.php1
-rw-r--r--inc/lang/sq/searchpage.txt2
-rw-r--r--inc/lang/sr/lang.php1
-rw-r--r--inc/lang/sr/searchpage.txt2
-rw-r--r--inc/lang/sv/lang.php1
-rw-r--r--inc/lang/sv/searchpage.txt2
-rw-r--r--inc/lang/th/lang.php1
-rw-r--r--inc/lang/th/searchpage.txt3
-rw-r--r--inc/lang/tr/lang.php1
-rw-r--r--inc/lang/tr/searchpage.txt2
-rw-r--r--inc/lang/uk/lang.php1
-rw-r--r--inc/lang/uk/searchpage.txt2
-rw-r--r--inc/lang/vi/lang.php1
-rw-r--r--inc/lang/vi/searchpage.txt2
-rw-r--r--inc/lang/zh-tw/lang.php1
-rw-r--r--inc/lang/zh-tw/searchpage.txt2
-rw-r--r--inc/lang/zh/lang.php1
-rw-r--r--inc/lang/zh/searchpage.txt2
-rw-r--r--inc/media.php6
-rw-r--r--inc/pageutils.php38
-rw-r--r--inc/parser/xhtml.php41
-rw-r--r--inc/parserutils.php13
-rw-r--r--inc/plugin.php57
-rw-r--r--inc/template.php57
-rw-r--r--install.php1
-rw-r--r--lib/exe/detail.php3
-rw-r--r--lib/plugins/authpgsql/auth.php6
-rw-r--r--lib/plugins/authplain/_test/escaping.test.php43
-rw-r--r--lib/plugins/authplain/auth.php34
-rw-r--r--lib/tpl/dokuwiki/detail.php2
129 files changed, 659 insertions, 190 deletions
diff --git a/_test/tests/inc/changelog_getlastrevisionat.test.php b/_test/tests/inc/changelog_getlastrevisionat.test.php
new file mode 100644
index 000000000..84b185ce8
--- /dev/null
+++ b/_test/tests/inc/changelog_getlastrevisionat.test.php
@@ -0,0 +1,127 @@
+<?php
+
+/**
+ * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo()
+ *
+ * This class uses the files:
+ * - data/pages/mailinglist.txt
+ * - data/meta/mailinglist.changes
+ */
+class changelog_getlastrevisionat_test extends DokuWikiTest {
+
+ private $pageid = 'mailinglist';
+
+ function setup() {
+ parent::setup();
+ global $cache_revinfo;
+ $cache =& $cache_revinfo;
+ if(isset($cache['nonexist'])) {
+ unset($cache['nonexist']);
+ }
+ if(isset($cache['mailinglist'])) {
+ unset($cache['mailinglist']);
+ }
+ }
+
+
+ /**
+ * no nonexist.changes meta file available
+ */
+ function test_changemetadatanotexists() {
+ $rev = 1362525899;
+ $id = 'nonexist';
+ $revsexpected = false;
+
+ $pagelog = new PageChangeLog($id, $chunk_size = 8192);
+ $revs = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revsexpected, $revs);
+ }
+
+ /**
+ * start at exact current revision of mailinglist page
+ *
+ */
+ function test_startatexactcurrentrev() {
+ $rev = 1385051947;
+ $revsexpected = '';
+
+ //set a known timestamp
+ touch(wikiFN($this->pageid), $rev);
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revs = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revsexpected, $revs);
+
+ }
+
+ /**
+ * test a future revision
+ *
+ */
+ function test_futurerev() {
+ $rev = 1385051947;
+ $revsexpected = '';
+
+ //set a known timestamp
+ touch(wikiFN($this->pageid), $rev);
+
+ $rev +=1;
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revs = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revsexpected, $revs);
+
+ }
+
+ /**
+ * start at exact last revision of mailinglist page
+ *
+ */
+ function test_exactlastrev() {
+ $rev = 1360110636;
+ $revsexpected = 1360110636;
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revs = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revsexpected, $revs);
+ }
+
+
+ /**
+ * Request not existing revision
+ *
+ */
+ function test_olderrev() {
+ $rev = 1;
+ $revexpected = false;
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revfound = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revexpected, $revfound);
+ }
+
+ /**
+ * Start at non existing revision somewhere between existing revisions
+ */
+ function test_notexistingrev() {
+ $rev = 1362525890;
+ $revexpected = 1362525359;
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revfound = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revexpected, $revfound);
+ }
+
+ /**
+ * request nonexisting page
+ *
+ */
+ function test_notexistingpage() {
+ $rev = 1385051947;
+ $currentexpected = false;
+
+ $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192);
+ $current = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($currentexpected, $current);
+ }
+} \ No newline at end of file
diff --git a/_test/tests/inc/common_ml.test.php b/_test/tests/inc/common_ml.test.php
index 415c0a88d..027dcaef2 100644
--- a/_test/tests/inc/common_ml.test.php
+++ b/_test/tests/inc/common_ml.test.php
@@ -146,4 +146,15 @@ class common_ml_test extends DokuWikiTest {
$this->assertEquals($expect, ml($id, $args));
}
+
+ function test_ml_empty_rev() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $args = array('a' => 'b', 'c' => 'd', 'rev' => '');
+
+ $expect = DOKU_BASE . $this->script . '?a=b&amp;c=d&amp;media=some:img.jpg';
+ $this->assertEquals($expect, ml('some:img.jpg', $args));
+ }
}
diff --git a/_test/tests/inc/common_wl.test.php b/_test/tests/inc/common_wl.test.php
index 2e34dcae3..4bfde3f39 100644
--- a/_test/tests/inc/common_wl.test.php
+++ b/_test/tests/inc/common_wl.test.php
@@ -142,6 +142,17 @@ class common_wl_test extends DokuWikiTest {
$expect = DOKU_BASE . DOKU_SCRIPT . '/some/one?a=b&c=d';
$this->assertEquals($expect, wl('some:one', 'a=b,c=d', false, '&'));
}
+
+ function test_wl_empty_rev() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $args = array('a' => 'b', 'c' => 'd', 'rev' => '');
+
+ $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&amp;a=b&amp;c=d';
+ $this->assertEquals($expect, wl('some:', $args));
+ }
diff --git a/doku.php b/doku.php
index da3643544..71eee564e 100644
--- a/doku.php
+++ b/doku.php
@@ -9,7 +9,7 @@
*/
// update message version
-$updateVersion = 45;
+$updateVersion = 46.1;
// xdebug_start_profiling();
@@ -34,6 +34,7 @@ $QUERY = trim($INPUT->str('id'));
$ID = getID();
$REV = $INPUT->int('rev');
+$DATE_AT = $INPUT->str('at');
$IDX = $INPUT->str('idx');
$DATE = $INPUT->int('date');
$RANGE = $INPUT->str('range');
@@ -47,7 +48,41 @@ $PRE = cleanText(substr($INPUT->post->str('prefix'), 0, -1));
$SUF = cleanText($INPUT->post->str('suffix'));
$SUM = $INPUT->post->str('summary');
-//make info about the selected page available
+
+//parse DATE_AT
+if($DATE_AT) {
+ $date_parse = strtotime($DATE_AT);
+ if($date_parse) {
+ $DATE_AT = $date_parse;
+ } else { // check for UNIX Timestamp
+ $date_parse = @date('Ymd',$DATE_AT);
+ if(!$date_parse || $date_parse === '19700101') {
+ msg(sprintf($lang['unable_to_parse_date'], $DATE_AT));
+ $DATE_AT = null;
+ }
+ }
+}
+
+//check for existing $REV related to $DATE_AT
+if($DATE_AT) {
+ $pagelog = new PageChangeLog($ID);
+ $rev_t = $pagelog->getLastRevisionAt($DATE_AT);
+ if($rev_t === '') { //current revision
+ $REV = null;
+ $DATE_AT = null;
+ } else if ($rev_t === false) { //page did not exist
+ $rev_n = $pagelog->getRelativeRevision($DATE_AT,+1);
+ msg(sprintf($lang['page_nonexist_rev'],
+ strftime($conf['dformat'],$DATE_AT),
+ wl($ID, array('rev' => $rev_n)),
+ strftime($conf['dformat'],$rev_n)));
+ $REV = $DATE_AT; //will result in a page not exists message
+ } else {
+ $REV = $rev_t;
+ }
+}
+
+//make infos about the selected page available
$INFO = pageinfo();
//export minimal info to JS, plugins can add more
diff --git a/inc/auth.php b/inc/auth.php
index e938830ef..4b1e6ce31 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -335,7 +335,6 @@ function auth_browseruid() {
$ip = clientIP(true);
$uid = '';
$uid .= $INPUT->server->str('HTTP_USER_AGENT');
- $uid .= $INPUT->server->str('HTTP_ACCEPT_ENCODING');
$uid .= $INPUT->server->str('HTTP_ACCEPT_CHARSET');
$uid .= substr($ip, 0, strpos($ip, '.'));
$uid = strtolower($uid);
diff --git a/inc/changelog.php b/inc/changelog.php
index 8c14f21b0..6af336fc2 100644
--- a/inc/changelog.php
+++ b/inc/changelog.php
@@ -845,6 +845,25 @@ abstract class ChangeLog {
public function isCurrentRevision($rev) {
return $rev == @filemtime($this->getFilename());
}
+
+ /**
+ * Return an existing revision for a specific date which is
+ * the current one or younger or equal then the date
+ *
+ * @param string $id
+ * @param number $date_at timestamp
+ * @return string revision ('' for current)
+ */
+ function getLastRevisionAt($date_at){
+ //requested date_at(timestamp) younger or equal then modified_time($this->id) => load current
+ if($date_at >= @filemtime($this->getFilename())) {
+ return '';
+ } else if ($rev = $this->getRelativeRevision($date_at+1, -1)) { //+1 to get also the requested date revision
+ return $rev;
+ } else {
+ return false;
+ }
+ }
/**
* Returns the next lines of the changelog of the chunck before head or after tail
@@ -1072,3 +1091,4 @@ function getRevisions($id, $first, $num, $chunk_size = 8192, $media = false) {
}
return $changelog->getRevisions($first, $num);
}
+
diff --git a/inc/common.php b/inc/common.php
index e56285f62..11b8a7e26 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -438,6 +438,8 @@ function idfilter($id, $ue = true) {
function wl($id = '', $urlParameters = '', $absolute = false, $separator = '&amp;') {
global $conf;
if(is_array($urlParameters)) {
+ if(isset($urlParameters['rev']) && !$urlParameters['rev']) unset($urlParameters['rev']);
+ if(isset($urlParameters['at']) && $conf['date_at_format']) $urlParameters['at'] = date($conf['date_at_format'],$urlParameters['at']);
$urlParameters = buildURLparams($urlParameters, $separator);
} else {
$urlParameters = str_replace(',', $separator, $urlParameters);
@@ -544,6 +546,7 @@ function ml($id = '', $more = '', $direct = true, $sep = '&amp;', $abs = false)
if(empty($more['w'])) unset($more['w']);
if(empty($more['h'])) unset($more['h']);
if(isset($more['id']) && $direct) unset($more['id']);
+ if(isset($more['rev']) && !$more['rev']) unset($more['rev']);
$more = buildURLparams($more, $sep);
} else {
$matches = array();
diff --git a/inc/compatibility.php b/inc/compatibility.php
index ae780e5ac..2738c9bb1 100644
--- a/inc/compatibility.php
+++ b/inc/compatibility.php
@@ -33,4 +33,20 @@ if(!function_exists('ctype_digit')) {
if(preg_match('/^\d+$/', $text)) return true;
return false;
}
+}
+
+if(!function_exists('gzopen') && function_exists('gzopen64')) {
+ /**
+ * work around for PHP compiled against certain zlib versions #865
+ *
+ * @link http://stackoverflow.com/questions/23417519/php-zlib-gzopen-not-exists
+ *
+ * @param string $filename
+ * @param string $mode
+ * @param int $use_include_path
+ * @return mixed
+ */
+ function gzopen($filename, $mode, $use_include_path = 0) {
+ return gzopen64($filename, $mode, $use_include_path);
+ }
} \ No newline at end of file
diff --git a/inc/config_cascade.php b/inc/config_cascade.php
index 2c4f1612b..1d9f67edb 100644
--- a/inc/config_cascade.php
+++ b/inc/config_cascade.php
@@ -8,71 +8,75 @@
$config_cascade = array_merge(
array(
'main' => array(
- 'default' => array(DOKU_CONF.'dokuwiki.php'),
- 'local' => array(DOKU_CONF.'local.php'),
- 'protected' => array(DOKU_CONF.'local.protected.php'),
- ),
- 'acronyms' => array(
- 'default' => array(DOKU_CONF.'acronyms.conf'),
- 'local' => array(DOKU_CONF.'acronyms.local.conf'),
- ),
- 'entities' => array(
- 'default' => array(DOKU_CONF.'entities.conf'),
- 'local' => array(DOKU_CONF.'entities.local.conf'),
- ),
+ 'default' => array(DOKU_CONF . 'dokuwiki.php'),
+ 'local' => array(DOKU_CONF . 'local.php'),
+ 'protected' => array(DOKU_CONF . 'local.protected.php'),
+ ),
+ 'acronyms' => array(
+ 'default' => array(DOKU_CONF . 'acronyms.conf'),
+ 'local' => array(DOKU_CONF . 'acronyms.local.conf'),
+ ),
+ 'entities' => array(
+ 'default' => array(DOKU_CONF . 'entities.conf'),
+ 'local' => array(DOKU_CONF . 'entities.local.conf'),
+ ),
'interwiki' => array(
- 'default' => array(DOKU_CONF.'interwiki.conf'),
- 'local' => array(DOKU_CONF.'interwiki.local.conf'),
- ),
+ 'default' => array(DOKU_CONF . 'interwiki.conf'),
+ 'local' => array(DOKU_CONF . 'interwiki.local.conf'),
+ ),
'license' => array(
- 'default' => array(DOKU_CONF.'license.php'),
- 'local' => array(DOKU_CONF.'license.local.php'),
- ),
+ 'default' => array(DOKU_CONF . 'license.php'),
+ 'local' => array(DOKU_CONF . 'license.local.php'),
+ ),
'mediameta' => array(
- 'default' => array(DOKU_CONF.'mediameta.php'),
- 'local' => array(DOKU_CONF.'mediameta.local.php'),
- ),
- 'mime' => array(
- 'default' => array(DOKU_CONF.'mime.conf'),
- 'local' => array(DOKU_CONF.'mime.local.conf'),
- ),
- 'scheme' => array(
- 'default' => array(DOKU_CONF.'scheme.conf'),
- 'local' => array(DOKU_CONF.'scheme.local.conf'),
- ),
- 'smileys' => array(
- 'default' => array(DOKU_CONF.'smileys.conf'),
- 'local' => array(DOKU_CONF.'smileys.local.conf'),
- ),
+ 'default' => array(DOKU_CONF . 'mediameta.php'),
+ 'local' => array(DOKU_CONF . 'mediameta.local.php'),
+ ),
+ 'mime' => array(
+ 'default' => array(DOKU_CONF . 'mime.conf'),
+ 'local' => array(DOKU_CONF . 'mime.local.conf'),
+ ),
+ 'scheme' => array(
+ 'default' => array(DOKU_CONF . 'scheme.conf'),
+ 'local' => array(DOKU_CONF . 'scheme.local.conf'),
+ ),
+ 'smileys' => array(
+ 'default' => array(DOKU_CONF . 'smileys.conf'),
+ 'local' => array(DOKU_CONF . 'smileys.local.conf'),
+ ),
'wordblock' => array(
- 'default' => array(DOKU_CONF.'wordblock.conf'),
- 'local' => array(DOKU_CONF.'wordblock.local.conf'),
- ),
+ 'default' => array(DOKU_CONF . 'wordblock.conf'),
+ 'local' => array(DOKU_CONF . 'wordblock.local.conf'),
+ ),
'userstyle' => array(
- 'screen' => DOKU_CONF.'userstyle.css',
- 'print' => DOKU_CONF.'userprint.css',
- 'feed' => DOKU_CONF.'userfeed.css',
- 'all' => DOKU_CONF.'userall.css',
- ),
+ 'screen' => DOKU_CONF . 'userstyle.css',
+ 'print' => DOKU_CONF . 'userprint.css',
+ 'feed' => DOKU_CONF . 'userfeed.css',
+ 'all' => DOKU_CONF . 'userall.css',
+ ),
'userscript' => array(
- 'default' => DOKU_CONF.'userscript.js'
- ),
- 'acl' => array(
- 'default' => DOKU_CONF.'acl.auth.php',
- ),
+ 'default' => DOKU_CONF . 'userscript.js'
+ ),
+ 'acl' => array(
+ 'default' => DOKU_CONF . 'acl.auth.php',
+ ),
'plainauth.users' => array(
- 'default' => DOKU_CONF.'users.auth.php',
- ),
-
+ 'default' => DOKU_CONF . 'users.auth.php',
+ ),
'plugins' => array(
- 'default' => array(DOKU_CONF.'plugins.php'),
- 'local' => array(DOKU_CONF.'plugins.local.php'),
+ 'default' => array(DOKU_CONF . 'plugins.php'),
+ 'local' => array(DOKU_CONF . 'plugins.local.php'),
'protected' => array(
- DOKU_CONF.'plugins.required.php',
- DOKU_CONF.'plugins.protected.php',
- ),
+ DOKU_CONF . 'plugins.required.php',
+ DOKU_CONF . 'plugins.protected.php',
),
),
- $config_cascade
+ 'lang' => array(
+ 'core' => array(DOKU_CONF . 'lang/'),
+ 'plugin' => array(DOKU_CONF . 'plugin_lang/'),
+ 'template' => array(DOKU_CONF . 'template_lang/')
+ )
+ ),
+ $config_cascade
);
diff --git a/inc/html.php b/inc/html.php
index bda6fb398..495bdf919 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -222,6 +222,7 @@ function html_show($txt=null){
global $REV;
global $HIGH;
global $INFO;
+ global $DATE_AT;
//disable section editing for old revisions or in preview
if($txt || $REV){
$secedit = false;
@@ -241,8 +242,8 @@ function html_show($txt=null){
echo '</div></div>';
}else{
- if ($REV) print p_locale_xhtml('showrev');
- $html = p_wiki_xhtml($ID,$REV,true);
+ if ($REV||$DATE_AT) print p_locale_xhtml('showrev');
+ $html = p_wiki_xhtml($ID,$REV,true,$DATE_AT);
$html = html_secedit($html,$secedit);
if($INFO['prependTOC']) $html = tpl_toc(true).$html;
$html = html_hilight($html,$HIGH);
@@ -314,15 +315,17 @@ function html_hilight_callback($m) {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function html_search(){
- global $QUERY;
+ global $QUERY, $ID;
global $lang;
$intro = p_locale_xhtml('searchpage');
// allow use of placeholder in search intro
+ $pagecreateinfo = (auth_quickaclcheck($ID) >= AUTH_CREATE) ? $lang['searchcreatepage'] : '';
$intro = str_replace(
- array('@QUERY@','@SEARCH@'),
- array(hsc(rawurlencode($QUERY)),hsc($QUERY)),
- $intro);
+ array('@QUERY@', '@SEARCH@', '@CREATEPAGEINFO@'),
+ array(hsc(rawurlencode($QUERY)), hsc($QUERY), $pagecreateinfo),
+ $intro
+ );
echo $intro;
flush();
diff --git a/inc/init.php b/inc/init.php
index d825b5250..24920a17d 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -259,17 +259,33 @@ function init_paths(){
$conf['media_changelog'] = $conf['metadir'].'/_media.changes';
}
+/**
+ * Load the language strings
+ *
+ * @param string $langCode language code, as passed by event handler
+ */
function init_lang($langCode) {
//prepare language array
- global $lang;
+ global $lang, $config_cascade;
$lang = array();
//load the language files
require(DOKU_INC.'inc/lang/en/lang.php');
+ foreach ($config_cascade['lang']['core'] as $config_file) {
+ if (@file_exists($config_file . 'en/lang.php')) {
+ include($config_file . 'en/lang.php');
+ }
+ }
+
if ($langCode && $langCode != 'en') {
if (file_exists(DOKU_INC."inc/lang/$langCode/lang.php")) {
require(DOKU_INC."inc/lang/$langCode/lang.php");
}
+ foreach ($config_cascade['lang']['core'] as $config_file) {
+ if (@file_exists($config_file . "$langCode/lang.php")) {
+ include($config_file . "$langCode/lang.php");
+ }
+ }
}
}
diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php
index 9d192639b..50984e630 100644
--- a/inc/lang/ar/lang.php
+++ b/inc/lang/ar/lang.php
@@ -71,6 +71,7 @@ $lang['badpassconfirm'] = 'عذراً,كلمة السر غير صحيحة
$lang['minoredit'] = 'تعديلات طفيفة';
$lang['draftdate'] = 'حفظ المسودات آليا مفعّل';
$lang['nosecedit'] = 'غُيرت الصفحة في هذه الأثناء، معلومات الجزء اصبحت قديمة. حُمُلت كل الصفحة بدلا.';
+$lang['searchcreatepage'] = 'إن لم تجد ما تبحث عنه، يمكنك إنشاء صفحة جديدة بعنوان ما تبحث عنة بالضغط على زر "حرر هذه الصفحة".';
$lang['regmissing'] = 'عذرا، عليك ملء جميع الحقول.';
$lang['reguexists'] = 'عذرا، يوجد مشترك بنفس الاسم.';
$lang['regsuccess'] = 'أنشئ المستخدم و ارسلت كلمة السر بالبريد.';
diff --git a/inc/lang/ar/searchpage.txt b/inc/lang/ar/searchpage.txt
index 62c05f5e4..56355f85f 100644
--- a/inc/lang/ar/searchpage.txt
+++ b/inc/lang/ar/searchpage.txt
@@ -1,5 +1,5 @@
====== بحث ======
-نتائج البحث . إن لم تجد ما تبحث عنه، يمكنك إنشاء صفحة جديدة بعنوان ما تبحث عنة بالضغط على زر "حرر هذه الصفحة".
+نتائج البحث . @CREATEPAGEINFO@
===== نتائج البحث ===== \ No newline at end of file
diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php
index 5edcfbe58..bcec31dae 100644
--- a/inc/lang/az/lang.php
+++ b/inc/lang/az/lang.php
@@ -58,6 +58,7 @@ $lang['badlogin'] = 'Təssüf ki istifadəçi adı və ya şifrə s
$lang['minoredit'] = 'Az dəyişiklər';
$lang['draftdate'] = 'Qaralama yadda saxlandı';
$lang['nosecedit'] = 'Bu vaxt ərzində səhifə dəyişilmişdir, və bölmə haqqında məlumat köhnəlmişdir. Səhifənin tam versiyası yüklənmişdir.';
+$lang['searchcreatepage'] = "Əgər Siz axtardığınızı tapa bilmədinizsə, onda Siz adı axtarışınız ilə uyğun düşən yeni səhifə yarada bilərsiniz. Bunu eləmək üçün, sadəcə ''Səhifəni yarat'' düyməsini sıxın.";
$lang['regmissing'] = 'Təssüf ki Siz bütün xanələri doldurmalısınız.';
$lang['reguexists'] = 'Təssüf ki bu ad ilə istifadəçi artıq mövcuddur.';
$lang['regsuccess'] = 'İstivadəci yaradıldı və şifrə sizin e-maila göndərildi.';
diff --git a/inc/lang/az/searchpage.txt b/inc/lang/az/searchpage.txt
index 4f8efe007..6b7fce754 100644
--- a/inc/lang/az/searchpage.txt
+++ b/inc/lang/az/searchpage.txt
@@ -1,5 +1,5 @@
====== Axtarış ======
-Qarşınızda - axtarışın nəticələridir. Əgər Siz axtardığınızı tapa bilmədinizsə, onda Siz adı axtarışınız ilə uyğun düşən yeni səhifə yarada bilərsiniz. Bunu eləmək üçün, sadəcə ''Səhifəni yarat'' düyməsini sıxın.
+Qarşınızda - axtarışın nəticələridir. @CREATEPAGEINFO@
===== Nəticələr =====
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index bfa8b2ad7..cfacd09aa 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -66,6 +66,7 @@ $lang['badpassconfirm'] = 'За съжаление паролата е г
$lang['minoredit'] = 'Промените са незначителни';
$lang['draftdate'] = 'Черновата е автоматично записана на';
$lang['nosecedit'] = 'Страницата бе междувременно променена, презареждане на страницата поради неактуална информация.';
+$lang['searchcreatepage'] = 'Ако не намирате каквото сте търсили, може да създадете или редактирате страница, кръстена на вашата заявка, чрез съответния бутон.';
$lang['regmissing'] = 'Моля, попълнете всички полета.';
$lang['reguexists'] = 'Вече съществува потребител с избраното име.';
$lang['regsuccess'] = 'Потребителят е създаден, а паролата е пратена по електронната поща.';
diff --git a/inc/lang/bg/searchpage.txt b/inc/lang/bg/searchpage.txt
index 48d47515a..a44c648ca 100644
--- a/inc/lang/bg/searchpage.txt
+++ b/inc/lang/bg/searchpage.txt
@@ -1,5 +1,5 @@
====== Търсене ======
-Резултата от търсенето ще намерите по-долу. Ако не намирате каквото сте търсили, може да създадете или редактирате страница, кръстена на вашата заявка, чрез съответния бутон.
+Резултата от търсенето ще намерите по-долу. @CREATEPAGEINFO@
===== Резултати =====
diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php
index 98607d322..3a4e30923 100644
--- a/inc/lang/ca-valencia/lang.php
+++ b/inc/lang/ca-valencia/lang.php
@@ -59,6 +59,7 @@ $lang['badlogin'] = 'Disculpe, pero el nom d\'usuari o la contrasen
$lang['minoredit'] = 'Canvis menors';
$lang['draftdate'] = 'Borrador gravat el';
$lang['nosecedit'] = 'La pàgina ha canviat mentres tant, l\'informació de la secció no estava al dia, s\'ha carregat la pàgina sancera.';
+$lang['searchcreatepage'] = 'Si no ha trobat lo que buscava pot crear o editar una pàgina en el mateix nom que el text que ha buscat utilisant el botó corresponent.';
$lang['regmissing'] = 'Disculpe, pero deu omplir tots els camps.';
$lang['reguexists'] = 'Disculpe, pero ya existix un usuari en este nom.';
$lang['regsuccess'] = 'S\'ha creat l\'usuari i se li ha enviat la contrasenya per correu electrònic.';
diff --git a/inc/lang/ca-valencia/searchpage.txt b/inc/lang/ca-valencia/searchpage.txt
index 80f7e9119..7ed3cd2af 100644
--- a/inc/lang/ca-valencia/searchpage.txt
+++ b/inc/lang/ca-valencia/searchpage.txt
@@ -1,5 +1,5 @@
====== Buscar ======
-Pot vore els resultats de la busca ací avall. Si no ha trobat lo que buscava pot crear o editar una pàgina en el mateix nom que el text que ha buscat utilisant el botó corresponent.
+Pot vore els resultats de la busca ací avall. @CREATEPAGEINFO@
===== Resultats =====
diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php
index 00d28083c..31c16ee23 100644
--- a/inc/lang/ca/lang.php
+++ b/inc/lang/ca/lang.php
@@ -62,6 +62,7 @@ $lang['badlogin'] = 'Nom d\'usuari o contrasenya incorrectes.';
$lang['minoredit'] = 'Canvis menors';
$lang['draftdate'] = 'L\'esborrany s\'ha desat automàticament';
$lang['nosecedit'] = 'Mentrestant la pàgina ha estat modificada. La informació de seccions estava obsoleta i ha calgut carregar la pàgina sencera.';
+$lang['searchcreatepage'] = "Si no trobeu allò que buscàveu, podeu crear una pàgina nova per mitjà del botó ''Edita aquesta pàgina''.";
$lang['regmissing'] = 'Heu d\'omplir tots els camps.';
$lang['reguexists'] = 'Ja existeix un altre usuari amb aquest nom.';
$lang['regsuccess'] = 'S\'ha creat l\'usuari. La contrasenya s\'ha enviat per correu.';
diff --git a/inc/lang/ca/searchpage.txt b/inc/lang/ca/searchpage.txt
index bf69aef15..27efcdabf 100644
--- a/inc/lang/ca/searchpage.txt
+++ b/inc/lang/ca/searchpage.txt
@@ -1,5 +1,5 @@
====== Cerca ======
-Heus ací els resultats de la cerca. Si no trobeu allò que buscàveu, podeu crear una pàgina nova per mitjà del botó ''Edita aquesta pàgina''.
+Heus ací els resultats de la cerca. @CREATEPAGEINFO@
===== Resultats ===== \ No newline at end of file
diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php
index 4d084d479..fd0820b13 100644
--- a/inc/lang/cs/lang.php
+++ b/inc/lang/cs/lang.php
@@ -80,6 +80,7 @@ $lang['badpassconfirm'] = 'Bohužel špatné heslo';
$lang['minoredit'] = 'Drobné změny';
$lang['draftdate'] = 'Koncept automaticky uložen v';
$lang['nosecedit'] = 'Stránka byla v mezičase změněna. Informace o sekci již nebylo platné, byla načtena celá stránka.';
+$lang['searchcreatepage'] = "Pokud jste nenašli, co hledáte, zkuste požadovanou stránku sami vytvořit stisknutím tlačítka ''Vytvořit stránku''.";
$lang['regmissing'] = 'Musíte vyplnit všechny údaje.';
$lang['reguexists'] = 'Uživatel se stejným jménem už je zaregistrován.';
$lang['regsuccess'] = 'Uživatelský účet byl vytvořen a heslo zasláno mailem.';
diff --git a/inc/lang/cs/searchpage.txt b/inc/lang/cs/searchpage.txt
index ac045e100..2f5e89ff6 100644
--- a/inc/lang/cs/searchpage.txt
+++ b/inc/lang/cs/searchpage.txt
@@ -1,5 +1,5 @@
====== Vyhledávání ======
-Výsledky hledání můžete vidět níže. Pokud jste nenašli, co hledáte, zkuste požadovanou stránku sami vytvořit stisknutím tlačítka ''Vytvořit stránku''.
+Výsledky hledání můžete vidět níže. @CREATEPAGEINFO@
===== Výsledky =====
diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php
index 3f06bf758..d27f0aa39 100644
--- a/inc/lang/da/lang.php
+++ b/inc/lang/da/lang.php
@@ -76,6 +76,7 @@ $lang['badpassconfirm'] = 'Kodeordet var desværre forkert';
$lang['minoredit'] = 'Mindre ændringer';
$lang['draftdate'] = 'Kladde automatisk gemt d.';
$lang['nosecedit'] = 'Siden blev ændret i mellemtiden, sektions information var for gammel, hentede hele siden i stedet.';
+$lang['searchcreatepage'] = "Hvis resultaterne ikke indeholder det du søgte efter kan du oprette et nyt dokument med samme navn som søgningen ved at trykke på knappen **''[Opret dette dokument]''**.";
$lang['regmissing'] = 'Du skal udfylde alle felter.';
$lang['reguexists'] = 'Dette brugernavn er allerede i brug.';
$lang['regsuccess'] = 'Du er nu oprettet som bruger. Dit adgangskode bliver sendt til dig i en e-mail.';
diff --git a/inc/lang/da/searchpage.txt b/inc/lang/da/searchpage.txt
index eca1b589c..9cefd419c 100644
--- a/inc/lang/da/searchpage.txt
+++ b/inc/lang/da/searchpage.txt
@@ -1,5 +1,5 @@
====== Søgning ======
-Du kan se resultaterne af din søgning nedenunder. Hvis resultaterne ikke indeholder det du søgte efter kan du oprette et nyt dokument med samme navn som søgningen ved at trykke på knappen **''[Opret dette dokument]''**.
+Du kan se resultaterne af din søgning nedenunder. @CREATEPAGEINFO@
===== Søgeresultater =====
diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php
index c81109580..1a1491f6b 100644
--- a/inc/lang/de-informal/lang.php
+++ b/inc/lang/de-informal/lang.php
@@ -81,6 +81,7 @@ $lang['badpassconfirm'] = 'Das Passwort war falsch.';
$lang['minoredit'] = 'Kleine Änderung';
$lang['draftdate'] = 'Entwurf gespeichert am';
$lang['nosecedit'] = 'Diese Seite wurde in der Zwischenzeit geändert, da das Sektionsinfo veraltet ist. Die ganze Seite wird stattdessen geladen.';
+$lang['searchcreatepage'] = "Falls der gesuchte Begriff nicht gefunden wurde, kannst du direkt eine neue Seite für den Suchbegriff anlegen, indem du auf den Knopf **''[Seite anlegen]''** drückst.";
$lang['regmissing'] = 'Alle Felder müssen ausgefüllt werden';
$lang['reguexists'] = 'Der Benutzername existiert leider schon.';
$lang['regsuccess'] = 'Der neue Benutzer wurde angelegt und das Passwort per E-Mail versandt.';
diff --git a/inc/lang/de-informal/searchpage.txt b/inc/lang/de-informal/searchpage.txt
index 72c57b765..e78e4abdd 100644
--- a/inc/lang/de-informal/searchpage.txt
+++ b/inc/lang/de-informal/searchpage.txt
@@ -1,6 +1,6 @@
====== Suche ======
-Unten sind die Ergebnisse deiner Suche gelistet. Falls der gesuchte Begriff nicht gefunden wurde, kannst du direkt eine neue Seite für den Suchbegriff anlegen, indem du auf den Knopf **''[Seite anlegen]''** drückst.
+Unten sind die Ergebnisse deiner Suche gelistet. @CREATEPAGEINFO@
===== Ergebnisse =====
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index 183571681..2886b84d5 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -88,6 +88,7 @@ $lang['badpassconfirm'] = 'Das Passwort war falsch.';
$lang['minoredit'] = 'kleine Änderung';
$lang['draftdate'] = 'Entwurf gespeichert am';
$lang['nosecedit'] = 'Diese Seite wurde in der Zwischenzeit geändert, Sektionsinfo ist veraltet, lade stattdessen volle Seite.';
+$lang['searchcreatepage'] = "Falls der gesuchte Begriff nicht gefunden wurde, können Sie direkt eine neue Seite für den Suchbegriff anlegen, indem Sie auf den **''[Seite anlegen]''** Knopf drücken.";
$lang['regmissing'] = 'Alle Felder müssen ausgefüllt werden.';
$lang['reguexists'] = 'Der Benutzername existiert leider schon.';
$lang['regsuccess'] = 'Der neue Benutzer wurde angelegt und das Passwort per E-Mail versandt.';
diff --git a/inc/lang/de/searchpage.txt b/inc/lang/de/searchpage.txt
index 56104551b..6cd8006ac 100644
--- a/inc/lang/de/searchpage.txt
+++ b/inc/lang/de/searchpage.txt
@@ -1,6 +1,6 @@
====== Suche ======
-Unten sind die Ergebnisse Ihrer Suche gelistet. Falls der gesuchte Begriff nicht gefunden wurde, können Sie direkt eine neue Seite für den Suchbegriff anlegen, indem Sie auf den **''[Seite anlegen]''** Knopf drücken.
+Unten sind die Ergebnisse Ihrer Suche gelistet. @CREATEPAGEINFO@
===== Ergebnisse =====
diff --git a/inc/lang/el/searchpage.txt b/inc/lang/el/searchpage.txt
index b52162b60..c5bbbbfae 100644
--- a/inc/lang/el/searchpage.txt
+++ b/inc/lang/el/searchpage.txt
@@ -1,4 +1,4 @@
====== Αναζήτηση ======
-Τα αποτελέσματα της αναζήτησής σας:
+Τα αποτελέσματα της αναζήτησής σας. @CREATEPAGEINFO@
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 9c1e5dacd..fb455f85f 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -70,6 +70,7 @@ $lang['badpassconfirm'] = 'Sorry, the password was wrong';
$lang['minoredit'] = 'Minor Changes';
$lang['draftdate'] = 'Draft autosaved on'; // full dformat date will be added
$lang['nosecedit'] = 'The page was changed in the meantime, section info was out of date loaded full page instead.';
+$lang['searchcreatepage'] = 'If you didn\'t find what you were looking for, you can create or edit the page named after your query with the appropriate tool.';
$lang['regmissing'] = 'Sorry, you must fill in all fields.';
$lang['reguexists'] = 'Sorry, a user with this login already exists.';
@@ -367,4 +368,6 @@ $lang['currentns'] = 'Current namespace';
$lang['searchresult'] = 'Search Result';
$lang['plainhtml'] = 'Plain HTML';
$lang['wikimarkup'] = 'Wiki Markup';
+$lang['page_nonexist_rev'] = 'Page did not exist at %s. It was subsequently created at <a href="%s">%s</a>.';
+$lang['unable_to_parse_date'] = 'Unable to parse at parameter "%s".';
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/en/searchpage.txt b/inc/lang/en/searchpage.txt
index 50578db3f..ba0960aa6 100644
--- a/inc/lang/en/searchpage.txt
+++ b/inc/lang/en/searchpage.txt
@@ -1,5 +1,5 @@
====== Search ======
-You can find the results of your search below. If you didn't find what you were looking for, you can create or edit the page named after your query with the appropriate tool.
+You can find the results of your search below. @CREATEPAGEINFO@
===== Results =====
diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php
index f81de7fa1..0cb84a2de 100644
--- a/inc/lang/eo/lang.php
+++ b/inc/lang/eo/lang.php
@@ -71,6 +71,7 @@ $lang['badpassconfirm'] = 'Pardonu, la pasvorto malĝustis';
$lang['minoredit'] = 'Etaj modifoj';
$lang['draftdate'] = 'Lasta konservo de la skizo:';
$lang['nosecedit'] = 'La paĝo ŝanĝiĝis intertempe, sekcio-informo estis malĝisdata, tial la tuta paĝo estas reŝargita.';
+$lang['searchcreatepage'] = 'Se vi ne trovis tion, kion vi serĉis, vi povas krei novan paĝon kun necesa nomo per la koresponda butono.';
$lang['regmissing'] = 'Pardonu, vi devas plenigi ĉiujn kampojn.';
$lang['reguexists'] = 'Pardonu, ĉi tiu uzanto-nomo jam ekzistas.';
$lang['regsuccess'] = 'La uzanto kreiĝis kaj la pasvorto sendiĝis per retpoŝto.';
diff --git a/inc/lang/eo/searchpage.txt b/inc/lang/eo/searchpage.txt
index a940c503d..bdefe7b59 100644
--- a/inc/lang/eo/searchpage.txt
+++ b/inc/lang/eo/searchpage.txt
@@ -1,5 +1,5 @@
====== Serĉo ======
-Sube estas rezultoj de serĉo en la retejo.\\ Se vi ne trovis tion, kion vi serĉis, vi povas krei novan paĝon kun necesa nomo per la koresponda butono.
+Sube estas rezultoj de serĉo en la retejo.\\ @CREATEPAGEINFO@
===== Rezultoj =====
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 47bee3b6f..8f4cb2977 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -98,6 +98,7 @@ $lang['badpassconfirm'] = 'Lo siento, la contraseña es errónea';
$lang['minoredit'] = 'Cambios menores';
$lang['draftdate'] = 'Borrador guardado automáticamente:';
$lang['nosecedit'] = 'La página ha cambiado en el lapso, la información de sección estaba anticuada, en su lugar se cargó la página completa.';
+$lang['searchcreatepage'] = "Si no has encontrado lo que buscabas, puedes crear una nueva página con tu consulta utilizando el botón ''Crea esta página''.";
$lang['regmissing'] = 'Lo siento, tienes que completar todos los campos.';
$lang['reguexists'] = 'Lo siento, ya existe un usuario con este nombre.';
$lang['regsuccess'] = 'El usuario ha sido creado y la contraseña se ha enviado por correo.';
diff --git a/inc/lang/es/searchpage.txt b/inc/lang/es/searchpage.txt
index 47a1a90dd..819815b15 100644
--- a/inc/lang/es/searchpage.txt
+++ b/inc/lang/es/searchpage.txt
@@ -1,5 +1,5 @@
====== Búsqueda ======
-Puedes encontrar los resultados de tu búsqueda abajo. Si no has encontrado lo que buscabas, puedes crear una nueva página con tu consulta utilizando el botón ''Crea esta página''.
+Puedes encontrar los resultados de tu búsqueda abajo. @CREATEPAGEINFO@
===== Resultados ===== \ No newline at end of file
diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php
index 9ae06d7d2..d3c510c43 100644
--- a/inc/lang/et/lang.php
+++ b/inc/lang/et/lang.php
@@ -69,6 +69,7 @@ $lang['badpassconfirm'] = 'Väär salasõna';
$lang['minoredit'] = 'Ebaolulised muudatused';
$lang['draftdate'] = 'Mustand automaatselt salvestatud';
$lang['nosecedit'] = 'Leht on vahepeal muutunud, jaotiste teave osutus aegunuks sestap laeti tervelehekülg.';
+$lang['searchcreatepage'] = "Kui Sa otsitavat ei leidnud võid tekitada oma otsingu nimelise uue lehe kasutades ''Toimeta seda lehte'' nuppu.";
$lang['regmissing'] = 'Kõik väljad tuleb ära täita.';
$lang['reguexists'] = 'Tegelikult on sellise nimega kasutaja juba olemas.';
$lang['regsuccess'] = 'Kasutaja sai tehtud. Parool saadeti Sulle e-posti aadressil.';
diff --git a/inc/lang/et/searchpage.txt b/inc/lang/et/searchpage.txt
index bbc86b637..6ba57324a 100644
--- a/inc/lang/et/searchpage.txt
+++ b/inc/lang/et/searchpage.txt
@@ -1,5 +1,5 @@
====== Otsi ======
-Leiad vasted oma otsingule. Kui Sa otsitavat ei leidnud võid tekitada oma otsingu nimelise uue lehe kasutades ''Toimeta seda lehte'' nuppu.
+Leiad vasted oma otsingule. @CREATEPAGEINFO@
===== Vasted =====
diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php
index 0c996feaf..457c2a496 100644
--- a/inc/lang/eu/lang.php
+++ b/inc/lang/eu/lang.php
@@ -63,6 +63,7 @@ $lang['badlogin'] = 'Barkatu, prozesuak huts egin du; saiatu berriz
$lang['minoredit'] = 'Aldaketa Txikiak';
$lang['draftdate'] = 'Zirriborroa automatikoki gorde da hemen:';
$lang['nosecedit'] = 'Orria aldatua izan da bitartean, info atala zaharkituta geratu da, orri osoa kargatu da horren ordez.';
+$lang['searchcreatepage'] = "Bilatzen zabiltzana aurkitu ez baduzu, zuk zeuk sortu dezakezu orri berri bat bilaketa ostean ''Sortu orri hau'' erabiliz.";
$lang['regmissing'] = 'Barkatu, hutsune guztiak bete behar dituzu.';
$lang['reguexists'] = 'Barkatu, izen bereko erabiltzailea existitzen da.';
$lang['regsuccess'] = 'Erabiltzailea sortu da. Pasahitza mailez bidaliko zaizu.';
diff --git a/inc/lang/eu/searchpage.txt b/inc/lang/eu/searchpage.txt
index 2a487a3bb..c632305b9 100644
--- a/inc/lang/eu/searchpage.txt
+++ b/inc/lang/eu/searchpage.txt
@@ -1,5 +1,5 @@
====== Bilaketa ======
-Emaitzak ondorengo aurkiketan bilatu ditzakezu. Bilatzen zabiltzana aurkitu ez baduzu, zuk zeuk sortu dezakezu orri berri bat bilaketa ostean ''Sortu orri hau'' erabiliz.
+Emaitzak ondorengo aurkiketan bilatu ditzakezu. @CREATEPAGEINFO@
===== Bilaketa emaitzak: =====
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index 96ffcaf90..fea8fa210 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -74,6 +74,7 @@ $lang['badpassconfirm'] = 'متاسفم ، رمز عبور اشتباه
$lang['minoredit'] = 'این ویرایش خُرد است';
$lang['draftdate'] = 'ذخیره خودکار پیش‌نویس';
$lang['nosecedit'] = 'این صفحه در این میان تغییر کرده است، اطلاعات بخش قدیمی شده است، در عوض محتوای کل نمایش داده می‌شود.';
+$lang['searchcreatepage'] = 'اگر به نتیجه‌ی مطلوبی نرسیده‌اید، می‌توانید صفحه‌ی مورد نظر را ایجاد کنید.';
$lang['regmissing'] = 'متاسفم، شما باید همه قسمت‌ها را پر کنید.';
$lang['reguexists'] = 'نام کاربری‌ای که وارد کردید قبلن استفاده شده است. خواهشمندیم یک نام دیگر انتخاب کنید.';
$lang['regsuccess'] = 'کاربر ساخته شد و گذرواژه به صورت ایمیل ارسال گردید.';
diff --git a/inc/lang/fa/searchpage.txt b/inc/lang/fa/searchpage.txt
index 3f0378ed3..f7f1a5309 100644
--- a/inc/lang/fa/searchpage.txt
+++ b/inc/lang/fa/searchpage.txt
@@ -1,5 +1,5 @@
====== جستجو ======
-نتایج جستجو در زیر آمده است. اگر به نتیجه‌ی مطلوبی نرسیده‌اید، می‌توانید صفحه‌ی مورد نظر را ایجاد کنید.
+نتایج جستجو در زیر آمده است. @CREATEPAGEINFO@
===== نتایج ===== \ No newline at end of file
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index 0f82c3b7a..4856efe33 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -68,6 +68,7 @@ $lang['badpassconfirm'] = 'Valitan. Salasana oli väärin';
$lang['minoredit'] = 'Pieni muutos';
$lang['draftdate'] = 'Luonnos tallennettu automaattisesti';
$lang['nosecedit'] = 'Sivu on muuttunut välillä ja kappaleen tiedot olivat vanhentuneet. Koko sivu ladattu.';
+$lang['searchcreatepage'] = "Jos et löytänyt etsimääsi voit luoda uuden sivun tiedustelusi pohjalta käyttämällä ''Muokkaa tätä sivua'' -napilla.";
$lang['regmissing'] = 'Kaikki kentät tulee täyttää.';
$lang['reguexists'] = 'Käyttäjä tällä käyttäjänimellä on jo olemassa.';
$lang['regsuccess'] = 'Käyttäjä luotiin ja salasana lähetettiin sähköpostilla.';
diff --git a/inc/lang/fi/searchpage.txt b/inc/lang/fi/searchpage.txt
index aa9fbf52f..b2ad8cc98 100644
--- a/inc/lang/fi/searchpage.txt
+++ b/inc/lang/fi/searchpage.txt
@@ -1,5 +1,5 @@
====== Etsi ======
-Löydät etsinnän tulokset alta. Jos et löytänyt etsimääsi voit luoda uuden sivun tiedustelusi pohjalta käyttämällä ''Muokkaa tätä sivua'' -napilla.
+Löydät etsinnän tulokset alta. @CREATEPAGEINFO@
===== Tulokset =====
diff --git a/inc/lang/fo/lang.php b/inc/lang/fo/lang.php
index b326d27ac..0aee76e01 100644
--- a/inc/lang/fo/lang.php
+++ b/inc/lang/fo/lang.php
@@ -59,6 +59,7 @@ $lang['badlogin'] = 'Skeivt brúkaranavn ella loyniorð.';
$lang['minoredit'] = 'Smærri broytingar';
$lang['draftdate'] = 'Goym kladdu sett frá';
$lang['nosecedit'] = 'Hendan síðan var broytt undir tilevnan, brotið var ikki rætt dagfest, heintaði fulla síðu í staðin';
+$lang['searchcreatepage'] = "Um úrslitini ikki innihalda tað sum tú leitaði eftir kanst tú upprætta eitt nýtt skjal við sama navni sum leitingin við at trýsta á **''[Upprætta hetta skjal]''** knappin.";
$lang['regmissing'] = 'Tú skalt fylla út øll øki.';
$lang['reguexists'] = 'Hetta brúkaranavn er upptiki.';
$lang['regsuccess'] = 'Tú ert nú stovnavur sum brúkari. Títt loyniorð verður sent til tín í einum T-posti.';
diff --git a/inc/lang/fo/searchpage.txt b/inc/lang/fo/searchpage.txt
index 6304a8901..33bcc3206 100644
--- a/inc/lang/fo/searchpage.txt
+++ b/inc/lang/fo/searchpage.txt
@@ -1,5 +1,5 @@
====== Leiting ======
-Tú kanst síggja úrslitini av tíni leiting niðanfyri. Um úrslitini ikki innihalda tað sum tú leitaði eftir kanst tú upprætta eitt nýtt skjal við sama navni sum leitingin við at trýsta á **''[Upprætta hetta skjal]''** knappin.
+Tú kanst síggja úrslitini av tíni leiting niðanfyri. @CREATEPAGEINFO@
===== Leitiúrslit =====
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index a7651e730..dfaa8df2e 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -96,6 +96,7 @@ $lang['badpassconfirm'] = 'Désolé, le mot de passe est erroné';
$lang['minoredit'] = 'Modification mineure';
$lang['draftdate'] = 'Brouillon enregistré automatiquement le';
$lang['nosecedit'] = 'La page a changé entre temps, les informations de la section sont obsolètes ; la page complète a été chargée à la place.';
+$lang['searchcreatepage'] = 'Si vous n\'avez pas trouvé ce que vous cherchiez, vous pouvez créer ou modifier la page correspondante à votre requête en cliquant sur le bouton approprié.';
$lang['regmissing'] = 'Désolé, vous devez remplir tous les champs.';
$lang['reguexists'] = 'Désolé, ce nom d\'utilisateur est déjà pris.';
$lang['regsuccess'] = 'L\'utilisateur a été créé. Le mot de passe a été expédié par courriel.';
diff --git a/inc/lang/fr/searchpage.txt b/inc/lang/fr/searchpage.txt
index a9bd91608..5577a3a2a 100644
--- a/inc/lang/fr/searchpage.txt
+++ b/inc/lang/fr/searchpage.txt
@@ -1,5 +1,5 @@
====== Recherche ======
-Voici les résultats de votre recherche. Si vous n'avez pas trouvé ce que vous cherchiez, vous pouvez créer ou modifier la page correspondante à votre requête en cliquant sur le bouton approprié.
+Voici les résultats de votre recherche. @CREATEPAGEINFO@
===== Résultats =====
diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php
index aed225359..82cbbbfab 100644
--- a/inc/lang/gl/lang.php
+++ b/inc/lang/gl/lang.php
@@ -63,6 +63,7 @@ $lang['badlogin'] = 'Sentímolo, mais o nome de usuario ou o contra
$lang['minoredit'] = 'Trocos Menores';
$lang['draftdate'] = 'Borrador gardado automaticamente en';
$lang['nosecedit'] = 'A páxina mudou entrementres, a información da sección estaba desfasada polo que se cargou a páxina completa no seu lugar.';
+$lang['searchcreatepage'] = "Se non atopaches o que estabas a procurar, podes crear ou editar a páxina co nome relacionado coa túa procura empregando o botón axeitado.";
$lang['regmissing'] = 'Sentímolo, mais tes que cubrir todos os campos.';
$lang['reguexists'] = 'Sentímolo, mais xa existe un usuario con ese nome.';
$lang['regsuccess'] = 'O usuario foi creado e o contrasinal enviado por correo-e.';
diff --git a/inc/lang/gl/searchpage.txt b/inc/lang/gl/searchpage.txt
index 227ca5dbc..e37ec4642 100644
--- a/inc/lang/gl/searchpage.txt
+++ b/inc/lang/gl/searchpage.txt
@@ -1,5 +1,5 @@
====== Procura ======
-Podes atopar os resultados da túa procura a continuación. Se non atopaches o que estabas a procurar, podes crear ou editar a páxina co nome relacionado coa túa procura empregando o botón axeitado.
+Podes atopar os resultados da túa procura a continuación. @CREATEPAGEINFO@
===== Resultados =====
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index 101102b48..5e2ecbdff 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm'] = 'מצטערים, הסיסמה שגויה';
$lang['minoredit'] = 'שינוים מזעריים';
$lang['draftdate'] = 'הטיוטה נשמרה אוטומטית ב־';
$lang['nosecedit'] = 'הדף השתנה בינתיים, הקטע שערכת אינו מעודכן - העמוד כולו נטען במקום זאת.';
+$lang['searchcreatepage'] = 'אם לא נמצאו דפים בחיפוש, לחיצה על הכפתור "עריכה" תיצור דף חדש על שם מילת החיפוש שהוזנה.';
$lang['regmissing'] = 'עליך למלא את כל השדות, עמך הסליחה.';
$lang['reguexists'] = 'משתמש בשם זה כבר נרשם, עמך הסליחה.';
$lang['regsuccess'] = 'ההרשמה הצליחה, המשתמש נרשם והודעה נשלחה בדוא״ל.';
diff --git a/inc/lang/he/searchpage.txt b/inc/lang/he/searchpage.txt
index aed23be24..78839c371 100644
--- a/inc/lang/he/searchpage.txt
+++ b/inc/lang/he/searchpage.txt
@@ -1,5 +1,5 @@
====== חיפוש ======
-ניתן לראות את תוצאות החיפוש למטה. אם לא נמצאו דפים בחיפוש, לחיצה על הכפתור "עריכה" תיצור דף חדש על שם מילת החיפוש שהוזנה.
+ניתן לראות את תוצאות החיפוש למטה. @CREATEPAGEINFO@
===== תוצאות ===== \ No newline at end of file
diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php
index 69157015b..d7c20b413 100644
--- a/inc/lang/hr/lang.php
+++ b/inc/lang/hr/lang.php
@@ -69,6 +69,7 @@ $lang['badpassconfirm'] = 'Nažalost, lozinka nije ispravna';
$lang['minoredit'] = 'Manje izmjene';
$lang['draftdate'] = 'Nacrt promjena automatski spremljen u';
$lang['nosecedit'] = 'Stranica se u međuvremenu promijenila. Informacija o odjeljku je ostarila pa je učitana kompletna stranica.';
+$lang['searchcreatepage'] = 'Ako ne možete naći što tražite, možete urediti ili stvoriti novu stranicu s odgovarajućim alatom.';
$lang['regmissing'] = 'Morate popuniti sva polja.';
$lang['reguexists'] = 'Korisnik s tim korisničkim imenom već postoji.';
$lang['regsuccess'] = 'Korisnik je uspješno stvoren i poslana je lozinka emailom.';
diff --git a/inc/lang/hr/searchpage.txt b/inc/lang/hr/searchpage.txt
index 7a94f32d2..90d2ffdf4 100644
--- a/inc/lang/hr/searchpage.txt
+++ b/inc/lang/hr/searchpage.txt
@@ -1,5 +1,5 @@
====== Pretraživanja ======
-Možete naći rezultat vaše pretrage u nastavku. Ako ne možete naći što tražite, možete urediti ili stvoriti novu stranicu s odgovarajućim alatom.
+Možete naći rezultat vaše pretrage u nastavku. @CREATEPAGEINFO@
====== Rezultati ======
diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php
index eb4b4601a..bdc78f68d 100644
--- a/inc/lang/hu/lang.php
+++ b/inc/lang/hu/lang.php
@@ -75,6 +75,7 @@ $lang['badpassconfirm'] = 'Hibás jelszó';
$lang['minoredit'] = 'Apróbb változások';
$lang['draftdate'] = 'Piszkozat elmentve:';
$lang['nosecedit'] = 'Időközben megváltozott az oldal, emiatt a szakasz nem friss. Töltsd újra az egész oldalt!';
+$lang['searchcreatepage'] = "Ha nem találtad meg amit kerestél, akkor létrehozhatsz egy új oldalt a keresésed alapján ''Az oldal szerkesztése'' gombbal.";
$lang['regmissing'] = 'Sajnáljuk, az összes mezőt ki kell töltened.';
$lang['reguexists'] = 'Sajnáljuk, ilyen azonosítójú felhasználónk már van.';
$lang['regsuccess'] = 'A felhasználói azonosítót létrehoztuk. A jelszót postáztuk.';
diff --git a/inc/lang/hu/searchpage.txt b/inc/lang/hu/searchpage.txt
index ffde87b66..7e186e5cb 100644
--- a/inc/lang/hu/searchpage.txt
+++ b/inc/lang/hu/searchpage.txt
@@ -1,5 +1,5 @@
====== Keresés ======
-A keresés eredményét lentebb láthatod. Ha nem találtad meg amit kerestél, akkor létrehozhatsz egy új oldalt a keresésed alapján ''Az oldal szerkesztése'' gombbal.
+A keresés eredményét lentebb láthatod. @CREATEPAGEINFO@
===== Eredmény(ek) ===== \ No newline at end of file
diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php
index cabbbab93..a533883b6 100644
--- a/inc/lang/ia/lang.php
+++ b/inc/lang/ia/lang.php
@@ -64,6 +64,7 @@ $lang['badlogin'] = 'Le nomine de usator o le contrasigno es incorr
$lang['minoredit'] = 'Modificationes minor';
$lang['draftdate'] = 'Version provisori automaticamente salveguardate le';
$lang['nosecedit'] = 'Le pagina ha essite modificate intertanto. Le informationes del section es ora obsolete, dunque le pagina complete ha essite cargate in su loco.';
+$lang['searchcreatepage'] = 'Si tu non ha trovate lo que tu cerca, tu pote crear o modificar le pagina nominate secundo tu consulta con le button appropriate.';
$lang['regmissing'] = 'Es necessari completar tote le campos.';
$lang['reguexists'] = 'Regrettabilemente, un usator con iste nomine ja existe.';
$lang['regsuccess'] = 'Le conto ha essite create e le contrasigno ha essite inviate per e-mail.';
diff --git a/inc/lang/ia/searchpage.txt b/inc/lang/ia/searchpage.txt
index c53683371..a8f7fce51 100644
--- a/inc/lang/ia/searchpage.txt
+++ b/inc/lang/ia/searchpage.txt
@@ -1,5 +1,5 @@
====== Recerca ======
-Le resultatos de tu recerca se trova hic infra. Si tu non ha trovate lo que tu cerca, tu pote crear o modificar le pagina nominate secundo tu consulta con le button appropriate.
+Le resultatos de tu recerca se trova hic infra. @CREATEPAGEINFO@
===== Resultatos ===== \ No newline at end of file
diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php
index ff77cf24d..dc4ca00e0 100644
--- a/inc/lang/id/lang.php
+++ b/inc/lang/id/lang.php
@@ -69,6 +69,7 @@ $lang['badlogin'] = 'Maaf, username atau password salah.';
$lang['badpassconfirm'] = 'Maaf, password salah';
$lang['minoredit'] = 'Perubahan Minor';
$lang['draftdate'] = 'Simpan draft secara otomatis';
+$lang['searchcreatepage'] = 'Jika Anda tidak menemukan apa yang diinginkan, Anda dapat membuat halaman baru, dengan nama sesuai "text pencarian" Anda. Gunakan tombol "Edit halaman ini".';
$lang['regmissing'] = 'Maaf, Anda harus mengisi semua field.';
$lang['reguexists'] = 'Maaf, user dengan user login ini telah ada.';
$lang['regsuccess'] = 'User telah didaftarkan dan password telah dikirim ke email Anda.';
diff --git a/inc/lang/id/searchpage.txt b/inc/lang/id/searchpage.txt
index c47bed7dc..b3fb56580 100644
--- a/inc/lang/id/searchpage.txt
+++ b/inc/lang/id/searchpage.txt
@@ -1,5 +1,5 @@
====== Pencarian ======
-Anda dapat menemukan hasil pencarian dibawah ini. Jika Anda tidak menemukan apa yang diinginkan, Anda dapat membuat halaman baru, dengan nama sesuai "text pencarian" Anda. Gunakan tombol "Edit halaman ini".
+Anda dapat menemukan hasil pencarian dibawah ini. @CREATEPAGEINFO@
===== Hasil Pencarian ===== \ No newline at end of file
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index f59a7b948..9cde9d28e 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -81,6 +81,7 @@ $lang['badpassconfirm'] = 'La password è errata';
$lang['minoredit'] = 'Modifiche minori';
$lang['draftdate'] = 'Bozza salvata in automatico il';
$lang['nosecedit'] = 'La pagina è stata modificata nel frattempo; è impossibile modificare solo la sezione scelta, quindi è stata caricata la pagina intera.';
+$lang['searchcreatepage'] = "Se non hai trovato quello che cercavi, puoi creare una nuova pagina con questo titolo usando il pulsante ''Crea questa pagina''.";
$lang['regmissing'] = 'Devi riempire tutti i campi.';
$lang['reguexists'] = 'Il nome utente inserito esiste già.';
$lang['regsuccess'] = 'L\'utente è stato creato. La password è stata spedita via email.';
diff --git a/inc/lang/it/searchpage.txt b/inc/lang/it/searchpage.txt
index 60a019c3e..6f269da01 100644
--- a/inc/lang/it/searchpage.txt
+++ b/inc/lang/it/searchpage.txt
@@ -1,5 +1,5 @@
====== Cerca ======
-Questi sono i risultati della ricerca. Se non hai trovato quello che cercavi, puoi creare una nuova pagina con questo titolo usando il pulsante ''Crea questa pagina''.
+Questi sono i risultati della ricerca. @CREATEPAGEINFO@
===== Risultati =====
diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php
index 381863eb3..30068d782 100644
--- a/inc/lang/ja/lang.php
+++ b/inc/lang/ja/lang.php
@@ -73,6 +73,7 @@ $lang['badpassconfirm'] = 'パスワードが間違っています。';
$lang['minoredit'] = '小変更';
$lang['draftdate'] = 'ドラフト保存日時:';
$lang['nosecedit'] = 'ページ内容が変更されていますがセクション情報が古いため、代わりにページ全体をロードしました。';
+$lang['searchcreatepage'] = 'もし、探しているものが見つからない場合、 検索キーワードにちなんだ名前の文書を作成もしくは編集を行ってください。';
$lang['regmissing'] = '全ての項目を入力してください。';
$lang['reguexists'] = 'このユーザー名は既に存在しています。';
$lang['regsuccess'] = '新しいユーザーが作成されました。パスワードは登録したメールアドレス宛てに送付されます。';
diff --git a/inc/lang/ja/searchpage.txt b/inc/lang/ja/searchpage.txt
index af312728b..80b0950c6 100644
--- a/inc/lang/ja/searchpage.txt
+++ b/inc/lang/ja/searchpage.txt
@@ -1,5 +1,5 @@
====== 検索 ======
-以下に検索結果を表示します。もし、探しているものが見つからない場合、 検索キーワードにちなんだ名前の文書を作成もしくは編集を行ってください。
+以下に検索結果を表示します。@CREATEPAGEINFO@
===== 結果 =====
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index ff5e66d9b..61bb58350 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -74,6 +74,7 @@ $lang['badpassconfirm'] = '죄송하지만 비밀번호가 잘못되었
$lang['minoredit'] = '사소한 바뀜';
$lang['draftdate'] = '초안 자동 저장 시간';
$lang['nosecedit'] = '한 동안 문서가 바뀌었으며, 문단 정보가 오래되어 문서 전체를 대신 열었습니다.';
+$lang['searchcreatepage'] = '만약 원하는 문서를 찾지 못했다면, \'\'문서 만들기\'\'나 \'\'문서 편집\'\'을 사용해 검색어와 같은 이름의 문서를 만들거나 편집할 수 있습니다.';
$lang['regmissing'] = '죄송하지만 모든 필드를 채워야 합니다.';
$lang['reguexists'] = '죄송하지만 같은 이름을 사용하는 사용자가 있습니다.';
$lang['regsuccess'] = '사용자를 만들었으며 비밀번호는 이메일로 보냈습니다.';
@@ -343,3 +344,5 @@ $lang['currentns'] = '현재 이름공간';
$lang['searchresult'] = '검색 결과';
$lang['plainhtml'] = '일반 HTML';
$lang['wikimarkup'] = '위키 문법';
+$lang['page_nonexist_rev'] = '문서가 %s에 존재하지 않았습니다. 그 뒤로 <a href="%s">%s</a>에 만들어졌습니다.';
+$lang['unable_to_parse_date'] = '"%s" 변수에서 구문 분석할 수 없습니다.';
diff --git a/inc/lang/ko/searchpage.txt b/inc/lang/ko/searchpage.txt
index 53faa04c6..6aa1c89af 100644
--- a/inc/lang/ko/searchpage.txt
+++ b/inc/lang/ko/searchpage.txt
@@ -1,5 +1,5 @@
====== 검색 ======
-아래에서 검색 결과를 찾을 수 있습니다. 만약 원하는 문서를 찾지 못했다면, ''문서 만들기''나 ''문서 편집''을 사용해 검색어와 같은 이름의 문서를 만들거나 편집할 수 있습니다.
+아래에서 검색 결과를 찾을 수 있습니다. @CREATEPAGEINFO@
-===== 결과 ===== \ No newline at end of file
+===== 결과 =====
diff --git a/inc/lang/ku/lang.php b/inc/lang/ku/lang.php
index b1b733ec9..a3c91eee8 100644
--- a/inc/lang/ku/lang.php
+++ b/inc/lang/ku/lang.php
@@ -138,5 +138,6 @@ $lang['img_copyr'] = 'Copyright:';
$lang['img_format'] = 'Format:';
$lang['img_camera'] = 'Camera:';
$lang['img_keywords']= 'Keywords:';
+$lang['searchcreatepage'] = "Heke tiştek nehatibe dîtin, tu dikarî dest bi nivîsandina rûpelekê nû bikî. Ji bo vê, ''Vê rûpelê biguherîne'' bitikîne.";
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/ku/searchpage.txt b/inc/lang/ku/searchpage.txt
index 6646228d5..f762b9873 100644
--- a/inc/lang/ku/searchpage.txt
+++ b/inc/lang/ku/searchpage.txt
@@ -1,5 +1,5 @@
====== Lêbigere ======
-Jêr encamên lêgerandina te tên nîşan dan. Heke tiştek nehatibe dîtin, tu dikarî dest bi nivîsandina rûpelekê nû bikî. Ji bo vê, ''Vê rûpelê biguherîne'' bitikîne.
+Jêr encamên lêgerandina te tên nîşan dan. @CREATEPAGEINFO@
===== Encam ===== \ No newline at end of file
diff --git a/inc/lang/la/searchpage.txt b/inc/lang/la/searchpage.txt
index 8e929110d..75fd7cd5b 100644
--- a/inc/lang/la/searchpage.txt
+++ b/inc/lang/la/searchpage.txt
@@ -1,5 +1,5 @@
====== Quaerere ======
-Responsiones in hac pagina uidere potes.
+Responsiones in hac pagina uidere potes. @CREATEPAGEINFO@
===== Responsiones ===== \ No newline at end of file
diff --git a/inc/lang/lb/lang.php b/inc/lang/lb/lang.php
index a1b6ccf84..1090878e2 100644
--- a/inc/lang/lb/lang.php
+++ b/inc/lang/lb/lang.php
@@ -55,6 +55,7 @@ $lang['badlogin'] = 'Entschëllegt, de Benotzernumm oder d\'Passwue
$lang['minoredit'] = 'Kleng Ännerungen';
$lang['draftdate'] = 'Entworf automatesch gespäichert den';
$lang['nosecedit'] = 'D\'Säit gouf an Zwëschenzäit g\'ännert, Sektiounsinfo veralt. Ganz Säit gouf aplaz gelueden.';
+$lang['searchcreatepage'] = 'Wanns de net fënns wats de gesicht hues kanns de eng nei Säit mam Numm vun denger Sich uleeën.';
$lang['regmissing'] = 'Du muss all d\'Felder ausfëllen.';
$lang['reguexists'] = 'Et get schonn e Benotzer mat deem Numm.';
$lang['regsuccess'] = 'De Benotzer gouf erstallt an d\'Passwuert via Email geschéckt.';
diff --git a/inc/lang/lb/searchpage.txt b/inc/lang/lb/searchpage.txt
index 5e15a2c60..9f4e5475e 100644
--- a/inc/lang/lb/searchpage.txt
+++ b/inc/lang/lb/searchpage.txt
@@ -1,5 +1,5 @@
======Sich======
-Hei ënnendrënner sinn d'Resultater vun der Sich. Wanns de net fënns wats de gesicht hues kanns de eng nei Säit mam Numm vun denger Sich uleeën.
+Hei ënnendrënner sinn d'Resultater vun der Sich. @CREATEPAGEINFO@
=====Resultater===== \ No newline at end of file
diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php
index d6552d68c..d53a117f4 100644
--- a/inc/lang/lt/lang.php
+++ b/inc/lang/lt/lang.php
@@ -60,6 +60,7 @@ $lang['badlogin'] = 'Nurodėte blogą vartotojo vardą arba slapta
$lang['minoredit'] = 'Nedidelis pataisymas';
$lang['draftdate'] = 'Juodraštis automatiškai išsaugotas';
$lang['nosecedit'] = 'Puslapis buvo kažkieno pataisytas, teksto dalies informacija tapo pasenusi, todėl pakrautas visas puslapis.';
+$lang['searchcreatepage'] = 'Jeigu neradote to, ko ieškojote, galite sukurti naują puslapį šiuo pavadinimu paspausdami "Redaguoti šį puslapį".';
$lang['regmissing'] = 'Turite užpildyti visus laukus.';
$lang['reguexists'] = 'Vartotojas su pasirinktu prisijungimo vardu jau egzistuoja.';
$lang['regsuccess'] = 'Vartotojas sukurtas, slaptažodis išsiųstas el. paštu.';
diff --git a/inc/lang/lt/searchpage.txt b/inc/lang/lt/searchpage.txt
index a83a6a58a..f03f5f17b 100644
--- a/inc/lang/lt/searchpage.txt
+++ b/inc/lang/lt/searchpage.txt
@@ -1,5 +1,5 @@
====== Paieška ======
-Žemiau matote Jūsų atliktos paieškos rezultatus. Jeigu neradote to, ko ieškojote, galite sukurti naują puslapį šiuo pavadinimu paspausdami "Redaguoti šį puslapį".
+Žemiau matote Jūsų atliktos paieškos rezultatus. @CREATEPAGEINFO@
===== Rezultatai ===== \ No newline at end of file
diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php
index 15994afe6..ddc97fa89 100644
--- a/inc/lang/lv/lang.php
+++ b/inc/lang/lv/lang.php
@@ -65,6 +65,7 @@ $lang['badpassconfirm'] = 'Atvaino, aplama parole';
$lang['minoredit'] = 'Sīki labojumi';
$lang['draftdate'] = 'Melnraksts automātiski saglabāts';
$lang['nosecedit'] = 'Lapa pa šo laiku ir mainījusies, sekcijas informācija novecojusi. Ielādēta lapas pilnās versija.';
+$lang['searchcreatepage'] = 'Ja neatradi meklēto, nospiežot pogu "Labot lapu", vari izveidot jaunu lapu ar tevis meklētajiem atslēgvārdiem nosaukumā.';
$lang['regmissing'] = 'Atvaino, jāaizpilda visas ailes.';
$lang['reguexists'] = 'Atvaino, tāds lietotājs jau ir.';
$lang['regsuccess'] = 'Lietotājs izveidots. Parole nosūtīta pa pastu.';
diff --git a/inc/lang/lv/searchpage.txt b/inc/lang/lv/searchpage.txt
index 22eb55f04..a67f9f166 100644
--- a/inc/lang/lv/searchpage.txt
+++ b/inc/lang/lv/searchpage.txt
@@ -1,4 +1,5 @@
====== Meklēšana ======
-Te vari redzēt meklēšanas rezultātus. Ja neatradi meklēto, nospiežot pogu "Labot lapu", vari izveidot jaunu lapu ar tevis meklētajiem atslēgvārdiem nosaukumā.
+Te vari redzēt meklēšanas rezultātus. @CREATEPAGEINFO@
+
===== Atrasts =====
diff --git a/inc/lang/mg/lang.php b/inc/lang/mg/lang.php
index 6239c01fe..b6e0cc6e0 100644
--- a/inc/lang/mg/lang.php
+++ b/inc/lang/mg/lang.php
@@ -117,5 +117,5 @@ $lang['qb_sig'] = 'Manisy sonia';
$lang['js']['del_confirm']= 'Hofafana ilay andalana?';
$lang['admin_register']= 'Ampio mpampiasa vaovao...';
-
+$lang['searchcreatepage'] = "Raha tsy nahita izay notadiavinao ianao, dia afaka mamorona pejy vaovao avy amin'ny teny nanaovanao fikarohana; Ampiasao ny bokotra ''Hanova ny pejy''.";
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/mg/searchpage.txt b/inc/lang/mg/searchpage.txt
index 68c6271df..ef3ed8b19 100644
--- a/inc/lang/mg/searchpage.txt
+++ b/inc/lang/mg/searchpage.txt
@@ -2,6 +2,6 @@
Ireto ambany ireto ny valin'ny fikarohanao.
-Raha tsy nahita izay notadiavinao ianao, dia afaka mamorona pejy vaovao avy amin'ny teny nanaovanao fikarohana; Ampiasao ny bokotra ''Hanova ny pejy''.
+@CREATEPAGEINFO@
===== Vokatry ny fikarohana ===== \ No newline at end of file
diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php
index 72779dd10..7ebb14b93 100644
--- a/inc/lang/mr/lang.php
+++ b/inc/lang/mr/lang.php
@@ -68,6 +68,7 @@ $lang['badlogin'] = 'माफ़ करा, वापरकर्
$lang['minoredit'] = 'छोटे बदल';
$lang['draftdate'] = 'प्रत आपोआप सुरक्षित केल्याची तारीख';
$lang['nosecedit'] = 'मध्यंतरीच्या काळात हे पृष्ठ बदलले आहे.विभागाची माहिती जुनी झाली होती. त्याऐवजी सबंध पृष्ठ परत लोड केले आहे.';
+$lang['searchcreatepage'] = 'जर तुमची शोधत असलेली गोष्ट तुम्हाला सापडली नाही, तर योग्य बटण वापरून तुम्ही शोधत असलेल्या गोष्टीविषयी तुम्ही एखादे पान निर्माण किंवा संपादित करू शकता.';
$lang['regmissing'] = 'कृपया सर्व रकाने भरा.';
$lang['reguexists'] = 'या नावाने सदस्याची नोंदणी झालेली आहे, कृपया दुसरे सदस्य नाव निवडा.';
$lang['regsuccess'] = 'सदस्याची नोंदणी झाली आहे आणि परवलीचा शब्द इमेल केला आहे.';
diff --git a/inc/lang/mr/searchpage.txt b/inc/lang/mr/searchpage.txt
index 23e10b1d3..d41954b4a 100644
--- a/inc/lang/mr/searchpage.txt
+++ b/inc/lang/mr/searchpage.txt
@@ -1,5 +1,5 @@
====== शोध ======
-तुम्हाला खाली तुमच्या शोधाचे फलित दिसतील. जर तुमची शोधत असलेली गोष्ट तुम्हाला सापडली नाही, तर योग्य बटण वापरून तुम्ही शोधत असलेल्या गोष्टीविषयी तुम्ही एखादे पान निर्माण किंवा संपादित करू शकता.
+तुम्हाला खाली तुमच्या शोधाचे फलित दिसतील. @CREATEPAGEINFO@
====== फलित ====== \ No newline at end of file
diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php
index ddf031242..d4efc89bd 100644
--- a/inc/lang/ne/lang.php
+++ b/inc/lang/ne/lang.php
@@ -58,6 +58,7 @@ $lang['badlogin'] = 'माफ गर्नुहोस् , प्
$lang['minoredit'] = 'सामान्य परिवर्तन';
$lang['draftdate'] = 'ड्राफ्ट स्वचालित रुपमा वचत भएको';
$lang['nosecedit'] = 'यो पृष्ठ यसै बखतमा परिवर्तन भयो, खण्ड जानकारी अध्यावधिक हुन सकेन र पूरै पृष्ठ लोड भयो । ';
+$lang['searchcreatepage'] = 'यदि तपाईले आफुले खोजेको पाउनुभएन भने, तपाईलेको उपयुक्त बटन प्रयोग गरी खोज सँग सम्बन्धित शिर्षकहरु भएका पृष्ठ सृजना या सम्पादन गर्न सक्नुहुन्छ ।';
$lang['regmissing'] = 'माफ गर्नुहोला , सबै ठाउमा भर्नुपर्नेछ ।';
$lang['reguexists'] = 'यो नामको प्रयोगकर्ता पहिले देखि रहेको छ।';
$lang['regsuccess'] = 'यो प्रयोगकर्ता बनाइएको छ र प्रवेशशव्द इमेलमा पठइएको छ।';
diff --git a/inc/lang/ne/searchpage.txt b/inc/lang/ne/searchpage.txt
index a8139f0ab..021306b4b 100644
--- a/inc/lang/ne/searchpage.txt
+++ b/inc/lang/ne/searchpage.txt
@@ -1,3 +1,5 @@
====== खोज ======
-तपाईले आफ्नो खोजको निम्न नतिजा पाउन सक्नुहुन्छ। यदि तपाईले आफुले खोजेको पाउनुभएन भने, तपाईलेको उपयुक्त बटन प्रयोग गरी खोज सँग सम्बन्धित शिर्षकहरु भएका पृष्ठ सृजना या सम्पादन गर्न सक्नुहुन्छ ।
+
+तपाईले आफ्नो खोजको निम्न नतिजा पाउन सक्नुहुन्छ। @CREATEPAGEINFO@
+
===== नतिजा ===== \ No newline at end of file
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index a9058720c..aa0087718 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm'] = 'Sorry, het wachtwoord was onjuist';
$lang['minoredit'] = 'Kleine wijziging';
$lang['draftdate'] = 'Concept automatisch opgeslagen op';
$lang['nosecedit'] = 'De pagina is tussentijds veranderd, sectie-informatie was verouderd, volledige pagina geladen.';
+$lang['searchcreatepage'] = "Niks gevonden? Maak een nieuwe pagina met als naam je zoekopdracht. Klik hiervoor op ''Maak deze pagina aan''.";
$lang['regmissing'] = 'Vul alle velden in';
$lang['reguexists'] = 'Er bestaat al een gebruiker met deze loginnaam.';
$lang['regsuccess'] = 'De gebruiker is aangemaakt. Het wachtwoord is per e-mail verzonden.';
diff --git a/inc/lang/nl/searchpage.txt b/inc/lang/nl/searchpage.txt
index 3ace704c8..e03679b2b 100644
--- a/inc/lang/nl/searchpage.txt
+++ b/inc/lang/nl/searchpage.txt
@@ -1,5 +1,5 @@
====== Zoeken ======
-Hieronder zijn de resultaten van de zoekopdracht. Niks gevonden? Maak een nieuwe pagina met als naam je zoekopdracht. Klik hiervoor op ''Pagina aanpassen''.
+Hieronder zijn de resultaten van de zoekopdracht. @CREATEPAGEINFO@
===== Resultaten =====
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index 6156fa34c..aeea982f2 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -82,6 +82,7 @@ $lang['badpassconfirm'] = 'Beklager, passordet var feil';
$lang['minoredit'] = 'Mindre endringer';
$lang['draftdate'] = 'Kladd autolagret';
$lang['nosecedit'] = 'Siden ble endret i mellomtiden, seksjonsinfo har blitt foreldet - lastet full side istedet.';
+$lang['searchcreatepage'] = "Hvis du ikke finner det du leter etter, så kan du skape en ny side med samme navn som ditt søk ved å klikke på ''**Lag denne siden**''-knappen.";
$lang['regmissing'] = 'Vennligst fyll ut alle felt.';
$lang['reguexists'] = 'Det finnes allerede en konto med dette brukernavnet.';
$lang['regsuccess'] = 'Brukerkonto har blitt laget og passord har blitt sendt via e-post.';
@@ -115,7 +116,7 @@ $lang['searchmedia_in'] = 'Søk i %s';
$lang['txt_upload'] = 'Velg fil som skal lastes opp:';
$lang['txt_filename'] = 'Skriv inn wikinavn (alternativt):';
$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
-$lang['maxuploadsize'] = 'Opplast maks % per fil.';
+$lang['maxuploadsize'] = 'Opplast maks %s per fil.';
$lang['lockedby'] = 'Låst av:';
$lang['lockexpire'] = 'Låsingen utløper:';
$lang['js']['willexpire'] = 'Din redigeringslås for dette dokumentet kommer snart til å utløpe.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
diff --git a/inc/lang/no/searchpage.txt b/inc/lang/no/searchpage.txt
index e94e7895b..2e7b0d887 100644
--- a/inc/lang/no/searchpage.txt
+++ b/inc/lang/no/searchpage.txt
@@ -1,5 +1,5 @@
====== Søk ======
-Du ser resultatet av dette søket nedenfor. Hvis du ikke finner det du leter etter, så kan du skape en ny side med samme navn som ditt søk ved å klikke på ''**Lag denne siden**''-knappen.
+Du ser resultatet av dette søket nedenfor. @CREATEPAGEINFO@
===== Resultat =====
diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php
index c6ff4983e..baf3c28a9 100644
--- a/inc/lang/pl/lang.php
+++ b/inc/lang/pl/lang.php
@@ -78,6 +78,7 @@ $lang['badpassconfirm'] = 'Niestety, hasło jest niepoprawne.';
$lang['minoredit'] = 'Mniejsze zmiany';
$lang['draftdate'] = 'Czas zachowania szkicu';
$lang['nosecedit'] = 'Strona została zmodyfikowana, sekcje zostały zmienione. Załadowano całą stronę.';
+$lang['searchcreatepage'] = 'Jeśli nie znaleziono szukanego hasła, możesz utworzyć nową stronę, której tytułem będzie poszukiwane hasło.';
$lang['regmissing'] = 'Wypełnij wszystkie pola.';
$lang['reguexists'] = 'Użytkownik o tej nazwie już istnieje.';
$lang['regsuccess'] = 'Utworzono użytkownika. Hasło zostało przesłane pocztą.';
diff --git a/inc/lang/pl/searchpage.txt b/inc/lang/pl/searchpage.txt
index 61b9ffbf9..442975fe1 100644
--- a/inc/lang/pl/searchpage.txt
+++ b/inc/lang/pl/searchpage.txt
@@ -1,5 +1,5 @@
====== Wyszukiwanie ======
-Wyniki wyszukiwania. Jeśli nie znaleziono szukanego hasła, możesz utworzyć nową stronę, której tytułem będzie poszukiwane hasło.
+Wyniki wyszukiwania. @CREATEPAGEINFO@
===== Wyniki =====
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index 31940f5be..be62af6fe 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm'] = 'Desculpe, mas a senha está errada ';
$lang['minoredit'] = 'Alterações mínimas';
$lang['draftdate'] = 'O rascunho foi salvo automaticamente em';
$lang['nosecedit'] = 'A página foi modificada nesse intervalo de tempo. Como a informação da seção estava desatualizada, foi carregada a página inteira.';
+$lang['searchcreatepage'] = 'Se você não encontrou o que está procurando, pode criar ou editar a página com o nome que você especificou, usando o botão apropriado.';
$lang['regmissing'] = 'Desculpe, mas você precisa preencher todos os campos.';
$lang['reguexists'] = 'Desculpe, mas já existe um usuário com esse nome.';
$lang['regsuccess'] = 'O usuário foi criado e a senha enviada para seu e-mail.';
diff --git a/inc/lang/pt-br/searchpage.txt b/inc/lang/pt-br/searchpage.txt
index 2fba3afe9..636bfeb7a 100644
--- a/inc/lang/pt-br/searchpage.txt
+++ b/inc/lang/pt-br/searchpage.txt
@@ -1,5 +1,5 @@
====== Pesquisa ======
-Você pode encontrar os resultados da sua pesquisa abaixo. Se você não encontrou o que está procurando, pode criar ou editar a página com o nome que você especificou, usando o botão apropriado.
+Você pode encontrar os resultados da sua pesquisa abaixo. @CREATEPAGEINFO@
===== Resultados =====
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index ddc9b33ab..54f56f8e3 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm'] = 'Infelizmente a palavra-passe não é a correct
$lang['minoredit'] = 'Alterações Menores';
$lang['draftdate'] = 'Rascunho automaticamente gravado em';
$lang['nosecedit'] = 'A página foi modificada entretanto. Como a informação da secção estava desactualizada, foi carregada a página inteira.';
+$lang['searchcreatepage'] = 'Se não encontrou o que procurava pode criar uma nova página com o nome da sua pesquisa, usando o botão apropriado.';
$lang['regmissing'] = 'Por favor, preencha todos os campos.';
$lang['reguexists'] = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
$lang['regsuccess'] = 'O utilizador foi criado e a senha foi enviada para o endereço de correio electrónico usado na inscrição.';
diff --git a/inc/lang/pt/searchpage.txt b/inc/lang/pt/searchpage.txt
index 2239330dd..563ce2834 100644
--- a/inc/lang/pt/searchpage.txt
+++ b/inc/lang/pt/searchpage.txt
@@ -1,5 +1,5 @@
====== Pesquisa ======
-Pode encontrar os resultados da sua pesquisa abaixo. Se não encontrou o que procurava pode criar uma nova página com o nome da sua pesquisa, usando o botão apropriado.
+Pode encontrar os resultados da sua pesquisa abaixo. @CREATEPAGEINFO@
===== Resultados =====
diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php
index cd7d4fcc3..e8d8c4af2 100644
--- a/inc/lang/ro/lang.php
+++ b/inc/lang/ro/lang.php
@@ -67,6 +67,7 @@ $lang['badlogin'] = 'Ne pare rău, utilizatorul și/sau parola au f
$lang['minoredit'] = 'Modificare minoră';
$lang['draftdate'] = 'Schiță salvată automat la';
$lang['nosecedit'] = 'Pagina s-a modificat între timp, secțiunea info a expirat, s-a încărcat pagina întreagă în loc.';
+$lang['searchcreatepage'] = "Dacă nu ai găsit ce ai căutat, poți crea o pagină nouă prin folosirea butonului ''Editează această pagină''.";
$lang['regmissing'] = 'Ne pare rău, trebuie să completezi toate cîmpurile.';
$lang['reguexists'] = 'Ne pare rău, un utilizator cu acest nume este deja autentificat.';
$lang['regsuccess'] = 'Utilizatorul a fost creat. Parola a fost trimisă prin e-mail.';
diff --git a/inc/lang/ro/searchpage.txt b/inc/lang/ro/searchpage.txt
index 53e66adf0..d4e3df2ee 100644
--- a/inc/lang/ro/searchpage.txt
+++ b/inc/lang/ro/searchpage.txt
@@ -1,5 +1,5 @@
====== Căutare ======
-Rezultatele căutării sunt afișate mai jos. Dacă nu ai găsit ce ai căutat, poți crea o pagină nouă prin folosirea butonului ''Editează această pagină''.
+Rezultatele căutării sunt afișate mai jos. @CREATEPAGEINFO@
===== Rezultate =====
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index e2f9b3d57..ddc244a2f 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -88,6 +88,7 @@ $lang['badpassconfirm'] = 'Простите, пароль неверны
$lang['minoredit'] = 'Небольшие изменения';
$lang['draftdate'] = 'Черновик сохранён';
$lang['nosecedit'] = 'За это время страница была изменена и информация о секции устарела. Загружена полная версия страницы.';
+$lang['searchcreatepage'] = 'Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку «Создать страницу».';
$lang['regmissing'] = 'Извините, вам следует заполнить все поля.';
$lang['reguexists'] = 'Извините, пользователь с таким логином уже существует.';
$lang['regsuccess'] = 'Пользователь создан; пароль выслан на адрес электронной почты.';
diff --git a/inc/lang/ru/searchpage.txt b/inc/lang/ru/searchpage.txt
index 04feb21cd..d12a848c6 100644
--- a/inc/lang/ru/searchpage.txt
+++ b/inc/lang/ru/searchpage.txt
@@ -1,5 +1,5 @@
====== Поиск ======
-Перед вами результаты поиска. Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку «Создать страницу».
+Перед вами результаты поиска. @CREATEPAGEINFO@
===== Результаты ===== \ No newline at end of file
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index e501cb7fc..afbf79503 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -66,6 +66,7 @@ $lang['badpassconfirm'] = 'Ľutujem, heslo bolo nesprávne.';
$lang['minoredit'] = 'Menšie zmeny';
$lang['draftdate'] = 'Koncept automaticky uložený';
$lang['nosecedit'] = 'Stránka bola medzičasom zmenená, informácie o sekcii sú zastaralé a z tohto dôvodu bola nahraná celá stránka.';
+$lang['searchcreatepage'] = "Pokiaľ ste nenašli, čo hľadáte, skúste požadovanú stránku sami vytvoriť stlačením tlačidla ''Vytvoriť stránku''.";
$lang['regmissing'] = 'Musíte vyplniť všetky údaje.';
$lang['reguexists'] = 'Užívateľ s rovnakým menom je už zaregistrovaný.';
$lang['regsuccess'] = 'Užívateľský účet bol vytvorený a heslo zaslané emailom.';
diff --git a/inc/lang/sk/searchpage.txt b/inc/lang/sk/searchpage.txt
index 3fdf074b7..3684f1c6c 100644
--- a/inc/lang/sk/searchpage.txt
+++ b/inc/lang/sk/searchpage.txt
@@ -1,5 +1,5 @@
====== Vyhľadávanie ======
-Výsledky hľadania môžete vidieť nižšie. Pokiaľ ste nenašli, čo hľadáte, skúste požadovanú stránku sami vytvoriť stlačením tlačidla ''Vytvoriť stránku''.
+Výsledky hľadania môžete vidieť nižšie. @CREATEPAGEINFO@
===== Výsledky =====
diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php
index f76dbb7d1..b649d08cb 100644
--- a/inc/lang/sl/lang.php
+++ b/inc/lang/sl/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm'] = 'Napaka! Geslo ni pravo.';
$lang['minoredit'] = 'Manjše spremembe';
$lang['draftdate'] = 'Samodejno shranjevanje osnutka je omogočeno';
$lang['nosecedit'] = 'Stran je bila v vmesnem času spremenjena. Podatki strani so bili zastareli, zato se je celotna vsebina naložila znova.';
+$lang['searchcreatepage'] = "V kolikor rezultati niso skladni z zahtevami iskanja, je mogoče ustvariti novo stran z nazivom vaše poizvedbe preko povezave ''Uredi stran''.";
$lang['regmissing'] = 'Izpolniti je treba vsa polja.';
$lang['reguexists'] = 'Uporabnik s tem imenom že obstaja.';
$lang['regsuccess'] = 'Uporabniški račun je uspešno ustvarjen. Geslo je bilo poslano na naveden elektronski naslov.';
diff --git a/inc/lang/sl/searchpage.txt b/inc/lang/sl/searchpage.txt
index 736a36182..6ccfa96a4 100644
--- a/inc/lang/sl/searchpage.txt
+++ b/inc/lang/sl/searchpage.txt
@@ -1,5 +1,5 @@
====== Iskanje ======
-Spodaj so izpisani rezultati iskanja. V kolikor rezultati niso skladni z zahtevami iskanja, je mogoče ustvariti novo stran z nazivom vaše poizvedbe preko povezave ''Uredi stran''.
+Spodaj so izpisani rezultati iskanja. @CREATEPAGEINFO@
===== Rezultati ===== \ No newline at end of file
diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php
index 49984097c..4c61b6a70 100644
--- a/inc/lang/sq/lang.php
+++ b/inc/lang/sq/lang.php
@@ -63,6 +63,7 @@ $lang['badlogin'] = 'Na vjen keq, emri ose fjalëkalimi është gab
$lang['minoredit'] = 'Ndryshime të Vogla';
$lang['draftdate'] = 'Skica u ruajt automatikisht në';
$lang['nosecedit'] = 'Faqja u ndryshua ndëwrkohë, informacioni i kwtij seksioni ishte i vjetër, u ngarkua faqja e tërë në vend të saj.';
+$lang['searchcreatepage'] = 'Nëse nuk e gjetët atë që po kërkonit, mund të krijoni ose redaktoni një faqe pas pyetjes suaj me butonin përkatës.';
$lang['regmissing'] = 'Na vjen keq, duhet të plotësoni të gjitha fushat.';
$lang['reguexists'] = 'Na vjen keq, ekziston një përdorues tjetër me të njëjtin emër.';
$lang['regsuccess'] = 'Përdoruesi u regjistrua dhe fjalëkalimi u dërgua me email.';
diff --git a/inc/lang/sq/searchpage.txt b/inc/lang/sq/searchpage.txt
index 2f34cabb9..b0d6d1f31 100644
--- a/inc/lang/sq/searchpage.txt
+++ b/inc/lang/sq/searchpage.txt
@@ -1,5 +1,5 @@
====== Kërko ======
-Mund të gjeni rezultatet e kërkimit tuaj më poshtë. Nëse nuk e gjetët atë që po kërkonit, mund të krijoni ose redaktoni një faqe pas pyetjes suaj me butonin përkatës.
+Mund të gjeni rezultatet e kërkimit tuaj më poshtë. @CREATEPAGEINFO@
===== Rezultate ===== \ No newline at end of file
diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php
index 22a500e76..37a36c82b 100644
--- a/inc/lang/sr/lang.php
+++ b/inc/lang/sr/lang.php
@@ -60,6 +60,7 @@ $lang['badlogin'] = 'Извините, није добро кори
$lang['minoredit'] = 'Мала измена';
$lang['draftdate'] = 'Нацрт је аутоматски сачуван';
$lang['nosecedit'] = 'Страна је у међувремену промењена, поглавље је застарело и поново се учитава цела страна.';
+$lang['searchcreatepage'] = "Ако нисте нашли то што сте тражили, можете да направите нову страницу названу по Вашем упиту користећи дугме ''Измени ову страницу''.";
$lang['regmissing'] = 'Извините, морате да попуните сва поља.';
$lang['reguexists'] = 'Извините, корисник са истим именом већ постоји.';
$lang['regsuccess'] = 'Корисник је направљен и лозинка је послата путем е-поште.';
diff --git a/inc/lang/sr/searchpage.txt b/inc/lang/sr/searchpage.txt
index 010966a7c..458c5b1fc 100644
--- a/inc/lang/sr/searchpage.txt
+++ b/inc/lang/sr/searchpage.txt
@@ -1,5 +1,5 @@
====== Претрага ======
-Испод можете да нађете резултате Ваше претраге. Ако нисте нашли то што сте тражили, можете да направите нову страницу названу по Вашем упиту користећи дугме ''Измени ову страницу''.
+Испод можете да нађете резултате Ваше претраге. @CREATEPAGEINFO@
===== Резултати =====
diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php
index 1f129c621..f22491db1 100644
--- a/inc/lang/sv/lang.php
+++ b/inc/lang/sv/lang.php
@@ -82,6 +82,7 @@ $lang['badpassconfirm'] = 'Ledsen, lösenordet var felaktigt';
$lang['minoredit'] = 'Små ändringar';
$lang['draftdate'] = 'Utkast automatiskt sparat';
$lang['nosecedit'] = 'Sidan ändrades medan du skrev, sektionsinformationen var inte uppdaterad. Laddar hela sidan istället.';
+$lang['searchcreatepage'] = 'Om du inte hittar det du letar efter, så kan du skapa eller redigera sidan med någon av knapparna.';
$lang['regmissing'] = 'Du måste fylla i alla fälten.';
$lang['reguexists'] = 'Det finns redan en användare med det användarnamnet.';
$lang['regsuccess'] = 'Användarkontot skapat, lösenordet har skickats via e-post.';
diff --git a/inc/lang/sv/searchpage.txt b/inc/lang/sv/searchpage.txt
index bcc88cd95..7b2d3bca3 100644
--- a/inc/lang/sv/searchpage.txt
+++ b/inc/lang/sv/searchpage.txt
@@ -1,5 +1,5 @@
====== Sök ======
-Nedan ser du resultatet av sökningen. Om du inte hittar det du letar efter, så kan du skapa eller redigera sidan med någon av knapparna.
+Nedan ser du resultatet av sökningen. @CREATEPAGEINFO@
===== Resultat =====
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index 0e9f1d3bb..113431276 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -68,6 +68,7 @@ $lang['badpassconfirm'] = 'พาสเวิร์ดไม่ถูก
$lang['minoredit'] = 'เป็นการแก้ไขเล็กน้อย';
$lang['draftdate'] = 'บันทึกฉบับร่างเมื่อ';
$lang['nosecedit'] = 'ในช่วงเวลาที่ผ่านมานี้เพจถูกแก้ไขไปแล้ว, เนื้อหาในเซคชั่นนี้ไม่ทันสมัย กรุณาโหลดเพจใหม่ทั้งหน้าแทน';
+$lang['searchcreatepage'] = 'ถ้าคุณไม่พบสิ่งที่คนมองหา คุณสามารถเลือกที่จะสร้าง หรือแก้ไขชื่อเพจหลังจากดูผลสืบค้นแล้วด้วยปุ่มที่เหมาะสม';
$lang['regmissing'] = 'ขออภัย คุณต้องกรอกให้ครบทุกช่อง';
$lang['reguexists'] = 'ชื่อบัญชีที่ใส่นั้นมีผู้อื่นได้ใช้แล้ว กรุณาเลือกชื่อผู้ใช้อื่น';
$lang['regsuccess'] = 'ผู้ใช้ถูกสร้างแล้ว และรหัสผ่านได้ถูกส่งไปทางอีเมลแล้ว';
diff --git a/inc/lang/th/searchpage.txt b/inc/lang/th/searchpage.txt
index d6399a9e9..263c656ab 100644
--- a/inc/lang/th/searchpage.txt
+++ b/inc/lang/th/searchpage.txt
@@ -1,4 +1,5 @@
====== สืบค้น ======
-คุณสามารถพบผลลัพธ์การสืบค้นของคุณด้านล่าง ถ้าคุณไม่พบสิ่งที่คนมองหา คุณสามารถเลือกที่จะสร้าง หรือแก้ไขชื่อเพจหลังจากดูผลสืบค้นแล้วด้วยปุ่มที่เหมาะสม
+
+คุณสามารถพบผลลัพธ์การสืบค้นของคุณด้านล่าง @CREATEPAGEINFO@
====== ผลลัพธ์ ====== \ No newline at end of file
diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php
index 90a7ea7ba..1676256a5 100644
--- a/inc/lang/tr/lang.php
+++ b/inc/lang/tr/lang.php
@@ -74,6 +74,7 @@ $lang['badpassconfirm'] = 'Üzgünüz, parolanız yanlış';
$lang['minoredit'] = 'Küçük Değişiklikler';
$lang['draftdate'] = 'Taslak şu saatte otomatik kaydedildi:';
$lang['nosecedit'] = 'Sayfa yakın zamanda değiştirilmiştir, bölüm bilgisi eski kalmıştır. Bunun için bölüm yerine tüm sayfa yüklenmiştir.';
+$lang['searchcreatepage'] = "Aradığınız şeyi bulamadıysanız, ''Sayfayı değiştir'' tuşuna tıklayarak girdiğiniz sorgu adıyla yeni bir sayfa oluşturabilirsiniz .";
$lang['regmissing'] = 'Üzgünüz, tüm alanları doldurmalısınız.';
$lang['reguexists'] = 'Üzgünüz, bu isime sahip bir kullanıcı zaten mevcut.';
$lang['regsuccess'] = 'Kullanıcı oluşturuldu ve şifre e-posta adresine gönderildi.';
diff --git a/inc/lang/tr/searchpage.txt b/inc/lang/tr/searchpage.txt
index ae6d50c77..bdb3ddf17 100644
--- a/inc/lang/tr/searchpage.txt
+++ b/inc/lang/tr/searchpage.txt
@@ -1,5 +1,5 @@
====== Arama ======
-Aşağıda aramanın sonuçları listelenmiştir. Aradığınız şeyi bulamadıysanız, ''Sayfayı değiştir'' tuşuna tıklayarak girdiğiniz sorgu adıyla yeni bir sayfa oluşturabilirsiniz .
+Aşağıda aramanın sonuçları listelenmiştir. @CREATEPAGEINFO@
===== Sonuçlar =====
diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php
index 56f064c9f..a6b08c905 100644
--- a/inc/lang/uk/lang.php
+++ b/inc/lang/uk/lang.php
@@ -68,6 +68,7 @@ $lang['badpassconfirm'] = 'Вибачте, але пароль невір
$lang['minoredit'] = 'Незначні зміни';
$lang['draftdate'] = 'Чернетка збережена';
$lang['nosecedit'] = 'Сторінку змінено, дані розділу застарілі. Завантажено сторінку повністю.';
+$lang['searchcreatepage'] = 'Якщо ви не знайшли те, що ви шукали, ви можете створити або редагувати сторінку, що має таке ж ім’я, що і пошуковий запит за допомогою відповідної кнопки.';
$lang['regmissing'] = 'Необхідно заповнити всі поля.';
$lang['reguexists'] = 'Користувач з таким іменем вже існує.';
$lang['regsuccess'] = 'Користувача створено. Пароль відправлено на e-mail.';
diff --git a/inc/lang/uk/searchpage.txt b/inc/lang/uk/searchpage.txt
index 971c24814..3889a7618 100644
--- a/inc/lang/uk/searchpage.txt
+++ b/inc/lang/uk/searchpage.txt
@@ -1,5 +1,5 @@
====== Пошук ======
-Дивіться результати пошуку нижче. Якщо ви не знайшли те, що ви шукали, ви можете створити або редагувати сторінку, що має таке ж ім’я, що і пошуковий запит за допомогою відповідної кнопки.
+Дивіться результати пошуку нижче. @CREATEPAGEINFO@
===== Результати =====
diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php
index b2349d0b0..41a7d590f 100644
--- a/inc/lang/vi/lang.php
+++ b/inc/lang/vi/lang.php
@@ -59,6 +59,7 @@ $lang['badlogin'] = 'Username hoặc password không đúng.';
$lang['minoredit'] = 'Minor Changes';
$lang['draftdate'] = 'Bản nháp được tự động lưu lúc';
$lang['nosecedit'] = 'Các trang web đã được thay đổi trong khi chờ đợi, phần thông tin quá hạn đã được thay thế bằng trang đầy đủ.';
+$lang['searchcreatepage'] = "Nếu bạn không thấy được những gì bạn đang tìm, bạn có thể tạo một trang mới bằng cách bấm vào nút ''Biên soạn trang này'', khi đó bạn sẽ có 1 trang mới với tên trang chính là tuwfw khóa bạn đã tìm kiếm.";
$lang['regmissing'] = 'Bạn cần điền vào tất cả các trường';
$lang['reguexists'] = 'Bạn khác đã dùng username này rồi.';
$lang['regsuccess'] = 'Đã tạo username, và đã gởi password.';
diff --git a/inc/lang/vi/searchpage.txt b/inc/lang/vi/searchpage.txt
index 7ded7a808..c0c748545 100644
--- a/inc/lang/vi/searchpage.txt
+++ b/inc/lang/vi/searchpage.txt
@@ -1,5 +1,5 @@
====== Tìm ======
-Sau đây là kết quả mà bạn đã tìm. Nếu bạn không thấy được những gì bạn đang tìm, bạn có thể tạo một trang mới bằng cách bấm vào nút ''Biên soạn trang này'', khi đó bạn sẽ có 1 trang mới với tên trang chính là tuwfw khóa bạn đã tìm kiếm.
+Sau đây là kết quả mà bạn đã tìm. @CREATEPAGEINFO@
===== Kết quả =====
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index bf7f89130..57c0d03e9 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -76,6 +76,7 @@ $lang['badpassconfirm'] = '抱歉,這密碼是錯的';
$lang['minoredit'] = '小修改';
$lang['draftdate'] = '草稿已自動存檔於';
$lang['nosecedit'] = '在您編輯期間,其他使用者修改過本頁面。區段資料已逾時,因此系統載入了全頁,以取代之。';
+$lang['searchcreatepage'] = '若沒找到您想要的,可按下按鈕建立或編輯和查詢關鍵字同名的頁面。';
$lang['regmissing'] = '很抱歉,所有欄位都要填寫。';
$lang['reguexists'] = '很抱歉,有人已使用了這個帳號。';
$lang['regsuccess'] = '使用者帳號已建立,密碼已寄發至該電郵。';
diff --git a/inc/lang/zh-tw/searchpage.txt b/inc/lang/zh-tw/searchpage.txt
index e0f04c433..96680019d 100644
--- a/inc/lang/zh-tw/searchpage.txt
+++ b/inc/lang/zh-tw/searchpage.txt
@@ -1,5 +1,5 @@
====== 搜尋精靈 ======
-提示:您可以在下面找到您的搜尋結果。若沒找到您想要的,可按下按鈕建立或編輯和查詢關鍵字同名的頁面。
+提示:您可以在下面找到您的搜尋結果。@CREATEPAGEINFO@
===== 搜尋結果 =====
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index 797a9b7a1..d960eb799 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm'] = '对不起,密码错误';
$lang['minoredit'] = '细微修改';
$lang['draftdate'] = '草稿自动保存于';
$lang['nosecedit'] = '在您编辑期间本页刚被他人修改过,局部信息已过期,故载入全页。';
+$lang['searchcreatepage'] = '如果没有找到您想要的东西,您可以使用相应的按钮来创建或编辑该页面。';
$lang['regmissing'] = '对不起,您必须填写所有的字段。';
$lang['reguexists'] = '对不起,该用户名已经存在。';
$lang['regsuccess'] = '新用户已建立,密码将通过电子邮件发送给您。';
diff --git a/inc/lang/zh/searchpage.txt b/inc/lang/zh/searchpage.txt
index 8222e242c..be7ae7909 100644
--- a/inc/lang/zh/searchpage.txt
+++ b/inc/lang/zh/searchpage.txt
@@ -1,5 +1,5 @@
====== 搜索 ======
-下面将显示您的搜索结果。如果没有找到您想要的东西,您可以使用相应的按钮来创建或编辑该页面。
+下面将显示您的搜索结果。@CREATEPAGEINFO@
===== 搜索结果 ===== \ No newline at end of file
diff --git a/inc/media.php b/inc/media.php
index 9022858e1..5190862d7 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -582,6 +582,12 @@ function media_notify($id,$file,$mime,$old_rev=false){
/**
* List all files in a given Media namespace
+ *
+ * @param string $ns namespace
+ * @param null|int $auth permission level
+ * @param string $jump
+ * @param bool $fullscreenview
+ * @param bool|string $sort sorting, false skips sorting
*/
function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=false){
global $conf;
diff --git a/inc/pageutils.php b/inc/pageutils.php
index 5f62926e4..49c00d36f 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -255,7 +255,13 @@ function sectionID($title,&$check) {
* @param bool $clean flag indicating that $id should be cleaned (see wikiFN as well)
* @return bool exists?
*/
-function page_exists($id,$rev='',$clean=true) {
+function page_exists($id,$rev='',$clean=true, $date_at=false) {
+ if($rev !== '' && $date_at) {
+ $pagelog = new PageChangeLog($id);
+ $pagelog_rev = $pagelog->getLastRevisionAt($rev);
+ if($pagelog_rev !== false)
+ $rev = $pagelog_rev;
+ }
return @file_exists(wikiFN($id,$rev,$clean));
}
@@ -486,9 +492,17 @@ function resolve_id($ns,$id,$clean=true){
* @param string &$page (reference) relative media id, updated to resolved id
* @param bool &$exists (reference) updated with existance of media
*/
-function resolve_mediaid($ns,&$page,&$exists){
+function resolve_mediaid($ns,&$page,&$exists,$rev='',$date_at=false){
$page = resolve_id($ns,$page);
- $file = mediaFN($page);
+ if($rev !== '' && $date_at){
+ $medialog = new MediaChangeLog($page);
+ $medialog_rev = $medialog->getLastRevisionAt($rev);
+ if($medialog_rev !== false) {
+ $rev = $medialog_rev;
+ }
+ }
+
+ $file = mediaFN($page,$rev);
$exists = @file_exists($file);
}
@@ -501,7 +515,7 @@ function resolve_mediaid($ns,&$page,&$exists){
* @param string &$page (reference) relative page id, updated to resolved id
* @param bool &$exists (reference) updated with existance of media
*/
-function resolve_pageid($ns,&$page,&$exists){
+function resolve_pageid($ns,&$page,&$exists,$rev='',$date_at=false ){
global $conf;
global $ID;
$exists = false;
@@ -521,20 +535,26 @@ function resolve_pageid($ns,&$page,&$exists){
$page = resolve_id($ns,$page,false); // resolve but don't clean, yet
// get filename (calls clean itself)
- $file = wikiFN($page);
+ if($rev !== '' && $date_at) {
+ $pagelog = new PageChangeLog($page);
+ $pagelog_rev = $pagelog->getLastRevisionAt($rev);
+ if($pagelog_rev !== false)//something found
+ $rev = $pagelog_rev;
+ }
+ $file = wikiFN($page,$rev);
// if ends with colon or slash we have a namespace link
if(in_array(substr($page,-1), array(':', ';')) ||
($conf['useslash'] && substr($page,-1) == '/')){
- if(page_exists($page.$conf['start'])){
+ if(page_exists($page.$conf['start'],$rev,true,$date_at)){
// start page inside namespace
$page = $page.$conf['start'];
$exists = true;
- }elseif(page_exists($page.noNS(cleanID($page)))){
+ }elseif(page_exists($page.noNS(cleanID($page)),$rev,true,$date_at)){
// page named like the NS inside the NS
$page = $page.noNS(cleanID($page));
$exists = true;
- }elseif(page_exists($page)){
+ }elseif(page_exists($page,$rev,true,$date_at)){
// page like namespace exists
$page = $page;
$exists = true;
@@ -551,7 +571,7 @@ function resolve_pageid($ns,&$page,&$exists){
}else{
$try = $page.'s';
}
- if(page_exists($try)){
+ if(page_exists($try,$rev,true,$date_at)){
$page = $try;
$exists = true;
}
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index 44ead9d45..5627a0353 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -28,6 +28,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
/** @var array A stack of section edit data */
protected $sectionedits = array();
+ var $date_at = ''; // link pages and media against this revision
/** @var int last section edit id, used by startSectionEdit */
protected $lastsecid = 0;
@@ -818,7 +819,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$default = $this->_simpleTitle($id);
// now first resolve and clean up the $id
- resolve_pageid(getNS($ID), $id, $exists);
+ resolve_pageid(getNS($ID), $id, $exists, $this->date_at, true);
$name = $this->_getLinkTitle($name, $default, $isImage, $id, $linktype);
if(!$isImage) {
@@ -846,11 +847,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$link['pre'] = '<span class="curid">';
$link['suf'] = '</span>';
}
- $link['more'] = '';
- $link['class'] = $class;
- $link['url'] = wl($id, $params);
- $link['name'] = $name;
- $link['title'] = $id;
+ $link['more'] = '';
+ $link['class'] = $class;
+ if($this->date_at) {
+ $params['at'] = $this->date_at;
+ }
+ $link['url'] = wl($id, $params);
+ $link['name'] = $name;
+ $link['title'] = $id;
//add search string
if($search) {
($conf['userewrite']) ? $link['url'] .= '?' : $link['url'] .= '&amp;';
@@ -1062,7 +1066,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$height = null, $cache = null, $linking = null, $return = false) {
global $ID;
list($src, $hash) = explode('#', $src, 2);
- resolve_mediaid(getNS($ID), $src, $exists);
+ resolve_mediaid(getNS($ID), $src, $exists, $this->date_at, true);
$noLink = false;
$render = ($linking == 'linkonly') ? false : true;
@@ -1070,7 +1074,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
list($ext, $mime) = mimetype($src, false);
if(substr($mime, 0, 5) == 'image' && $render) {
- $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache), ($linking == 'direct'));
+ $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache, 'rev'=>$this->_getLastMediaRevisionAt($src)), ($linking == 'direct'));
} elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render) {
// don't link movies
$noLink = true;
@@ -1078,7 +1082,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// add file icons
$class = preg_replace('/[^_\-a-z0-9]+/i', '_', $ext);
$link['class'] .= ' mediafile mf_'.$class;
- $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache), true);
+ $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache , 'rev'=>$this->_getLastMediaRevisionAt($src)), true);
if($exists) $link['title'] .= ' ('.filesize_h(filesize(mediaFN($src))).')';
}
@@ -1436,7 +1440,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
return $title;
}
//add image tag
- $ret .= '<img src="'.ml($src, array('w' => $width, 'h' => $height, 'cache' => $cache)).'"';
+ $ret .= '<img src="'.ml($src, array('w' => $width, 'h' => $height, 'cache' => $cache, 'rev'=>$this->_getLastMediaRevisionAt($src))).'"';
$ret .= ' class="media'.$align.'"';
if($title) {
@@ -1581,7 +1585,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// see internalmedia() and externalmedia()
list($img['src']) = explode('#', $img['src'], 2);
if($img['type'] == 'internalmedia') {
- resolve_mediaid(getNS($ID), $img['src'], $exists);
+ resolve_mediaid(getNS($ID), $img['src'], $exists ,$this->date_at, true);
}
return $this->_media(
@@ -1740,6 +1744,21 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$out .= '</audio>'.NL;
return $out;
}
+
+ /**
+ * _getLastMediaRevisionAt is a helperfunction to internalmedia() and _media()
+ * which returns an existing media revision less or equal to rev or date_at
+ *
+ * @author lisps
+ * @param string $media_id
+ * @access protected
+ * @return string revision ('' for current)
+ */
+ function _getLastMediaRevisionAt($media_id){
+ if(!$this->date_at || media_isexternal($media_id)) return '';
+ $pagelog = new MediaChangeLog($media_id);
+ return $pagelog->getLastRevisionAt($this->date_at);
+ }
#endregion
}
diff --git a/inc/parserutils.php b/inc/parserutils.php
index 9c2a0b570..ba073f15d 100644
--- a/inc/parserutils.php
+++ b/inc/parserutils.php
@@ -56,7 +56,7 @@ define('METADATA_RENDER_UNLIMITED', 4);
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
-function p_wiki_xhtml($id, $rev='', $excuse=true){
+function p_wiki_xhtml($id, $rev='', $excuse=true,$date_at=''){
$file = wikiFN($id,$rev);
$ret = '';
@@ -65,9 +65,9 @@ function p_wiki_xhtml($id, $rev='', $excuse=true){
$keep = $ID;
$ID = $id;
- if($rev){
+ if($rev || $date_at){
if(@file_exists($file)){
- $ret = p_render('xhtml',p_get_instructions(io_readWikiPage($file,$id,$rev)),$info); //no caching on old revisions
+ $ret = p_render('xhtml',p_get_instructions(io_readWikiPage($file,$id,$rev)),$info,$date_at); //no caching on old revisions
}elseif($excuse){
$ret = p_locale_xhtml('norev');
}
@@ -583,7 +583,7 @@ function p_sort_modes($a, $b){
* @author Harry Fuecks <hfuecks@gmail.com>
* @author Andreas Gohr <andi@splitbrain.org>
*/
-function p_render($mode,$instructions,&$info){
+function p_render($mode,$instructions,&$info,$date_at=''){
if(is_null($instructions)) return '';
$Renderer = p_get_renderer($mode);
@@ -591,6 +591,10 @@ function p_render($mode,$instructions,&$info){
$Renderer->reset();
+ if($date_at) {
+ $Renderer->date_at = $date_at;
+ }
+
$Renderer->smileys = getSmileys();
$Renderer->entities = getEntities();
$Renderer->acronyms = getAcronyms();
@@ -636,6 +640,7 @@ function p_get_renderer($mode) {
}
// not bundled, see if its an enabled renderer plugin & when $mode is 'xhtml', the renderer can supply that format.
+ /** @var Doku_Renderer $Renderer */
$Renderer = $plugin_controller->load('renderer',$rname);
if ($Renderer && is_a($Renderer, 'Doku_Renderer') && ($mode != 'xhtml' || $mode == $Renderer->getFormat())) {
return $Renderer;
diff --git a/inc/plugin.php b/inc/plugin.php
index fbfc0325f..80689e389 100644
--- a/inc/plugin.php
+++ b/inc/plugin.php
@@ -30,7 +30,7 @@ class DokuWiki_Plugin {
* desc - Short description of the plugin (Text only)
* url - Website with more information on the plugin (eg. syntax description)
*/
- function getInfo() {
+ public function getInfo(){
$parts = explode('_', get_class($this));
$info = DOKU_PLUGIN . '/' . $parts[2] . '/plugin.info.txt';
if(@file_exists($info)) return confToHash($info);
@@ -48,16 +48,16 @@ class DokuWiki_Plugin {
// plugin introspection methods
// extract from class name, format = <plugin type>_plugin_<name>[_<component name>]
- function getPluginType() {
+ public function getPluginType() {
list($t) = explode('_', get_class($this), 2);
return $t;
}
- function getPluginName() {
- list($t, $p, $n) = explode('_', get_class($this), 4);
+ public function getPluginName() {
+ list(/* $t */, /* $p */, $n) = explode('_', get_class($this), 4);
return $n;
}
- function getPluginComponent() {
- list($t, $p, $n, $c) = explode('_', get_class($this), 4);
+ public function getPluginComponent() {
+ list(/* $t */, /* $p */, /* $n */, $c) = explode('_', get_class($this), 4);
return (isset($c)?$c:'');
}
@@ -71,7 +71,7 @@ class DokuWiki_Plugin {
* @param string $id id of the string to be retrieved
* @return string string in appropriate language or english if not available
*/
- function getLang($id) {
+ public function getLang($id) {
if (!$this->localised) $this->setupLocale();
return (isset($this->lang[$id]) ? $this->lang[$id] : '');
@@ -86,7 +86,7 @@ class DokuWiki_Plugin {
* @param string $id id of language dependent wiki page
* @return string parsed contents of the wiki page in xhtml format
*/
- function locale_xhtml($id) {
+ public function locale_xhtml($id) {
return p_cached_output($this->localFN($id));
}
@@ -95,7 +95,7 @@ class DokuWiki_Plugin {
* prepends appropriate path for a language dependent filename
* plugin equivalent of localFN()
*/
- function localFN($id) {
+ public function localFN($id) {
global $conf;
$plugin = $this->getPluginName();
$file = DOKU_CONF.'plugin_lang/'.$plugin.'/'.$conf['lang'].'/'.$id.'.txt';
@@ -115,16 +115,29 @@ class DokuWiki_Plugin {
* this function is automatically called by getLang()
*/
function setupLocale() {
- if ($this->localised) return;
+ if($this->localised) return;
- global $conf; // definitely don't invoke "global $lang"
- $path = DOKU_PLUGIN.$this->getPluginName().'/lang/';
+ global $conf, $config_cascade; // definitely don't invoke "global $lang"
+ $path = DOKU_PLUGIN . $this->getPluginName() . '/lang/';
$lang = array();
// don't include once, in case several plugin components require the same language file
- @include($path.'en/lang.php');
- if ($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
+ @include($path . 'en/lang.php');
+ foreach($config_cascade['lang']['plugin'] as $config_file) {
+ if(@file_exists($config_file . $this->getPluginName() . '/en/lang.php')) {
+ include($config_file . $this->getPluginName() . '/en/lang.php');
+ }
+ }
+
+ if($conf['lang'] != 'en') {
+ @include($path . $conf['lang'] . '/lang.php');
+ foreach($config_cascade['lang']['plugin'] as $config_file) {
+ if(@file_exists($config_file . $this->getPluginName() . '/' . $conf['lang'] . '/lang.php')) {
+ include($config_file . $this->getPluginName() . '/' . $conf['lang'] . '/lang.php');
+ }
+ }
+ }
$this->lang = $lang;
$this->localised = true;
@@ -140,7 +153,7 @@ class DokuWiki_Plugin {
* @param mixed $notset what to return if the setting is not available
* @return mixed
*/
- function getConf($setting, $notset=false){
+ public function getConf($setting, $notset=false){
if (!$this->configloaded){ $this->loadConfig(); }
@@ -177,7 +190,7 @@ class DokuWiki_Plugin {
*
* @return array setting => value
*/
- function readDefaultSettings() {
+ protected function readDefaultSettings() {
$path = DOKU_PLUGIN.$this->getPluginName().'/conf/';
$conf = array();
@@ -199,7 +212,7 @@ class DokuWiki_Plugin {
*
* @return object helper plugin object
*/
- function loadHelper($name, $msg = true){
+ public function loadHelper($name, $msg = true){
$obj = plugin_load('helper',$name);
if (is_null($obj) && $msg) msg("Helper plugin $name is not available or invalid.",-1);
return $obj;
@@ -212,7 +225,7 @@ class DokuWiki_Plugin {
* email
* standardised function to generate an email link according to obfuscation settings
*/
- function email($email, $name='', $class='', $more='') {
+ public function email($email, $name='', $class='', $more='') {
if (!$email) return $name;
$email = obfuscate($email);
if (!$name) $name = $email;
@@ -224,7 +237,7 @@ class DokuWiki_Plugin {
* external_link
* standardised function to generate an external link according to conf settings
*/
- function external_link($link, $title='', $class='', $target='', $more='') {
+ public function external_link($link, $title='', $class='', $target='', $more='') {
global $conf;
$link = htmlentities($link);
@@ -251,7 +264,7 @@ class DokuWiki_Plugin {
* @param $arguments
* @return null|string
*/
- function __call($name, $arguments) {
+ public function __call($name, $arguments) {
if($name == 'render'){
dbg_deprecated('render_text()');
if(!isset($arguments[1])) $arguments[1] = 'xhtml';
@@ -269,7 +282,7 @@ class DokuWiki_Plugin {
* @param string $format output format
* @return null|string
*/
- function render_text($text, $format='xhtml') {
+ public function render_text($text, $format='xhtml') {
return p_render($format, p_get_instructions($text),$info);
}
@@ -278,7 +291,7 @@ class DokuWiki_Plugin {
*
* @return bool false if the plugin has to be instantiated
*/
- function isSingleton() {
+ public function isSingleton() {
return true;
}
}
diff --git a/inc/template.php b/inc/template.php
index 7f3c68534..31a65ce61 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -456,6 +456,12 @@ function _tpl_metaheaders_action($data) {
* Just builds a link.
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $url
+ * @param string $name
+ * @param string $more
+ * @param bool $return if true return the link html, otherwise print
+ * @return bool|string html of the link, or true if printed
*/
function tpl_link($url, $name, $more = '', $return = false) {
$out = '<a href="'.$url.'" ';
@@ -472,6 +478,10 @@ function tpl_link($url, $name, $more = '', $return = false) {
* Wrapper around html_wikilink
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id page id
+ * @param string|null $name link name
+ * @return bool true
*/
function tpl_pagelink($id, $name = null) {
print '<bdi>'.html_wikilink($id, $name).'</bdi>';
@@ -534,6 +544,13 @@ function tpl_button($type, $return = false) {
*
* @author Adrian Lang <mail@adrianlang.de>
* @see tpl_get_action
+ *
+ * @param string $type action name
+ * @param string $pre prefix of link
+ * @param string $suf suffix of link
+ * @param string $inner inner HTML for link
+ * @param bool $return if true it returns html, otherwise prints
+ * @return bool|string html of action link or false if nothing, or true if printed
*/
function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = false) {
global $lang;
@@ -571,7 +588,7 @@ function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = fals
$linktarget, $pre.(($inner) ? $inner : $caption).$suf,
'class="action '.$type.'" '.
$akey.$rel.
- 'title="'.hsc($caption).$addTitle.'"', 1
+ 'title="'.hsc($caption).$addTitle.'"', true
);
}
if($return) return $out;
@@ -747,7 +764,6 @@ function tpl_get_action($type) {
break;
default:
return '[unknown %s type]';
- break;
}
return compact('accesskey', 'type', 'id', 'method', 'params', 'nofollow', 'replacement');
}
@@ -768,9 +784,9 @@ function tpl_get_action($type) {
function tpl_action($type, $link = false, $wrapper = false, $return = false, $pre = '', $suf = '', $inner = '') {
$out = '';
if($link) {
- $out .= tpl_actionlink($type, $pre, $suf, $inner, 1);
+ $out .= tpl_actionlink($type, $pre, $suf, $inner, true);
} else {
- $out .= tpl_button($type, 1);
+ $out .= tpl_button($type, true);
}
if($out && $wrapper) $out = "<$wrapper>$out</$wrapper>";
@@ -1027,7 +1043,7 @@ function tpl_pagetitle($id = null, $ret = false) {
* Only allowed in: detail.php
*
* @author Andreas Gohr <andi@splitbrain.org>
- * @param array $tags tags to try
+ * @param array|string $tags tag or array of tags to try
* @param string $alt alternative output if no data was found
* @param null $src the image src, uses global $SRC if not given
* @return string
@@ -1123,6 +1139,7 @@ function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) {
global $IMG;
/** @var Input $INPUT */
global $INPUT;
+ global $REV;
$w = tpl_img_getTag('File.Width');
$h = tpl_img_getTag('File.Height');
@@ -1147,8 +1164,8 @@ function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) {
}
//prepare URLs
- $url = ml($IMG, array('cache'=> $INPUT->str('cache')), true, '&');
- $src = ml($IMG, array('cache'=> $INPUT->str('cache'), 'w'=> $w, 'h'=> $h), true, '&');
+ $url = ml($IMG, array('cache'=> $INPUT->str('cache'),'rev'=>$REV), true, '&');
+ $src = ml($IMG, array('cache'=> $INPUT->str('cache'),'rev'=>$REV, 'w'=> $w, 'h'=> $h), true, '&');
//prepare attributes
$alt = tpl_img_getTag('Simple.Title');
@@ -1274,16 +1291,29 @@ function tpl_getLang($id) {
static $lang = array();
if(count($lang) === 0) {
- $path = tpl_incdir().'lang/';
+ global $conf, $config_cascade; // definitely don't invoke "global $lang"
+
+ $path = tpl_incdir() . 'lang/';
$lang = array();
- global $conf; // definitely don't invoke "global $lang"
// don't include once
- @include($path.'en/lang.php');
- if($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
- }
+ @include($path . 'en/lang.php');
+ foreach($config_cascade['lang']['template'] as $config_file) {
+ if(@file_exists($config_file . $conf['template'] . '/en/lang.php')) {
+ include($config_file . $conf['template'] . '/en/lang.php');
+ }
+ }
+ if($conf['lang'] != 'en') {
+ @include($path . $conf['lang'] . '/lang.php');
+ foreach($config_cascade['lang']['template'] as $config_file) {
+ if(@file_exists($config_file . $conf['template'] . '/' . $conf['lang'] . '/lang.php')) {
+ include($config_file . $conf['template'] . '/' . $conf['lang'] . '/lang.php');
+ }
+ }
+ }
+ }
return $lang[$id];
}
@@ -1304,7 +1334,7 @@ function tpl_locale_xhtml($id) {
function tpl_localeFN($id) {
$path = tpl_incdir().'lang/';
global $conf;
- $file = DOKU_CONF.'/template_lang/'.$conf['template'].'/'.$conf['lang'].'/'.$id.'.txt';
+ $file = DOKU_CONF.'template_lang/'.$conf['template'].'/'.$conf['lang'].'/'.$id.'.txt';
if (!@file_exists($file)){
$file = $path.$conf['lang'].'/'.$id.'.txt';
if(!@file_exists($file)){
@@ -1326,6 +1356,7 @@ function tpl_localeFN($id) {
*
* @triggers MEDIAMANAGER_CONTENT_OUTPUT
* @param bool $fromajax - set true when calling this function via ajax
+ * @param string $sort
* @author Andreas Gohr <andi@splitbrain.org>
*/
function tpl_mediaContent($fromajax = false, $sort='natural') {
diff --git a/install.php b/install.php
index 767dd332f..c8bc68ef9 100644
--- a/install.php
+++ b/install.php
@@ -58,7 +58,6 @@ $dokuwiki_hash = array(
'2013-05-10' => '7b62b75245f57f122d3e0f8ed7989623',
'2013-12-08' => '263c76af309fbf083867c18a34ff5214',
'2014-05-05' => '263c76af309fbf083867c18a34ff5214',
- 'devel' => 'b3ddc3f793eac8c135176e535054c00a',
);
diff --git a/lib/exe/detail.php b/lib/exe/detail.php
index cd3f362ad..cc29d5b87 100644
--- a/lib/exe/detail.php
+++ b/lib/exe/detail.php
@@ -5,6 +5,7 @@ require_once(DOKU_INC.'inc/init.php');
$IMG = getID('media');
$ID = cleanID($INPUT->str('id'));
+$REV = $INPUT->int('rev');
// this makes some general info available as well as the info about the
// "parent" page
@@ -35,7 +36,7 @@ $ERROR = false;
$AUTH = auth_quickaclcheck($IMG);
if($AUTH >= AUTH_READ){
// check if image exists
- $SRC = mediaFN($IMG);
+ $SRC = mediaFN($IMG,$REV);
if(!@file_exists($SRC)){
//doesn't exist!
http_status(404);
diff --git a/lib/plugins/authpgsql/auth.php b/lib/plugins/authpgsql/auth.php
index 99f3ed443..de41598e0 100644
--- a/lib/plugins/authpgsql/auth.php
+++ b/lib/plugins/authpgsql/auth.php
@@ -159,9 +159,11 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql {
if($first) $sql .= " OFFSET $first";
$result = $this->_queryDB($sql);
- foreach($result as $user)
- if(($info = $this->_getCachedUserInfo($user['user'])))
+ foreach($result as $user) {
+ if(($info = $this->_getUserInfo($user['user']))) {
$out[$user['user']] = $info;
+ }
+ }
$this->_unlockTables();
$this->_closeDB();
diff --git a/lib/plugins/authplain/_test/escaping.test.php b/lib/plugins/authplain/_test/escaping.test.php
index cd5294157..cbfbbc587 100644
--- a/lib/plugins/authplain/_test/escaping.test.php
+++ b/lib/plugins/authplain/_test/escaping.test.php
@@ -13,12 +13,12 @@
*/
class helper_plugin_authplain_escaping_test extends DokuWikiTest {
- protected $pluginsEnabled = array('authplain');
+ protected $pluginsEnabled = array('authplainharness');
protected $auth;
protected function reloadUsers() {
/* auth caches data loaded from file, but recreated object forces reload */
- $this->auth = new auth_plugin_authplain();
+ $this->auth = new auth_plugin_authplainharness();
}
function setUp() {
@@ -76,7 +76,44 @@ class helper_plugin_authplain_escaping_test extends DokuWikiTest {
$this->assertEquals($saved['name'], $user['name']);
$this->assertTrue($this->auth->checkPass("testuser", $user['pass']));
}
+
+ // really only required for developers to ensure this plugin will
+ // work with systems running on PCRE 6.6 and lower.
+ public function testLineSplit(){
+ $this->auth->setPregsplit_safe(false);
+
+ $names = array(
+ 'plain',
+ 'ut-fठ8',
+ 'colon:',
+ 'backslash\\',
+ 'alltogether\\ठ:'
+ );
+ $userpass = 'user:password_hash:';
+ $other_user_data = ':email@address:group1,group2';
+
+ foreach ($names as $testname) {
+ $escaped = str_replace(array('\\',':'),array('\\\\','\\:'),$testname); // escape : & \
+ $test_line = $userpass.$escaped.$other_user_data;
+ $result = $this->auth->splitUserData($test_line);
+
+ $this->assertEquals($escaped, $result[2]);
+ }
+ }
}
-?> \ No newline at end of file
+class auth_plugin_authplainharness extends auth_plugin_authplain {
+
+ public function setPregsplit_safe($bool) {
+ $this->_pregsplit_safe = $bool;
+ }
+
+ public function getPregsplit_safe(){
+ return $this->_pregsplit_safe;
+ }
+
+ public function splitUserData($line){
+ return $this->_splitUserData($line);
+ }
+} \ No newline at end of file
diff --git a/lib/plugins/authplain/auth.php b/lib/plugins/authplain/auth.php
index b3ca988b9..3d303597c 100644
--- a/lib/plugins/authplain/auth.php
+++ b/lib/plugins/authplain/auth.php
@@ -17,6 +17,9 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
/** @var array filter pattern */
protected $_pattern = array();
+ /** @var bool safe version of preg_split */
+ protected $_pregsplit_safe = false;
+
/**
* Constructor
*
@@ -44,6 +47,8 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
$this->cando['getUsers'] = true;
$this->cando['getUserCount'] = true;
}
+
+ $this->_pregsplit_safe = version_compare(PCRE_VERSION,'6.7','>=');
}
/**
@@ -329,7 +334,7 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
if(empty($line)) continue;
/* NB: preg_split can be deprecated/replaced with str_getcsv once dokuwiki is min php 5.3 */
- $row = preg_split('/(?<![^\\\\]\\\\)\:/', $line, 5); // allow for : escaped as \:
+ $row = $this->_splitUserData($line);
$row = str_replace('\\:', ':', $row);
$row = str_replace('\\\\', '\\', $row);
@@ -342,6 +347,33 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
}
}
+ protected function _splitUserData($line){
+ // due to a bug in PCRE 6.6, preg_split will fail with the regex we use here
+ // refer github issues 877 & 885
+ if ($this->_pregsplit_safe){
+ return preg_split('/(?<![^\\\\]\\\\)\:/', $line, 5); // allow for : escaped as \:
+ }
+
+ $row = array();
+ $piece = '';
+ $len = strlen($line);
+ for($i=0; $i<$len; $i++){
+ if ($line[$i]=='\\'){
+ $piece .= $line[$i];
+ $i++;
+ if ($i>=$len) break;
+ } else if ($line[$i]==':'){
+ $row[] = $piece;
+ $piece = '';
+ continue;
+ }
+ $piece .= $line[$i];
+ }
+ $row[] = $piece;
+
+ return $row;
+ }
+
/**
* return true if $user + $info match $filter criteria, false otherwise
*
diff --git a/lib/tpl/dokuwiki/detail.php b/lib/tpl/dokuwiki/detail.php
index 8fe2c88a2..9bd841d8c 100644
--- a/lib/tpl/dokuwiki/detail.php
+++ b/lib/tpl/dokuwiki/detail.php
@@ -49,7 +49,7 @@ header('X-UA-Compatible: IE=edge,chrome=1');
if($ERROR):
echo '<h1>'.$ERROR.'</h1>';
else: ?>
-
+ <?php if($REV) echo p_locale_xhtml('showrev');?>
<h1><?php echo nl2br(hsc(tpl_img_getTag('simple.title'))); ?></h1>
<?php tpl_img(900,700); /* parameters: maximum width, maximum height (and more) */ ?>