/** * 関連商品登録を行う. * * 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); } } } }
/** * Query インスタンスに設定された検索条件を使用して商品規格を取得する. * * @param Query $objQuery Queryインスタンス * @param array $params 検索パラメーターの配列 * @return array 商品規格の配列 */ public function getProductsClassByQuery(Query &$objQuery, $params) { // 末端の規格を取得 $col = <<<__EOS__ T1.product_id, T1.stock, T1.stock_unlimited, T1.sale_limit, T1.price01, T1.price02, T1.point_rate, T1.product_code, T1.product_class_id, T1.del_flg, T1.product_type_id, T1.down_filename, T1.down_realfilename, T3.name AS classcategory_name1, T3.rank AS rank1, T4.name AS class_name1, T4.class_id AS class_id1, T1.classcategory_id1, T1.classcategory_id2, dtb_classcategory2.name AS classcategory_name2, dtb_classcategory2.rank AS rank2, dtb_class2.name AS class_name2, dtb_class2.class_id AS class_id2 __EOS__; $table = <<<__EOS__ dtb_products_class T1 LEFT JOIN dtb_classcategory T3 ON T1.classcategory_id1 = T3.classcategory_id LEFT JOIN dtb_class T4 ON T3.class_id = T4.class_id LEFT JOIN dtb_classcategory dtb_classcategory2 ON T1.classcategory_id2 = dtb_classcategory2.classcategory_id LEFT JOIN dtb_class dtb_class2 ON dtb_classcategory2.class_id = dtb_class2.class_id __EOS__; $objQuery->andWhere(' T3.classcategory_id is not null AND dtb_classcategory2.classcategory_id is not null '); $objQuery->setOrder('T3.rank DESC, dtb_classcategory2.rank DESC'); // XXX $arrRet = $objQuery->select($col, $table, '', $params); return $arrRet; }
/** * 規格データをコピーする * * @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; }
/** * 親IDの配列を元に特定のカラムを取得する. * * @param Query $objQuery Query インスタンス * @param string $table テーブル名 * @param string $id_name ID名 * @param string $col_name カラム名 * @param array $arrId IDの配列 * @return array 特定のカラムの配列 */ public function getParentsCol(Query $objQuery, $table, $id_name, $col_name, $arrId) { $col = $col_name; $len = count($arrId); $where = ''; for ($cnt = 0; $cnt < $len; $cnt++) { if ($where == '') { $where = "{$id_name} = ?"; } else { $where .= " OR {$id_name} = ?"; } } $objQuery->setOrder('level'); $arrRet = $objQuery->select($col, $table, $where, $arrId); return $arrRet; }