/** * Возвращает информацию по установленным плагинам. * @param string $Group * @param string $function * @return arrays */ function PluginsGetInfo($Group = '', $function = '') { global $config; $plugins = PluginsGetInstalled(); $plug_dir = System::config('plug_dir'); $result = array(); foreach ($plugins as $plugin) { if ($Group == $plugin['group'] && ($function == '' || $function == $plugin['function'])) { $include_plugin_path = RealPath2($plug_dir . $plugin['group'] . '/' . $plugin['name']) . '/'; $info = ExtLoadInfo($include_plugin_path); $info['path'] = $include_plugin_path; $info['folder'] = $plugin['name']; $result[] = $info; } } return $result; }
function AdminExtensionsUninstall() { global $db, $config, $user; // Для старых модулей $ext_type = $_GET['type']; $folder = $_GET['name']; if (isset($_GET['group'])) { $group = $_GET['group']; } switch ($ext_type) { case EXT_MODULE: $mod_path = RealPath2(System::config('mod_dir') . $folder); $info = ExtLoadInfo($mod_path); if (isset($_POST['ok']) || isset($info['1.3'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); // Могут быть использованы в uninstall.php $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); if (isset($info['1.3'])) { // Удаляем пункт меню $folder = SafeEnv($folder, 255, str); AdminMenuDeleteModule($folder); } } Audit('Расширения: Удаление модуля "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-1'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('modules', "`folder`='{$folder}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Модуль не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($mod['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы модуля</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление модуля "' . $name . '"', $text); } break; case EXT_BLOCK: $mod_path = RealPath2(System::config('blocks_dir') . $folder); if (isset($_POST['ok'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); } Audit('Удаление блока "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-2'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('block_types', "`folder`='{$folder}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Блок не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($mod['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление блока "' . $name . '"', $text); } break; case EXT_PLUGIN: if (isset($_GET['group'])) { $group = $_GET['group'] . '/'; $groupenv = SafeEnv($_GET['group'], 255, str); } else { $group = ''; $groupenv = ''; } $mod_path = RealPath2(System::config('plug_dir') . $group . $folder); $info = ExtLoadInfo($mod_path); if (isset($_POST['ok']) || isset($info['1.3'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); // FIXME: plugin config } if (isset($info['1.3'])) { $folder = SafeEnv($folder, 255, str); System::database()->Delete('plugins', "`name`='{$folder}' and `group`='{$groupenv}'"); } PluginsClearCache(); Audit('Расширения: Удаление плагина "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-3'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('plugins', "`name`='{$folder}' and `group`='{$groupenv}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Плагин не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($info['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление плагина "' . $name . '"', $text); } break; case EXT_TEMPLATE: $mod_path = RealPath2(System::config('tpl_dir') . $folder); if (isset($_POST['ok'])) { ExtRemoveTemplate($folder, isset($_POST['delete_files'])); Audit('Расширения: Удаление шаблона "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-4'); } else { $info = ExtLoadInfo($mod_path); if ($info === false) { $info = array('name' => $folder, 'description' => '', 'author' => '', 'site' => '', 'version' => '1.0', 'admin' => false); } $name = SafeDB($info['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление шаблона "' . $name . '"', $text); } break; } }
function IndexSearchSearch($mods) { global $search_results; $search_results = array(); foreach ($mods as $mod) { // mod подставляется в function чтобы задействовать только выбранные плагины $plugins = IncludePluginsGroup('search', $mod, true); foreach ($plugins as $plugin) { // Вприципе тут всегда только один плагин на один модуль $plugin_info = ExtLoadInfo($plugin); include $plugin . 'index.php'; } } return $search_results; }