/**
  * 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);
 }
Exemple #2
0
 /**
  * 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);
 }
Exemple #3
0
 /**
  * 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();
 }
Exemple #15
0
 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;
 }