} } 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'] . '×tamp=' . $_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 == '..') {
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; }
} 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);
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; }