Ejemplo n.º 1
0
         }
     }
     if ($upgrade) {
         cpmsg('plugins_config_upgrade_confirm', 'action=plugins&operation=upgrade&pluginid=' . $pluginid . '&confirm=yes', 'form', array('pluginname' => $plugin['name'], 'version' => $plugin['version'], 'toversion' => $newver));
     } elseif ($upgradestr) {
         echo '<h3>' . cplang('discuz_message') . '</h3><div class="infobox"><h4 class="marginbot normal">' . cplang('plugins_config_upgrade_other', array('pluginname' => $plugin['name'], 'version' => $plugin['version'])) . '</h4><br /><p class="margintop">' . $upgradestr . '<input class="btn" onclick="location.href=\'' . ADMINSCRIPT . '?action=plugins\'" type="button" value="' . $lang['cancel'] . '"/></div></div>';
     } else {
         cpmsg('plugins_config_upgrade_missed', 'action=plugins');
     }
 } else {
     $installtype = !isset($_G['gp_installtype']) ? $modules['extra']['installtype'] : (preg_match('/^\\w+$/', $_G['gp_installtype']) ? $_G['gp_installtype'] : '');
     $importfile = DISCUZ_ROOT . './source/plugin/' . $dir . '/discuz_plugin_' . $dir . ($installtype ? '_' . $installtype : '') . '.xml';
     if (!file_exists($importfile)) {
         cpmsg('plugin_file_error', '', 'error');
     }
     cloudaddons_validator($dir . '.plugin');
     $importtxt = @implode('', file($importfile));
     $pluginarray = getimportdata('Discuz! Plugin');
     if (!ispluginkey($pluginarray['plugin']['identifier']) || $pluginarray['plugin']['identifier'] != $plugin['identifier']) {
         cpmsg('plugins_edit_identifier_invalid', '', 'error');
     }
     if (is_array($pluginarray['vars'])) {
         foreach ($pluginarray['vars'] as $config) {
             if (!ispluginkey($config['variable'])) {
                 cpmsg('plugins_upgrade_var_invalid', '', 'error');
             }
         }
     }
     if (!empty($pluginarray['checkfile']) && preg_match('/^[\\w\\.]+$/', $pluginarray['checkfile'])) {
         if (!empty($pluginarray['language'])) {
             $installlang[$pluginarray['plugin']['identifier']] = dstripslashes($pluginarray['language']['installlang']);
            $addoni++;
            cpmsg('cloudaddons_downloading', "action=cloudaddons&operation=download&addonids={$_GET['addonids']}&i={$addoni}&step=1&md5hash=" . $_GET['md5hash'] . '&timestamp=' . $_GET['timestamp'], 'loading', array('addonid' => $_GET['key'] . '.' . $_GET['type']), FALSE);
        }
        list($_GET['key'], $_GET['type'], $_GET['rid']) = explode('.', $addonids[0]);
        cloudaddons_downloadlog($_GET['key'] . '.' . $_GET['type']);
        if ($_GET['type'] == 'plugin') {
            $plugin = C::t('common_plugin')->fetch_by_identifier($_GET['key']);
            if (!$plugin['pluginid']) {
                dheader('location: ' . ADMINSCRIPT . '?action=plugins&operation=import&dir=' . $_GET['key']);
            } else {
                dheader('location: ' . ADMINSCRIPT . '?action=plugins&operation=upgrade&pluginid=' . $plugin['pluginid']);
            }
        } elseif ($_GET['type'] == 'template') {
            dheader('location: ' . ADMINSCRIPT . '?action=styles&operation=import&dir=' . $_GET['key']);
        } else {
            cloudaddons_validator($_GET['key'] . '.pack');
            cloudaddons_installlog($_GET['key'] . '.pack');
            if (file_exists('saekv://data/addonpack/' . $_GET['key'] . '.php')) {
                dheader('location: ' . $_G['siteurl'] . 'data/addonpack/' . $_GET['key'] . '.php');
            }
            cpmsg('cloudaddons_pack_installed', '', 'succeed');
        }
    }
}
function dir_clear($dir)
{
    if (strstr($dir, 'saekv://')) {
        clearkvfolder(substr($dir, 8));
    } elseif ($directory = @dir($dir)) {
        while ($entry = $directory->read()) {
            if ($entry == '.' || $entry == '..') {
Ejemplo n.º 3
0
function import_styles($ignoreversion = 1, $dir = '', $restoreid = 0, $updatecache = 1, $validate = 1)
{
    global $_G, $importtxt, $stylearray;
    if (!isset($dir)) {
        $stylearrays = array(getimportdata('Discuz! Style'));
    } else {
        require_once libfile('function/cloudaddons');
        if (!$restoreid) {
            $dir = str_replace(array('/', '\\'), '', $dir);
            $templatedir = DISCUZ_ROOT . './template/' . $dir;
            if ($validate) {
                cloudaddons_validator($dir . '.template');
            }
        } else {
            $templatedir = DISCUZ_ROOT . $dir;
            $dir = basename($dir);
            if ($validate) {
                cloudaddons_validator($dir . '.template');
            }
        }
        $searchdir = dir($templatedir);
        $stylearrays = array();
        while ($searchentry = $searchdir->read()) {
            if (substr($searchentry, 0, 13) == 'discuz_style_' && fileext($searchentry) == 'xml') {
                $importfile = $templatedir . '/' . $searchentry;
                $importtxt = implode('', file($importfile));
                $stylearrays[] = getimportdata('Discuz! Style');
            }
        }
    }
    foreach ($stylearrays as $stylearray) {
        if (empty($ignoreversion) && strip_tags($stylearray['version']) != strip_tags($_G['setting']['version'])) {
            cpmsg('styles_import_version_invalid', 'action=styles', 'error', array('cur_version' => $stylearray['version'], 'set_version' => $_G['setting']['version']));
        }
        if (!$restoreid) {
            $renamed = 0;
            if ($stylearray['templateid'] != 1) {
                $templatedir = DISCUZ_ROOT . './' . $stylearray['directory'];
                if (!is_dir($templatedir)) {
                    if (!@mkdir($templatedir, 0777)) {
                        $basedir = dirname($stylearray['directory']);
                        cpmsg('styles_import_directory_invalid', 'action=styles', 'error', array('basedir' => $basedir, 'directory' => $stylearray['directory']));
                    }
                }
                if (!($templateid = C::t('common_template')->get_templateid($stylearray['tplname']))) {
                    $templateid = C::t('common_template')->insert(array('name' => $stylearray['tplname'], 'directory' => $stylearray['directory'], 'copyright' => $stylearray['copyright']), true);
                }
            } else {
                $templateid = 1;
            }
            if (C::t('common_style')->check_stylename($stylearray['name'])) {
                $renamed = 1;
            } else {
                $styleidnew = C::t('common_style')->insert(array('name' => $stylearray['name'], 'templateid' => $templateid), true);
            }
        } else {
            $styleidnew = $restoreid;
            C::t('common_stylevar')->delete_by_styleid($styleidnew);
        }
        foreach ($stylearray['style'] as $variable => $substitute) {
            $substitute = @dhtmlspecialchars($substitute);
            C::t('common_stylevar')->insert(array('styleid' => $styleidnew, 'variable' => $variable, 'substitute' => $substitute));
        }
    }
    if ($dir) {
        cloudaddons_installlog($dir . '.template');
    }
    if ($updatecache) {
        updatecache('styles');
        updatecache('setting');
    }
    return $renamed;
}
Ejemplo n.º 4
0
} elseif ($operation == 'config') {
    if (empty($pluginid) && !empty($do)) {
        $pluginid = $do;
    }
    if ($_GET['identifier']) {
        $plugin = C::t('common_plugin')->fetch_by_identifier($_GET['identifier']);
    } else {
        $plugin = C::t('common_plugin')->fetch($pluginid);
    }
    //var_dump($_GET['identifier']);exit;
    if (!$plugin) {
        cpmsg('plugin_not_found', '', 'error');
    } else {
        $pluginid = $plugin['pluginid'];
    }
    cloudaddons_validator($plugin['identifier'] . '.plugin');
    $plugin['modules'] = dunserialize($plugin['modules']);
    $plugin['modules'][] = $pluginvars = array();
    foreach (C::t('common_pluginvar')->fetch_all_by_pluginid($pluginid) as $var) {
        if (strexists($var['type'], '_')) {
            continue;
        }
        $pluginvars[$var['variable']] = $var;
    }
    if ($pluginvars) {
        $submenuitem[] = array('config', "plugins&operation=config&do={$pluginid}", !$_GET['pmod']);
    }
    if (is_array($plugin['modules'])) {
        foreach ($plugin['modules'] as $module) {
            if ($module['type'] == 3) {
                parse_str($module['param'], $param);
Ejemplo n.º 5
0
function import_styles($ignoreversion = 1, $dir = '', $restoreid = 0, $updatecache = 1)
{
    global $_G, $importtxt, $stylearray;
    if (!isset($dir)) {
        $stylearrays = array(getimportdata('Discuz! Style'));
    } else {
        require_once libfile('function/cloudaddons');
        if (!$restoreid) {
            $dir = str_replace(array('/', '\\'), '', $dir);
            $templatedir = DISCUZ_ROOT . './template/' . $dir;
            cloudaddons_validator($dir . '.template');
        } else {
            $templatedir = DISCUZ_ROOT . $dir;
            cloudaddons_validator(basename($dir) . '.template');
        }
        $searchdir = dir($templatedir);
        $stylearrays = array();
        while ($searchentry = $searchdir->read()) {
            if (substr($searchentry, 0, 13) == 'discuz_style_' && fileext($searchentry) == 'xml') {
                $importfile = $templatedir . '/' . $searchentry;
                $importtxt = implode('', file($importfile));
                $stylearrays[] = getimportdata('Discuz! Style');
            }
        }
    }
    foreach ($stylearrays as $stylearray) {
        if (empty($ignoreversion) && strip_tags($stylearray['version']) != strip_tags($_G['setting']['version'])) {
            cpmsg('styles_import_version_invalid', '', 'error', array('cur_version' => $stylearray['version'], 'set_version' => $_G['setting']['version']));
        }
        if (!$restoreid) {
            $renamed = 0;
            if ($stylearray['templateid'] != 1) {
                $templatedir = DISCUZ_ROOT . './' . $stylearray['directory'];
                if (!is_dir($templatedir)) {
                    if (!@mkdir($templatedir, 0777)) {
                        $basedir = dirname($stylearray['directory']);
                        cpmsg('styles_import_directory_invalid', '', 'error', array('basedir' => $basedir, 'directory' => $stylearray['directory']));
                    }
                }
                if (!($templateid = DB::result_first("SELECT templateid FROM " . DB::table('common_template') . " WHERE name='{$stylearray['tplname']}'"))) {
                    DB::query("INSERT INTO " . DB::table('common_template') . " (name, directory, copyright)\r\n\t\t\t\t\t\tVALUES ('{$stylearray['tplname']}', '{$stylearray['directory']}', '{$stylearray['copyright']}')");
                    $templateid = DB::insert_id();
                }
            } else {
                $templateid = 1;
            }
            if (DB::result_first("SELECT COUNT(*) FROM " . DB::table('common_style') . " WHERE name='{$stylearray['name']}'")) {
                $stylearray['name'] .= '_' . random(4);
                $renamed = 1;
            }
            DB::query("INSERT INTO " . DB::table('common_style') . " (name, templateid)\r\n\t\t\t\tVALUES ('{$stylearray['name']}', '{$templateid}')");
            $styleidnew = DB::insert_id();
        } else {
            $styleidnew = $restoreid;
            DB::query("DELETE FROM " . DB::table('common_stylevar') . " WHERE styleid='{$styleidnew}'");
        }
        foreach ($stylearray['style'] as $variable => $substitute) {
            $substitute = @htmlspecialchars($substitute);
            DB::query("INSERT INTO " . DB::table('common_stylevar') . " (styleid, variable, substitute)\r\n\t\t\t\tVALUES ('{$styleidnew}', '{$variable}', '{$substitute}')");
        }
    }
    if ($updatecache) {
        updatecache('styles');
        updatecache('setting');
    }
    return $renamed;
}