/**
  * 現在選択しているテンプレートパッケージをupload/temp_template/以下にコピーする
  *
  * @param string $to 保存先パス
  * @return void
  */
 function lfCopyTplPackage($to)
 {
     $nowTpl = $this->lfGetNowTemplate();
     if (!$nowTpl) {
         return;
     }
     $from = TPL_PKG_PATH . $nowTpl . '/';
     SC_Utils::sfCopyDir($from, $to, '');
 }
 public function testSfCopyDir_上書きフラグがONかつ書き込み権限がない場合_同名ファイルが上書きされない()
 {
     mkdir(self::$TMP_DIR . "/src", 0777, true);
     mkdir(self::$TMP_DIR . "/dst", 0777, true);
     // コピー先も作成しておく
     $fp = fopen(self::$TMP_DIR . "/src/test.txt", "w");
     fwrite($fp, "hello");
     fclose($fp);
     // 上書きされないファイル
     $test_file = self::$TMP_DIR . "/dst/test.txt";
     $fp = fopen($test_file, "w");
     fwrite($fp, "good morning");
     fclose($fp);
     chmod($test_file, 0444);
     // いったん読取専用にする
     $src = self::$TMP_DIR . "/src/";
     $dst = self::$TMP_DIR . "/dst/";
     $this->expected = array('dir_exists' => TRUE, 'files' => array('test.txt'), 'file_content' => 'good morning');
     SC_Utils::sfCopyDir($src, $dst, '', TRUE);
     $this->actual['dir_exists'] = is_dir($dst);
     $this->actual['files'] = Test_Utils::mapCols(SC_Helper_FileManager::sfGetFileList($dst), 'file_name');
     $fp = fopen($test_file, "r");
     $this->actual['file_content'] = fread($fp, 100);
     chmod($test_file, 0777);
     // verifyする前にパーミッションを戻す
     $this->verify();
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     // 認証可否の判定
     $objSession = new SC_Session();
     SC_Utils::sfIsSuccess($objSession);
     // uniqidをテンプレートへ埋め込み
     $this->uniqid = $objSession->getUniqId();
     $objView = new SC_AdminView();
     switch ($this->lfGetMode()) {
         // 登録ボタン押下時
         case 'register':
             // 画面遷移の正当性チェック
             if (!SC_Utils::sfIsValidTransition($objSession)) {
                 sfDispError('');
             }
             // パラメータ検証
             $objForm = $this->lfInitRegister();
             if ($objForm->checkError()) {
                 SC_Utils_Ex::sfDispError('');
             }
             $template_code = $objForm->getValue('template_code');
             $this->tpl_select = $template_code;
             if ($template_code == "") {
                 $template_code = "default";
             }
             // DBへ使用するテンプレートを登録
             $this->lfRegisterTemplate($template_code);
             // XXX コンパイルファイルのクリア処理を行う
             $objView->_smarty->clear_compiled_tpl();
             // common.cssの内容を更新
             $this->lfChangeCommonCss($template_code);
             // テンプレートのコピー
             $this->lfCopyTemplate($template_code);
             // ブロック位置を更新
             $this->lfChangeBloc($template_code);
             // 完了メッセージ
             $this->tpl_onload = "alert('登録が完了しました。');";
             break;
             // 削除ボタン押下時
         // 削除ボタン押下時
         case 'delete':
             // 画面遷移の正当性チェック
             if (!SC_Utils::sfIsValidTransition($objSession)) {
                 SC_Utils::sfDispError('');
             }
             // パラメータ検証
             $objForm = $this->lfInitDelete();
             if ($objForm->checkError()) {
                 SC_Utils::sfDispError('');
             }
             //現在使用中のテンプレートとデフォルトのテンプレートは削除できないようにする
             $template_code = $objForm->getValue('template_code_temp');
             if ($template_code == TEMPLATE_NAME || $template_code == DEFAULT_TEMPLATE_NAME) {
                 $this->tpl_onload = "alert('選択中のテンプレートは削除出来ません');";
                 break;
             }
             $this->lfDeleteTemplate($template_code);
             break;
             // downloadボタン押下時
         // downloadボタン押下時
         case 'download':
             // 画面遷移の正当性チェック
             if (!SC_Utils::sfIsValidTransition($objSession)) {
                 SC_Utils::sfDispError('');
             }
             // パラメータ検証
             $objForm = $this->lfInitDownload();
             $template_code = $objForm->getValue('template_code_temp');
             // ユーザデータの下のファイルも保存する。
             $from_dir = USER_TEMPLATE_PATH . $template_code . "/";
             $to_dir = SMARTY_TEMPLATES_DIR . $template_code . "/_packages/";
             SC_Utils::sfMakeDir($to_dir);
             SC_Utils::sfCopyDir($from_dir, $to_dir);
             SC_Helper_FileManager::downloadArchiveFiles(SMARTY_TEMPLATES_DIR . $template_code);
             break;
             // プレビューボタン押下時
         // プレビューボタン押下時
         case 'preview':
             break;
         default:
             break;
     }
     // defaultパラメータのセット
     $this->templates = $this->lfGetAllTemplates();
     $this->now_template = TEMPLATE_NAME;
     // 画面の表示
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
示例#4
0
 function sfCopyDir($src, $des, $mess = "", $override = false)
 {
     if (!is_dir($src)) {
         return false;
     }
     $oldmask = umask(0);
     $mod = stat($src);
     // ディレクトリがなければ作成する
     if (!file_exists($des)) {
         if (!mkdir($des, $mod[2])) {
             print "path:" . $des;
         }
     }
     $fileArray = glob($src . "*");
     foreach ($fileArray as $key => $data_) {
         // CVS管理ファイルはコピーしない
         if (ereg("/CVS/Entries", $data_)) {
             break;
         }
         if (ereg("/CVS/Repository", $data_)) {
             break;
         }
         if (ereg("/CVS/Root", $data_)) {
             break;
         }
         mb_ereg("^(.*[\\/])(.*)", $data_, $matches);
         $data = $matches[2];
         if (is_dir($data_)) {
             $mess = SC_Utils::sfCopyDir($data_ . '/', $des . $data . '/', $mess);
         } else {
             if (!$override && file_exists($des . $data)) {
                 $mess .= $des . $data . ":ファイルが存在します\n";
             } else {
                 if (@copy($data_, $des . $data)) {
                     $mess .= $des . $data . ":コピー成功\n";
                 } else {
                     $mess .= $des . $data . ":コピー失敗\n";
                 }
             }
             $mod = stat($data_);
         }
     }
     umask($oldmask);
     return $mess;
 }