Merge branch master into stable

This commit is contained in:
Guy Brand 2020-06-09 19:59:24 +02:00
commit f378e57a29
29 changed files with 217 additions and 206 deletions

View File

@ -43,6 +43,8 @@ class init_noNS_test extends DokuWikiTest {
['0:foo', 'foo'],
['foo:0', '0'],
['0', '0'],
['0:', '0'],
['a:b:', 'b'], // breadcrumbs code passes IDs ending with a colon #3114
];
}

View File

@ -22,7 +22,6 @@ inc/lang/ru/wordblock.txt
inc/parser/lexer.php
inc/plugincontroller.class.php
inc/subscription.php
lib/exe/indexer.php
lib/plugins/authmysql/auth.php
lib/plugins/authmysql/conf/default.php
lib/plugins/authmysql/conf/metadata.php

View File

@ -11,7 +11,7 @@
// update message version - always use a string to avoid localized floats!
use dokuwiki\Extension\Event;
$updateVersion = "51.1";
$updateVersion = "51.2";
// xdebug_start_profiling();

View File

@ -3,6 +3,7 @@
namespace dokuwiki\Action;
use dokuwiki\Action\Exception\FatalException;
use dokuwiki\Sitemap\Mapper;
/**
* Class Sitemap
@ -32,8 +33,8 @@ class Sitemap extends AbstractAction {
throw new FatalException('Sitemap generation is disabled', 404);
}
$sitemap = Sitemap::getFilePath();
if(Sitemap::sitemapIsCompressed()) {
$sitemap = Mapper::getFilePath();
if(Mapper::sitemapIsCompressed()) {
$mime = 'application/x-gzip';
} else {
$mime = 'application/xml; charset=utf-8';
@ -41,7 +42,7 @@ class Sitemap extends AbstractAction {
// Check if sitemap file exists, otherwise create it
if(!is_readable($sitemap)) {
Sitemap::generate();
Mapper::generate();
}
if(is_readable($sitemap)) {

View File

@ -156,7 +156,7 @@ class ActionRouter {
if(defined('DOKU_UNITTEST')) {
throw $e;
}
$msg = 'Something unforseen has happened: ' . $e->getMessage();
$msg = 'Something unforeseen has happened: ' . $e->getMessage();
nice_die(hsc($msg));
}

View File

@ -0,0 +1,39 @@
<?php
namespace dokuwiki\Parsing\Handler;
/**
* Basic implementation of the rewriter interface to be specialized by children
*/
abstract class AbstractRewriter implements ReWriterInterface
{
/** @var CallWriterInterface original CallWriter */
protected $callWriter;
/** @var array[] list of calls */
public $calls = array();
/** @inheritdoc */
public function __construct(CallWriterInterface $callWriter)
{
$this->callWriter = $callWriter;
}
/** @inheritdoc */
public function writeCall($call)
{
$this->calls[] = $call;
}
/** * @inheritdoc */
public function writeCalls($calls)
{
$this->calls = array_merge($this->calls, $calls);
}
/** @inheritDoc */
public function getCallWriter()
{
return $this->callWriter;
}
}

View File

@ -7,14 +7,14 @@ interface CallWriterInterface
/**
* Add a call to our call list
*
* @param $call the call to be added
* @param array $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
* @param array[] $calls list of calls to be appended
*/
public function writeCalls($calls);

View File

@ -2,13 +2,8 @@
namespace dokuwiki\Parsing\Handler;
class Lists implements ReWriterInterface
class Lists extends AbstractRewriter
{
/** @var CallWriterInterface original call writer */
protected $callWriter;
protected $calls = array();
protected $listCalls = array();
protected $listStack = array();
@ -16,28 +11,6 @@ class Lists implements ReWriterInterface
const NODE = 1;
/** @inheritdoc */
public function __construct(CallWriterInterface $CallWriter)
{
$this->callWriter = $CallWriter;
}
/** @inheritdoc */
public function writeCall($call)
{
$this->calls[] = $call;
}
/**
* @inheritdoc
* Probably not needed but just in case...
*/
public function writeCalls($calls)
{
$this->calls = array_merge($this->calls, $calls);
}
/** @inheritdoc */
public function finalise()
{

View File

@ -8,13 +8,8 @@ namespace dokuwiki\Parsing\Handler;
*
* @author Chris Smith <chris@jalakai.co.uk>
*/
class Nest implements ReWriterInterface
class Nest extends AbstractRewriter
{
/** @var CallWriterInterface original CallWriter */
protected $callWriter;
protected $calls = array();
protected $closingInstruction;
/**
@ -26,8 +21,7 @@ class Nest implements ReWriterInterface
*/
public function __construct(CallWriterInterface $CallWriter, $close = "nest_close")
{
$this->callWriter = $CallWriter;
parent::__construct($CallWriter);
$this->closingInstruction = $close;
}
@ -69,6 +63,9 @@ class Nest implements ReWriterInterface
return $this->callWriter;
}
/**
* @param array $call
*/
protected function addCall($call)
{
$key = count($this->calls);
@ -80,4 +77,6 @@ class Nest implements ReWriterInterface
$this->calls[] = $call;
}
}
}

View File

@ -2,39 +2,12 @@
namespace dokuwiki\Parsing\Handler;
class Preformatted implements ReWriterInterface
class Preformatted extends AbstractRewriter
{
/** @var CallWriterInterface original call writer */
protected $callWriter;
protected $calls = array();
protected $pos;
protected $text ='';
/**
* @inheritdoc
*/
public function __construct(CallWriterInterface $CallWriter)
{
$this->callWriter = $CallWriter;
}
/** @inheritdoc */
public function writeCall($call)
{
$this->calls[] = $call;
}
/**
* @inheritdoc
* Probably not needed but just in case...
*/
public function writeCalls($calls)
{
$this->calls = array_merge($this->calls, $calls);
}
/** @inheritdoc */
public function finalise()
{

View File

@ -2,38 +2,10 @@
namespace dokuwiki\Parsing\Handler;
class Quote implements ReWriterInterface
class Quote extends AbstractRewriter
{
/** @var CallWriterInterface original CallWriter */
protected $callWriter;
protected $calls = array();
protected $quoteCalls = array();
/** @inheritdoc */
public function __construct(CallWriterInterface $CallWriter)
{
$this->callWriter = $CallWriter;
}
/** @inheritdoc */
public function writeCall($call)
{
$this->calls[] = $call;
}
/**
* @inheritdoc
*
* Probably not needed but just in case...
*/
public function writeCalls($calls)
{
$this->calls = array_merge($this->calls, $calls);
}
/** @inheritdoc */
public function finalise()
{
@ -101,6 +73,10 @@ class Quote implements ReWriterInterface
return $this->callWriter;
}
/**
* @param string $marker
* @return int
*/
protected function getDepth($marker)
{
preg_match('/>{1,}/', $marker, $matches);

View File

@ -5,10 +5,11 @@ namespace dokuwiki\Parsing\Handler;
/**
* A ReWriter takes over from the orignal call writer and handles all new calls itself until
* the process method is called and control is given back to the original writer.
*
* @property array[] $calls The list of current calls
*/
interface ReWriterInterface extends CallWriterInterface
{
/**
* ReWriterInterface constructor.
*
@ -26,4 +27,11 @@ interface ReWriterInterface extends CallWriterInterface
* @return CallWriterInterface the orignal call writer
*/
public function process();
/**
* Accessor for this rewriter's original CallWriter
*
* @return CallWriterInterface
*/
public function getCallWriter();
}

View File

@ -2,13 +2,9 @@
namespace dokuwiki\Parsing\Handler;
class Table implements ReWriterInterface
class Table extends AbstractRewriter
{
/** @var CallWriterInterface original CallWriter */
protected $callWriter;
protected $calls = array();
protected $tableCalls = array();
protected $maxCols = 0;
protected $maxRows = 1;
@ -19,27 +15,6 @@ class Table implements ReWriterInterface
protected $currentRow = array('tableheader' => 0, 'tablecell' => 0);
protected $countTableHeadRows = 0;
/** @inheritdoc */
public function __construct(CallWriterInterface $CallWriter)
{
$this->callWriter = $CallWriter;
}
/** @inheritdoc */
public function writeCall($call)
{
$this->calls[] = $call;
}
/**
* @inheritdoc
* Probably not needed but just in case...
*/
public function writeCalls($calls)
{
$this->calls = array_merge($this->calls, $calls);
}
/** @inheritdoc */
public function finalise()
{

View File

@ -9,14 +9,6 @@
namespace dokuwiki\Parsing\Lexer;
// FIXME move elsewhere
define("DOKU_LEXER_ENTER", 1);
define("DOKU_LEXER_MATCHED", 2);
define("DOKU_LEXER_UNMATCHED", 3);
define("DOKU_LEXER_EXIT", 4);
define("DOKU_LEXER_SPECIAL", 5);
/**
* Accepts text and breaks it into tokens.
*

View File

@ -9,21 +9,12 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
// some ACL level defines
use dokuwiki\Extension\AuthPlugin;
use dokuwiki\Extension\Event;
use dokuwiki\Extension\PluginController;
use dokuwiki\PassHash;
use dokuwiki\Subscriptions\RegistrationSubscriptionSender;
define('AUTH_NONE', 0);
define('AUTH_READ', 1);
define('AUTH_EDIT', 2);
define('AUTH_CREATE', 4);
define('AUTH_UPLOAD', 8);
define('AUTH_DELETE', 16);
define('AUTH_ADMIN', 255);
/**
* Initialize the auth system.
*

View File

@ -6,14 +6,6 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
// Constants for known core changelog line types.
// Use these in place of string literals for more readable code.
define('DOKU_CHANGE_TYPE_CREATE', 'C');
define('DOKU_CHANGE_TYPE_EDIT', 'E');
define('DOKU_CHANGE_TYPE_MINOR_EDIT', 'e');
define('DOKU_CHANGE_TYPE_DELETE', 'D');
define('DOKU_CHANGE_TYPE_REVERT', 'R');
/**
* parses a changelog line into it's components
*

View File

@ -14,16 +14,6 @@ use dokuwiki\Subscriptions\SubscriberManager;
use dokuwiki\Extension\AuthPlugin;
use dokuwiki\Extension\Event;
/**
* These constants are used with the recents function
*/
define('RECENTS_SKIP_DELETED', 2);
define('RECENTS_SKIP_MINORS', 4);
define('RECENTS_SKIP_SUBSPACES', 8);
define('RECENTS_MEDIA_CHANGES', 16);
define('RECENTS_MEDIA_PAGES_MIXED', 32);
define('RECENTS_ONLY_CREATION', 64);
/**
* Wrapper around htmlspecialchars()
*

65
inc/defines.php Normal file
View File

@ -0,0 +1,65 @@
<?php
/**
* Set up globally available constants
*/
/**
* Auth Levels
* @file inc/auth.php
*/
define('AUTH_NONE', 0);
define('AUTH_READ', 1);
define('AUTH_EDIT', 2);
define('AUTH_CREATE', 4);
define('AUTH_UPLOAD', 8);
define('AUTH_DELETE', 16);
define('AUTH_ADMIN', 255);
/**
* Message types
* @see msg()
*/
define('MSG_PUBLIC', 0);
define('MSG_USERS_ONLY', 1);
define('MSG_MANAGERS_ONLY', 2);
define('MSG_ADMINS_ONLY', 4);
/**
* Lexer constants
* @see \dokuwiki\Parsing\Lexer\Lexer
*/
define('DOKU_LEXER_ENTER', 1);
define('DOKU_LEXER_MATCHED', 2);
define('DOKU_LEXER_UNMATCHED', 3);
define('DOKU_LEXER_EXIT', 4);
define('DOKU_LEXER_SPECIAL', 5);
/**
* Constants for known core changelog line types.
* @file inc/changelog.php
*/
define('DOKU_CHANGE_TYPE_CREATE', 'C');
define('DOKU_CHANGE_TYPE_EDIT', 'E');
define('DOKU_CHANGE_TYPE_MINOR_EDIT', 'e');
define('DOKU_CHANGE_TYPE_DELETE', 'D');
define('DOKU_CHANGE_TYPE_REVERT', 'R');
/**
* Changelog filter constants
* @file inc/changelog.php
*/
define('RECENTS_SKIP_DELETED', 2);
define('RECENTS_SKIP_MINORS', 4);
define('RECENTS_SKIP_SUBSPACES', 8);
define('RECENTS_MEDIA_CHANGES', 16);
define('RECENTS_MEDIA_PAGES_MIXED', 32);
define('RECENTS_ONLY_CREATION', 64);
/**
* Media error types
* @file inc/media.php
*/
define('DOKU_MEDIA_DELETED', 1);
define('DOKU_MEDIA_NOT_AUTH', 2);
define('DOKU_MEDIA_INUSE', 4);
define('DOKU_MEDIA_EMPTY_NS', 8);

View File

@ -305,33 +305,15 @@ function check(){
}
/**
* print a message
* Display a message to the user
*
* If HTTP headers were not sent yet the message is added
* to the global message array else it's printed directly
* using html_msgarea()
*
*
* Levels can be:
*
* -1 error
* 0 info
* 1 success
*
* @author Andreas Gohr <andi@splitbrain.org>
* @see html_msgarea
*/
define('MSG_PUBLIC', 0);
define('MSG_USERS_ONLY', 1);
define('MSG_MANAGERS_ONLY',2);
define('MSG_ADMINS_ONLY',4);
/**
* Display a message to the user
*
* Triggers INFOUTIL_MSG_SHOW
*
* @see html_msgarea()
* @param string $message
* @param int $lvl -1 = error, 0 = info, 1 = success, 2 = notify
* @param string $line line number

View File

@ -336,8 +336,11 @@ $lang['i_superuser'] = 'Super-usuario';
$lang['i_problems'] = 'El instalador encontró algunos problemas, se muestran abajo. No se puede continuar la instalación hasta que usted no los corrija.';
$lang['i_modified'] = 'Por razones de seguridad este script sólo funcionará con una instalación nueva y no modificada de Dokuwiki. Usted debe extraer nuevamente los ficheros del paquete bajado, o bien consultar las <a href="http://dokuwiki.org/install">instrucciones de instalación de Dokuwiki</a> completas.';
$lang['i_funcna'] = 'La función de PHP <code>%s</code> no está disponible. ¿Tal vez su proveedor de hosting la ha deshabilitado por alguna razón?';
$lang['i_disabled'] = 'Ha sido deshabilitado por su proveedor.';
$lang['i_funcnmail'] = '<b>Nota:</b> La función de PHP mail() no está disponible. %s si no está disponible, puede instalar el <a href="http://dokuwiki.org/plugins/smtp">complemento smtp</a>.';
$lang['i_phpver'] = 'Su versión de PHP <code>%s</code> es menor que la necesaria <code>%s</code>. Es necesario que actualice su instalación de PHP.';
$lang['i_mbfuncoverload'] = 'mbstring.func_overload se debe deshabilitar en php.ini para que funcione DokuWiki.';
$lang['i_urandom'] = 'DokuWiki no puede crear números criptográficamente seguros para las cookies. Es posible que desee verificar la configuración de open_basedir en php.ini para obtener el acceso apropiado a <code>/dev/urandom</code>.';
$lang['i_permfail'] = 'DokuWili no puede escribir <code>%s</code>. ¡Es necesario establecer correctamente los permisos de este directorio!';
$lang['i_confexists'] = '<code>%s</code> ya existe';
$lang['i_writeerr'] = 'Imposible crear <code>%s</code>. Se necesita que usted controle los permisos del fichero/directorio y que cree el fichero manualmente.';
@ -388,6 +391,7 @@ $lang['media_perm_upload'] = 'Disculpa, no tienes los permisos necesarios pa
$lang['media_update'] = 'Actualizar nueva versión';
$lang['media_restore'] = 'Restaurar esta versión';
$lang['media_acl_warning'] = 'Puede que esta lista no esté completa debido a restricciones de la ACL y a las páginas ocultas.';
$lang['email_fail'] = 'La función de PHP mail() falta o está deshabilitada. No se envió el siguiente correo electrónico:';
$lang['currentns'] = 'Espacio de nombres actual';
$lang['searchresult'] = 'Resultado de la búsqueda';
$lang['plainhtml'] = 'HTML sencillo';

View File

@ -12,6 +12,7 @@ spl_autoload_register('load_autoload');
// require all the common libraries
// for a few of these order does matter
require_once(DOKU_INC.'inc/defines.php');
require_once(DOKU_INC.'inc/actions.php');
require_once(DOKU_INC.'inc/changelog.php');
require_once(DOKU_INC.'inc/common.php');

View File

@ -230,11 +230,6 @@ function media_inuse($id) {
}
}
define('DOKU_MEDIA_DELETED', 1);
define('DOKU_MEDIA_NOT_AUTH', 2);
define('DOKU_MEDIA_INUSE', 4);
define('DOKU_MEDIA_EMPTY_NS', 8);
/**
* Handles media file deletions
*

View File

@ -49,6 +49,45 @@ class Doku_Handler {
$this->callWriter->writeCall($call);
}
/**
* Accessor for the current CallWriter
*
* @return CallWriterInterface
*/
public function getCallWriter() {
return $this->callWriter;
}
/**
* Set a new CallWriter
*
* @param CallWriterInterface $callWriter
*/
public function setCallWriter($callWriter) {
$this->callWriter = $callWriter;
}
/**
* Return the current internal status of the given name
*
* @param string $status
* @return mixed|null
*/
public function getStatus($status) {
if (!isset($this->status[$status])) return null;
return $this->status[$status];
}
/**
* Set a new internal status
*
* @param string $status
* @param mixed $value
*/
public function setStatus($status, $value) {
$this->status[$status] = $value;
}
/** @deprecated 2019-10-31 use addCall() instead */
public function _addCall($handler, $args, $pos) {
dbg_deprecated('addCall');

5
lib/exe/indexer.php Normal file
View File

@ -0,0 +1,5 @@
<?php
/**
* @deprecated 2020-06-04 use taskrunner instead
*/
include __DIR__ . '/taskrunner.php';

View File

@ -140,6 +140,7 @@ $lang['rss_linkto'] = 'Feed XML enlaza a';
$lang['rss_content'] = '¿Qué mostrar en los items del archivo XML?';
$lang['rss_update'] = 'Intervalo de actualización de feed XML (segundos)';
$lang['rss_show_summary'] = 'Feed XML muestra el resumen en el título';
$lang['rss_show_deleted'] = 'Fuente XML Mostrar fuentes eliminadas';
$lang['rss_media'] = '¿Qué tipo de cambios deberían aparecer en el feed XML?';
$lang['rss_media_o_both'] = 'ambos';
$lang['rss_media_o_pages'] = 'páginas';
@ -168,6 +169,8 @@ $lang['search_fragment_o_starts_with'] = 'comienza con';
$lang['search_fragment_o_ends_with'] = 'termina con';
$lang['search_fragment_o_contains'] = 'contiene';
$lang['trustedproxy'] = 'Confíe en los proxys de reenvío que coincidan con esta expresión regular acerca de la IP verdadera del cliente que referencia. El valor predeterminado coincide con las redes locales. Dejar en blanco para no confiar en ningún proxy.';
$lang['_feature_flags'] = 'Configuración de características';
$lang['defer_js'] = 'Aplazar JavaScript para que se ejecute después de que se haya analizado el HTML de la página. Mejora la velocidad percibida de la página, pero podría romper un pequeño número de complementos.';
$lang['dnslookups'] = 'DokuWiki buscara los hostnames para usuarios editando las páginas con IP remota. Si usted tiene un servidor DNS bastante lento o que no funcione, favor de desactivar esta opción.';
$lang['jquerycdn'] = '¿Deberían cargarse los ficheros de script jQuery y jQuery UI desde un CDN? Esto añade peticiones HTTP adicionales, pero los ficheros se pueden cargar más rápido y los usuarios pueden tenerlas ya almacenadas en caché.';
$lang['jquerycdn_o_0'] = 'No CDN, sólo entrega local';

View File

@ -3,12 +3,12 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Domingo Redal <docxml@gmail.com>
* @author Antonio Bueno <atnbueno@gmail.com>
* @author Antonio Castilla <antoniocastilla@trazoide.com>
* @author Jonathan Hernández <me@jhalicea.com>
* @author Álvaro Iradier <airadier@gmail.com>
* @author Mauricio Segura <maose38@yahoo.es>
* @author Domingo Redal <docxml@gmail.com>
*/
$lang['menu'] = 'Administrador de Extensiones ';
$lang['tab_plugins'] = 'Plugins instalados';
@ -77,6 +77,7 @@ $lang['msg_template_update_success'] = 'Plantilla %s actualizada con éxito';
$lang['msg_plugin_install_success'] = 'Plugin %s instalado con éxito';
$lang['msg_plugin_update_success'] = 'Plugin %s actualizado con éxito';
$lang['msg_upload_failed'] = 'Falló la carga del archivo';
$lang['msg_nooverwrite'] = 'La extensión %s ya existe, por lo que no se sobrescribe; para sobrescribirla, marque la opción de sobrescritura';
$lang['missing_dependency'] = '<strong>Dependencia deshabilitada o perdida:</strong> %s';
$lang['security_issue'] = '<strong>Problema de seguridad:</strong> %s';
$lang['security_warning'] = '<strong>Aviso de seguridad:</strong> %s';

View File

@ -1,7 +1,7 @@
base info
author Andreas Gohr
email andi@splitbrain.org
date 2014-10-01
date 2020-06-04
name Info Plugin
desc Displays information about various DokuWiki internals
url http://dokuwiki.org/plugin:info

View File

@ -101,6 +101,9 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin
case 'helpermethods':
$this->renderHelperMethods($renderer);
break;
case 'datetime':
$renderer->doc .= date('r');
break;
default:
$renderer->doc .= "no info about ".htmlspecialchars($data[0]);
}

View File

@ -20,28 +20,31 @@
list-style-type: none;
white-space: nowrap;
a span {
display: inline-block;
a {
display: flex;
span {
display: inline-block;
&.icon {
width: 1.5em;
min-height: 1.5em;
margin: 0 0.5em;
vertical-align: top;
svg {
&.icon {
width: 1.5em;
height: 1.5em;
fill: @ini_link;
display: inline-block;
path {
min-height: 1.5em;
margin: 0 0.5em;
vertical-align: top;
svg {
width: 1.5em;
height: 1.5em;
fill: @ini_link;
display: inline-block;
path {
fill: @ini_link;
}
}
}
}
&.prompt {
white-space: normal;
&.prompt {
white-space: normal;
}
}
}
}