public function __construct() { $this->plugindir = HookAPI::getAddonsDir() . $this->productShortName; }
/** * @static * implements main admin UI for plugins */ public static function main() { global $context, $txt, $modSettings; isAllowedTo('admin_forum'); loadAdminTemplate('Plugins'); loadLanguage('Plugins'); /* if (isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']])) $context['sub_action'] = $_REQUEST['sa']; else $context['sub_action'] = 'browse'; */ if (isset($_REQUEST['sa']) && $_REQUEST['sa'] === 'hooks') { return self::hooks(); } elseif (isset($_REQUEST['sa']) && ($_REQUEST['sa'] === 'install' || $_REQUEST['sa'] === 'uninstall')) { self::installProducts(); } $context[$context['admin_menu_name']]['tab_data'] = array('title' => $txt['plugin_manager'], 'description' => $txt['plugin_manager_desc'], 'tabs' => array('browse' => array(), 'hooks' => array('description' => $txt['browse_hooks_desc']))); $context['page_title'] = $txt['plugin_manager']; $userdata = array('addonsdir' => HookAPI::getAddonsDir(), 'installedPlugins' => @unserialize($modSettings['plugins'])); if (($_f = scandir($userdata['addonsdir'])) != false) { array_walk($_f, function (&$file, $key, &$data) { global $context, $txt, $scripturl; if ($file === '.' || $file === '..') { return; } $fullname = $data['addonsdir'] . $file; if (file_exists($fullname) && file_exists($fullname . '/main.php')) { $context['plugins'][$file]['found'] = true; @(require_once $fullname . '/main.php'); $autoloader = $file . '_autoloader'; if (is_callable($autoloader)) { $pluginInstance = $autoloader(); $context['plugins'][$file]['name'] = $pluginInstance->Name; $context['plugins'][$file]['version'] = sprintf($txt['plugin_version'], $pluginInstance->Version); $context['plugins'][$file]['desc'] = $pluginInstance->Description; $context['plugins'][$file]['is_installed'] = isset($data['installedPlugins'][$file]) ? true : false; $context['plugins'][$file]['install_link'] = isset($data['installedPlugins'][$file]) ? '<a href="' . $scripturl . '?action=admin;area=plugins;sa=uninstall;p=' . $file . ';' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['uninstall_plugin'] . '</a>' : '<a href="' . $scripturl . '?action=admin;area=plugins;sa=install;p=' . $file . ';' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['install_plugin'] . '</a>'; $context['plugins'][$file]['can_install'] = isset($data['installedPlugins'][$file]) ? true : $pluginInstance->canInstall(); $context['plugins'][$file]['install_error'] = $pluginInstance->getInstallErrorReason(); } } }, $userdata); } }