diff --git a/admin.php b/admin.php index 26b70c825..e2d9f1796 100644 --- a/admin.php +++ b/admin.php @@ -104,6 +104,12 @@ $change_theme_url.= 'change_theme=1'; if (isset($_GET['page']) and preg_match('/^plugin-([^-]*)(?:-(.*))?$/', $_GET['page'], $matches)) { $_GET['page'] = 'plugin'; + + if (preg_match('/^piwigo_(videojs|openstreetmap)$/', $matches[1])) + { + $matches[1] = str_replace('_', '-', $matches[1]); + } + $_GET['section'] = $matches[1].'/admin.php'; if (isset($matches[2])) { diff --git a/admin/include/plugins.class.php b/admin/include/plugins.class.php index 56d810f35..c0f6826d1 100644 --- a/admin/include/plugins.class.php +++ b/admin/include/plugins.class.php @@ -74,6 +74,10 @@ class plugins $file_to_include = PHPWG_PLUGINS_PATH . $plugin_id . '/maintain'; $classname = $plugin_id.'_maintain'; + // piwigo-videojs and piwigo-openstreetmap unfortunately have a "-" in their folder + // name (=plugin_id) and a class name can't have a "-". So we have to replace with a "_" + $classname = str_replace('-', '_', $classname); + // 2.7 pattern (OO only) if (file_exists($file_to_include.'.class.php')) { diff --git a/admin/plugins_installed.php b/admin/plugins_installed.php index 0837dc9d6..fa76ad8a0 100644 --- a/admin/plugins_installed.php +++ b/admin/plugins_installed.php @@ -97,6 +97,11 @@ foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) $setting_url = $settings_url_for_plugin_deprec[$plugin_id]; } else if ($fs_plugin['hasSettings']) { // new version $setting_url = "admin.php?page=plugin-".$plugin_id; + + if (preg_match('/^piwigo-(videojs|openstreetmap)$/', $plugin_id)) + { + $setting_url = str_replace('piwigo-', 'piwigo_', $setting_url); + } } $tpl_plugin = array( diff --git a/include/functions_plugins.inc.php b/include/functions_plugins.inc.php index 05459b47c..468659605 100644 --- a/include/functions_plugins.inc.php +++ b/include/functions_plugins.inc.php @@ -398,6 +398,11 @@ function autoupdate_plugin(&$plugin) include_once($maintain_file); $classname = $plugin['id'].'_maintain'; + + // piwigo-videojs and piwigo-openstreetmap unfortunately have a "-" in their folder + // name (=plugin_id) and a class name can't have a "-". So we have to replace with a "_" + $classname = str_replace('-', '_', $classname); + $plugin_maintain = new $classname($plugin['id']); $plugin_maintain->update($plugin['version'], $fs_version, $page['errors']); }