当前位置: 首页>>代码示例>>PHP>>正文


PHP SC_Product_Ex类代码示例

本文整理汇总了PHP中SC_Product_Ex的典型用法代码示例。如果您正苦于以下问题:PHP SC_Product_Ex类的具体用法?PHP SC_Product_Ex怎么用?PHP SC_Product_Ex使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了SC_Product_Ex类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: doAction

 public function doAction($arrParam)
 {
     $arrRequest = $this->doInitParam($arrParam);
     if (!$this->isParamError()) {
         $objProduct = new SC_Product_Ex();
         switch ($arrRequest['IdType']) {
             case 'product_code':
                 $search_column = 'product_code';
                 break;
             case 'product_class_id':
                 $arrProduct = $objProduct->getDetailAndProductsClass($arrRequest['ItemId']);
                 break;
             case 'product_id':
             default:
                 $arrProduct = $objProduct->getDetail($arrRequest['ItemId']);
                 break;
         }
         $objProduct->setProductsClassByProductIds(array($arrProduct['product_id']));
         if ($arrProduct['del_flg'] == '0' && $arrProduct['status'] == '1') {
             unset($arrProduct['note']);
             $this->setResponse('product_id', $arrProduct['product_id']);
             $this->setResponse('DetailPageURL', HTTP_URL . 'products/detail.php?product_id=' . $arrProduct['product_id']);
             $this->setResponse('Title', $arrProduct['name']);
             $this->setResponse('ItemAttributes', $arrProduct);
             return true;
         } else {
             $this->addError('ItemLookup.Error', t('c_* The requested information was not found._01'));
         }
     }
     return false;
 }
开发者ID:Rise-Up-Cambodia,项目名称:Rise-Up,代码行数:31,代码来源:ItemLookup.php

示例2: doAction

 public function doAction($arrParam)
 {
     $arrRequest = $this->doInitParam($arrParam);
     if (!$this->isParamError()) {
         $masterData = new SC_DB_MasterData_Ex();
         $arrSTATUS = $masterData->getMasterData('mtb_status');
         $arrSTATUS_IMAGE = $masterData->getMasterData('mtb_status_image');
         $objProduct = new SC_Product_Ex();
         $arrSearchData = array('category_id' => $arrRequest['BrowseNode'], 'maker_name' => $arrRequest['Manufacturer'], 'name' => $arrRequest['Keywords'], 'orderby' => $arrRequest['Sort']);
         $arrSearchCondition = $this->getSearchCondition($arrSearchData);
         $disp_number = 10;
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $objQuery->setWhere($arrSearchCondition['where_for_count']);
         $objProduct = new SC_Product_Ex();
         $linemax = $objProduct->findProductCount($objQuery, $arrSearchCondition['arrval']);
         $objNavi = new SC_PageNavi_Ex($arrRequest['ItemPage'], $tpl_linemax, $disp_number);
         $arrProducts = $this->getProductsList($arrSearchCondition, $disp_number, $objNavi->start_row, $linemax, $objProduct);
         if (!SC_Utils_Ex::isBlank($arrProducts)) {
             $arrProducts = $this->setStatusDataTo($arrProducts, $arrSTATUS, $arrSTATUS_IMAGE);
             $arrProducts = $objProduct->setPriceTaxTo($arrProducts);
             foreach ($arrProducts as $key => $val) {
                 $arrProducts[$key]['main_list_image'] = SC_Utils_Ex::sfNoImageMainList($val['main_list_image']);
             }
             $arrData = array();
             foreach ($arrProducts as $key => $val) {
                 $arrData[] = array('product_id' => $val['product_id'], 'DetailPageURL' => HTTP_URL . 'products/detail.php?product_id=' . $val['product_id'], 'ItemAttributes' => $val);
             }
             $this->setResponse('Item', $arrData);
             return true;
         } else {
             $this->addError('ItemSearch.Error', '※ 要求された情報は見つかりませんでした。');
         }
     }
     return false;
 }
开发者ID:nassos9090,项目名称:plugin,代码行数:35,代码来源:ItemSearch.php

示例3: lfGetRanking

 /**
  * おすすめ商品検索.
  *
  * @return array $arrBestProducts 検索結果配列
  */
 public function lfGetRanking()
 {
     $objRecommend = new SC_Helper_BestProducts_Ex();
     // おすすめ商品取得
     $arrRecommends = $objRecommend->getList(RECOMMEND_NUM);
     $response = array();
     if (count($arrRecommends) > 0) {
         // 商品一覧を取得
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $objProduct = new SC_Product_Ex();
         // where条件生成&セット
         $arrProductId = array();
         foreach ($arrRecommends as $key => $val) {
             $arrProductId[] = $val['product_id'];
         }
         $arrProducts = $objProduct->getListByProductIds($objQuery, $arrProductId);
         // 税込金額を設定する
         SC_Product_Ex::setIncTaxToProducts($arrProducts);
         // おすすめ商品情報にマージ
         foreach ($arrRecommends as $key => $value) {
             if (isset($arrProducts[$value['product_id']])) {
                 $product = $arrProducts[$value['product_id']];
                 if ($product['status'] == 1 && (!NOSTOCK_HIDDEN || ($product['stock_max'] >= 1 || $product['stock_unlimited_max'] == 1))) {
                     $response[] = array_merge($value, $arrProducts[$value['product_id']]);
                 }
             } else {
                 // 削除済み商品は除外
                 unset($arrRecommends[$key]);
             }
         }
     }
     return $response;
 }
开发者ID:ryoogata,项目名称:eccube-SQLAzureSupport-plugin,代码行数:38,代码来源:LC_Page_FrontParts_Bloc_Recommend.php

示例4: lfGetRanking

 /**
  * おすすめ商品検索.
  *
  * @return array $arrBestProducts 検索結果配列
  */
 public function lfGetRanking()
 {
     $arrRecommends = parent::lfGetRanking();
     $detect = new Mobile_Detect();
     $cur_category_id = 0;
     if ($detect->is("AndroidOS")) {
         $cur_category_id = 1;
     } elseif ($detect->is("iOS")) {
         $cur_category_id = 2;
     } else {
         return array();
     }
     $response = array();
     if (count($arrRecommends) > 0) {
         $objProduct = new SC_Product_Ex();
         foreach ($arrRecommends as $value) {
             $product_id = $value['product_id'];
             $category_id = $objProduct->getCategoryIds($product_id);
             if (in_array($cur_category_id, $category_id)) {
                 // nop
                 $response[] = $value;
             }
         }
     }
     return $response;
 }
开发者ID:alice-asahina,项目名称:kisekae_touch,代码行数:31,代码来源:LC_Page_FrontParts_Bloc_Recommend_Ex.php

示例5: action

 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $layout = new SC_Helper_PageLayout_Ex();
     $layout->sfGetPageLayout($this, false, $_SERVER['SCRIPT_NAME'], $this->objDisplay->detectDevice());
     $this->arrBreadcrumb[0][0] = array();
     switch ($this->arrPageLayout['url']) {
         case 'products/list.php':
             $category_id = $_GET['category_id'];
             if ($category_id) {
                 $this->arrBreadcrumb[0] = self::getBreadcrumbByCategoryId(intval($category_id));
             } else {
                 if ($_GET['mode'] == 'search') {
                     $this->current_name = '検索結果';
                 } else {
                     $this->current_name = '全商品';
                 }
             }
             break;
         case 'products/detail.php':
             $product_id = $_GET['product_id'];
             $this->arrBreadcrumb = SC_Helper_DB_Ex::sfGetMultiCatTree($product_id);
             $objProduct = new SC_Product_Ex();
             $arrProduct = $objProduct->getDetail($product_id);
             $this->current_name = $arrProduct['name'];
             break;
         case 'index.php':
             $this->current_name = '';
             break;
         default:
             $this->current_name = $this->arrPageLayout['page_name'];
             break;
     }
     $this->arrData = self::loadData();
 }
开发者ID:ec-cube-plugin,项目名称:BreadcrumbList,代码行数:39,代码来源:LC_Page_FrontParts_Bloc_BreadcrumbList.php

示例6: lfGetRanking

 /**
  * おすすめ商品検索.
  *
  * @return array $arrBestProducts 検索結果配列
  */
 function lfGetRanking()
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objProduct = new SC_Product_Ex();
     // おすすめ商品取得
     $col = 'T1.best_id, T1.category_id, T1.rank, T1.product_id, T1.title, T1.comment, T1.create_date, T1.update_date';
     $table = 'dtb_best_products as T1 INNER JOIN dtb_products as T2 ON T1.product_id = T2.product_id';
     $where = 'T1.del_flg = 0 and T2.status = 1';
     $objQuery->setOrder('T1.rank');
     $objQuery->setLimit(RECOMMEND_NUM);
     $arrBestProducts = $objQuery->select($col, $table, $where);
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     if (count($arrBestProducts) > 0) {
         // 商品一覧を取得
         // where条件生成&セット
         $arrProductId = array();
         $where = 'product_id IN (';
         foreach ($arrBestProducts as $key => $val) {
             $arrProductId[] = $val['product_id'];
         }
         // 取得
         $arrProductList = $objProduct->getListByProductIds($objQuery, $arrProductId);
         // おすすめ商品情報にマージ
         foreach ($arrBestProducts as $key => $value) {
             $arrRow =& $arrBestProducts[$key];
             if (isset($arrProductList[$arrRow['product_id']])) {
                 $arrRow = array_merge($arrRow, $arrProductList[$arrRow['product_id']]);
             } else {
                 // 削除済み商品は除外
                 unset($arrBestProducts[$key]);
             }
         }
     }
     return $arrBestProducts;
 }
开发者ID:snguyenone,项目名称:ec-cube-ja-2.12.6,代码行数:40,代码来源:LC_Page_FrontParts_Bloc_Recommend.php

示例7: sfDownloadCsv

 /**
  * 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);
 }
开发者ID:rateon,项目名称:twhk-ec,代码行数:43,代码来源:SC_Helper_CSV.php

示例8: sfDownloadCsv

 /**
  * 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);
 }
开发者ID:nassos9090,项目名称:plugin,代码行数:55,代码来源:SC_Helper_CSV.php

示例9: lfGetFavoriteProduct

 /**
  * お気に入りを取得する
  *
  * @param mixed $customer_id
  * @param mixed $objPage
  * @access private
  * @return array お気に入り商品一覧
  */
 public function lfGetFavoriteProduct($customer_id, &$objPage)
 {
     if (DB_TYPE != 'sqlsrv') {
         return parent::lfGetFavoriteProduct($customer_id, $objPage);
     }
     $objQuery = SC_Query_Ex::getSingletonInstance();
     $objProduct = new SC_Product_Ex();
     $objQuery->setOrder('f.create_date DESC');
     $where = 'f.customer_id = ? and p.status = 1';
     if (NOSTOCK_HIDDEN) {
         $where .= ' AND EXISTS(SELECT * FROM dtb_products_class WHERE product_id = f.product_id AND del_flg = 0 AND (stock >= 1 OR stock_unlimited = 1))';
     }
     $arrProductId = $objQuery->getCol('f.product_id', 'dtb_customer_favorite_products f inner join dtb_products p on f.product_id = p.product_id ', $where, array($customer_id));
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->setWhere($this->lfMakeWhere('alldtl.', $arrProductId));
     $linemax = $objProduct->findProductCount($objQuery);
     $objPage->tpl_linemax = $linemax;
     // 何件が該当しました。表示用
     // ページ送りの取得
     $objNavi = new SC_PageNavi_Ex($objPage->tpl_pageno, $linemax, SEARCH_PMAX, 'eccube.movePage', NAVI_PMAX);
     $this->tpl_strnavi = $objNavi->strnavi;
     // 表示文字列
     $startno = $objNavi->start_row;
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     //$objQuery->setLimitOffset(SEARCH_PMAX, $startno);
     // 取得範囲の指定(開始行番号、行数のセット)
     $arrProductId = array_slice($arrProductId, $startno, SEARCH_PMAX);
     $where = $this->lfMakeWhere('', $arrProductId);
     $where .= ' AND del_flg = 0';
     $objQuery->setWhere($where, $arrProductId);
     $arrProducts = $objProduct->lists($objQuery);
     //取得している並び順で並び替え
     $arrProducts2 = array();
     foreach ($arrProducts as $item) {
         $arrProducts2[$item['product_id']] = $item;
     }
     $arrProductsList = array();
     foreach ($arrProductId as $product_id) {
         $arrProductsList[] = $arrProducts2[$product_id];
     }
     // 税込金額を設定する
     SC_Product_Ex::setIncTaxToProducts($arrProductsList);
     return $arrProductsList;
 }
开发者ID:ryoogata,项目名称:eccube-SQLAzureSupport-plugin,代码行数:52,代码来源:LC_Page_Mypage_Favorite_Ex.php

示例10: lfGetRanking

 /**
  * おすすめ商品検索.
  *
  * @return array $arrBestProducts 検索結果配列
  */
 function lfGetRanking()
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objProduct = new SC_Product_Ex();
     // おすすめ商品取得
     $col = 'best_id, best_id, category_id, rank, product_id, title, comment, create_date, update_date';
     $table = 'dtb_best_products';
     $where = 'del_flg = 0';
     $objQuery->setOrder('rank');
     $objQuery->setLimit(RECOMMEND_NUM);
     $arrBestProducts = $objQuery->select($col, $table, $where);
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     if (count($arrBestProducts) > 0) {
         // 商品一覧を取得
         // where条件生成&セット
         $arrProductId = array();
         $where = 'product_id IN (';
         foreach ($arrBestProducts as $key => $val) {
             $arrProductId[] = $val['product_id'];
         }
         // 取得
         $arrTmp = $objProduct->getListByProductIds($objQuery, $arrProductId);
         foreach ($arrTmp as $key => $arrRow) {
             $arrProductList[$arrRow['product_id']] = $arrRow;
         }
         // おすすめ商品情報にマージ
         foreach (array_keys($arrBestProducts) as $key) {
             $arrRow =& $arrBestProducts[$key];
             if (isset($arrProductList[$arrRow['product_id']])) {
                 $arrRow = array_merge($arrRow, $arrProductList[$arrRow['product_id']]);
             } else {
                 // 削除済み商品は除外
                 unset($arrBestProducts[$key]);
             }
         }
     }
     return $arrBestProducts;
 }
开发者ID:nanasess,项目名称:ec-azure,代码行数:43,代码来源:LC_Page_FrontParts_Bloc_Recommend.php

示例11: checkProducts

 /**
  * カート内の商品の妥当性をチェックする.
  *
  * エラーが発生した場合は, 商品をカート内から削除又は数量を調整し,
  * エラーメッセージを返す.
  *
  * 1. 商品種別に関連づけられた配送業者の存在チェック
  * 2. 削除/非表示商品のチェック
  * 3. 販売制限数のチェック
  * 4. 在庫数チェック
  *
  * @param  string $productTypeId 商品種別ID
  * @return string エラーが発生した場合はエラーメッセージ
  */
 public function checkProducts($productTypeId)
 {
     $objProduct = new SC_Product_Ex();
     $objDelivery = new SC_Helper_Delivery_Ex();
     $arrDeliv = $objDelivery->getList($productTypeId);
     $tpl_message = '';
     // カート内の情報を取得
     $arrItems = $this->getCartList($productTypeId);
     foreach ($arrItems as &$arrItem) {
         $product =& $arrItem['productsClass'];
         /*
          * 表示/非表示商品のチェック
          */
         if (SC_Utils_Ex::isBlank($product) || $product['status'] != 1) {
             $this->delProduct($arrItem['cart_no'], $productTypeId);
             $tpl_message .= "※ 現時点で販売していない商品が含まれておりました。該当商品をカートから削除しました。\n";
         } else {
             /*
              * 配送業者のチェック
              */
             if (SC_Utils_Ex::isBlank($arrDeliv)) {
                 $tpl_message .= '※「' . $product['name'] . '」はまだ配送の準備ができておりません。';
                 $tpl_message .= '恐れ入りますがお問い合わせページよりお問い合わせください。' . "\n";
                 $this->delProduct($arrItem['cart_no'], $productTypeId);
             }
             /*
              * 販売制限数, 在庫数のチェック
              */
             $limit = $objProduct->getBuyLimit($product);
             if (!is_null($limit) && $arrItem['quantity'] > $limit) {
                 if ($limit > 0) {
                     $this->setProductValue($arrItem['id'], 'quantity', $limit, $productTypeId);
                     $total_inctax = $limit * SC_Helper_TaxRule_Ex::sfCalcIncTax($arrItem['price'], $product['product_id'], $arrItem['id'][0]);
                     $this->setProductValue($arrItem['id'], 'total_inctax', $total_inctax, $productTypeId);
                     $tpl_message .= '※「' . $product['name'] . '」は販売制限(または在庫が不足)しております。';
                     $tpl_message .= "一度に数量{$limit}を超える購入はできません。\n";
                 } else {
                     $this->delProduct($arrItem['cart_no'], $productTypeId);
                     $tpl_message .= '※「' . $product['name'] . "」は売り切れました。\n";
                     continue;
                 }
             }
         }
     }
     return $tpl_message;
 }
开发者ID:ryoogata,项目名称:eccube-SQLAzureSupport-plugin,代码行数:60,代码来源:SC_CartSession.php

示例12: doRegisterProduct

 /**
  * 受注商品の追加/更新を行う.
  *
  * 小画面で選択した受注商品をフォームに反映させる.
  *
  * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  * @return void
  */
 function doRegisterProduct(&$objFormParam)
 {
     $product_class_id = $objFormParam->getValue('add_product_class_id');
     if (SC_Utils_Ex::isBlank($product_class_id)) {
         $product_class_id = $objFormParam->getValue('edit_product_class_id');
         $changed_no = $objFormParam->getValue('no');
     }
     // FXIME バリデーションを通さず $objFormParam の値で DB 問い合わせしている。(管理機能ため、さほど問題は無いと思うものの…)
     // 商品規格IDが指定されていない場合、例外エラーを発生
     if (strlen($product_class_id) === 0) {
         trigger_error('商品規格指定なし', E_USER_ERROR);
     }
     // 選択済みの商品であれば数量を1増やす
     $exists = false;
     $arrExistsProductClassIds = $objFormParam->getValue('product_class_id');
     foreach ($arrExistsProductClassIds as $key => $value) {
         $exists_product_class_id = $arrExistsProductClassIds[$key];
         if ($exists_product_class_id == $product_class_id) {
             $exists = true;
             $exists_no = $key;
             $arrExistsQuantity = $objFormParam->getValue('quantity');
             $arrExistsQuantity[$key]++;
             $objFormParam->setValue('quantity', $arrExistsQuantity);
         }
     }
     // 新しく商品を追加した場合はフォームに登録
     // 商品を変更した場合は、該当行を変更
     if (!$exists) {
         $objProduct = new SC_Product_Ex();
         $arrProduct = $objProduct->getDetailAndProductsClass($product_class_id);
         // 一致する商品規格がない場合、例外エラーを発生
         if (empty($arrProduct)) {
             trigger_error('商品規格一致なし', E_USER_ERROR);
         }
         $arrProduct['quantity'] = 1;
         $arrProduct['price'] = $arrProduct['price02'];
         $arrProduct['product_name'] = $arrProduct['name'];
         $arrUpdateKeys = array('product_id', 'product_class_id', 'product_type_id', 'point_rate', 'product_code', 'product_name', 'classcategory_name1', 'classcategory_name2', 'quantity', 'price');
         foreach ($arrUpdateKeys as $key) {
             $arrValues = $objFormParam->getValue($key);
             // FIXME getValueで文字列が返る場合があるので配列であるかをチェック
             if (!is_array($arrValues)) {
                 $arrValues = array();
             }
             if (isset($changed_no)) {
                 $arrValues[$changed_no] = $arrProduct[$key];
             } else {
                 $added_no = 0;
                 if (is_array($arrExistsProductClassIds)) {
                     $added_no = count($arrExistsProductClassIds);
                 }
                 $arrValues[$added_no] = $arrProduct[$key];
             }
             $objFormParam->setValue($key, $arrValues);
         }
     } elseif (isset($changed_no) && $exists_no != $changed_no) {
         // 変更したが、選択済みの商品だった場合は、変更対象行を削除。
         $this->doDeleteProduct($changed_no, $objFormParam);
     }
 }
开发者ID:snguyenone,项目名称:ec-cube-ja-2.12.6,代码行数:68,代码来源:LC_Page_Admin_Order_Edit.php

示例13: lfGetProductsList

 /**
  *
  * @param SC_Product_Ex $objProduct
  */
 public function lfGetProductsList($searchCondition, $disp_number, $startno, &$objProduct)
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objDb = new SC_Helper_DB_Ex();
     $arrOrderVal = array();
     // 表示順序
     switch ($this->orderby) {
         // ダウンロード順
         case 'download':
             $status = ORDER_PRE_END;
             $objProduct->setProductsOrder('count(*)', "(SELECT B.* FROM dtb_order A INNER JOIN dtb_order_detail B USING(order_id) WHERE A.del_flg = 0 AND A.status = {$status})", 'ASC');
             break;
             // 販売価格が安い順
         // 販売価格が安い順
         case 'price':
             $objProduct->setProductsOrder('price02', 'dtb_products_class', 'ASC');
             break;
             // 新着順
         // 新着順
         case 'date':
             if ($objDb->sfColumnExists('dtb_products', 'auto_display_start_date')) {
                 $objProduct->setProductsOrder('auto_display_start_date', 'dtb_products', 'DESC');
             } else {
                 $objProduct->setProductsOrder('create_date', 'dtb_products', 'DESC');
             }
             break;
         default:
             // FIXME 指定した カラムが損z内下場合はそのカラムをキーとする。
             if ($objDb->sfColumnExists('dtb_products', 'auto_display_start_date') && strlen($this->orderby) == 0) {
                 $objProduct->setProductsOrder('auto_display_start_date', 'dtb_products', 'DESC');
             } elseif ($objDb->sfColumnExists('dtb_products', $this->orderby)) {
                 $objProduct->setProductsOrder($this->orderby, 'dtb_products', 'DESC');
                 break;
             }
         case "rank":
             if (strlen($searchCondition['where_category']) >= 1) {
                 $dtb_product_categories = '(SELECT * FROM dtb_product_categories WHERE ' . $searchCondition['where_category'] . ')';
                 $arrOrderVal = $searchCondition['arrvalCategory'];
             } else {
                 $dtb_product_categories = 'dtb_product_categories';
             }
             $col = 'MAX(T3.rank * 2147483648 + T2.rank)';
             $from = "{$dtb_product_categories} T2 JOIN dtb_category T3 ON T2.category_id = T3.category_id";
             $where = 'T2.product_id = alldtl.product_id';
             $sub_sql = $objQuery->getSql($col, $from, $where);
             $objQuery->setOrder("({$sub_sql}) DESC ,product_id DESC");
             break;
     }
     // 取得範囲の指定(開始行番号、行数のセット)
     $objQuery->setLimitOffset($disp_number, $startno);
     $objQuery->setWhere($searchCondition['where']);
     // 表示すべきIDとそのIDの並び順を一気に取得
     $arrProductId = $objProduct->findProductIdsOrder($objQuery, array_merge($searchCondition['arrval'], $arrOrderVal));
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $arrProducts = $objProduct->getListByProductIds($objQuery, $arrProductId);
     // 規格を設定
     $objProduct->setProductsClassByProductIds($arrProductId);
     $arrProducts['productStatus'] = $objProduct->getProductStatus($arrProductId);
     foreach ($arrProducts as $product_id => &$arrProduct) {
         if ($product_id == 'productStatus') {
             continue;
         }
         $category_id = $objProduct->getCategoryIds($product_id);
         $arrProduct["category_id"] = array_shift($category_id);
         $arrProduct["category"] = $this->arrCategory[$arrProduct["category_id"]];
         $arrProduct["category_name"] = $arrProduct["category"]["category_name"];
         if ($objDb->sfColumnExists('dtb_category', 'category_code')) {
             $arrProduct["category_code"] = $arrProduct["category"]["category_code"];
             $arrProduct["category_image1"] = $arrProduct["category"]["category_image1"] ?: 0;
             $arrProduct["category_image2"] = $arrProduct["category"]["category_image2"] ?: 0;
             $arrProduct["category_image3"] = $arrProduct["category"]["category_image3"] ?: 0;
             $arrProduct["category_image4"] = $arrProduct["category"]["category_image4"] ?: 0;
             $arrProduct["category_image5"] = $arrProduct["category"]["category_image5"] ?: 0;
         }
     }
     return $arrProducts;
 }
开发者ID:alice-asahina,项目名称:kisekae_touch,代码行数:81,代码来源:LC_Page_Products_List_Ex.php

示例14: doMobileSelectItem

 /**
  * 
  * @return void
  */
 function doMobileSelectItem()
 {
     $objProduct = new SC_Product_Ex();
     $this->arrErr = $this->lfCheckError($this->mode, $this->objFormParam, $this->tpl_classcat_find1, $this->tpl_classcat_find2);
     // この段階では、商品規格ID・数量の入力チェックエラーを出させない。
     // FIXME: エラーチェックの定義で mode で定義を分岐する方が良いように感じる
     unset($this->arrErr['product_class_id']);
     unset($this->arrErr['quantity']);
     // 規格2が設定されていて、エラーを検出した場合
     if ($this->tpl_classcat_find2 and !empty($this->arrErr)) {
         // templateの変更
         $this->tpl_mainpage = 'products/select_find2.tpl';
         return;
     }
     $product_id = $this->objFormParam->getValue('product_id');
     $value1 = $this->objFormParam->getValue('classcategory_id1');
     if (strlen($value1) === 0) {
         $value1 = '__unselected';
     }
     // 規格2が設定されている場合.
     if (SC_Utils_Ex::isBlank($this->objFormParam->getValue('classcategory_id2')) == false) {
         $value2 = '#' . $this->objFormParam->getValue('classcategory_id2');
     } else {
         $value2 = '#0';
     }
     $objProduct->setProductsClassByProductIds(array($product_id));
     $this->tpl_product_class_id = $objProduct->classCategories[$product_id][$value1][$value2]['product_class_id'];
     // 数量の入力を行う
     $this->tpl_mainpage = 'products/select_item.tpl';
 }
开发者ID:Rise-Up-Cambodia,项目名称:Rise-Up,代码行数:34,代码来源:LC_Page_Products_Detail.php

示例15: sfCountCategory

    /**
     * カテゴリ数の登録を行う.
     *
     *
     * @param  SC_Query $objQuery           SC_Query インスタンス
     * @param  boolean  $is_force_all_count 全カテゴリの集計を強制する場合 true
     * @return void
     */
    public function sfCountCategory($objQuery = NULL, $is_force_all_count = false)
    {
        $objProduct = new SC_Product_Ex();
        if ($objQuery == NULL) {
            $objQuery =& SC_Query_Ex::getSingletonInstance();
        }
        $is_out_trans = false;
        if (!$objQuery->inTransaction()) {
            $objQuery->begin();
            $is_out_trans = true;
        }
        //共通のfrom/where文の構築
        $sql_where = SC_Product_Ex::getProductDispConditions('alldtl');
        // 在庫無し商品の非表示
        if (NOSTOCK_HIDDEN) {
            $where_products_class = '(stock >= 1 OR stock_unlimited = 1)';
            $from = $objProduct->alldtlSQL($where_products_class);
        } else {
            $from = 'dtb_products as alldtl';
        }
        //dtb_category_countの構成
        // 各カテゴリに所属する商品の数を集計。集計対象には子カテゴリを含まない。
        //まずテーブル内容の元を取得
        if (!$is_force_all_count) {
            $arrCategoryCountOld = $objQuery->select('category_id,product_count', 'dtb_category_count');
        } else {
            $arrCategoryCountOld = array();
        }
        //各カテゴリ内の商品数を数えて取得
        $sql = <<<__EOS__
            SELECT T1.category_id, count(T2.category_id) as product_count
            FROM dtb_category AS T1
                LEFT JOIN dtb_product_categories AS T2
                    ON T1.category_id = T2.category_id
                LEFT JOIN {$from}
                    ON T2.product_id = alldtl.product_id
            WHERE {$sql_where}
            GROUP BY T1.category_id, T2.category_id
__EOS__;
        $arrCategoryCountNew = $objQuery->getAll($sql);
        // 各カテゴリに所属する商品の数を集計。集計対象には子カテゴリを「含む」。
        //差分を取得して、更新対象カテゴリだけを確認する。
        //各カテゴリ毎のデータ値において以前との差を見る
        //古いデータの構造入れ替え
        $arrOld = array();
        foreach ($arrCategoryCountOld as $item) {
            $arrOld[$item['category_id']] = $item['product_count'];
        }
        //新しいデータの構造入れ替え
        $arrNew = array();
        foreach ($arrCategoryCountNew as $item) {
            $arrNew[$item['category_id']] = $item['product_count'];
        }
        unset($arrCategoryCountOld);
        unset($arrCategoryCountNew);
        $arrDiffCategory_id = array();
        //新しいカテゴリ一覧から見て商品数が異なるデータが無いか確認
        foreach ($arrNew as $cid => $count) {
            if ($arrOld[$cid] != $count) {
                $arrDiffCategory_id[] = $cid;
            }
        }
        //削除カテゴリを想定して、古いカテゴリ一覧から見て商品数が異なるデータが無いか確認。
        foreach ($arrOld as $cid => $count) {
            if ($arrNew[$cid] != $count && $count > 0) {
                $arrDiffCategory_id[] = $cid;
            }
        }
        //対象IDが無ければ終了
        if (count($arrDiffCategory_id) == 0) {
            if ($is_out_trans) {
                $objQuery->commit();
            }
            return;
        }
        //差分対象カテゴリIDの重複を除去
        $arrDiffCategory_id = array_unique($arrDiffCategory_id);
        //dtb_category_countの更新 差分のあったカテゴリだけ更新する。
        foreach ($arrDiffCategory_id as $cid) {
            $sqlval = array();
            $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
            $sqlval['product_count'] = (string) $arrNew[$cid];
            if ($sqlval['product_count'] == '') {
                $sqlval['product_count'] = (string) '0';
            }
            if (isset($arrOld[$cid])) {
                $objQuery->update('dtb_category_count', $sqlval, 'category_id = ?', array($cid));
            } else {
                if ($is_force_all_count) {
                    $ret = $objQuery->update('dtb_category_count', $sqlval, 'category_id = ?', array($cid));
                    if ($ret > 0) {
                        continue;
//.........这里部分代码省略.........
开发者ID:rateon,项目名称:twhk-ec,代码行数:101,代码来源:SC_Helper_DB.php


注:本文中的SC_Product_Ex类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。