Example #1
0
 public function __construct()
 {
     $this->plugindir = HookAPI::getAddonsDir() . $this->productShortName;
 }
Example #2
0
 /**
  * @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);
     }
 }