Skip to content
Permalink
Browse files

Merge branch 'psr2' into psr2-config

* psr2:
  fix: throw RemoteAccessDeniedException if not admin
  feat(RemoteAPI): Add call to delete Users to the remote API 
  Make lexer/state stack more understandable - rename lexer $mode property to avoid two different uses of "mode"   variables in the lexer - clarify/improve comments
  removed obsolete language files
  translation update
  decrease php versions by one
  appveyor: updated PHP versions
  another try at fixing appveyor php downloads using curl
  • Loading branch information...
splitbrain committed May 25, 2018
2 parents 91109d5 + 8eb28c6 commit 303ffdf75e8433a27c5567239253412d84b202a9
@@ -8,12 +8,15 @@ version: '{build}.{branch}'

environment:
matrix:
- PHP_VERSION: '7.0.21'
- PHP_VERSION: '7.2.4'
VC: 'VC15'
PHPUNIT: '7'
- PHP_VERSION: '7.0.29'
VC: 'VC14'
PHPUNIT: '6.3'
- PHP_VERSION: '5.6.30'
PHPUNIT: '6'
- PHP_VERSION: '5.6.35'
VC: 'VC11'
PHPUNIT: '5.7'
PHPUNIT: '5'

cache:
- c:\php -> appveyor.yml
@@ -26,7 +29,7 @@ install:
- IF NOT EXIST c:\php mkdir c:\php
- IF NOT EXIST c:\php\%PHP_VERSION% mkdir c:\php\%PHP_VERSION%
- cd c:\php\%PHP_VERSION%
- IF NOT EXIST php-installed.txt appveyor DownloadFile https://windows.php.net/downloads/releases/archives/php-%PHP_VERSION%-Win32-%VC%-x86.zip
- IF NOT EXIST php-installed.txt curl -fsSL -o php-%PHP_VERSION%-Win32-%VC%-x86.zip https://windows.php.net/downloads/releases/archives/php-%PHP_VERSION%-Win32-%VC%-x86.zip
- IF NOT EXIST php-installed.txt 7z x php-%PHP_VERSION%-Win32-%VC%-x86.zip -y >nul
- IF NOT EXIST php-installed.txt del /Q *.zip
- IF NOT EXIST php-installed.txt copy /Y php.ini-development php.ini
@@ -38,7 +41,7 @@ install:
- IF NOT EXIST php-installed.txt echo extension=php_gd2.dll >> php.ini
- IF NOT EXIST php-installed.txt echo extension=php_bz2.dll >> php.ini
- IF NOT EXIST php-installed.txt echo extension=php_pdo_sqlite.dll >> php.ini
- IF NOT EXIST php-installed.txt appveyor DownloadFile https://phar.phpunit.de/phpunit-%PHPUNIT%.phar -FileName phpunit.phar
- IF NOT EXIST php-installed.txt curl -fsSL -o phpunit.phar https://phar.phpunit.de/phpunit-%PHPUNIT%.phar
- IF NOT EXIST php-installed.txt type nul >> php-installed.txt

test_script:
@@ -4,7 +4,27 @@
interface CallWriterInterface
{
/**
* Add a call to our call list
*
* @param $call the call to be added
*/
public function writeCall($call);
/**
* Append a list of calls to our call list
*
* @param $calls list of calls to be appended
*/
public function writeCalls($calls);
/**
* Explicit request to finish up and clean up NOW!
* (probably because document end has been reached)
*
* If part of a CallWriter chain, call finalise on
* the original call writer
*
*/
public function finalise();
}
@@ -20,7 +20,7 @@ class Nest implements ReWriterInterface
/**
* @inheritdoc
*
* @param CallWriterInterface $CallWriter the renderers current call writer
* @param CallWriterInterface $CallWriter the parser's current call writer, i.e. the one above us in the chain
* @param string $close closing instruction name, this is required to properly terminate the
* syntax mode if the document ends without a closing pattern
*/
@@ -30,7 +30,7 @@ class Lexer
/** @var \Doku_Handler */
protected $handler;
/** @var StateStack */
protected $mode;
protected $modeStack;
/** @var array mode "rewrites" */
protected $mode_handlers;
/** @var bool case sensitive? */
@@ -48,7 +48,7 @@ public function __construct($handler, $start = "accept", $case = false)
$this->case = $case;
$this->regexes = array();
$this->handler = $handler;
$this->mode = new StateStack($start);
$this->modeStack = new StateStack($start);
$this->mode_handlers = array();
}
@@ -179,7 +179,7 @@ public function parse($raw)
* @param int $matchPos Current byte index location in raw doc thats being parsed
* @return boolean False if there was any error from the parser.
*/
protected function dispatchTokens($unmatched, $matched, $mode = false, $initialPos, $matchPos)
protected function dispatchTokens($unmatched, $matched, $mode, $initialPos, $matchPos)
{
if (! $this->invokeHandler($unmatched, DOKU_LEXER_UNMATCHED, $initialPos)) {
return false;
@@ -188,17 +188,17 @@ protected function dispatchTokens($unmatched, $matched, $mode = false, $initialP
if (! $this->invokeHandler($matched, DOKU_LEXER_EXIT, $matchPos)) {
return false;
}
return $this->mode->leave();
return $this->modeStack->leave();
}
if ($this->isSpecialMode($mode)) {
$this->mode->enter($this->decodeSpecial($mode));
$this->modeStack->enter($this->decodeSpecial($mode));
if (! $this->invokeHandler($matched, DOKU_LEXER_SPECIAL, $matchPos)) {
return false;
}
return $this->mode->leave();
return $this->modeStack->leave();
}
if (is_string($mode)) {
$this->mode->enter($mode);
$this->modeStack->enter($mode);
return $this->invokeHandler($matched, DOKU_LEXER_ENTER, $matchPos);
}
return $this->invokeHandler($matched, DOKU_LEXER_MATCHED, $matchPos);
@@ -256,7 +256,7 @@ protected function invokeHandler($content, $is_match, $pos)
if (($content === "") || ($content === false)) {
return true;
}
$handler = $this->mode->getCurrent();
$handler = $this->modeStack->getCurrent();
if (isset($this->mode_handlers[$handler])) {
$handler = $this->mode_handlers[$handler];
}
@@ -282,13 +282,13 @@ protected function invokeHandler($content, $is_match, $pos)
*/
protected function reduce(&$raw)
{
if (! isset($this->regexes[$this->mode->getCurrent()])) {
if (! isset($this->regexes[$this->modeStack->getCurrent()])) {
return false;
}
if ($raw === "") {
return true;
}
if ($action = $this->regexes[$this->mode->getCurrent()]->split($raw, $split)) {
if ($action = $this->regexes[$this->modeStack->getCurrent()]->split($raw, $split)) {
list($unparsed, $match, $raw) = $split;
return array($unparsed, $match, $action);
}
@@ -47,7 +47,7 @@ public function enter($state)
/**
* Leaves the current state and reverts
* to the previous one.
* @return boolean False if we drop off the bottom of the list.
* @return boolean false if we attempt to drop off the bottom of the list.
*/
public function leave()
{
@@ -77,7 +77,11 @@ public function __getRemoteInfo()
'args' => array('string', 'string', 'array'),
'return' => 'bool',
'doc' => 'Append text to a wiki page.'
), 'wiki.getPage' => array(
), 'dokuwiki.deleteUsers' => array(
'args' => array('array'),
'return' => 'bool',
'doc' => 'Remove one or more users from the list of registered users.'
), 'wiki.getPage' => array(
'args' => array('string'),
'return' => 'string',
'doc' => 'Get the raw Wiki text of page, latest version.',
@@ -576,6 +580,25 @@ public function appendPage($id, $text, $params)
return $this->putPage($id, $currentpage . $text, $params);
}
/**
* Remove one or more users from the list of registered users
*
* @param string[] $usernames List of usernames to remove
*
* @return bool
*
* @throws AccessDeniedException
*/
public function deleteUsers($usernames)
{
if (!auth_isadmin()) {
throw new AccessDeniedException('Only admins are allowed to delete users', 114);
}
/** @var DokuWiki_Auth_Plugin $auth */
global $auth;
return (bool)$auth->triggerUserMod('deleteUsers', $usernames);
}
/**
* Uploads a file to the wiki.
*
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Sebastian Engel <mail@engel-s.de>
* @author Karl_de_Hall <Karl.Grohmueller@sonnenhof-sha.de>
* @author Michael Bohn <mjbohn@gmail.com>
* @author Joel Strasser <strasser999@gmail.com>
@@ -139,15 +140,15 @@
$lang['js']['media_drop'] = 'Dateien hier hinziehen um sie hochzuladen';
$lang['js']['media_cancel'] = 'Entfernen';
$lang['js']['media_overwrt'] = 'Existierende Dateien überschreiben';
$lang['search_exact_match'] = 'genaue Treffer';
$lang['search_starts_with'] = 'beginnt mit';
$lang['search_ends_with'] = 'endet mit';
$lang['search_contains'] = 'enthält';
$lang['search_custom_match'] = 'angepasst ';
$lang['search_any_ns'] = 'alle Kategorien';
$lang['search_any_time'] = 'jederzeit';
$lang['search_past_7_days'] = 'letzte Woche';
$lang['search_past_month'] = 'letzter Monat';
$lang['search_exact_match'] = 'Genaue Treffer';
$lang['search_starts_with'] = 'Beginnt mit';
$lang['search_ends_with'] = 'Endet mit';
$lang['search_contains'] = 'Enthält';
$lang['search_custom_match'] = 'Angepasst ';
$lang['search_any_ns'] = 'Alle Namensräume';
$lang['search_any_time'] = 'Jederzeit';
$lang['search_past_7_days'] = 'Letzte Woche';
$lang['search_past_month'] = 'Letzter Monat';
$lang['search_past_year'] = 'letztes Jahr';
$lang['search_sort_by_hits'] = 'Sortiere nach Treffer';
$lang['search_sort_by_mtime'] = 'Sortiere nach letzter Änderung';

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

0 comments on commit 303ffdf

Please sign in to comment.
You can’t perform that action at this time.