Ejemplo n.º 1
0
 /**
  * 商品規格登録を行う.
  *
  * FIXME: 商品規格登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。
  *
  * @param  Query $objQuery         Queryインスタンス
  * @param  array    $arrList          商品規格情報配列
  * @param  integer  $product_id       商品ID
  * @param  integer  $product_class_id 商品規格ID
  * @return void
  */
 public function lfRegistProductClass($objQuery, $arrList, $product_id, $product_class_id)
 {
     /* @var $objProduct Product */
     $objProduct = Application::alias('eccube.product');
     // FIXME: dtb_csvテーブルの中で古いカラム名(右辺)が設定されている。sfArrayIntersectKeysでフィルタされてしまうので、名称を変更する必要がある
     if (array_key_exists('classcategory_id', $arrList) && $arrList['classcategory_id'] != '') {
         $arrList['classcategory_id1'] = $arrList['classcategory_id'];
     }
     if (array_key_exists('parent_classcategory_id', $arrList) && $arrList['classcategory_id'] != '') {
         $arrList['classcategory_id2'] = $arrList['parent_classcategory_id'];
     }
     // 商品規格登録情報を生成する。
     // 商品規格テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。
     $sqlval = Utils::sfArrayIntersectKeys($arrList, $this->arrProductClassColumn);
     if ($product_class_id == '') {
         // 新規登録
         // 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
         $sqlval = $this->lfSetProductClassDefaultData($sqlval);
         $sqlval['product_id'] = $product_id;
         $sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id');
         $sqlval['create_date'] = $arrList['update_date'];
         // INSERTの実行
         $objQuery->insert('dtb_products_class', $sqlval);
         $product_class_id = $sqlval['product_class_id'];
     } else {
         // UPDATEの実行
         // 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
         $sqlval = $this->lfSetProductClassDefaultData($sqlval, true);
         $where = 'product_class_id = ?';
         $objQuery->update('dtb_products_class', $sqlval, $where, array($product_class_id));
     }
 }
Ejemplo n.º 2
0
 /**
  * 規格データをコピーする
  *
  * @param  array   $arrList  フォーム入力パラメーター配列
  * @param  Query  $objQuery Queryインスタンス
  * @return boolean エラーフラグ
  */
 public function lfCopyProductClass($arrList, &$objQuery)
 {
     // 複製元のdtb_products_classを取得(規格なしのため、1件のみの取得)
     $col = '*';
     $table = 'dtb_products_class';
     $where = 'product_id = ?';
     $arrProductClass = $objQuery->select($col, $table, $where, array($arrList['copy_product_id']));
     //トランザクション開始
     $objQuery->begin();
     $err_flag = false;
     //非編集項目は複製、編集項目は上書きして登録
     foreach ($arrProductClass as $records) {
         foreach ($records as $key => $value) {
             if (isset($arrList[$key])) {
                 switch ($key) {
                     case 'stock_unlimited':
                         $records[$key] = (int) $arrList[$key];
                         break;
                     default:
                         $records[$key] = $arrList[$key];
                         break;
                 }
             }
         }
         $records['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id');
         $records['update_date'] = 'CURRENT_TIMESTAMP';
         $records['create_date'] = 'CURRENT_TIMESTAMP';
         $objQuery->insert($table, $records);
         //エラー発生時は中断
         if ($objQuery->isError()) {
             $err_flag = true;
             continue;
         }
     }
     //トランザクション終了
     if ($err_flag) {
         $objQuery->rollback();
     } else {
         $objQuery->commit();
     }
     return !$err_flag;
 }