Ejemplo n.º 1
0
 /**
  * DBに関連商品データを登録する
  *
  * @param  Query  $objQuery   Queryインスタンス
  * @param  string  $arrList    フォーム入力パラメーター配列
  * @param  integer $product_id 登録する商品ID
  * @return void
  */
 public function lfInsertRecommendProducts(&$objQuery, $arrList, $product_id)
 {
     // 一旦関連商品を全て削除する
     $objQuery->delete('dtb_recommend_products', 'product_id = ?', array($product_id));
     $sqlval['product_id'] = $product_id;
     $rank = RECOMMEND_PRODUCT_MAX;
     for ($i = 1; $i <= RECOMMEND_PRODUCT_MAX; $i++) {
         $keyname = 'recommend_id' . $i;
         $commentkey = 'recommend_comment' . $i;
         $deletekey = 'recommend_delete' . $i;
         if (!isset($arrList[$deletekey])) {
             $arrList[$deletekey] = null;
         }
         if ($arrList[$keyname] != '' && $arrList[$deletekey] != '1') {
             $sqlval['recommend_product_id'] = $arrList[$keyname];
             $sqlval['comment'] = $arrList[$commentkey];
             $sqlval['rank'] = $rank;
             $sqlval['creator_id'] = $_SESSION['member_id'];
             $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
             $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
             $objQuery->insert('dtb_recommend_products', $sqlval);
             $rank--;
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * 関連商品登録を行う.
  *
  * FIXME: 商品規格登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。
  *        DELETE/INSERT ではなく UPDATEへの変更も・・・
  *
  * @param  Query $objQuery   Queryインスタンス
  * @param  array    $arrList    商品規格情報配列
  * @param  integer  $product_id 商品ID
  * @return void
  */
 public function lfRegistReccomendProducts($objQuery, $arrList, $product_id)
 {
     $objQuery->delete('dtb_recommend_products', 'product_id = ?', array($product_id));
     for ($i = 1; $i <= RECOMMEND_PRODUCT_MAX; $i++) {
         $keyname = 'recommend_product_id' . $i;
         $comment_key = 'recommend_comment' . $i;
         if ($arrList[$keyname] != '') {
             $arrProduct = $objQuery->select('product_id', 'dtb_products', 'product_id = ?', array($arrList[$keyname]));
             if ($arrProduct[0]['product_id'] != '') {
                 $arrWhereVal = array();
                 $arrWhereVal['product_id'] = $product_id;
                 $arrWhereVal['recommend_product_id'] = $arrProduct[0]['product_id'];
                 $arrWhereVal['comment'] = $arrList[$comment_key];
                 $arrWhereVal['update_date'] = $arrList['update_date'];
                 $arrWhereVal['create_date'] = $arrList['update_date'];
                 $arrWhereVal['creator_id'] = $_SESSION['member_id'];
                 $arrWhereVal['rank'] = RECOMMEND_PRODUCT_MAX - $i + 1;
                 $objQuery->insert('dtb_recommend_products', $arrWhereVal);
             }
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * CSVファイルからインサート実行.
  *
  * @param  Query $objQuery
  * @param  string $dir
  * @param  string $mode
  * @return boolean
  */
 public function lfExeInsertSQL(&$objQuery, $dir, $mode)
 {
     $tbl_flg = false;
     $col_flg = false;
     $ret = true;
     $pagelayout_flg = false;
     $arrVal = array();
     $arrCol = array();
     $arrAllTableList = $objQuery->listTables();
     $objDir = dir($dir);
     while (false !== ($file_name = $objDir->read())) {
         if (!preg_match('/^((dtb|mtb|plg)_(\\w+))\\.csv$/', $file_name, $matches)) {
             continue;
         }
         $file_path = $dir . $file_name;
         $table = $matches[1];
         // テーブル存在チェック
         if (!in_array($table, $arrAllTableList)) {
             if ($mode === 'restore_config') {
                 continue;
             }
             return false;
         }
         // csvファイルからデータの取得
         $fp = fopen($file_path, 'r');
         if ($fp === false) {
             trigger_error($file_name . ' のファイルオープンに失敗しました。', E_USER_ERROR);
         }
         GcUtils::gfPrintLog('リストア実行: ' . $table);
         $objQuery->delete($table);
         $line = 0;
         $arrColName = array();
         while (!feof($fp)) {
             $line++;
             $arrCsvLine = fgetcsv($fp, 1024 * 1024);
             // 1行目: 列名
             if ($line === 1) {
                 $arrColName = $arrCsvLine;
                 continue;
             }
             // 空行を無視
             // false との比較は PHP 5.2.x Windows バグ対応
             // 参考: http://www.php.net/manual/ja/function.fgetcsv.php#98502
             if ($arrCsvLine === array(null) || $arrCsvLine === false) {
                 continue;
             }
             $arrVal = array_combine($arrColName, $arrCsvLine);
             $objQuery->insert($table, $arrVal);
             Utils::extendTimeOut();
         }
         fclose($fp);
     }
     return $ret;
 }