function plugininstall($pluginarray, $installtype = '') { if (!$pluginarray || !$pluginarray['plugin']['identifier']) { return false; } $plugin = DB::fetch_first("SELECT name, pluginid FROM " . DB::table('common_plugin') . " WHERE identifier='{$pluginarray[plugin][identifier]}' LIMIT 1"); if ($plugin) { return false; } $pluginarray['plugin']['modules'] = unserialize(dstripslashes($pluginarray['plugin']['modules'])); $pluginarray['plugin']['modules']['extra']['installtype'] = $installtype; if (updatepluginlanguage($pluginarray)) { $pluginarray['plugin']['modules']['extra']['langexists'] = 1; } if (!empty($pluginarray['intro'])) { if (!empty($pluginarray['intro'])) { require_once libfile('function/discuzcode'); $pluginarray['plugin']['modules']['extra']['intro'] = discuzcode(dstripslashes(strip_tags($pluginarray['intro'])), 1, 0); } } $pluginarray['plugin']['modules'] = addslashes(serialize($pluginarray['plugin']['modules'])); $data = array(); foreach ($pluginarray['plugin'] as $key => $val) { if ($key == 'directory') { $val .= !empty($val) && substr($val, -1) != '/' ? '/' : ''; } elseif ($key == 'available') { $val = 0; } $data[$key] = $val; } $pluginid = DB::insert('common_plugin', $data, 1); if (is_array($pluginarray['var'])) { foreach ($pluginarray['var'] as $config) { $data = array('pluginid' => $pluginid); foreach ($config as $key => $val) { $data[$key] = $val; } DB::insert('common_pluginvar', $data); } } if (!empty($dir) && !empty($pluginarray['importfile'])) { require_once adminfile('function/importdata'); foreach ($pluginarray['importfile'] as $importtype => $file) { if (in_array($importtype, array('smilies', 'styles'))) { $files = explode(',', $file); foreach ($files as $file) { if (file_exists($file = DISCUZ_ROOT . './source/plugin/' . $dir . '/' . $file)) { $importtxt = @implode('', file($file)); $imporfun = 'import_' . $importtype; $imporfun(); } } } } } updatecache(array('plugin', 'setting', 'styles')); return true; }
$val = 0; } $data[$key] = $val; } $pluginid = DB::insert('common_plugin', $data, 1); if (is_array($pluginarray['var'])) { foreach ($pluginarray['var'] as $config) { $data = array('pluginid' => $pluginid); foreach ($config as $key => $val) { $data[$key] = $val; } DB::insert('common_pluginvar', $data); } } if (!empty($dir) && !empty($pluginarray['importfile'])) { require_once adminfile('function/importdata'); foreach ($pluginarray['importfile'] as $importtype => $file) { if (in_array($importtype, array('request', 'project', 'smilies', 'styles'))) { $files = explode(',', $file); foreach ($files as $file) { if (file_exists($file = DISCUZ_ROOT . './source/plugin/' . $dir . '/' . $file)) { $importtxt = @implode('', file($file)); $imporfun = 'import_' . $importtype; $imporfun(); } } } } } updatecache(array('plugin', 'setting', 'styles')); updatemenu();
} else { $tablesstr = ''; foreach ($tables as $table) { $tablesstr .= '"' . $table . '" '; } require DISCUZ_ROOT . './config/config_global.php'; list($dbhost, $dbport) = explode(':', $dbhost); $query = DB::query("SHOW VARIABLES LIKE 'basedir'"); list(, $mysql_base) = DB::fetch($query, MYSQL_NUM); $dumpfile = addslashes(dirname(dirname(__FILE__))) . '/' . $backupfilename . '.sql'; @unlink($dumpfile); $mysqlbin = $mysql_base == '/' ? '' : addslashes($mysql_base) . 'bin/'; @shell_exec($mysqlbin . 'mysqldump --force --quick ' . ($db->version() > '4.1' ? '--skip-opt --create-options' : '-all') . ' --add-drop-table' . ($_G['gp_extendins'] == 1 ? ' --extended-insert' : '') . '' . ($db->version() > '4.1' && $_G['gp_sqlcompat'] == 'MYSQL40' ? ' --compatible=mysql40' : '') . ' --host="' . $dbhost . ($dbport ? is_numeric($dbport) ? ' --port=' . $dbport : ' --socket="' . $dbport . '"' : '') . '" --user="******" --password="******" "' . $dbname . '" ' . $tablesstr . ' > ' . $dumpfile); if (@file_exists($dumpfile)) { if ($_G['gp_usezip']) { require_once adminfile('function/zip'); $zip = new zipfile(); $zipfilename = $backupfilename . '.zip'; $fp = fopen($dumpfile, "r"); $content = @fread($fp, filesize($dumpfile)); fclose($fp); $zip->addFile($idstring . "# <?exit();?>\n " . $setnames . "\n #" . $content, basename($dumpfile)); $fp = fopen($zipfilename, 'w'); @fwrite($fp, $zip->file()); fclose($fp); @unlink($dumpfile); @touch('./data/' . $backupdir . '/index.htm'); $filename = $backupfilename . '.zip'; unset($sqldump, $zip, $content); cpmsg('database_export_zip_succeed', '', 'succeed', array('filename' => $filename)); } else {