Example #1
0
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;
}
Example #2
0
         $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();
Example #3
0
 } 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 {