create() public method

If a file with the same name exist and is writable, it is replaced by the new tar. The method return false and a PEAR error text. The $p_filelist parameter can be an array of string, each string representing a filename or a directory name with their path if needed. It can also be a single string with names separated by a single blank. For each directory added in the archive, the files and sub-directories are also added. See also createModify() method for more details.
See also: createModify()
public create ( array $p_filelist ) : true
$p_filelist array An array of filenames and directory names, or a single string with names separated by a single blank space.
return true on success, false on error.
示例#1
0
 protected function getArchive()
 {
     $obj = new Archive_Tar($this->getBackupFile());
     if (!is_file($this->getBackupFile())) {
         $files = array();
         if (!$obj->create($files)) {
             echo "can't create archive";
         }
     }
     return $obj;
 }
示例#2
0
 function _generateTarFile($compress = true)
 {
     $pkgver = (string) $this->xml->name . '-' . (string) $this->xml->version->release;
     $targetdir = !empty($this->options['targetdir']) ? $this->options['targetdir'] . DIRECTORY_SEPARATOR : '';
     $tarname = $targetdir . $pkgver . ($compress ? '.tgz' : '.tar');
     $tar = new Archive_Tar($tarname, $compress);
     $tar->setErrorHandling(PEAR_ERROR_RETURN);
     $result = $tar->create(array($this->pkginfofile));
     if (PEAR::isError($result)) {
         return $this->raiseError($result);
     }
     foreach ($this->files as $roleDir => $files) {
         $result = $tar->addModify($files, $pkgver, $roleDir);
     }
     if (PEAR::isError($result)) {
         return $this->raiseError($result);
     }
     $this->output .= 'Successfully created ' . $tarname . "\n";
     return true;
 }
 function lfCreateBkupData($bkup_name)
 {
     $objQuery = new SC_Query();
     $csv_data = "";
     $csv_autoinc = "";
     $err = true;
     $bkup_dir = $this->bkup_dir;
     if (!is_dir(dirname($bkup_dir))) {
         $err = mkdir(dirname($bkup_dir));
     }
     $bkup_dir = $bkup_dir . $bkup_name . "/";
     // 全テーブル取得
     $arrTableList = $this->lfGetTableList();
     // 各テーブル情報を取得する
     foreach ($arrTableList as $key => $val) {
         if (!($val == "dtb_bkup" || $val == "mtb_zip")) {
             // 自動採番型の構成を取得する
             $csv_autoinc .= $this->lfGetAutoIncrement($val);
             // 全データを取得
             if ($val == "dtb_pagelayout") {
                 $arrData = $objQuery->getAll("SELECT * FROM {$val} ORDER BY page_id");
             } else {
                 $arrData = $objQuery->getAll("SELECT * FROM {$val}");
             }
             // CSVデータ生成
             if (count($arrData) > 0) {
                 // カラムをCSV形式に整える
                 $arrKyes = SC_Utils_Ex::sfGetCommaList(array_keys($arrData[0]), false);
                 // データをCSV形式に整える
                 $data = "";
                 foreach ($arrData as $data_key => $data_val) {
                     //$val = str_replace("\"", "\\\"", $val);
                     $data .= $this->lfGetCSVList($arrData[$data_key]);
                 }
                 // CSV出力データ生成
                 $csv_data .= $val . "\r\n";
                 $csv_data .= $arrKyes . "\r\n";
                 $csv_data .= $data;
                 $csv_data .= "\r\n";
             }
             // タイムアウトを防ぐ
             SC_Utils_Ex::sfFlush();
         }
     }
     $csv_file = $bkup_dir . "bkup_data.csv";
     $csv_autoinc_file = $bkup_dir . "autoinc_data.csv";
     mb_internal_encoding(CHAR_CODE);
     // CSV出力
     // ディレクトリが存在していなければ作成する
     if (!is_dir(dirname($csv_file))) {
         $err = mkdir(dirname($csv_file));
     }
     if ($err) {
         // dataをCSV出力
         $fp = fopen($csv_file, "w");
         if ($fp) {
             if ($csv_data != "") {
                 $err = fwrite($fp, $csv_data);
             }
             fclose($fp);
         }
         // 自動採番をCSV出力
         $fp = fopen($csv_autoinc_file, "w");
         if ($fp) {
             if ($csv_autoinc != "") {
                 $err = fwrite($fp, $csv_autoinc);
             }
             fclose($fp);
         }
     }
     // 各種ファイルコピー
     if ($err) {
         /**
                     // 商品画像ファイルをコピー
                     // ディレクトリが存在していなければ作成する
                     $image_dir = $bkup_dir . "save_image/";
                     if (!is_dir(dirname($image_dir))) $err = mkdir(dirname($image_dir));
                     $copy_mess = "";
                     $copy_mess = SC_Utils_Ex::sfCopyDir("../../upload/save_image/",$image_dir, $copy_mess);
         
                     // テンプレートファイルをコピー
                     // ディレクトリが存在していなければ作成する
                     $templates_dir = $bkup_dir . "templates/";
                     if (!is_dir(dirname($templates_dir))) $err = mkdir(dirname($templates_dir));
                     $copy_mess = "";
                     $copy_mess = SC_Utils_Ex::sfCopyDir("../../user_data/templates/",$templates_dir, $copy_mess);
         
                     // インクルードファイルをコピー
                     // ディレクトリが存在していなければ作成する
                     $inc_dir = $bkup_dir . "include/";
                     if (!is_dir(dirname($inc_dir))) $err = mkdir(dirname($inc_dir));
                     $copy_mess = "";
                     $copy_mess = SC_Utils_Ex::sfCopyDir("../../user_data/include/",$inc_dir, $copy_mess);
         
                     // CSSファイルをコピー
                     // ディレクトリが存在していなければ作成する
                     $css_dir = $bkup_dir . "css/";
                     if (!is_dir(dirname($css_dir))) $err = mkdir(dirname($css_dir));
                     $copy_mess = "";
                     $copy_mess = SC_Utils_Ex::sfCopyDir("../../user_data/css/",$css_dir, $copy_mess);
                     **/
         //圧縮フラグTRUEはgzip圧縮をおこなう
         $tar = new Archive_Tar($this->bkup_dir . $bkup_name . ".tar.gz", TRUE);
         //bkupフォルダに移動する
         chdir($this->bkup_dir);
         //圧縮をおこなう
         $zip = $tar->create("./" . $bkup_name . "/");
         // バックアップデータの削除
         if ($zip) {
             SC_Utils_Ex::sfDelFile($bkup_dir);
         }
     }
     if (!$err) {
         $arrErr['bkup_name'] = "バックアップに失敗しました。";
         // バックアップデータの削除
         SC_Utils_Ex::sfDelFile($bkup_dir);
     }
     return isset($arrErr) ? $arrErr : array();
 }
示例#4
0
 public static function archiveAndSendExportFile()
 {
     $export_files_dir = SJB_System::getSystemSettings("EXPORT_FILES_DIRECTORY");
     if (empty($export_files_dir)) {
         return;
     }
     $archive_file_path = SJB_Path::combine($export_files_dir, "users.tar.gz");
     $old_path = getcwd();
     chdir($export_files_dir);
     $tar = new Archive_Tar('users.tar.gz', 'gz');
     $tar->create("files video pictures users.xls");
     chdir($old_path);
     for ($i = 0; $i < ob_get_level(); $i++) {
         ob_end_clean();
     }
     header("Content-type: application/octet-stream");
     header("Content-disposition: attachment; filename=users.tar.gz");
     header("Content-Length: " . filesize($archive_file_path));
     readfile($archive_file_path);
     SJB_Filesystem::delete($export_files_dir);
 }
 /**
  * バックアップファイル作成.
  *
  * @param string $bkup_name
  * @return boolean|int 結果。true:成功 int:失敗 FIXME 本来は int ではなく、エラーメッセージを戻すべき
  */
 function lfCreateBkupData($bkup_name, $work_dir)
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $csv_autoinc = '';
     $arrData = array();
     $success = mkdir($work_dir, 0777, true);
     if (!$success) {
         return __LINE__;
     }
     // 全テーブル取得
     $arrTableList = $objQuery->listTables();
     // 各テーブル情報を取得する
     foreach ($arrTableList as $table) {
         if ($table == 'dtb_bkup' || $table == 'mtb_zip') {
             continue;
         }
         // dataをCSV出力
         $csv_file = $work_dir . $table . '.csv';
         $fp = fopen($csv_file, 'w');
         if (!$fp) {
             return __LINE__;
         }
         // 全データを取得
         $sql = "SELECT * FROM {$table}";
         $this->fpOutput =& $fp;
         $this->first_line = true;
         $success = $objQuery->doCallbackAll(array(&$this, 'cbOutputCSV'), $sql);
         unset($this->fpOutput);
         if ($success === false) {
             return __LINE__;
         }
         fclose($fp);
         // タイムアウトを防ぐ
         SC_Utils_Ex::sfFlush();
     }
     // 自動採番型の構成を取得する
     $csv_autoinc = $this->lfGetAutoIncrement();
     $csv_autoinc_file = $work_dir . 'autoinc_data.csv';
     // CSV出力
     // 自動採番をCSV出力
     $fp = fopen($csv_autoinc_file, 'w');
     if ($fp) {
         if ($csv_autoinc != '') {
             $success = fwrite($fp, $csv_autoinc);
             if (!$success) {
                 return __LINE__;
             }
         }
         fclose($fp);
     }
     //圧縮フラグTRUEはgzip圧縮をおこなう
     $tar = new Archive_Tar($this->bkup_dir . $bkup_name . $this->bkup_ext, TRUE);
     //bkupフォルダに移動する
     chdir($work_dir);
     //圧縮をおこなう
     $zip = $tar->create('./');
     return true;
 }
 /**
  * ユーザが作成したファイルをアーカイブしダウンロードさせる
  * TODO 要リファクタリング
  * @param string $dir アーカイブを行なうディレクトリ
  * @param string $template_code テンプレートコード
  * @return boolean 成功した場合 true; 失敗した場合 false
  */
 function downloadArchiveFiles($dir, $template_code)
 {
     // ダウンロードされるファイル名
     $dlFileName = 'tpl_package_' . $template_code . '_' . date('YmdHis') . '.tar.gz';
     $debug_message = $dir . ' から ' . $dlFileName . " を作成します...\n";
     // ファイル一覧取得
     $arrFileHash = SC_Helper_FileManager_Ex::sfGetFileList($dir);
     $arrFileList = array();
     foreach ($arrFileHash as $val) {
         $arrFileList[] = $val['file_name'];
         $debug_message .= '圧縮:' . $val['file_name'] . "\n";
     }
     GC_Utils_Ex::gfPrintLog($debug_message);
     // ディレクトリを移動
     chdir($dir);
     // 圧縮をおこなう
     $tar = new Archive_Tar($dlFileName, true);
     if ($tar->create($arrFileList)) {
         // ダウンロード用HTTPヘッダ出力
         header("Content-disposition: attachment; filename={$dlFileName}");
         header("Content-type: application/octet-stream; name={$dlFileName}");
         header('Cache-Control: ');
         header('Pragma: ');
         readfile($dlFileName);
         unlink($dir . '/' . $dlFileName);
         return true;
     } else {
         return false;
     }
 }
示例#7
0
function createPatch($updatecache = false)
{
    include_once "Lib/Archive/Tar.php";
    include_once 'Lib/Text/Diff.php';
    include_once 'Lib/Text/Diff/Renderer/unified.php';
    $start = microtime(true);
    $tar_object = new Archive_Tar(_bmoddir . "Data/Cache.tar");
    $tar_object->setErrorHandling(PEAR_ERROR_PRINT);
    $tardata = $tar_object->listContent();
    $working = checkDir2("");
    $fmerged = array_merge($tardata, $working);
    $tarf_db = reIndexByFile($tardata);
    $work_db = reIndexByFile($working);
    $workidx = indexFilename($working);
    $tar_idx = indexFilename($tardata);
    $f_names = array_unique(array_merge($workidx, $tar_idx));
    $out = "";
    foreach ($f_names as $file) {
        //speed optimization
        if ($tarf_db[$file] && $work_db[$file] && $tarf_db[$file]["mtime"] == $work_db[$file]["mtime"] && $updatecache != true) {
            continue;
        }
        if ($tarf_db[$file]) {
            $fts1 = $tarf_db[$file]["mtime"];
            $fdata = $tar_object->extractInString($file);
            $lines1 = explode("\n", $fdata);
            //$lines1 = file("Data/$file");
            if (substr($fdata, -1, 1) == "\n") {
                //$lines1[] = "";
            }
        } else {
            $fts1 = 0;
            $lines1 = array();
        }
        if ($work_db[$file]) {
            $fts2 = $work_db[$file]["mtime"];
            //$lines2 = file(_bpatdir."$file");
            $filetext = file_get_contents(_bmoddir . _bpatdir . "{$file}");
            $lines2 = explode("\n", $filetext);
        } else {
            $fts2 = 0;
            $lines2 = array();
            $filetext = "";
        }
        if (array_search($file, $workidx) === false && array_search($file, $tar_idx) !== false) {
            //delted file
            $out .= renderHeader($file, $fts1, $fts2);
            $out .= "@@ -0,0 @@\n\n";
            continue;
        }
        if (array_search($file, $workidx) !== false && array_search($file, $tar_idx) === false) {
            //added file
        }
        if ($filetext == $fdata) {
            continue;
        }
        $diff = new Text_Diff('auto', array($lines1, $lines2));
        $renderer = new Text_Diff_Renderer_unified();
        $render = $renderer->render($diff);
        if ($render != "") {
            $out .= renderHeader($file, $fts1, $fts2);
            //get ts to work!
            $out .= $render . "\n";
            if (substr($filetext, -1, 1) != "\n") {
                $out .= "\\ No newline at end of file\n\n";
            }
        }
    }
    if ($updatecache == true) {
        $tar_object->create(array());
        foreach ($f_names as $file) {
            $tar_object->addString($file, file_get_contents(_bmoddir . _bpatdir . "{$file}"));
        }
    }
    return array(microtime(true) - $start, $out, count($addlist));
}
示例#8
0
function download_scenarios($aSims)
{
    // Define the PEAR installation path
    require_once MAX_PATH . '/lib/pear/Archive/Tar.php';
    $oTar = new Archive_Tar(TMP_PATH . '/scenarios.tar.gz');
    $aResult = array();
    $aFiles = '';
    foreach ($aSims as $k => $v) {
        $aData = get_simulation_file_list(SCENARIOS_DATASETS, '', false, $k);
        foreach ($aData as $k1 => $v1) {
            $aFiles .= FOLDER_DATA . '/' . $v1 . ' ';
        }
        $aFiles .= FOLDER_SAVE . '/' . $k . '.php ';
    }
    $tmpdir = getcwd();
    chdir(SIM_PATH);
    $oTar->create($aFiles);
    $aResult = $oTar->listContent();
    chdir($tmpdir);
    return 'scenarios.tar.gz';
}
示例#9
0
 /**
  * バックアップファイル作成.
  *
  * @param  string      $bkup_name
  * @param string $work_dir
  * @return boolean|int 結果。true:成功 int:失敗 FIXME 本来は int ではなく、エラーメッセージを戻すべき
  */
 public function lfCreateBkupData($bkup_name, $work_dir)
 {
     $objQuery = Application::alias('eccube.query');
     $csv_autoinc = '';
     $arrData = array();
     $success = mkdir($work_dir, 0777, true);
     if (!$success) {
         return __LINE__;
     }
     // 全テーブル取得
     $arrTableList = $objQuery->listTables();
     // 各テーブル情報を取得する
     foreach ($arrTableList as $table) {
         if ($table == 'dtb_bkup' || $table == 'mtb_zip') {
             continue;
         }
         // dataをCSV出力
         $csv_file = $work_dir . $table . '.csv';
         $this->fpOutput = fopen($csv_file, 'w');
         if (!$this->fpOutput) {
             return __LINE__;
         }
         // 全データを取得
         $sql = 'SELECT * FROM ' . $objQuery->conn->quoteIdentifier($table);
         $this->output_header = true;
         $success = $objQuery->doCallbackAll(array(&$this, 'cbOutputCSV'), $sql);
         fclose($this->fpOutput);
         if ($success === false) {
             return __LINE__;
         }
         // タイムアウトを防ぐ
         Utils::sfFlush();
     }
     // 自動採番型の構成を取得する
     $csv_autoinc = $this->lfGetAutoIncrement();
     $csv_autoinc_file = $work_dir . 'autoinc_data.csv';
     // CSV出力
     // 自動採番をCSV出力
     $fp = fopen($csv_autoinc_file, 'w');
     if ($fp) {
         if ($csv_autoinc != '') {
             $success = fwrite($fp, $csv_autoinc);
             if (!$success) {
                 return __LINE__;
             }
         }
         fclose($fp);
     }
     //圧縮フラグTRUEはgzip圧縮をおこなう
     $tar = new Archive_Tar($this->bkup_dir . $bkup_name . $this->bkup_ext, TRUE);
     //bkupフォルダに移動する
     chdir($work_dir);
     //圧縮をおこなう
     $zip = $tar->create('./');
     return true;
 }
示例#10
0
        fclose($file);
        // For the array
        $i++;
    }
    // Now for the directories (and files within them) in the project
    // This requires a 2nd SQL query due to the nature of creating directories in the archive, it'll get messed up if we try
    // to do it with 1 loop
    $query = "SELECT directories.directory, files.filename, files.extension, files.content FROM files, directories WHERE files.project_id = '{$project_id}' AND files.directory_id IS NOT NULL AND directories.directory_id = files.directory_id";
    $result = mysql_query($query);
    while ($fileinfo = mysql_fetch_assoc($result)) {
        // If the directory doesn't exist, create it!
        if (!file_exists("/tmp/" . $fileinfo['directory'] . "/")) {
            mkdir("/tmp/" . $fileinfo['directory'] . "/");
        }
        // Build the filename
        $filename = "/tmp/" . $fileinfo['directory'] . "/" . $fileinfo['filename'] . "." . $fileinfo['extension'];
        // Create the file and put the information into it!
        $file = fopen($filename, "w");
        fwrite($file, $fileinfo['content']);
        // Add the file to the array which will be loaded into the archive
        $filearray[$i] = $filename;
        fclose($file);
        // For the array
        $i++;
    }
    // build archive
    $tar->create($filearray) or die("Could not create archive!");
    // Load the tar into memory
    $tar = fopen("/tmp/" . $project_id . ".tar", "r");
    echo fread($tar, filesize("/tmp/" . $project_id . ".tar"));
}
示例#11
0
            echo "<pre>{$line}</pre>";
        }
    }
}
$superstart = microtime(true);
if (file_exists("Data/database.txt")) {
    $status = file_get_contents("Data/database.txt");
} else {
    $status = "";
}
include "functions.php";
$act = $_REQUEST['act'];
if ($act == "start") {
    include_once "Lib/Archive/Tar.php";
    $tar_object = new Archive_Tar("Data/Cache.tar");
    $tar_object->create(array());
    createPatch(true);
    file_put_contents("Data/database.txt", "develop");
    header("location: " . basename(__FILE__));
} elseif ($act == "stop") {
    $dat = createPatch();
    $name = $_REQUEST['pname'];
    $ver = $_REQUEST['pver'];
    $sum = $_REQUEST['psum'];
    if ($name && $ver && $sum) {
        file_put_contents("Data/database.txt", "");
        $fn = "mod_" . $_REQUEST['pname'] . "_v" . $_REQUEST['pver'];
        file_put_contents("Data/{$fn}.patch", "fn={$fn}\nname={$name}\nversion={$ver}\nsummary={$sum}\n\n" . $dat[1]);
        echo "Done! Your package can be found in your Data/ directory as <a href='Data/{$fn}.patch'>{$fn}.patch</a>";
    } else {
        echo "Error! Form not complete! Please go <a href='?act=finish'>back</a> and repeat the form";
示例#12
0
             $error = __("Could not create directory %s.", $incoming_pkgdir);
         }
         rename($pkg_dir, $incoming_pkgdir . "/" . $pkg_name);
     } else {
         $error = __("You are not allowed to overwrite the %h%s%h package.", "<b>", $pkg_name, "</b>");
     }
 }
 # Re-tar the package for consistency's sake
 if (!$error) {
     if (!@chdir($incoming_pkgdir)) {
         $error = __("Could not change directory to %s.", $incoming_pkgdir);
     }
 }
 if (!$error) {
     $tar = new Archive_Tar($pkg_name . '.tar.gz');
     $create = $tar->create(array($pkg_name));
     if (!$create) {
         $error = __("Could not re-tar");
     }
 }
 # Chmod files after everything has been done.
 if (!$error && !chmod_group($incoming_pkgdir)) {
     $error = __("Could not chmod directory %s.", $incoming_pkgdir);
 }
 # Whether it failed or not we can clean this out
 if (file_exists($tempdir)) {
     rm_rf($tempdir);
 }
 # Update the backend database
 if (!$error) {
     $dbh = db_connect();
示例#13
0
function tar($aszSource, $szDestination)
{
    // include file
    include COMMON . "/tar/tar.php";
    // specify filename for output file
    $tar = new Archive_Tar($szDestination);
    // build archive
    if (!$tar->create($aszSource)) {
        return false;
    } else {
        return true;
    }
}
示例#14
0
 private function createTar($backupdir, $backupLocation, $filename)
 {
     set_include_path(get_include_path() . PATH_SEPARATOR . Mage::getBaseDir('app') . '/code/community/Aschroder/CloudBackup/lib/');
     require_once 'Archive/Tar.php';
     $files = scandir($backupdir);
     // remove . and ..
     $files = array_diff($files, array(".", ".."));
     if ($exclude = Mage::helper('cloudbackup')->getExclude()) {
         $this->log("Excluding: " . $exclude);
         $files = array_diff($files, explode(",", $exclude));
     }
     // Sometimes the store basedir will not be the CWD,
     // so make our urls absolute for Archive_Tar
     $abs_files = array();
     foreach ($files as $file) {
         $abs_files[] = $backupdir . DS . $file;
     }
     $this->log("Backing up: " . print_r($abs_files, true));
     $tar = new Archive_Tar($backupLocation . DS . $filename, "gz");
     if ($tar->create($abs_files)) {
         $this->log("Backup complete");
     } else {
         $this->log("Could not create backup file: " . $filename);
         throw new Exception("Could not write Backup Tar File: " . $filename);
     }
 }
示例#15
0
function packSPK($dir, $destPackage)
{
    $oldDir = getcwd();
    chdir($dir);
    // echo "create $dir to $destPackage";
    $package = new Archive_Tar("package.tgz", "gz");
    $package->setErrorHandling(PEAR_ERROR_PRINT);
    $package->create("package");
    $destPackage = new Archive_Tar($destPackage);
    $destPackage->create("INFO scripts package.tgz");
    @unlink("package.tgz");
    chdir($oldDir);
}
示例#16
0
文件: tar.inc.php 项目: Blu2z/implsk
function nc_tgz_create($archive_name, $file_name, $additional_path = '', $exclude_tag = NULL)
{
    global $DOCUMENT_ROOT, $SUB_FOLDER;
    @set_time_limit(0);
    $path = $DOCUMENT_ROOT . $SUB_FOLDER . $additional_path;
    if (SYSTEM_TAR) {
        $exclude_tag_cmd = '';
        if ($exclude_tag) {
            $exclude_array_tmp = nc_exclude_tag_to_array($path, $exclude_tag);
            $exclude_array = array();
            foreach ($exclude_array_tmp as $item) {
                $exclude_array[] = '--exclude=' . preg_quote(ltrim(substr($item, strlen($path)), '/'));
            }
            $exclude_tag_cmd = implode(' ', $exclude_array);
        }
        exec("cd {$path}; tar -zcf '{$archive_name}' {$exclude_tag_cmd} {$file_name} 2>&1", $output, $err_code);
        if ($err_code) {
            trigger_error("{$output['0']}", E_USER_WARNING);
            return false;
        }
        return true;
    } else {
        $tar_object = new Archive_Tar($archive_name, "gz");
        $tar_object->setErrorHandling(PEAR_ERROR_PRINT);
        if ($exclude_tag) {
            $exclude_array_tmp = nc_exclude_tag_to_array($path, $exclude_tag);
            $exclude_array = array();
            foreach ($exclude_array_tmp as $item) {
                $exclude_array[] = ltrim(substr($item, strlen($path)), '/');
            }
            $tar_object->setIgnoreList($exclude_array);
        }
        chdir($path);
        ob_start();
        $file_name_array = explode(' ', $file_name);
        $res = $tar_object->create($file_name_array);
        if (!$res) {
            ob_end_flush();
        } else {
            ob_end_clean();
        }
        return $res;
    }
}
示例#17
0
 /**
  * ユーザが作成したファイルをアーカイブしダウンロードさせる
  * TODO 要リファクタリング
  * @param void
  * @return void
  */
 function downloadArchiveFiles($dir)
 {
     $debug_message = "";
     // ダウンロードされるファイル名
     $dlFileName = 'tpl_package_' . date('YmdHis') . '.tar.gz';
     // ファイル一覧取得
     $arrFileHash = SC_Utils::sfGetFileList($dir);
     foreach ($arrFileHash as $val) {
         $arrFileList[] = $val['file_name'];
         $debug_message .= "圧縮:" . $val['file_name'] . "\n";
     }
     GC_Utils::gfDebugLog($debug_message);
     // ディレクトリを移動
     chdir($dir);
     // 圧縮をおこなう
     $tar = new Archive_Tar($dlFileName, true);
     $tar->create($arrFileList);
     // ダウンロード用HTTPヘッダ出力
     header("Content-disposition: attachment; filename={$dlFileName}");
     header("Content-type: application/octet-stream; name={$dlFileName}");
     header("Content-Length: " . filesize($dlFileName));
     readfile($dlFileName);
     unlink($dir . "/" . $dlFileName);
     exit;
 }
示例#18
0
 /**
  * pack all images, use PEAR Archive_Tar for archive.
  *
  * @access public
  *
  * @param string $uploadDirectory path to images
  * @param string $dbname database name
  * @param int $cityid city ID
  *
  * @return string path to created archive or false if not created
  */
 public function tarFiles($directory, $dbname, $cityid)
 {
     $swiftEnabled = WikiFactory::getVarValueByName('wgEnableSwiftFileBackend', $cityid);
     $wgUploadPath = WikiFactory::getVarValueByName('wgUploadPath', $cityid);
     if ($swiftEnabled) {
         // sync Swift container to the local directory
         $directory = sprintf("/tmp/images/{$dbname}/");
         $path = trim(parse_url($wgUploadPath, PHP_URL_PATH), '/');
         $container = substr($path, 0, -7);
         // eg. poznan/pl
         $this->log(sprintf('Rsyncing images from "%s" Swift storage to "%s"...', $container, $directory));
         wfMkdirParents($directory);
         $time = wfTime();
         // s3cmd sync --dry-run s3://dilbert ~/images/dilbert/ --exclude "/thumb/*" --exclude "/temp/*"
         $cmd = sprintf('sudo /usr/bin/s3cmd -c %s sync s3://%s/images "%s" --exclude "/thumb/*" --exclude "/temp/*"', '/etc/s3cmd/sjc_prod.cfg', $container, $directory);
         wfShellExec($cmd, $iStatus);
         $time = Wikia::timeDuration(wfTime() - $time);
         Wikia::log(__METHOD__, "info", "Rsync to {$directory} from {$container} Swift storage: status: {$iStatus}, time: {$time}", true, true);
     }
     /**
      * @name dumpfile
      */
     $tarfile = sprintf("/tmp/{$dbname}_images.tar");
     if (file_exists($tarfile)) {
         @unlink($tarfile);
     }
     $tar = new Archive_Tar($tarfile);
     if (!$tar) {
         $this->log("Cannot open {$tarfile}");
         echo "Cannot open {$tarfile}";
         die(1);
     }
     $files = $this->getDirTree($directory);
     if (is_array($files) && count($files)) {
         $this->log(sprintf("Packing %d files from {$directory} to {$tarfile}", count($files)));
         $tar->create($files);
         $result = $tarfile;
     } else {
         $this->log("List of files in {$directory} is empty");
         $result = false;
     }
     return $result;
 }
    function backup_interface()
    {
        global $serendipity;
        $BACKUPDIR = $this->get_config('abspath_backupdir');
        $TEMPDIR = $BACKUPDIR . "/tmp";
        $ARCHIVDIR = $BACKUPDIR;
        $TITLE = "";
        $TITLE .= "<h2>" . PLUGIN_BACKUP_TITLE . "</h2>\n";
        $TITLE .= PLUGIN_BACKUP_DESC . "<br /><br />\n";
        if (!file_exists($BACKUPDIR)) {
            @mkdir($BACKUPDIR, 0777);
            @chmod($BACKUPDIR, 0777);
        }
        if (!file_exists($BACKUPDIR . "/tmp")) {
            @mkdir($BACKUPDIR . "/tmp", 0777);
            @chmod($BACKUPDIR . "/tmp", 0777);
        }
        if (!file_exists($BACKUPDIR . "/tmp/last_backup")) {
            @mkdir($BACKUPDIR . "/tmp/last_backup", 0777);
            @chmod($BACKUPDIR . "/tmp/last_backup", 0777);
        }
        if (isset($serendipity['POST']['action']) && $serendipity['POST']['action'] == "makesqlbackup") {
            $STATUSMSG = '';
            unset($UPDATECONF);
            if (!isset($serendipity['POST']['complete']) || $serendipity['POST']['complete'] != 1) {
                $serendipity['POST']['complete'] = 0;
            }
            if (!isset($serendipity['POST']['drop']) || $serendipity['POST']['drop'] != 1) {
                $serendipity['POST']['drop'] = 0;
            }
            if (!isset($serendipity['POST']['pack']) || $serendipity['POST']['pack'] != 1) {
                $serendipity['POST']['pack'] = 0;
            }
            $DATA_BACKUP = $serendipity['POST']['complete'];
            $DATA_BACKUP .= "|^|";
            $DATA_BACKUP .= isset($serendipity['POST']['complete']) && $serendipity['POST']['complete'] == 1 ? serialize(array()) : serialize($serendipity['POST']['tables']);
            $DATA_BACKUP .= "|^|";
            $DATA_BACKUP .= $serendipity['POST']['data'];
            $DATA_BACKUP .= "|^|";
            $DATA_BACKUP .= $serendipity['POST']['drop'];
            $DATA_BACKUP .= "|^|";
            $DATA_BACKUP .= $serendipity['POST']['pack'];
            if (!isset($serendipity['POST']['delete']) && isset($serendipity['POST']['bakautomatik']) && $serendipity['POST']['bakautomatik'] == 1) {
                $UPDATECONF = "UPDATE {$serendipity['dbPrefix']}dma_sqlbackup SET ";
                $UPDATECONF .= "\t\tauto_backup='1', ";
                $UPDATECONF .= "\t\ttime_backup='" . $serendipity['POST']['interval'] . "', ";
                $UPDATECONF .= "\t\tlast_backup='" . time() . "', ";
                $UPDATECONF .= "\t\tdata_backup='" . addslashes($DATA_BACKUP) . "' ";
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_AUTO_SQL_BACKUP_STARTED . '</b><br />';
            } elseif (!isset($serendipity['POST']['delete']) && (count($serendipity['POST']) >= 1 && !isset($serendipity['POST']['bakautomatik']))) {
                $UPDATECONF = "UPDATE {$serendipity['dbPrefix']}dma_sqlbackup SET ";
                $UPDATECONF .= "\t\tauto_backup='0', ";
                $UPDATECONF .= "\t\ttime_backup='0', ";
                $UPDATECONF .= "\t\tlast_backup='0', ";
                $UPDATECONF .= "\t\tdata_backup='" . addslashes($DATA_BACKUP) . "' ";
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_AUTO_SQL_BACKUP_STOPPED . '</b><br />';
            }
            if (isset($UPDATECONF)) {
                serendipity_db_query($UPDATECONF);
            }
            unset($UPDATECONF);
            if (!isset($serendipity['POST']['delete']) && isset($serendipity['POST']['delautomatik']) && $serendipity['POST']['delautomatik'] == 1) {
                $UPDATECONF = "UPDATE {$serendipity['dbPrefix']}dma_sqlbackup SET ";
                $UPDATECONF .= "\t\tauto_backdel='1', ";
                $UPDATECONF .= "\t\ttime_backdel='" . $serendipity['POST']['delage'] . "', ";
                $UPDATECONF .= "\t\tlast_backdel='" . time() . "' ";
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_AUTO_SQL_DELETE_STARTED . '</b><br />';
            } elseif (!isset($serendipity['POST']['delete']) && (count($serendipity['POST']) >= 1 && !isset($serendipity['POST']['delautomatik']))) {
                $UPDATECONF = "UPDATE {$serendipity['dbPrefix']}dma_sqlbackup SET ";
                $UPDATECONF .= "\t\tauto_backdel='0', ";
                $UPDATECONF .= "\t\ttime_backdel='0', ";
                $UPDATECONF .= "\t\tlast_backdel='0' ";
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_AUTO_SQL_DELETE_STOPPED . '</b><br />';
            }
            if (isset($UPDATECONF)) {
                serendipity_db_query($UPDATECONF);
            }
            if (isset($serendipity['POST']['backup']) && $serendipity['POST']['backup'] == 1) {
                if (isset($serendipity['POST']['complete']) && $serendipity['POST']['complete'] == 1) {
                    $this->MakeSQLBackup(1, NULL, $serendipity['POST']['data'], $serendipity['POST']['drop']);
                } else {
                    $this->MakeSQLBackup(0, $serendipity['POST']['tables'], $serendipity['POST']['data'], $serendipity['POST']['drop']);
                }
                if ($serendipity['POST']['pack'] == 1) {
                    $archiv = "../" . date("Y-m-d-H-i", time()) . "_sqlbackup.tar.gz";
                    chdir($TEMPDIR);
                    if (file_exists($archiv)) {
                        unlink($archiv);
                    }
                    $this->getTar();
                    $tar_object = new Archive_Tar($archiv, "gz");
                    $tar_object->setErrorHandling(PEAR_ERROR_RETURN);
                    $filelist[0] = "./last_backup";
                    $tar_object->create($filelist);
                    chmod($archiv, 0666);
                    chdir($serendipity['serendipityPath']);
                } else {
                    $archiv = "../" . date("Y-m-d-H-i", time()) . "_sqlbackup.tar";
                    chdir($TEMPDIR);
                    if (file_exists($archiv)) {
                        unlink($archiv);
                    }
                    $this->getTar();
                    $tar_object = new Archive_Tar($archiv, FALSE);
                    $tar_object->setErrorHandling(PEAR_ERROR_RETURN);
                    $filelist[0] = "./last_backup";
                    $tar_object->create($filelist);
                    chmod($archiv, 0666);
                    chdir($serendipity['serendipityPath']);
                }
                $fe = opendir($TEMPDIR . "/last_backup");
                while ($file = readdir($fe)) {
                    if ($file != "." && $file != ".." && $file != "index.php" && $file != "cvs" && $file != "CVS") {
                        unlink($TEMPDIR . "/last_backup/" . $file);
                    }
                }
                closedir($fe);
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_SQL_SAVED . '</b><br />';
            }
        }
        if (isset($serendipity['POST']['action']) && $serendipity['POST']['action'] == "makehtmlbackup") {
            $STATUSMSG = '';
            unset($UPDATECONF);
            if (!isset($serendipity['POST']['complete']) || $serendipity['POST']['complete'] != 1) {
                $serendipity['POST']['complete'] = 0;
            }
            $DATA_BACKUP = $serendipity['serendipityPath'];
            $DATA_BACKUP .= "|^|";
            $s9ypath = trim($serendipity['serendipityPath']);
            $s9ydir = preg_replace("`^.*\\/([^\\/]*)\\/\$`", "\\1", $s9ypath);
            if (substr($s9ypath, strlen($s9ypath) - 1, strlen($s9ypath)) == "/") {
                $s9ypath = substr($s9ypath, 0, strlen($s9ypath) - 1);
            }
            $dirs_to_exclude = array();
            $fd = opendir($s9ypath);
            while ($dir = readdir($fd)) {
                if (is_dir($dir) && $dir != "." && $dir != "..") {
                    if (is_array($serendipity['POST']['dirs']) && !in_array($dir, $serendipity['POST']['dirs'])) {
                        $dirs_to_exclude[] = $dir;
                    }
                }
            }
            closedir($fd);
            $DATA_BACKUP .= isset($serendipity['POST']['complete']) && $serendipity['POST']['complete'] == 1 ? serialize(array()) : serialize($dirs_to_exclude);
            if (!isset($serendipity['POST']['delete']) && isset($serendipity['POST']['bakautomatik']) && $serendipity['POST']['bakautomatik'] == 1) {
                $UPDATECONF = "UPDATE {$serendipity['dbPrefix']}dma_htmlbackup SET ";
                $UPDATECONF .= "\t\tauto_backup='1', ";
                $UPDATECONF .= "\t\ttime_backup='" . $serendipity['POST']['interval'] . "', ";
                $UPDATECONF .= "\t\tlast_backup='" . time() . "', ";
                $UPDATECONF .= "\t\tdata_backup='" . addslashes($DATA_BACKUP) . "' ";
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_AUTO_HTML_BACKUP_STARTED . '</b><br />';
            } elseif (!isset($serendipity['POST']['delete']) && (count($serendipity['POST']) >= 1 && !isset($serendipity['POST']['bakautomatik']))) {
                $UPDATECONF = "UPDATE {$serendipity['dbPrefix']}dma_htmlbackup SET ";
                $UPDATECONF .= "\t\tauto_backup='0', ";
                $UPDATECONF .= "\t\ttime_backup='0', ";
                $UPDATECONF .= "\t\tlast_backup='0', ";
                $UPDATECONF .= "\t\tdata_backup='" . addslashes($DATA_BACKUP) . "' ";
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_AUTO_HTML_BACKUP_STOPPED . '</b><br />';
            }
            if (isset($UPDATECONF)) {
                serendipity_db_query($UPDATECONF);
            }
            unset($UPDATECONF);
            if (!isset($serendipity['POST']['delete']) && isset($serendipity['POST']['delautomatik']) && $serendipity['POST']['delautomatik'] == 1) {
                $UPDATECONF = "UPDATE {$serendipity['dbPrefix']}dma_htmlbackup SET ";
                $UPDATECONF .= "\t\tauto_backdel='1', ";
                $UPDATECONF .= "\t\ttime_backdel='" . $serendipity['POST']['delage'] . "', ";
                $UPDATECONF .= "\t\tlast_backdel='" . time() . "' ";
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_AUTO_HTML_DELETE_STARTED . '</b><br />';
            } elseif (!isset($serendipity['POST']['delete']) && (count($serendipity['POST']) >= 1 && !isset($serendipity['POST']['delautomatik']))) {
                $UPDATECONF = "UPDATE {$serendipity['dbPrefix']}dma_htmlbackup SET ";
                $UPDATECONF .= "\t\tauto_backdel='0', ";
                $UPDATECONF .= "\t\ttime_backdel='0', ";
                $UPDATECONF .= "\t\tlast_backdel='0' ";
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_AUTO_HTML_DELETE_STOPPED . '</b><br />';
            }
            if (isset($UPDATECONF)) {
                serendipity_db_query($UPDATECONF);
            }
            if (isset($serendipity['POST']['backup']) && $serendipity['POST']['backup'] == 1) {
                if (isset($serendipity['POST']['complete']) && $serendipity['POST']['complete'] == 1) {
                    $this->MakeHTMLBackup($s9ypath);
                } else {
                    $this->MakeHTMLBackup($s9ypath, $dirs_to_exclude);
                }
                $STATUSMSG .= '<b>' . PLUGIN_BACKUP_HTML_SAVED . '</b><br />';
            }
        }
        if (isset($serendipity['POST']['del']) and count($serendipity['POST']['del']) >= 1) {
            for ($a = 0; $a < count($serendipity['POST']['del']); $a++) {
                unlink($ARCHIVDIR . "/" . basename($serendipity['POST']['del'][$a]));
            }
        }
        if (isset($_GET['recover']) && isset($_GET['backup']) && $_GET['recover'] == 1 && trim($_GET['backup']) != "") {
            $STATUSMSG .= $this->RecoverSQLBackup($_GET['backup']);
        } elseif (isset($_GET['download']) && isset($_GET['backup']) && $_GET['download'] == 1 && trim($_GET['backup']) != "") {
            $file = $BACKUPDIR . "/" . basename($_GET['backup']);
            $fp = fopen($file, "r");
            if (preg_match("@.gz\$@", $_GET['backup'])) {
                header("Content-Type: application/x-gzip-compressed");
            } elseif (preg_match("@.tar\$@", $_GET['backup'])) {
                header("Content-Type: application/x-tar-compressed");
            }
            header("Content-Transfer-Encoding: Binary");
            header("Content-length: " . filesize($BACKUPDIR . "/" . $_GET['backup']));
            header("Content-disposition: attachment; filename=" . basename($_GET['backup']));
            while (!feof($fp)) {
                $buff = fread($fp, 4096);
                print $buff;
            }
        }
        $retconfs = serendipity_db_query("SELECT * FROM {$serendipity['dbPrefix']}dma_sqlbackup");
        foreach ($retconfs[0] as $key => $val) {
            $backupconfig[$key] = stripslashes(trim($val));
        }
        $backupdatas_array = explode("|^|", $backupconfig['data_backup']);
        $complete = intval($backupdatas_array[0]);
        $tables = unserialize($backupdatas_array[1]);
        $data = $backupdatas_array[2];
        $drop = intval($backupdatas_array[3]);
        $pack = intval($backupdatas_array[4]);
        if (isset($tdbgcolor) && $tdbgcolor == "#ebebeb") {
            $tdbgcolor = "#efefef";
        } else {
            $tdbgcolor = "#ebebeb";
        }
        $BACKUPFORM = "<div align=\"center\"><b>" . PLUGIN_BACKUP_SQL_BACKUP . "</b></div>\n";
        $BACKUPFORM .= '<table width="100%" border="0" cellspacing="1" cellpadding="2" align="center">';
        $BACKUPFORM .= '<form name="NewBackupForm" action="?" method="POST">';
        $BACKUPFORM .= '<input type="hidden" name="serendipity[c]" value="backup" />
						<input type="hidden" name="serendipity[action]" value="makesqlbackup" />
						<input type="hidden" name="serendipity[backup]" value="1" />';
        $BACKUPFORM .= "<input type=\"hidden\" name=\"serendipity[adminModule]\" value=\"event_display\" />\n";
        $BACKUPFORM .= "<input type=\"hidden\" name=\"serendipity[adminAction]\" value=\"backup\" />\n";
        $BACKUPFORM .= '<tr>';
        $BACKUPFORM .= '<td width="250px" rowspan="3" style="background-color:' . $tdbgcolor . '" align="left"><select style="width:250px" name="serendipity[tables][]" size="11" multiple>';
        $QUERY = serendipity_db_query("SHOW TABLES");
        $co = 0;
        foreach ($QUERY as $THISTABLE) {
            if (count($tables) >= 1) {
                if (@in_array($THISTABLE[0], $tables)) {
                    $BACKUPFORM .= '<option value="' . $THISTABLE[0] . '" selected>' . $THISTABLE[0] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $THISTABLE[0] . '">' . $THISTABLE[0] . '</option>';
                }
            } else {
                $BACKUPFORM .= '<option value="' . $THISTABLE[0] . '"';
                if ($co == 0) {
                    $BACKUPFORM .= ' selected';
                }
                $BACKUPFORM .= '>' . $THISTABLE[0] . '</option>';
            }
            $co++;
        }
        $BACKUPFORM .= '</select></td>';
        $BACKUPFORM .= '<td style="background-color:' . $tdbgcolor . '" align="left" valign="top">
							<select name="serendipity[data]">
								<option value="0"> --- ' . PLUGIN_BACKUP_PLEASE_CHOOSE . ' --- </option>';
        if (isset($data) && $data == "data") {
            $BACKUPFORM .= '		<option value="data" selected>' . PLUGIN_BACKUP_STRUCT_AND_DATA . '</option>';
            $BACKUPFORM .= '		<option value="structure">' . PLUGIN_BACKUP_ONLY_STRUCT . '</option>';
            $BACKUPFORM .= '		<option value="dataonly">' . PLUGIN_BACKUP_ONLY_DATA . '</option>';
        } elseif (isset($data) && $data == "structure") {
            $BACKUPFORM .= '		<option value="data">' . PLUGIN_BACKUP_STRUCT_AND_DATA . '</option>';
            $BACKUPFORM .= '		<option value="structure" selected>' . PLUGIN_BACKUP_ONLY_STRUCT . '</option>';
            $BACKUPFORM .= '		<option value="dataonly">' . PLUGIN_BACKUP_ONLY_DATA . '</option>';
        } elseif (isset($data) && $data == "dataonly") {
            $BACKUPFORM .= '		<option value="data">' . PLUGIN_BACKUP_STRUCT_AND_DATA . '</option>';
            $BACKUPFORM .= '		<option value="structure">' . PLUGIN_BACKUP_ONLY_STRUCT . '</option>';
            $BACKUPFORM .= '		<option value="dataonly" selected>' . PLUGIN_BACKUP_ONLY_DATA . '</option>';
        } else {
            $BACKUPFORM .= '		<option value="data" selected>' . PLUGIN_BACKUP_STRUCT_AND_DATA . '</option>';
            $BACKUPFORM .= '		<option value="structure">' . PLUGIN_BACKUP_ONLY_STRUCT . '</option>';
            $BACKUPFORM .= '		<option value="dataonly">' . PLUGIN_BACKUP_ONLY_DATA . '</option>';
        }
        $BACKUPFORM .= '	</select><br />';
        if (isset($drop) && $drop == 1) {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[drop]" value="1" checked /> ' . PLUGIN_BACKUP_WITH_DROP_TABLE . '<br />';
        } elseif (isset($drop) && $drop == "0") {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[drop]" value="1" /> ' . PLUGIN_BACKUP_WITH_DROP_TABLE . '<br />';
        } elseif (!isset($drop)) {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[drop]" value="1" checked /> ' . PLUGIN_BACKUP_WITH_DROP_TABLE . '<br />';
        }
        if (isset($pack) && $pack == 1) {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[pack]" value="1" checked /> ' . PLUGIN_BACKUP_ZIPPED . '<br />';
        } elseif (isset($pack) && $pack == "0") {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[pack]" value="1" /> ' . PLUGIN_BACKUP_ZIPPED . '<br />';
        } elseif (!isset($pack)) {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[pack]" value="1" checked /> ' . PLUGIN_BACKUP_ZIPPED . '<br />';
        }
        if (isset($complete) && $complete == 1) {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[complete]" value="1" checked /> ' . PLUGIN_BACKUP_WHOLE_DATABASE . '<br />';
        } elseif (isset($complete) && $complete == "0") {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[complete]" value="1" /> ' . PLUGIN_BACKUP_WHOLE_DATABASE . '<br />';
        } elseif (!isset($complete)) {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[complete]" value="1" /> ' . PLUGIN_BACKUP_WHOLE_DATABASE . '<br />';
        }
        $BACKUPFORM .= '	</td>';
        $BACKUPFORM .= '<td width="75" style="background-color:' . $tdbgcolor . '" align="center" valign="middle"><input class="serendipityPrettyButton input_button" type="submit" name="serendipity[submit]" value="' . PLUGIN_BACKUP_START_BACKUP . '" /></td>';
        $BACKUPFORM .= '</tr>';
        $BACKUPFORM .= '<tr>';
        if ($backupconfig['auto_backup'] == 1) {
            $C_automatik = ' checked';
        } else {
            $C_automatik = '';
        }
        if ($backupconfig['auto_backdel'] == 1) {
            $C_delmatik = ' checked';
        } else {
            $C_delmatik = '';
        }
        $BAKAUTO['TIME'] = array(600, 3600, 7200, 21600, 43200, 86400, 172800, 345600, 604800, 1209600, 2419200);
        $BAKAUTO['TEXT'] = array('10 ' . PLUGIN_BACKUP_MINUTES, PLUGIN_BACKUP_EVERY . ' ' . PLUGIN_BACKUP_HOUR, PLUGIN_BACKUP_EVERY . ' 2 ' . PLUGIN_BACKUP_HOURS, PLUGIN_BACKUP_EVERY . ' 6 ' . PLUGIN_BACKUP_HOURS, PLUGIN_BACKUP_EVERY . ' 12 ' . PLUGIN_BACKUP_HOURS, PLUGIN_BACKUP_EVERY . ' 24 ' . PLUGIN_BACKUP_HOURS, PLUGIN_BACKUP_EVERY . ' 2 ' . PLUGIN_BACKUP_DAYS, PLUGIN_BACKUP_EVERY . ' 4 ' . PLUGIN_BACKUP_DAYS, PLUGIN_BACKUP_EVERY . ' 7 ' . PLUGIN_BACKUP_DAYS, PLUGIN_BACKUP_EVERY . ' 2 ' . PLUGIN_BACKUP_WEEKS, PLUGIN_BACKUP_EVERY . ' 4 ' . PLUGIN_BACKUP_WEEKS);
        $DELAUTO['TIME'] = array(43200, 86400, 172800, 345600, 604800, 1209600, 2419200, 4838400, 14515200);
        $DELAUTO['TEXT'] = array('12 ' . PLUGIN_BACKUP_HOURS, ' 24 ' . PLUGIN_BACKUP_HOURS, '2 ' . PLUGIN_BACKUP_DAYS, '4 ' . PLUGIN_BACKUP_DAYS, '7 ' . PLUGIN_BACKUP_DAYS, '2 ' . PLUGIN_BACKUP_WEEKS, '4 ' . PLUGIN_BACKUP_WEEKS, '2 ' . PLUGIN_BACKUP_MONTHS, '6 ' . PLUGIN_BACKUP_MONTHS);
        $BACKUPFORM .= '<td colspan="2" style="background-color:' . $tdbgcolor . '" align="center" valign="top">
							<table width="100%" border="0" cellspacing="0" cellpadding="0">
								<tr>
									<td colspan="2">&nbsp;&nbsp;' . PLUGIN_BACKUP_AUTO_BACKUP . '<br />
									<input class="input_checkbox" type="checkbox" name="serendipity[bakautomatik]" value="1"' . $C_automatik . ' /> ' . PLUGIN_BACKUP_ACTIVATE_AUTO_BACKUP . '<br /></td>
								</tr>
								<tr>
									<td width="170">' . PLUGIN_BACKUP_TIME_BET_BACKUPS . '</td>
									<td><select name="serendipity[interval]">';
        for ($BA = 0; $BA < count($BAKAUTO['TIME']); $BA++) {
            if ($backupconfig['time_backup'] >= 1) {
                if ($BAKAUTO['TIME'][$BA] == $backupconfig['time_backup']) {
                    $BACKUPFORM .= '<option value="' . $BAKAUTO['TIME'][$BA] . '" selected>' . $BAKAUTO['TEXT'][$BA] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $BAKAUTO['TIME'][$BA] . '">' . $BAKAUTO['TEXT'][$BA] . '</option>';
                }
            } else {
                if ($BA == 3) {
                    $BACKUPFORM .= '<option value="' . $BAKAUTO['TIME'][$BA] . '" selected>' . $BAKAUTO['TEXT'][$BA] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $BAKAUTO['TIME'][$BA] . '">' . $BAKAUTO['TEXT'][$BA] . '</option>';
                }
            }
        }
        $BACKUPFORM .= '				</select></td>
								</tr>
							</table>
							</td>';
        $BACKUPFORM .= '</tr>';
        $BACKUPFORM .= '<tr>';
        $BACKUPFORM .= '<td colspan="2" style="background-color:' . $tdbgcolor . '" align="center" valign="top">
							<table width="100%" border="0" cellspacing="0" cellpadding="0">
								<tr>
									<td colspan="2">&nbsp;&nbsp;' . PLUGIN_BACKUP_DEL_OLD_BACKUPS . '<br />
									<input class="input_checkbox" type="checkbox" name="serendipity[delautomatik]" value="1"' . $C_delmatik . ' /> ' . PLUGIN_BACKUP_ACTIVATE_AUTO_DELETE . '<br /></td>
								</tr>
								<tr>
									<td width="140">' . PLUGIN_BACKUP_OLDER_THAN . '</td>
									<td><select name="serendipity[delage]">';
        for ($BA = 0; $BA < count($DELAUTO['TIME']); $BA++) {
            if ($backupconfig['time_backdel'] >= 1) {
                if ($DELAUTO['TIME'][$BA] == $backupconfig['time_backdel']) {
                    $BACKUPFORM .= '<option value="' . $DELAUTO['TIME'][$BA] . '" selected>' . $DELAUTO['TEXT'][$BA] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $DELAUTO['TIME'][$BA] . '">' . $DELAUTO['TEXT'][$BA] . '</option>';
                }
            } else {
                if ($BA == 6) {
                    $BACKUPFORM .= '<option value="' . $DELAUTO['TIME'][$BA] . '" selected>' . $DELAUTO['TEXT'][$BA] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $DELAUTO['TIME'][$BA] . '">' . $DELAUTO['TEXT'][$BA] . '</option>';
                }
            }
        }
        $BACKUPFORM .= '				</select>&nbsp;&nbsp;' . PLUGIN_BACKUP_WILL_BE_DELETED . '</td>
								</tr>
							</table>
							</td>';
        $BACKUPFORM .= '</tr>';
        $BACKUPFORM .= '</form>';
        $BACKUPFORM .= '</table><br />';
        unset($BACKUPS);
        $retconfh = serendipity_db_query("SELECT * FROM {$serendipity['dbPrefix']}dma_htmlbackup");
        foreach ($retconfh[0] as $key => $val) {
            $htmlbackupconfig[$key] = stripslashes(trim($val));
        }
        $backupdatah_array = explode("|^|", $htmlbackupconfig['data_backup']);
        $dir_to_backup = trim($backupdata_array[0]);
        if (substr($dir_to_backup, strlen($dir_to_backup) - 1, strlen($dir_to_backup)) == "/") {
            $dir_to_backup = substr($dir_to_backup, 0, strlen($dir_to_backup) - 1);
        }
        $exclude = unserialize(trim($backupdatah_array[1]));
        $BACKUPFORM .= "<div align=\"center\"><b>" . PLUGIN_BACKUP_HTML_BACKUP . "</b></div>\n";
        if (isset($tdbgcolor) && $tdbgcolor == "#ebebeb") {
            $tdbgcolor = "#efefef";
        } else {
            $tdbgcolor = "#ebebeb";
        }
        $BACKUPFORM .= '<table width="100%" border="0" cellspacing="1" cellpadding="2" align="center">';
        $BACKUPFORM .= '<form name="NewHBackupForm" action="?" method="POST">';
        $BACKUPFORM .= '<input type="hidden" name="serendipity[c]" value="backup" />
						<input type="hidden" name="serendipity[action]" value="makehtmlbackup" />
						<input type="hidden" name="serendipity[backup]" value="1" />';
        $BACKUPFORM .= "<input type=\"hidden\" name=\"serendipity[adminModule]\" value=\"event_display\" />\n";
        $BACKUPFORM .= "<input type=\"hidden\" name=\"serendipity[adminAction]\" value=\"backup\" />\n";
        $BACKUPFORM .= '<tr>';
        $BACKUPFORM .= '<td width="250px" rowspan="3" style="background-color:' . $tdbgcolor . '" align="left">
							<select style="width:250px" name="serendipity[dirs][]" size="8" multiple>';
        $s9ypath = trim($serendipity['serendipityPath']);
        $s9ydir = preg_replace("`^.*\\/([^\\/]*)\\/\$`", "\\1", $s9ypath);
        $dirs = array();
        $fd = opendir($s9ypath);
        while ($dir = readdir($fd)) {
            if (is_dir($dir) && $dir != "." && $dir != "..") {
                $dirs[] = $dir;
            }
        }
        closedir($fd);
        unset($dir);
        @reset($dirs);
        asort($dirs);
        @reset($dirs);
        foreach ($dirs as $dir) {
            if (is_array($exclude) && count($exclude) >= 1) {
                if (!in_array($dir, $exclude)) {
                    $BACKUPFORM .= '<option value="' . $dir . '" selected>' . $s9ydir . "/" . $dir . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $dir . '">' . $s9ydir . "/" . $dir . '</option>';
                }
            } else {
                $BACKUPFORM .= '<option value="' . $dir . '"';
                if ($co == 0) {
                    $BACKUPFORM .= ' selected';
                }
                $BACKUPFORM .= '>' . $s9ydir . "/" . $dir . '</option>';
            }
            $co++;
        }
        $BACKUPFORM .= '</select></td>';
        $BACKUPFORM .= '<td style="background-color:' . $tdbgcolor . '" align="left" valign="top">';
        if (!is_array($exclude) || count($exclude) <= 0) {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[complete]" value="1" checked /> ' . PLUGIN_BACKUP_WHOLE_BLOG . '<br />';
        } else {
            $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[complete]" value="1" /> ' . PLUGIN_BACKUP_WHOLE_BLOG . '<br />';
        }
        $BACKUPFORM .= '	</td>';
        $BACKUPFORM .= '<td width="75" style="background-color:' . $tdbgcolor . '" align="center" valign="middle"><input class="serendipityPrettyButton input_button" type="submit" name="serendipity[submit]" value="' . PLUGIN_BACKUP_START_BACKUP . '" /></td>';
        $BACKUPFORM .= '</tr>';
        $BACKUPFORM .= '<tr>';
        if ($htmlbackupconfig['auto_backup'] == 1) {
            $C_automatik = ' checked';
        } else {
            $C_automatik = '';
        }
        if ($htmlbackupconfig['auto_backdel'] == 1) {
            $C_delmatik = ' checked';
        } else {
            $C_delmatik = '';
        }
        $BACKUPFORM .= '<td colspan="2" style="background-color:' . $tdbgcolor . '" align="center" valign="top">
							<table width="100%" border="0" cellspacing="0" cellpadding="0">
								<tr>
									<td colspan="2">&nbsp;&nbsp;' . PLUGIN_BACKUP_AUTO_BACKUP . '<br />
									<input class="input_checkbox" type="checkbox" name="serendipity[bakautomatik]" value="1"' . $C_automatik . ' /> ' . PLUGIN_BACKUP_ACTIVATE_AUTO_BACKUP . '<br /></td>
								</tr>
								<tr>
									<td width="170">' . PLUGIN_BACKUP_TIME_BET_BACKUPS . '</td>
									<td><select name="serendipity[interval]">';
        for ($BA = 0; $BA < count($BAKAUTO['TIME']); $BA++) {
            if ($htmlbackupconfig['time_backup'] >= 1) {
                if ($BAKAUTO['TIME'][$BA] == $htmlbackupconfig['time_backup']) {
                    $BACKUPFORM .= '<option value="' . $BAKAUTO['TIME'][$BA] . '" selected>' . $BAKAUTO['TEXT'][$BA] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $BAKAUTO['TIME'][$BA] . '">' . $BAKAUTO['TEXT'][$BA] . '</option>';
                }
            } else {
                if ($BA == 3) {
                    $BACKUPFORM .= '<option value="' . $BAKAUTO['TIME'][$BA] . '" selected>' . $BAKAUTO['TEXT'][$BA] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $BAKAUTO['TIME'][$BA] . '">' . $BAKAUTO['TEXT'][$BA] . '</option>';
                }
            }
        }
        $BACKUPFORM .= '				</select></td>
								</tr>
							</table>
							</td>';
        $BACKUPFORM .= '</tr>';
        $BACKUPFORM .= '<tr>';
        $BACKUPFORM .= '<td colspan="2" style="background-color:' . $tdbgcolor . '" align="center" valign="top">
							<table width="100%" border="0" cellspacing="0" cellpadding="0">
								<tr>
									<td colspan="2">&nbsp;&nbsp;' . PLUGIN_BACKUP_DEL_OLD_BACKUPS . '<br />
									<input class="input_checkbox" type="checkbox" name="serendipity[delautomatik]" value="1"' . $C_delmatik . ' /> ' . PLUGIN_BACKUP_ACTIVATE_AUTO_DELETE . '<br /></td>
								</tr>
								<tr>
									<td width="140">' . PLUGIN_BACKUP_OLDER_THAN . '</td>
									<td><select name="serendipity[delage]">';
        for ($BA = 0; $BA < count($DELAUTO['TIME']); $BA++) {
            if ($htmlbackupconfig['time_backdel'] >= 1) {
                if ($DELAUTO['TIME'][$BA] == $htmlbackupconfig['time_backdel']) {
                    $BACKUPFORM .= '<option value="' . $DELAUTO['TIME'][$BA] . '" selected>' . $DELAUTO['TEXT'][$BA] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $DELAUTO['TIME'][$BA] . '">' . $DELAUTO['TEXT'][$BA] . '</option>';
                }
            } else {
                if ($BA == 6) {
                    $BACKUPFORM .= '<option value="' . $DELAUTO['TIME'][$BA] . '" selected>' . $DELAUTO['TEXT'][$BA] . '</option>';
                } else {
                    $BACKUPFORM .= '<option value="' . $DELAUTO['TIME'][$BA] . '">' . $DELAUTO['TEXT'][$BA] . '</option>';
                }
            }
        }
        $BACKUPFORM .= '				</select>&nbsp;&nbsp;' . PLUGIN_BACKUP_WILL_BE_DELETED . '</td>
								</tr>
							</table>
							</td>';
        $BACKUPFORM .= '</tr>';
        $BACKUPFORM .= '</form>';
        $BACKUPFORM .= '</table><br />';
        unset($BACKUPS);
        $bc = 0;
        $fd = opendir($BACKUPDIR);
        while ($backup = readdir($fd)) {
            if (preg_match("@backup@", $backup)) {
                $BACKUPS['NAME'][$bc] = $backup;
                $BACKUPS['FILE'][$bc] = $BACKUPDIR . "/" . $backup;
                $BACKUPS['TIME'][$bc] = filemtime($BACKUPDIR . "/" . $backup);
                $BACKUPS['SIZE'][$bc] = filesize($BACKUPDIR . "/" . $backup);
                $bc++;
            }
        }
        closedir($fd);
        @reset($BACKUPS);
        @array_multisort($BACKUPS['TIME'], SORT_DESC, SORT_NUMERIC, $BACKUPS['NAME'], $BACKUPS['FILE'], $BACKUPS['SIZE']);
        if (isset($tdbgcolor) && $tdbgcolor == "#ebebeb") {
            $tdbgcolor = "#efefef";
        } else {
            $tdbgcolor = "#ebebeb";
        }
        if (count($BACKUPS['NAME']) >= 1) {
            $BACKUPFORM .= "\n\n\n" . '<table width="100%" border="0" cellspacing="1" cellpadding="2" align="center">' . "\n";
            $BACKUPFORM .= '<form name="UPForm" action="?" method="POST">' . "\n";
            $BACKUPFORM .= '<input type="hidden" name="serendipity[c]" value="backup" />
							<input type="hidden" name="serendipity[action]" value="deletesqlbackup" />' . "\n";
            $BACKUPFORM .= "<input type=\"hidden\" name=\"serendipity[adminModule]\" value=\"event_display\" />\n";
            $BACKUPFORM .= "<input type=\"hidden\" name=\"serendipity[adminAction]\" value=\"backup\" />\n";
            $BACKUPFORM .= '<tr>' . "\n";
            $BACKUPFORM .= '<td style="background-color:' . $tdbgcolor . '" align="left"><span style="font-weight: bolder;">' . PLUGIN_BACKUP_FILENAME . '</span></td>' . "\n";
            $BACKUPFORM .= '<td width="100" style="background-color:' . $tdbgcolor . '" align="right"><span style="font-weight: bolder;">' . PLUGIN_BACKUP_FILESIZE . '</span></td>' . "\n";
            $BACKUPFORM .= '<td width="140" style="background-color:' . $tdbgcolor . '" align="right"><span style="font-weight: bolder;">' . PLUGIN_BACKUP_DATE . '</span></td>' . "\n";
            $BACKUPFORM .= '<td width="60" style="background-color:' . $tdbgcolor . '" align="center"><span style="font-weight: bolder;">' . PLUGIN_BACKUP_OPTION . '</span></td>' . "\n";
            $BACKUPFORM .= '</tr>' . "\n";
            for ($bco = 0; $bco < count($BACKUPS['NAME']); $bco++) {
                if (isset($tdbgcolor) && $tdbgcolor == "#ebebeb") {
                    $tdbgcolor = "#efefef";
                } else {
                    $tdbgcolor = "#ebebeb";
                }
                $BACKUPFORM .= '<tr>' . "\n";
                $BACKUPFORM .= '<td style="background-color:' . $tdbgcolor . '" align="left"><a href="' . $serendipity['baseURL'] . ($serendipity['rewrite'] == "none" ? $serendipity['indexFile'] . "?/" : "") . 'plugin/dlbackup_' . $BACKUPS['NAME'][$bco] . '">' . $BACKUPS['NAME'][$bco] . '</a></td>' . "\n";
                $BACKUPFORM .= '<td width="100" style="background-color:' . $tdbgcolor . '" align="right">' . $this->calcFilesize($BACKUPS['SIZE'][$bco]) . '</td>' . "\n";
                $BACKUPFORM .= '<td width="140" style="background-color:' . $tdbgcolor . '" align="right">' . date("d.m.Y, H:i", $BACKUPS['TIME'][$bco]) . '</td>' . "\n";
                $BACKUPFORM .= '<td width="60" style="background-color:' . $tdbgcolor . '" align="center">' . "\n";
                if (preg_match("@htmlbackup@", $BACKUPS['NAME'][$bco])) {
                    $BACKUPFORM .= "\t<img alt=\"\" src=\"" . $this->getRelPath() . "/img/e.gif\" width=18 height=18 border=\"0\" valign=\"absmiddle\" align=\"middle\" />";
                } else {
                    $BACKUPFORM .= "\t<a href=\"./serendipity_admin.php?serendipity[adminModule]=event_display&amp;serendipity[adminAction]=backup&amp;backup=" . $BACKUPS['NAME'][$bco] . "&amp;recover=1\"><img alt=\"\" src=\"" . $this->getRelPath() . "/img/recover.gif\" width=18 height=18 border=\"0\" valign=\"absmiddle\" align=\"middle\" title=\"" . PLUGIN_BACKUP_RECOVER_THIS . "\" alt=\"" . PLUGIN_BACKUP_RECOVER_THIS . "\" /></a>";
                }
                $BACKUPFORM .= '	<input class="input_checkbox" type="checkbox" name="serendipity[del][]" value="' . $BACKUPS['NAME'][$bco] . '" /></td>' . "\n";
                $BACKUPFORM .= '</tr>' . "\n";
            }
            if (isset($tdbgcolor) && $tdbgcolor == "#ebebeb") {
                $tdbgcolor = "#efefef";
            } else {
                $tdbgcolor = "#ebebeb";
            }
            $BACKUPFORM .= '<tr>' . "\n";
            $BACKUPFORM .= '<td colspan="4" style="background-color:' . $tdbgcolor . '" align="right"><span style="font-weight: bolder;">
								<input class="serendipityPrettyButton input_button" type="submit" name="serendipity[delete]" value="' . PLUGIN_BACKUP_DELETE . '" />
								</span></td>' . "\n";
            $BACKUPFORM .= '</tr>' . "\n";
            $BACKUPFORM .= '</form>' . "\n";
            $BACKUPFORM .= '</table>' . "\n\n\n";
        } else {
            $BACKUPFORM .= '<table width="100%" border="0" cellspacing="1" cellpadding="2">' . "\n";
            $BACKUPFORM .= '<tr>' . "\n";
            $BACKUPFORM .= '<td style="background-color:' . $tdbgcolor . '" align="center"><span style="font-weight: bolder;">' . PLUGIN_BACKUP_NO_BACKUPS . '</span></td>' . "\n";
            $BACKUPFORM .= '</tr>' . "\n";
            $BACKUPFORM .= '</table>' . "\n";
        }
        echo $TITLE;
        if (isset($STATUSMSG) && trim($STATUSMSG) != "") {
            echo $STATUSMSG . "<br /><br />";
        }
        echo $BACKUPFORM;
    }
 /**
  * バックアップファイル作成.
  *
  * TODO $csv_data はデータを大きく保持しすぎに感じる。分割して書き込みたい。
  * @param string $bkup_name
  * @return array $arrErr
  */
 function lfCreateBkupData($bkup_name, $bkup_dir)
 {
     // 実行時間を制限しない
     set_time_limit(0);
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $csv_data = '';
     $csv_autoinc = "";
     $arrData = array();
     $success = true;
     if (!is_dir(dirname($bkup_dir))) {
         $success = mkdir(dirname($bkup_dir));
     }
     $bkup_dir = $bkup_dir . $bkup_name . "/";
     // 全テーブル取得
     $arrTableList = $objQuery->listTables();
     // 各テーブル情報を取得する
     foreach ($arrTableList as $table) {
         if (!($table == "dtb_bkup" || $table == "mtb_zip")) {
             // 全データを取得
             if ($table == "dtb_pagelayout") {
                 $arrData = $objQuery->getAll("SELECT * FROM {$table} ORDER BY page_id");
             } else {
                 $arrData = $objQuery->getAll("SELECT * FROM {$table}");
             }
             // CSVデータ生成
             if (count($arrData) > 0) {
                 // テーブル名
                 $csv_data .= $table . "\r\n";
                 // カラム名
                 $csv_data .= SC_Helper_CSV_Ex::sfArrayToCsv(array_keys($arrData[0])) . "\r\n";
                 // データ
                 foreach ($arrData as $data_val) {
                     $csv_data .= SC_Helper_CSV_Ex::sfArrayToCsv($data_val) . "\r\n";
                 }
                 // テーブル終端
                 $csv_data .= "\r\n";
             }
             // タイムアウトを防ぐ
             SC_Utils_Ex::sfFlush();
         }
     }
     // 自動採番型の構成を取得する
     $csv_autoinc = $this->lfGetAutoIncrement();
     $csv_file = $bkup_dir . "bkup_data.csv";
     $csv_autoinc_file = $bkup_dir . "autoinc_data.csv";
     mb_internal_encoding(CHAR_CODE);
     // CSV出力
     // ディレクトリが存在していなければ作成する
     if (!is_dir(dirname($csv_file))) {
         $success = mkdir(dirname($csv_file));
     }
     if ($success) {
         // dataをCSV出力
         $fp = fopen($csv_file, 'w');
         if ($fp) {
             if ($csv_data != "") {
                 $success = fwrite($fp, $csv_data);
             }
             fclose($fp);
         }
         // 自動採番をCSV出力
         $fp = fopen($csv_autoinc_file, 'w');
         if ($fp) {
             if ($csv_autoinc != "") {
                 $success = fwrite($fp, $csv_autoinc);
             }
             fclose($fp);
         }
     }
     if ($success) {
         //圧縮フラグTRUEはgzip圧縮をおこなう
         $tar = new Archive_Tar($this->bkup_dir . $bkup_name . $this->bkup_ext, TRUE);
         //bkupフォルダに移動する
         chdir($this->bkup_dir);
         //圧縮をおこなう
         $zip = $tar->create("./" . $bkup_name . "/");
         // バックアップデータの削除
         if ($zip) {
             SC_Utils_Ex::sfDelFile($bkup_dir);
         }
     }
     if (!$success) {
         $arrErr['bkup_name'] = "バックアップに失敗しました。";
         // バックアップデータの削除
         SC_Utils_Ex::sfDelFile($bkup_dir);
     }
     return isset($arrErr) ? $arrErr : array();
 }
示例#21
0
// switch to PHP/Math build directory
chdir($buildDir);
$tarName = "{$pkgName}.tar.gz";
$tarPath = $buildDir . $pkgName . "/downloads/" . $tarName;
if ($_GET['op'] == "download") {
    require_once 'Archive/Tar.php';
    $tar = new Archive_Tar($tarPath);
    // create $pkgName archive under $pkgName folder
    $files = glob("{$pkgName}/*.php");
    $files = array_merge($files, glob("{$pkgName}/*.TXT"));
    $files = array_merge($files, glob("{$pkgName}/docs/*.php"));
    $files = array_merge($files, glob("{$pkgName}/docs/includes/*.php"));
    $files = array_merge($files, glob("{$pkgName}/examples/*.php"));
    $files = array_merge($files, glob("{$pkgName}/tests/*.php"));
    $files = array_merge($files, glob("{$pkgName}/utils/*.php"));
    $tar->create($files);
    // create the download url
    $webDir = substr($_SERVER['PHP_SELF'], 0, -18);
    $urlPath = "http://" . $_SERVER['HTTP_HOST'] . $webDir . "/downloads";
    // redirect to download url
    header("Location: {$urlPath}/{$tarName}");
}
include_once "../libraries/PhpOffice/PHPExcel/Shared/JAMA/docs/includes/header.php";
include_once "../libraries/PhpOffice/PHPExcel/Shared/JAMA/docs/includes/navbar.php";
?>
<p>Download current version:</p>
<ul>
	<li><a href='<?php 
echo $_SERVER['PHP_SELF'] . "?op=download";
?>
'><?php 
示例#22
0
文件: dl.php 项目: laiello/suitex
     // Create zip file
     $cmd = $config->zip . ' -r ' . quote($downloadArchive) . ' ' . quote($archiveName);
     execCommand($cmd, $retcode);
     if ($retcode != 0) {
         error_log('Unable to call zip command: ' . $cmd);
         print 'Unable to call zip command. See webserver error log for details.';
     }
 } else {
     $downloadMimeType = 'application/x-gzip';
     $downloadArchive .= '.tar.gz';
     $tarArchive = $archiveName . '.tar';
     // Create the tar file
     $retcode = 0;
     if (class_exists('Archive_Tar')) {
         $tar = new Archive_Tar($tarArchive);
         $created = $tar->create($archiveName);
         if (!$created) {
             $retcode = 1;
             header('HTTP/1.x 500 Internal Server Error', true, 500);
             print 'Unable to create tar archive.';
         }
     } else {
         $cmd = $config->tar . ' -cf ' . quote($tarArchive) . ' ' . quote($archiveName);
         execCommand($cmd, $retcode);
         if ($retcode != 0) {
             header('HTTP/1.x 500 Internal Server Error', true, 500);
             error_log('Unable to call tar command: ' . $cmd);
             print 'Unable to call tar command. See webserver error log for details.';
         }
     }
     if ($retcode != 0) {
 /**
  *
  * Compress theme into archive file
  * @param string $path target archive path
  * @param string $name archive filename
  * @return string arcive path
  */
 public function compress($path, $name = null)
 {
     if (!$name) {
         $name = "webasyst.{$this->app}.theme.{$this->id}.tar.gz";
     }
     $target_file = "{$path}/{$this->app}/{$name}";
     $autoload = waAutoload::getInstance();
     $autoload->add('Archive_Tar', 'wa-installer/lib/vendors/PEAR/Tar.php');
     $autoload->add('PEAR', 'wa-installer/lib/vendors/PEAR/PEAR.php');
     if (file_exists($this->path) && class_exists('Archive_Tar', true)) {
         waFiles::create($target_file);
         $tar_object = new Archive_Tar($target_file, true);
         $tar_object->setIgnoreRegexp('@(\\.(php\\d?|svn|git|fw_|files\\.md5$))@');
         $path = getcwd();
         chdir(dirname($this->path));
         if (!$tar_object->create('./' . basename($this->path))) {
             waFiles::delete($target_file);
         }
         chdir($path);
     }
     return $target_file;
 }
function template_management_pack($template, $version = 0)
{
    global $main_smarty;
    // Method for identifying modules
    define('modulename', 'template_management');
    $main_smarty->assign('modulename', modulename);
    $main_smarty->display(template_management_tpl_path . '/blank.tpl');
    include_once '../' . template_management_path . 'class.tar.php';
    $file = '/templates/' . $template . '_template.tar';
    $tar_object = new Archive_Tar('.' . $file);
    $v_list[0] = './templates/' . $template;
    $tar_object->create($v_list);
    return $main_smarty->get_config_vars('PLIGG_Template_Management_HasBeenPacked') . ' <a href = "' . my_pligg_base . $file . '">' . $file . '</a>';
}
    usage("Could not determine archive type for {$archive_file}");
}
switch (substr($archive_file, $pos + 1)) {
    case 'tgz':
    case 'gz':
        $compression = 'gzup';
    case 'bz2':
        $compression = 'bz2';
    case 'tar':
        $compression = null;
        break;
    default:
        echo "Could not determine archive type for {$archive_file}";
}
$tar = new Archive_Tar($archive_file, $compression);
if (!$tar->create(array())) {
    usage("Could not create tar {$archive_file}");
}
$glob = preg_replace('/(\\*|\\?|\\[)/', '[$1]', $translations_dir . DIRECTORY_SEPARATOR) . '*.pot';
foreach (glob($glob) as $file) {
    if (!$tar->addModify($file, 'translations/' . basename($file, '.pot'), $translations_dir)) {
        usage("Could not add {$base}");
    }
}
echo "Created {$archive_file} with:\n";
$contents = $tar->listContent();
foreach ($contents as $content) {
    echo "\t{$content['filename']}\n";
}
echo "Upload translations by browsing to:\n\t";
echo 'https://translations.edge.launchpad.net/' . $module . '/trunk/+translations-upload' . "\n";
示例#26
0
function plug_download($idplug, $idclient, $_zip = false, $_name = false, $_ext = false)
{
    global $rep, $cfg_cms, $sess;
    $plugin = $rep->plug_data($idplug, $idclient);
    // todo:zlib abfrage + popup
    if (is_array($plugin)) {
        // Event
        $zip = false;
        require_once "Archive/Tar.php";
        $xmlstring = $rep->plug_generate($plugin);
        $name = $_name == '' ? $plugin['root_name'] : trim($_name);
        $zip = $cfg_cms['gzip_enabled'] == true && $_zip == true ? true : false;
        if ($zip === true && ($_ext == 'tar' || $_ext == 'tgz')) {
            $_ext = 'tgz';
        } elseif ($zip === false && ($_ext == 'tar' || $_ext == 'tgz')) {
            $_ext = 'tar';
        } else {
            $_ext = 'cmsplugin';
        }
        $_mtype = $zip === true ? 'application/x-compressed' : 'application/x-tar';
        $file = $cfg_cms['cms_path'] . 'upload/' . 'out/' . $name . '.' . $_ext;
        $download = $cfg_cms['cms_html_path'] . 'upload/' . 'out/' . $name . '.' . $_ext;
        lib_write_file($cfg_cms['cms_path'] . 'plugins/' . $name . '/' . $name . '.cmsplug', $xmlstring);
        if (false == ($tar = new Archive_Tar($file, $zip))) {
            return '1615';
        } elseif ($tar == '-1' && $zip == true) {
            return plug_download($idplug, $idclient, false, $_name, $_ext);
        }
        $old_working_dir = getcwd();
        chdir($cfg_cms['cms_path'] . 'plugins/');
        $tar->create(trim($name));
        chdir($old_working_dir);
        ob_end_clean();
        header('Content-Type: ' . $_mtype);
        header('Content-Transfer-Encoding: binary');
        header('Content-Description: Download Data');
        header('Content-Length: ' . filesize($file));
        header('Content-Disposition: attachment; filename="' . basename($file) . '"');
        header('Expires: 0');
        header('Cache-Control: no-cache, must-revalidate');
        header('Pragma: no-cache');
        //old function: header('Location:' . $download);
        readfile($file);
        fire_event('plug_download', array('idplug' => $idplug, 'name' => $name));
        lib_delete_file($file);
        exit;
    }
}
示例#27
0
文件: Tar.php 项目: Nerutiz/trades
 /**
  * Compresses the given content
  *
  * @param  string $content
  * @return string
  */
 public function compress($content)
 {
     $archive = new Archive_Tar($this->getArchive(), $this->getMode());
     if (!file_exists($content)) {
         $file = $this->getTarget();
         if (is_dir($file)) {
             $file .= DIRECTORY_SEPARATOR . "tar.tmp";
         }
         $result = file_put_contents($file, $content);
         if ($result === false) {
             require_once 'Zend/Filter/Exception.php';
             throw new Zend_Filter_Exception('Error creating the temporary file');
         }
         $content = $file;
     }
     if (is_dir($content)) {
         // collect all file infos
         foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($content, RecursiveDirectoryIterator::KEY_AS_PATHNAME), RecursiveIteratorIterator::SELF_FIRST) as $directory => $info) {
             if ($info->isFile()) {
                 $file[] = $directory;
             }
         }
         $content = $file;
     }
     $result = $archive->create($content);
     if ($result === false) {
         require_once 'Zend/Filter/Exception.php';
         throw new Zend_Filter_Exception('Error creating the Tar archive');
     }
     return $this->getArchive();
 }
示例#28
0
 private function compress()
 {
     if (file_exists($this->archive_path)) {
         $date = date('c', max(filemtime($this->archive_path), filectime($this->archive_path)));
         $this->tracef('Unlink previous version of archive  from %s', $date);
         unlink($this->archive_path);
     }
     $current = getcwd();
     chdir($this->path);
     $files_md5_path = "{$this->path}/.files.md5";
     $this->md5($this->files, $files_md5_path);
     $temp_files = array();
     $temp_files[] = $files_md5_path;
     chdir($this->path . '/../');
     $archive_files = array();
     $archive_files[] = array($this->folder . '/.files.md5', $files_md5_path);
     foreach ($this->files as $file) {
         $archive_files[] = $this->folder . '/' . $file;
     }
     try {
         $time = microtime(true);
         $tar_object = new Archive_Tar($this->archive_path, true);
         if ($result = $tar_object->create($archive_files)) {
             $size = filesize($this->archive_path);
             $this->tracef("\ntime\t%d ms\nsize\t%0.2f KByte\n", (microtime(true) - $time) * 1000, $size / 1024);
         } else {
             $this->trace('Error during compress archive');
         }
     } catch (Exception $ex) {
         $this->trace($ex->getMessage());
         $temp_files[] = $this->archive_path;
     }
     foreach ($temp_files as $file) {
         if (file_exists($file)) {
             unlink($file);
         }
     }
     chdir($current);
 }
示例#29
0
function create_tar_archive($archiveName, $compressMethod, $itemArray)
{
    global $newBackupMethod;
    if ($newBackupMethod) {
        // Create a tar object using the pear library
        //  (this is the preferred method)
        $tar = new Archive_Tar($archiveName, $compressMethod);
        if ($tar->create($itemArray)) {
            return true;
        }
    } else {
        // Create the tar files via command line tools
        //  (this method used when the tar pear library is not available)
        $files = '"' . implode('" "', $itemArray) . '"';
        if ($compressMethod == "gz") {
            $command = "tar --same-owner --ignore-failed-read -zcphf {$archiveName} {$files}";
        } else {
            $command = "tar -cpf {$archiveName} {$files}";
        }
        $temp0 = exec($command, $temp1, $temp2);
        if ($temp2) {
            die("\"{$command}\" returned {$temp2}: {$temp0}");
        }
        return true;
    }
    return false;
}
示例#30
0
function CreateArchive($outfile, $type, $infiles, $timest)
{
    // This is used to create .tar archives
    // It is contained in the PEAR package Archive_Tar
    include_once "Archive/Tar.php";
    // Multiple files cannot be provided in plain format.
    // Therefore they are packed in a tar archive.
    if (is_array($infiles) && $type == "plain") {
        $type = "tar";
    }
    // There may already be an archive for the current user
    // saved in the ./html/log directory. This file is deleted
    // to ensure that there can only be one archive with the same
    // archive name.
    $glob = glob($outfile . "*");
    if (count($glob) > 0) {
        foreach (glob($outfile . "*") as $file) {
            unlink($file);
        }
    }
    $tarname = $outfile;
    // If the user wishes to have the creation time in the archive's file name.
    // it gets added here
    if ($timest == 1) {
        $tarname .= "_" . date("Ymd_Hi");
    }
    if ($type != "plain") {
        $tarname .= ".tar";
        // Now a new Archive_Tar object is created
        // This object is used to create the .tar archive
        $tar = new Archive_Tar($tarname);
        // If $infile is only a string containing one single file name,
        // this string is put into an array. If there are more than one
        // input files, we already have an array and thus don't need to
        // create a new one.
        if (is_array($infiles)) {
            $tar->create($infiles);
            // This creates the .tar archive
        } else {
            $tar->create(array($infiles));
            // This creates the .tar archive
        }
    } else {
        if (stristr($infiles, ".csv") != false) {
            $tarname .= ".csv";
        } elseif (stristr($infiles, ".sql") != false) {
            $tarname .= ".sql";
        }
        copy($infiles, $tarname);
    }
    // Depending on the parameter $type the archive gets compressed
    // If $type is empty or an invalid value, the .tar archive stays
    // unchanged
    switch ($type) {
        case "gz":
            // The previously created .tar archive is opened for reading
            $archive = fopen($tarname, "r");
            // This is the new gzip archive that is going to be created
            $gzip = gzopen("{$tarname}.gz", "w");
            // The size of the .tar archive is counted and the number of
            // 2 MB blocks is counted
            $mb = ceil(filesize($tarname) / (1024 * 1024 * 2));
            // The .tar archive is split into $mb parts and these parts are
            // read and written to the gzip archive one after the other
            for ($i = 0; $i < $mb; $i++) {
                gzwrite($gzip, fread($archive, filesize($tarname) / $mb));
            }
            // Both archives, the .tar archive and the new gzip archive are closed
            gzclose($gzip);
            fclose($archive);
            // The .tar archive must be deleted manually
            unlink($tarname);
            // The name of the gzip file is returned, so the user does not have
            // to think about file extensions when calling this function
            return $tarname . ".gz";
            break;
        case "bz2":
            // The previously created .tar archive is opened for reading
            $archive = fopen($tarname, "r");
            // This is the new bzip2 archive that is going to be created
            $bzip2 = bzopen("{$tarname}.bz2", "w");
            // The size of the .tar archive is counted and the number of
            // 2 MB blocks is counted
            $mb = ceil(filesize($tarname) / (1024 * 1024 * 5));
            // The .tar archive is split into $mb parts and these parts are
            // read and written to the bzip2 archive one after the other
            for ($i = 0; $i < $mb; $i++) {
                bzwrite($bzip2, fread($archive, filesize($tarname) / $mb));
            }
            // Both archives, the .tar archive and the new bzip2 archive are closed
            bzclose($bzip2);
            fclose($archive);
            // The .tar archive must be deleted manually
            unlink($tarname);
            // The name of the bzip2 file is returned, so the user does not have
            // to think about file extensions when calling this function
            return $tarname . ".bz2";
            break;
        case "tar":
        case "plain":
        default:
            // In any other case the .tar file is left unchanged and its file name is returned
            return $tarname;
    }
}