示例#1
0
/**
 * Parses extensions selection section
 *
 * @param string $ext_type Extension type: 'Module' or 'Plugin'
 * @param array $default_list A list of recommended extensions (checked by default)
 * @param array $selected_list A list of previously selected extensions
 */
function cot_install_parse_extensions($ext_type, $default_list = array(), $selected_list = array())
{
    global $t, $cfg, $L;
    $ext_type_lc = strtolower($ext_type);
    $ext_type_uc = strtoupper($ext_type);
    $ext_list = cot_extension_list_info($cfg["{$ext_type_lc}s_dir"]);
    $ext_type_lc == 'plugin' ? uasort($ext_list, 'cot_extension_catcmp') : ksort($ext_list);
    $prev_cat = '';
    $block_name = $ext_type_lc == 'plugin' ? "{$ext_type_uc}_CAT.{$ext_type_uc}_ROW" : "{$ext_type_uc}_ROW";
    foreach ($ext_list as $f => $info) {
        if (is_array($info)) {
            $code = $f;
            if ($ext_type_lc == 'plugin' && $prev_cat != $info['Category']) {
                if ($prev_cat != '') {
                    // Render previous category
                    $t->parse("MAIN.STEP_4.{$ext_type_uc}_CAT");
                }
                // Assign a new one
                $prev_cat = $info['Category'];
                $t->assign('PLUGIN_CAT_TITLE', $L['ext_cat_' . $info['Category']]);
            }
            if (!empty($info['Requires_modules']) || !empty($info['Requires_plugins'])) {
                $modules_list = empty($info['Requires_modules']) ? $L['None'] : implode(', ', explode(',', $info['Requires_modules']));
                $plugins_list = empty($info['Requires_plugins']) ? $L['None'] : implode(', ', explode(',', $info['Requires_plugins']));
                $requires = cot_rc('install_code_requires', array('modules_list' => $modules_list, 'plugins_list' => $plugins_list));
            } else {
                $requires = '';
            }
            if (!empty($info['Recommends_modules']) || !empty($info['Recommends_plugins'])) {
                $modules_list = empty($info['Recommends_modules']) ? $L['None'] : implode(', ', explode(',', $info['Recommends_modules']));
                $plugins_list = empty($info['Recommends_plugins']) ? $L['None'] : implode(', ', explode(',', $info['Recommends_plugins']));
                $recommends = cot_rc('install_code_recommends', array('modules_list' => $modules_list, 'plugins_list' => $plugins_list));
            } else {
                $recommends = '';
            }
            if (count($selected_list) > 0) {
                $checked = in_array($code, $selected_list);
            } else {
                $checked = in_array($code, $default_list);
            }
            $type = $ext_type == 'Module' ? 'module' : 'plug';
            $L['info_name'] = '';
            $L['info_desc'] = '';
            if (file_exists(cot_langfile($code, $type))) {
                include cot_langfile($code, $type);
            }
            $t->assign(array("{$ext_type_uc}_ROW_CHECKBOX" => cot_checkbox($checked, "install_{$ext_type_lc}s[{$code}]"), "{$ext_type_uc}_ROW_TITLE" => empty($L['info_name']) ? $info['Name'] : $L['info_name'], "{$ext_type_uc}_ROW_DESCRIPTION" => empty($L['info_desc']) ? $info['Description'] : $L['info_desc'], "{$ext_type_uc}_ROW_REQUIRES" => $requires, "{$ext_type_uc}_ROW_RECOMMENDS" => $recommends));
            $t->parse("MAIN.STEP_4.{$block_name}");
        }
    }
    if ($ext_type_lc == 'plugin' && $prev_cat != '') {
        // Render last category
        $t->parse("MAIN.STEP_4.{$ext_type_uc}_CAT");
    }
}
示例#2
0
 foreach ($db->query("SELECT SUM(pl_active) AS sum, COUNT(*) AS cnt, pl_code FROM {$db_plugins} GROUP BY pl_code")->fetchAll() as $row) {
     $totalactives[$row['pl_code']] = (int) $row['sum'];
     $totalinstalleds[$row['pl_code']] = (int) $row['cnt'];
 }
 $installed_vers = array();
 foreach ($db->query("SELECT ct_version, ct_code FROM {$db_core}")->fetchAll() as $row) {
     $installed_vers[$row['ct_code']] = $row['ct_version'];
 }
 foreach (array('module', 'plug') as $type) {
     $sql = $db->query("SELECT DISTINCT(config_cat), COUNT(*) FROM {$db_config}\n\t\t\tWHERE config_owner='{$type}' GROUP BY config_cat");
     while ($row = $sql->fetch(PDO::FETCH_NUM)) {
         $cfgentries[$row['config_cat']] = $row[0];
     }
     $sql->closeCursor();
     $dir = $type == 'module' ? $cfg['modules_dir'] : $cfg['plugins_dir'];
     $extensions = cot_extension_list_info($dir);
     $ctplug = $type == 'module' ? '0' : '1';
     if ($only_installed) {
         // Filter only installed exts
         $tmp = array();
         $installed_exts = $db->query("SELECT ct_code FROM {$db_core} WHERE ct_plug = {$ctplug}")->fetchAll(PDO::FETCH_COLUMN);
         foreach ($extensions as $key => $val) {
             if (in_array($key, $installed_exts)) {
                 $tmp[$key] = $val;
             }
         }
         $extensions = $tmp;
     }
     // Find missing extensions
     $extlist = count($extensions) > 0 ? "ct_code NOT IN('" . implode("','", array_keys($extensions)) . "')" : '1';
     $sql = $db->query("SELECT * FROM {$db_core} WHERE {$extlist} AND ct_plug = {$ctplug}");