From 7521090b08245f81410c713f00d3d7fbaf1afda6 Mon Sep 17 00:00:00 2001
From: Michael Hamann <michael@content-space.de>
Date: Mon, 10 Sep 2012 12:40:01 +0200
Subject: [PATCH] Move plugin name regex to a constant as suggested by @glensc

---
 inc/load.php                   | 2 +-
 inc/plugincontroller.class.php | 2 +-
 inc/pluginutils.php            | 2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/inc/load.php b/inc/load.php
index ddd12b546..b8a279523 100644
--- a/inc/load.php
+++ b/inc/load.php
@@ -95,7 +95,7 @@ function load_autoload($name){
     }
 
     // Plugin loading
-    if(preg_match('/^(helper|syntax|action|admin|renderer|remote)_plugin_([a-zA-Z0-9\x7f-\xff]+)(?:_([^_]+))?$/',
+    if(preg_match('/^(helper|syntax|action|admin|renderer|remote)_plugin_('.DOKU_PLUGIN_NAME_REGEX.')(?:_([^_]+))?$/',
                   $name, $m)) {
         // try to load the wanted plugin file
         $c = ((count($m) === 4) ? "/{$m[3]}" : '');
diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php
index 9d7b51e14..968d47a5c 100644
--- a/inc/plugincontroller.class.php
+++ b/inc/plugincontroller.class.php
@@ -156,7 +156,7 @@ class Doku_Plugin_Controller {
                 } else {
                     $all_plugins[$plugin] = 1;
                 }
-                if ($all_plugins[$plugin] == 1 && preg_match('/^[a-zA-Z0-9\x7f-\xff]+$/', $plugin) !== 1) {
+                if ($all_plugins[$plugin] == 1 && preg_match('/^'.DOKU_PLUGIN_NAME_REGEX.'$/', $plugin) !== 1) {
                     msg(sprintf("Plugin name '%s' is not a valid plugin name, only the characters a-z and 0-9 are allowed. ".
                                  'Maybe the plugin has been installed in the wrong directory?', hsc($plugin)), -1);
                 }
diff --git a/inc/pluginutils.php b/inc/pluginutils.php
index 53cfedf82..7c37d4f7f 100644
--- a/inc/pluginutils.php
+++ b/inc/pluginutils.php
@@ -8,6 +8,8 @@
 
 // plugin related constants
 if(!defined('DOKU_PLUGIN'))  define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+// note that only [a-z0-9]+ is officially supported, this is only to support plugins that don't follow these conventions, too
+if(!defined('DOKU_PLUGIN_NAME_REGEX')) define('DOKU_PLUGIN_NAME_REGEX', '[a-zA-Z0-9\x7f-\xff]+');
 
 /**
  * Original plugin functions, remain for backwards compatibility
-- 
GitLab