/** * CSVファイルを送信する * * @param integer $csv_id * CSVフォーマットID * @param string $where * WHERE条件文 * @param array $arrVal * プリペアドステートメントの実行時に使用される配列。配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。 * @param string $order * ORDER文 * @param boolean $is_download * true:ダウンロード用出力までさせる false:CSVの内容を返す(旧方式、メモリを食います。) * @return boolean|string $is_download = true時 成功失敗フラグ(boolean) 、$is_downalod = false時 string */ public function sfDownloadCsv($csv_id, $where = '', $arrVal = array(), $order = '', $is_download = false) { switch ($csv_id) { case 1: case 2: case 3: case 4: case 5: return parent::sfDownloadCsv($csv_id, $where, $arrVal, $order, $is_download); } $objQuery =& SC_Query_Ex::getSingletonInstance(); // CSV出力タイトル行の作成 $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput($csv_id, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE)); if (count($arrOutput) <= 0) { SC_Utils_Ex::sfDispError(""); return false; // 失敗終了 } $arrOutputCols = $arrOutput['col']; $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true); switch ($csv_id) { case 6: // キャラクター $from = 'cp_dtb_character'; break; case 7: // 端末 $from = 'cp_dtb_device'; break; } $objQuery->setOrder($order); $sql = $objQuery->getSql($cols, $from, $where); return $this->sfDownloadCsvFromSql($sql, $arrVal, $this->arrSubnavi[$csv_id], $arrOutput['disp_name'], $is_download); }
/** * CSVファイルを送信する * * @param integer $csv_id CSVフォーマットID * @param string $where WHERE条件文 * @param array $arrVal プリペアドステートメントの実行時に使用される配列。配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。 * @param string $order ORDER文 * @param boolean $is_download true:ダウンロード用出力までさせる false:CSVの内容を返す(旧方式、メモリを食います。) * @return boolean|string $is_download = true時 成功失敗フラグ(boolean) 、$is_downalod = false時 string */ public function sfDownloadCsv($csv_id, $where = '', $arrVal = array(), $order = '', $is_download = false) { $objQuery =& SC_Query_Ex::getSingletonInstance(); // CSV出力タイトル行の作成 $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput($csv_id, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE)); if (count($arrOutput) <= 0) { return false; } // 失敗終了 $arrOutputCols = $arrOutput['col']; $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true); // 商品の場合 if ($csv_id == 1) { // この WHERE 句を足さないと無効な規格も出力される。現行仕様と合わせる為追加。 $inner_where = 'dtb_products_class.del_flg = 0'; $from = SC_Product_Ex::prdclsSQL($inner_where); // 会員の場合 } elseif ($csv_id == 2) { $from = 'dtb_customer'; // 注文の場合 } elseif ($csv_id == 3) { $from = 'dtb_order'; // レビューの場合 } elseif ($csv_id == 4) { $from = 'dtb_review AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id'; // カテゴリの場合 } elseif ($csv_id == 5) { $from = 'dtb_category'; } $objQuery->setOrder($order); $sql = $objQuery->getSql($cols, $from, $where); return $this->sfDownloadCsvFromSql($sql, $arrVal, $this->arrSubnavi[$csv_id], $arrOutput['disp_name'], $is_download); }
/** * CSVファイルを送信する * * @param integer $csv_id CSVフォーマットID * @param string $where WHERE条件文 * @param array $arrVal プリペアドステートメントの実行時に使用される配列。配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。 * @param string $order ORDER文 * @param boolean $is_download true:ダウンロード用出力までさせる false:CSVの内容を返す(旧方式、メモリを食います。) * @return mixed $is_download = true時 成功失敗フラグ(boolean) 、$is_downalod = false時 string */ function sfDownloadCsv($csv_id, $where = '', $arrVal = array(), $order = '', $is_download = false) { // 実行時間を制限しない @set_time_limit(0); // CSV出力タイトル行の作成 $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput($csv_id, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE)); if (count($arrOutput) <= 0) { return false; } // 失敗終了 $arrOutputCols = $arrOutput['col']; $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->setOrder($order); $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true); // TODO: 固有処理 なんかエレガントな処理にしたい if ($csv_id == '1') { //商品の場合 $objProduct = new SC_Product_Ex(); // このWhereを足さないと無効な規格も出力される。現行仕様と合わせる為追加。 $inner_where = 'dtb_products_class.del_flg = 0'; $sql = $objQuery->getSql($cols, $objProduct->prdclsSQL($inner_where), $where); } else { if ($csv_id == '2') { // 会員の場合 $sql = 'SELECT ' . $cols . ' FROM dtb_customer ' . $where; } else { if ($csv_id == '3') { // 注文の場合 $sql = 'SELECT ' . $cols . ' FROM dtb_order ' . $where; } else { if ($csv_id == '4') { // レビューの場合 $sql = 'SELECT ' . $cols . ' FROM dtb_review AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id ' . $where; } else { if ($csv_id == '5') { // カテゴリの場合 $sql = 'SELECT ' . $cols . ' FROM dtb_category ' . $where; } } } } } // 固有処理ここまで return $this->sfDownloadCsvFromSql($sql, $arrVal, $this->arrSubnavi[$csv_id], $arrOutput['disp_name'], $is_download); }
function lfDownRankChilds($objQuery, $table, $pid_name, $id_name, $id, $count) { $objDb = new SC_Helper_DB_Ex(); // 子ID一覧を取得 $arrRet = $objDb->sfGetChildrenArray($table, $pid_name, $id_name, $id); $line = SC_Utils_Ex::sfGetCommaList($arrRet); $where = "{$id_name} IN ({$line}) AND del_flg = 0"; $arrRawVal = array('rank' => "(rank - {$count})"); return $objQuery->update($table, array(), $where, array(), $arrRawVal); }
function lfDownRankChilds($objQuery, $table, $pid_name, $id_name, $id, $count) { $objDb = new SC_Helper_DB_Ex(); // 子ID一覧を取得 $arrRet = $objDb->sfGetChildrenArray($table, $pid_name, $id_name, $id); $line = SC_Utils_Ex::sfGetCommaList($arrRet); $sql = "UPDATE {$table} SET rank = (rank - {$count}) WHERE {$id_name} IN ({$line}) "; $sql .= 'AND del_flg = 0'; $ret = $objQuery->exec($sql); return $ret; }
/** * Page のプロセス. * * @return void */ function process() { $conn = new SC_DBConn(); $objView = new SC_AdminView(); $objSess = new SC_Session(); $objQuery = new SC_Query(); // 認証可否の判定 SC_Utils_Ex::sfIsSuccess($objSess); // パラメータ管理クラス $this->objFormParam = new SC_FormParam(); // パラメータ情報の初期化 $this->lfInitParam(); // POST値の取得 $this->objFormParam->setParam($_POST); $cnt = $objQuery->count("dtb_baseinfo"); if ($cnt > 0) { $this->tpl_mode = "update"; } else { $this->tpl_mode = "insert"; } if (isset($_POST['mode']) && !empty($_POST['mode'])) { // 入力値の変換 $this->objFormParam->convParam(); $this->arrErr = $this->lfCheckError(); if (count($this->arrErr) == 0) { switch ($_POST['mode']) { case 'update': $this->lfUpdateData(); // 既存編集 break; case 'insert': $this->lfInsertData(); // 新規作成 break; default: break; } // 再表示 //sfReload(); $this->tpl_onload = "window.alert('特定商取引法の登録が完了しました。');"; } } else { $arrCol = $this->objFormParam->getKeyList(); // キー名一覧を取得 $col = SC_Utils_Ex::sfGetCommaList($arrCol); $arrRet = $objQuery->select($col, "dtb_baseinfo"); // DB値の取得 $this->objFormParam->setParam($arrRet[0]); } $this->arrForm = $this->objFormParam->getFormParamList(); $objView->assignobj($this); $objView->display(MAIN_FRAME); }
/** * Page のアクション. * * @return void */ function action() { $objDb = new SC_Helper_DB_Ex(); $objFormParam = new SC_FormParam_Ex(); $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $cnt = $objDb->sfGetBasisCount(); if ($cnt > 0) { $this->tpl_mode = 'update'; } else { $this->tpl_mode = 'insert'; } if (!empty($_POST)) { // 入力値の変換 $objFormParam->convParam(); $this->arrErr = $this->lfCheckError($objFormParam); if (count($this->arrErr) == 0) { switch ($this->getMode()) { case 'update': $this->lfUpdateData($objFormParam->getHashArray()); // 既存編集 break; case 'insert': $this->lfInsertData($objFormParam->getHashArray()); // 新規作成 break; default: break; } // 再表示 $this->tpl_onload = "window.alert('特定商取引法の登録が完了しました。');"; } } else { $arrCol = $objFormParam->getKeyList(); // キー名一覧を取得 $col = SC_Utils_Ex::sfGetCommaList($arrCol); $arrRet = $objDb->sfGetBasisData(true, $col); $objFormParam->setParam($arrRet); } $this->arrForm = $objFormParam->getFormParamList(); }
function lfRegistProduct($arrList) { $objQuery = new SC_Query(); $objDb = new SC_Helper_DB_Ex(); $objQuery->begin(); // 配列の添字を定義 $checkArray = array("name", "status", "product_flag", "main_list_comment", "main_comment", "point_rate", "deliv_fee", "comment1", "comment2", "comment3", "comment4", "comment5", "comment6", "main_list_comment", "sale_limit", "sale_unlimited", "deliv_date_id", "note"); $arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray); // INSERTする値を作成する。 $sqlval['name'] = $arrList['name']; $sqlval['status'] = $arrList['status']; $sqlval['product_flag'] = $arrList['product_flag']; $sqlval['main_list_comment'] = $arrList['main_list_comment']; $sqlval['main_comment'] = $arrList['main_comment']; $sqlval['point_rate'] = $arrList['point_rate']; $sqlval['deliv_fee'] = $arrList['deliv_fee']; $sqlval['comment1'] = $arrList['comment1']; $sqlval['comment2'] = $arrList['comment2']; $sqlval['comment3'] = $arrList['comment3']; $sqlval['comment4'] = $arrList['comment4']; $sqlval['comment5'] = $arrList['comment5']; $sqlval['comment6'] = $arrList['comment6']; $sqlval['main_list_comment'] = $arrList['main_list_comment']; $sqlval['sale_limit'] = $arrList['sale_limit']; $sqlval['sale_unlimited'] = $arrList['sale_unlimited']; $sqlval['deliv_date_id'] = $arrList['deliv_date_id']; $sqlval['note'] = $arrList['note']; $sqlval['update_date'] = "Now()"; $sqlval['creator_id'] = $_SESSION['member_id']; $arrRet = $this->objUpFile->getDBFileList(); $sqlval = array_merge($sqlval, $arrRet); $arrList['category_id'] = unserialize($arrList['category_id']); for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { $sqlval['sub_title' . $cnt] = $arrList['sub_title' . $cnt]; $sqlval['sub_comment' . $cnt] = $arrList['sub_comment' . $cnt]; } if ($arrList['product_id'] == "") { // product_id 取得(PostgreSQLの場合) if (DB_TYPE == 'pgsql') { $product_id = $objQuery->nextval("dtb_products", "product_id"); $sqlval['product_id'] = $product_id; } // INSERTの実行 $sqlval['create_date'] = "Now()"; $objQuery->insert("dtb_products", $sqlval); // product_id 取得(MySQLの場合) if (DB_TYPE == 'mysql') { $product_id = $objQuery->nextval("dtb_products", "product_id"); } // カテゴリを更新 $objDb->updateProductCategories($arrList['category_id'], $product_id); // コピー商品の場合には規格もコピーする if ($_POST["copy_product_id"] != "" and SC_Utils_Ex::sfIsInt($_POST["copy_product_id"])) { if ($this->tpl_nonclass) { //規格なしの場合、コピーは価格等の入力が発生しているため、その内容で追加登録を行う $arrList['product_id'] = $product_id; $this->lfCopyProductClass($arrList, $objQuery); } else { //規格がある場合のコピーは複製元の内容で追加登録を行う // dtb_products_class のカラムを取得 $dbFactory = SC_DB_DBFactory_Ex::getInstance(); $arrColList = $dbFactory->sfGetColumnList("dtb_products_class", $objQuery); $arrColList_tmp = array_flip($arrColList); // コピーしない列 unset($arrColList[$arrColList_tmp["product_class_id"]]); //規格ID unset($arrColList[$arrColList_tmp["product_id"]]); //商品ID unset($arrColList[$arrColList_tmp["create_date"]]); $col = SC_Utils_Ex::sfGetCommaList($arrColList); $objQuery->query("INSERT INTO dtb_products_class (product_id, create_date, " . $col . ") SELECT ?, now(), " . $col . " FROM dtb_products_class WHERE product_id = ? ORDER BY product_class_id", array($product_id, $_POST["copy_product_id"])); } } } else { $product_id = $arrList['product_id']; // 削除要求のあった既存ファイルの削除 $arrRet = $this->lfGetProduct($arrList['product_id']); $this->objUpFile->deleteDBFile($arrRet); // UPDATEの実行 $where = "product_id = ?"; $objQuery->update("dtb_products", $sqlval, $where, array($product_id)); // カテゴリを更新 $objDb->updateProductCategories($arrList['category_id'], $product_id); } //商品登録の時は規格を生成する。複製の場合は規格も複製されるのでこの処理は不要。 if ($_POST["copy_product_id"] == "") { // 規格登録 SC_Utils_Ex::sfInsertProductClass($objQuery, $arrList, $product_id, $arrList['product_class_id']); } // おすすめ商品登録 $this->lfInsertRecommendProducts($objQuery, $arrList, $product_id); $objQuery->commit(); return $product_id; }
/** * Page のアクション. * * @return void */ function action() { $objDb = new SC_Helper_DB_Ex(); $cnt = $objDb->sfGetBasisCount(); if ($cnt > 0) { $this->tpl_mode = 'update'; } else { $this->tpl_mode = 'insert'; } if (!empty($_POST)) { $objFormParam = new SC_FormParam_Ex(); $this->lfInitParam($objFormParam, $_POST); $objFormParam->setParam($_POST); $objFormParam->convParam(); $this->arrErr = $this->lfErrorCheck($objFormParam); $post = $objFormParam->getHashArray(); $this->arrForm = $post; if (count($this->arrErr) == 0) { switch ($this->getMode()) { // 既存編集 case 'update': $this->lfUpdateData($this->arrForm); break; // 新規作成 // 新規作成 case 'insert': $this->lfInsertData($this->arrForm); break; default: break; } $this->tpl_onload = "fnCheckLimit('downloadable_days', 'downloadable_days_unlimited', '" . DISABLED_RGB . "'); window.alert('SHOPマスターの登録が完了しました。');"; } if (empty($this->arrForm['regular_holiday_ids'])) { $this->arrSel = array(); } else { $this->arrSel = $this->arrForm['regular_holiday_ids']; } } else { $arrCol = $this->lfGetCol(); $col = SC_Utils_Ex::sfGetCommaList($arrCol); $arrRet = $objDb->sfGetBasisData(true, $col); $this->arrForm = $arrRet; $regular_holiday_ids = explode('|', $this->arrForm['regular_holiday_ids']); $this->arrForm['regular_holiday_ids'] = $regular_holiday_ids; $this->tpl_onload = "fnCheckLimit('downloadable_days', 'downloadable_days_unlimited', '" . DISABLED_RGB . "');"; } }
/** * DBに商品データを登録する * * @param object $objUpFile SC_UploadFileインスタンス * @param object $objDownFile SC_UploadFileインスタンス * @param array $arrList フォーム入力パラメーター配列 * @return integer 登録商品ID */ function lfRegistProduct(&$objUpFile, &$objDownFile, $arrList) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objDb = new SC_Helper_DB_Ex(); // 配列の添字を定義 $checkArray = array('name', 'status', 'main_list_comment', 'main_comment', 'deliv_fee', 'comment1', 'comment2', 'comment3', 'comment4', 'comment5', 'comment6', 'sale_limit', 'deliv_date_id', 'maker_id', 'note'); $arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray); // INSERTする値を作成する。 $sqlval['name'] = $arrList['name']; $sqlval['status'] = $arrList['status']; $sqlval['main_list_comment'] = $arrList['main_list_comment']; $sqlval['main_comment'] = $arrList['main_comment']; $sqlval['comment1'] = $arrList['comment1']; $sqlval['comment2'] = $arrList['comment2']; $sqlval['comment3'] = $arrList['comment3']; $sqlval['comment4'] = $arrList['comment4']; $sqlval['comment5'] = $arrList['comment5']; $sqlval['comment6'] = $arrList['comment6']; $sqlval['deliv_date_id'] = $arrList['deliv_date_id']; $sqlval['maker_id'] = $arrList['maker_id']; $sqlval['note'] = $arrList['note']; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $sqlval['creator_id'] = $_SESSION['member_id']; $arrRet = $objUpFile->getDBFileList(); $sqlval = array_merge($sqlval, $arrRet); for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { $sqlval['sub_title' . $cnt] = $arrList['sub_title' . $cnt]; $sqlval['sub_comment' . $cnt] = $arrList['sub_comment' . $cnt]; } $objQuery->begin(); // 新規登録(複製時を含む) if ($arrList['product_id'] == '') { $product_id = $objQuery->nextVal('dtb_products_product_id'); $sqlval['product_id'] = $product_id; // INSERTの実行 $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; $objQuery->insert('dtb_products', $sqlval); $arrList['product_id'] = $product_id; // カテゴリを更新 $objDb->updateProductCategories($arrList['category_id'], $product_id); // 複製商品の場合には規格も複製する if ($arrList['copy_product_id'] != '' && SC_Utils_Ex::sfIsInt($arrList['copy_product_id'])) { if (!$arrList['has_product_class']) { //規格なしの場合、複製は価格等の入力が発生しているため、その内容で追加登録を行う $this->lfCopyProductClass($arrList, $objQuery); } else { //規格がある場合の複製は複製元の内容で追加登録を行う // dtb_products_class のカラムを取得 $dbFactory = SC_DB_DBFactory_Ex::getInstance(); $arrColList = $objQuery->listTableFields('dtb_products_class'); $arrColList_tmp = array_flip($arrColList); // 複製しない列 unset($arrColList[$arrColList_tmp['product_class_id']]); //規格ID unset($arrColList[$arrColList_tmp['product_id']]); //商品ID unset($arrColList[$arrColList_tmp['create_date']]); // 複製元商品の規格データ取得 $col = SC_Utils_Ex::sfGetCommaList($arrColList); $table = 'dtb_products_class'; $where = 'product_id = ?'; $objQuery->setOrder('product_class_id'); $arrProductsClass = $objQuery->select($col, $table, $where, array($arrList['copy_product_id'])); // 規格データ登録 $objQuery =& SC_Query_Ex::getSingletonInstance(); foreach ($arrProductsClass as $arrData) { $sqlval = $arrData; $sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id'); $sqlval['deliv_fee'] = $arrList['deliv_fee']; $sqlval['point_rate'] = $arrList['point_rate']; $sqlval['sale_limit'] = $arrList['sale_limit']; $sqlval['product_id'] = $product_id; $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery->insert($table, $sqlval); } } } // 更新 } else { $product_id = $arrList['product_id']; // 削除要求のあった既存ファイルの削除 $arrRet = $this->lfGetProductData_FromDB($arrList['product_id']); // TODO: SC_UploadFile::deleteDBFileの画像削除条件見直し要 $objImage = new SC_Image_Ex($objUpFile->temp_dir); $arrKeyName = $objUpFile->keyname; $arrSaveFile = $objUpFile->save_file; $arrImageKey = array(); foreach ($arrKeyName as $key => $keyname) { if ($arrRet[$keyname] && !$arrSaveFile[$key]) { $arrImageKey[] = $keyname; $has_same_image = $this->lfHasSameProductImage($arrList['product_id'], $arrImageKey, $arrRet[$keyname]); if (!$has_same_image) { $objImage->deleteImage($arrRet[$keyname], $objUpFile->save_dir); } } } $objDownFile->deleteDBDownFile($arrRet); // UPDATEの実行 $where = 'product_id = ?'; $objQuery->update('dtb_products', $sqlval, $where, array($product_id)); // カテゴリを更新 $objDb->updateProductCategories($arrList['category_id'], $product_id); } // 商品登録の時は規格を生成する。複製の場合は規格も複製されるのでこの処理は不要。 if ($arrList['copy_product_id'] == '') { // 規格登録 if ($objDb->sfHasProductClass($product_id)) { // 規格あり商品(商品規格テーブルのうち、商品登録フォームで設定するパラメーターのみ更新) $this->lfUpdateProductClass($arrList); } else { // 規格なし商品(商品規格テーブルの更新) $this->lfInsertDummyProductClass($arrList); } } // 商品ステータス設定 $objProduct = new SC_Product_Ex(); $objProduct->setProductStatus($product_id, $arrList['product_status']); // 関連商品登録 $this->lfInsertRecommendProducts($objQuery, $arrList, $product_id); $objQuery->commit(); return $product_id; }
/** * カテゴリ数の登録を行う. * * @param SC_Query $objQuery SC_Query インスタンス * @return void */ function sfCategory_Count($objQuery) { $sql = ""; //テーブル内容の削除 $objQuery->query("DELETE FROM dtb_category_count"); $objQuery->query("DELETE FROM dtb_category_total_count"); //各カテゴリ内の商品数を数えて格納 $sql = " INSERT INTO dtb_category_count(category_id, product_count, create_date) "; $sql .= " SELECT T1.category_id, count(T2.category_id), now() "; $sql .= " FROM dtb_category AS T1 LEFT JOIN dtb_product_categories AS T2"; $sql .= " ON T1.category_id = T2.category_id "; $sql .= " LEFT JOIN dtb_products AS T3"; $sql .= " ON T2.product_id = T3.product_id"; $sql .= " WHERE T3.del_flg = 0 AND T3.status = 1 "; $sql .= " GROUP BY T1.category_id, T2.category_id "; $objQuery->query($sql); //子カテゴリ内の商品数を集計する $arrCat = $objQuery->getAll("SELECT * FROM dtb_category"); $sql = ""; foreach ($arrCat as $key => $val) { // 子ID一覧を取得 $arrRet = $this->sfGetChildrenArray('dtb_category', 'parent_category_id', 'category_id', $val['category_id']); $line = SC_Utils_Ex::sfGetCommaList($arrRet); $sql = " INSERT INTO dtb_category_total_count(category_id, product_count, create_date) "; $sql .= " SELECT ?, SUM(product_count), now() FROM dtb_category_count "; $sql .= " WHERE category_id IN (" . $line . ")"; $objQuery->query($sql, array($val['category_id'])); } }
/** * Page のプロセス. * * @return void */ function process() { $conn = new SC_DBConn(); $objView = new SC_AdminView(); $objSess = new SC_Session(); $objQuery = new SC_Query(); // 認証可否の判定 SC_Utils_Ex::sfIsSuccess($objSess); $cnt = $objQuery->count("dtb_baseinfo"); if ($cnt > 0) { $this->tpl_mode = "update"; } else { $this->tpl_mode = "insert"; } if (isset($_POST['mode']) && !empty($_POST["mode"])) { // POSTデータの引き継ぎ $this->arrForm = $_POST; // 入力データの変換 $this->arrForm = $this->lfConvertParam($this->arrForm); $this->arrForm['regular_holiday_ids'] = $_POST['regular_holiday_ids']; // 定休日情報を付加 // 入力データのエラーチェック $this->arrErr = $this->lfErrorCheck($this->arrForm); if (count($this->arrErr) == 0) { switch ($_POST['mode']) { case 'update': $this->lfUpdateData($this->arrForm); // 既存編集 break; case 'insert': $this->lfInsertData($this->arrForm); // 新規作成 break; default: break; } $this->tpl_onload = "window.alert('SHOPマスタの登録が完了しました。');"; } if (empty($this->arrForm['regular_holiday_ids'])) { $this->arrSel = array(); } else { $this->arrSel = $this->arrForm['regular_holiday_ids']; } } else { $arrCol = $this->lfGetCol(); $col = SC_Utils_Ex::sfGetCommaList($arrCol); $arrRet = $objQuery->select($col, "dtb_baseinfo"); $this->arrForm = $arrRet[0]; $regular_holiday_ids = explode('|', $this->arrForm['regular_holiday_ids']); $this->arrForm['regular_holiday_ids'] = $regular_holiday_ids; } $objView->assignobj($this); $objView->display(MAIN_FRAME); }
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(); }
/** * Page のアクション. * * @return void */ function action() { $objDb = new SC_Helper_DB_Ex(); // パラメーター管理クラス $objFormParam = new SC_FormParam_Ex(); // パラメーター情報の初期化 $this->lfInitParam($objFormParam); // POST値の取得 $objFormParam->setParam($_POST); if ($objDb->sfGetBasisExists()) { $this->tpl_mode = 'update'; } else { $this->tpl_mode = 'insert'; } if (!empty($_POST)) { // 入力値の変換 $objFormParam->convParam(); $this->arrErr = $objFormParam->checkError(); if (count($this->arrErr) == 0) { switch ($this->getMode()) { case 'update': $this->lfUpdateData($objFormParam->getHashArray()); // 既存編集 break; case 'insert': $this->lfInsertData($objFormParam->getHashArray()); // 新規作成 break; default: break; } // 再表示 $this->tpl_onload = "window.alert('" . t('c_Point settings are complete._01') . "');"; } } else { $arrCol = $objFormParam->getKeyList(); // キー名一覧を取得 $col = SC_Utils_Ex::sfGetCommaList($arrCol); $arrRet = $objDb->sfGetBasisData(true, $col); $objFormParam->setParam($arrRet); } $this->arrForm = $objFormParam->getFormParamList(); }
function lfGetCSV($from, $where, $option, $arrval, $arrCsvOutputCols = "") { $cols = SC_Utils_Ex::sfGetCommaList($arrCsvOutputCols); $objQuery = new SC_Query(); $objQuery->setoption($option); $list_data = $objQuery->select($cols, $from, $where, $arrval); $max = count($list_data); if (!isset($data)) { $data = ""; } for ($i = 0; $i < $max; $i++) { // 各項目をCSV出力用に変換する。 $data .= $this->lfMakeCSV($list_data[$i]); } return $data; }