コード例 #1
0
/**
 * Возвращает информацию по установленным плагинам.
 * @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;
}
コード例 #2
0
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">&nbsp;Удалить таблицы БД</label><br>';
                $text .= '<label><input type="checkbox" name="delete_files">&nbsp;Удалить файлы модуля</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">&nbsp;Удалить таблицы БД</label><br>';
                $text .= '<label><input type="checkbox" name="delete_files">&nbsp;Удалить файлы</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">&nbsp;Удалить таблицы БД</label><br>';
                $text .= '<label><input type="checkbox" name="delete_files">&nbsp;Удалить файлы</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">&nbsp;Удалить файлы</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;
    }
}
コード例 #3
0
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;
}