/** * 商品規格登録を行う. * * 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)); } }
/** * 規格データをコピーする * * @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; }