/**
  * テンプレートパッケージの削除.
  *
  * @param string $template_code テンプレートコード
  * @param integer $device_type_id 端末種別ID
  * @return boolean 成功した場合 true; 失敗した場合 false
  */
 function doDelete($template_code, $device_type_id)
 {
     if ($template_code == $this->getTemplateName($device_type_id) || $template_code == $this->getTemplateName($device_type_id, true)) {
         $this->arrErr['err'] = "※ デフォルトテンプレートと、選択中のテンプレートは削除出来ません<br />";
         return false;
     } else {
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $objQuery->begin();
         $objQuery->delete('dtb_templates', 'template_code = ? AND device_type_id = ?', array($template_code, $device_type_id));
         $error = "※ テンプレートの削除ができませんでした<br />";
         // テンプレート削除
         $templates_dir = SMARTY_TEMPLATES_REALDIR . $template_code . "/";
         if (SC_Utils_Ex::sfDelFile($templates_dir) === false) {
             $this->arrErr['err'] = $error;
             $objQuery->rollback();
             return false;
         }
         // ユーザーデータ削除
         $user_dir = USER_TEMPLATE_REALDIR . $template_code . "/";
         if (SC_Utils_Ex::sfDelFile($user_dir) === false) {
             $this->arrErr['err'] = $error;
             $objQuery->rollback();
             return false;
         }
         // コンパイル削除
         $templates_c_dir = DATA_REALDIR . "Smarty/templates_c/" . $template_code . "/";
         if (SC_Utils_Ex::sfDelFile($templates_c_dir) === false) {
             $this->arrErr['err'] = $error;
             $objQuery->rollback();
             return false;
         }
         $objQuery->commit();
         return true;
     }
 }
Exemple #2
0
 function sfDelFile($dir)
 {
     if (file_exists($dir)) {
         $dh = opendir($dir);
         // フォルダ内のファイルを削除
         while ($file = readdir($dh)) {
             if ($file == "." or $file == "..") {
                 continue;
             }
             $del_file = $dir . "/" . $file;
             if (is_file($del_file)) {
                 $ret = unlink($dir . "/" . $file);
             } else {
                 if (is_dir($del_file)) {
                     $ret = SC_Utils_Ex::sfDelFile($del_file);
                 }
             }
             if (!$ret) {
                 return $ret;
             }
         }
         // 閉じる
         closedir($dh);
         // フォルダを削除
         return rmdir($dir);
     }
 }
 /**
  * テンプレートパッケージの削除
  */
 function lfDeleteTemplate($template_code)
 {
     // DB更新
     $objQuery = new SC_Query();
     $objQuery->delete('dtb_templates', 'template_code = ?', array($template_code));
     // テンプレート削除
     $templates_dir = SMARTY_TEMPLATES_DIR . $template_code . "/";
     SC_Utils_Ex::sfDelFile($templates_dir);
     // コンパイル削除
     $templates_c_dir = DATA_PATH . "Smarty/templates_c/" . $template_code . "/";
     SC_Utils_Ex::sfDelFile($templates_c_dir);
     // ユーザーデータ削除
     $user_dir = USER_TEMPLATE_PATH . $template_code . "/";
     SC_Utils_Ex::sfDelFile($user_dir);
 }
 /**
  * バックアップファイル作成.
  *
  * 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();
 }
 /**
  * tarアーカイブを解凍する.
  *
  * @param string $path アーカイブパス
  * @return boolean Archive_Tar::extractModify()のエラー
  */
 function unpackFile($path)
 {
     // 圧縮フラグTRUEはgzip解凍をおこなう
     $tar = new Archive_Tar($path, true);
     $dir = dirname($path);
     $file_name = basename($path);
     // 拡張子を切り取る
     $unpacking_name = preg_replace("/(\\.tar|\\.tar\\.gz)\$/", "", $file_name);
     // 指定されたフォルダ内に解凍する
     $result = $tar->extractModify($dir . "/", $unpacking_name);
     GC_Utils_Ex::gfPrintLog("解凍:" . $dir . "/" . $file_name . "->" . $dir . "/" . $unpacking_name);
     // フォルダ削除
     SC_Utils_Ex::sfDelFile($dir . "/" . $unpacking_name);
     // 圧縮ファイル削除
     unlink($path);
     return $result;
 }
 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();
 }