Page
[ class tree: Page ] [ index: Page ] [ all elements ]

Source for file LC_Page_Rss_Products.php

Documentation is available at LC_Page_Rss_Products.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2011 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. // {{{ requires
  25. require_once CLASS_EX_REALDIR 'page_extends/LC_Page_Ex.php';
  26.  
  27. /**
  28.  * RSS(商品) のページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id: LC_Page_Rss_Products.php 21256 2011-09-25 04:15:51Z Seasoft $
  33.  */
  34. class LC_Page_Rss_Products extends LC_Page_Ex {
  35.  
  36.     // }}}
  37.     // {{{ functions
  38.  
  39.     /**
  40.      * Page を初期化する.
  41.      *
  42.      * @return void 
  43.      */
  44.     function init({
  45.         parent::init();
  46.         $this->tpl_mainpage "rss/products.tpl";
  47.         $this->encode "UTF-8";
  48.         $this->title "商品一覧情報";
  49.     }
  50.  
  51.     /**
  52.      * Page のプロセス.
  53.      *
  54.      * @return void 
  55.      */
  56.     function process({
  57.         $this->action();
  58.     }
  59.  
  60.     /**
  61.      * Page のアクション.
  62.      *
  63.      * @return void 
  64.      */
  65.     function action({
  66.         $objView new SC_SiteView_Ex();
  67.  
  68.         //店舗情報をセット
  69.         $this->arrSiteInfo SC_Helper_DB_Ex::sfGetBasisData();
  70.  
  71.         //商品IDを取得
  72.         if isset($_GET['product_id']&& $_GET['product_id'!= '' && is_numeric($_GET['product_id']) ) {
  73.             $product_id $_GET['product_id'];
  74.         else {
  75.             $product_id '';
  76.         }
  77.  
  78.         // モードによって分岐
  79.         $mode $this->getMode();
  80.         switch ($mode{
  81.         case 'all':
  82.             $arrProduct $this->lfGetProductsDetailData($mode$product_id);
  83.             break;
  84.         case 'list':
  85.             if $product_id != '' && is_numeric($product_id) ) {
  86.                 $arrProduct $this->lfGetProductsDetailData($mode$product_id);
  87.             else {
  88.                 $arrProduct $this->lfGetProductsListData();
  89.             }
  90.             break;
  91.         default:
  92.             if $product_id != '' && is_numeric($product_id) ) {
  93.                 $arrProduct $this->lfGetProductsDetailData($mode$product_id);
  94.             else {
  95.                 $arrProduct $this->lfGetProductsAllData();
  96.             }
  97.             break;
  98.         }
  99.  
  100.         // 商品情報をセット
  101.         $this->arrProduct $arrProduct;
  102.         $this->arrProductKeys $this->lfGetProductKeys($arrProduct);
  103.  
  104.         //セットしたデータをテンプレートファイルに出力
  105.         $objView->assignobj($this);
  106.  
  107.         //キャッシュしない(念のため)
  108.         header("Pragma: no-cache");
  109.  
  110.         //XMLテキスト(これがないと正常にRSSとして認識してくれないツールがあるため)
  111.         header("Content-type: application/xml");
  112.         P_DETAIL_URLPATH;
  113.  
  114.         //画面表示
  115.         $objView->display($this->tpl_mainpagetrue);
  116.     }
  117.  
  118.     /**
  119.      * デストラクタ.
  120.      *
  121.      * @return void 
  122.      */
  123.     function destroy({
  124.         parent::destroy();
  125.     }
  126.  
  127.     /**
  128.      * lfGetProductsDetailData.
  129.      *
  130.      * @param str $mode モード
  131.      * @param str $product_id 商品ID
  132.      * @return array $arrProduct 商品情報の配列を返す
  133.      */
  134.     function lfGetProductsDetailData($mode$product_id{
  135.         $objQuery SC_Query_Ex::getSingletonInstance();
  136.         //商品詳細を取得
  137.         if $mode == 'all' {
  138.             $arrProduct $this->lfGetProductsDetail($objQuery$mode);
  139.         else {
  140.             $arrProduct $this->lfGetProductsDetail($objQuery$product_id);
  141.         }
  142.         // 値の整形
  143.         foreach ($arrProduct as $key => $val{
  144.             //販売価格を税込みに編集
  145.             $arrProduct[$key]['price02'SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02']);
  146.             // 画像ファイルのURLセット
  147.             if file_exists(IMAGE_SAVE_REALDIR $arrProduct[$key]['main_list_image']) ) {
  148.                 $dir IMAGE_SAVE_RSS_URL;
  149.             else {
  150.                 $dir IMAGE_TEMP_RSS_URL;
  151.             }
  152.             $arrProduct[$key]['main_list_image'$dir $arrProduct[$key]['main_list_image'];
  153.             if file_exists(IMAGE_SAVE_REALDIR $arrProduct[$key]['main_image']) ){
  154.                 $dir IMAGE_SAVE_RSS_URL;
  155.             else {
  156.                 $dir IMAGE_TEMP_RSS_URL;
  157.             }
  158.             $arrProduct[$key]['main_image'$dir $arrProduct[$key]['main_image'];
  159.             if file_exists(IMAGE_SAVE_REALDIR $arrProduct[$key]['main_large_image']) ) {
  160.                 $dir IMAGE_SAVE_RSS_URL;
  161.             else {
  162.                 $dir IMAGE_TEMP_RSS_URL;
  163.             }
  164.             $arrProduct[$key]['main_large_image'$dir $arrProduct[$key]['main_large_image'];
  165.             // ポイント計算
  166.             $arrProduct[$key]['point'SC_Utils_Ex::sfPrePoint(
  167.                 $arrProduct[$key]['price02'],
  168.                 $arrProduct[$key]['point_rate']
  169.             );
  170.             // 在庫無制限
  171.             if $arrProduct[$key]['stock_unlimited'== {
  172.                 $arrProduct[$key]['stock_unlimited''在庫無制限';
  173.             else {
  174.                 $arrProduct[$key]['stock_unlimited'NULL;
  175.             }
  176.         }
  177.         return $arrProduct;
  178.     }
  179.  
  180.     /**
  181.      * lfGetProductsListData.
  182.      *
  183.      * @return array $arrProduct 商品情報の配列を返す
  184.      */
  185.     function lfGetProductsListData({
  186.         $objQuery SC_Query_Ex::getSingletonInstance();
  187.         //商品一覧を取得
  188.         $arrProduct $objQuery->getAll('SELECT product_id, name AS product_name FROM dtb_products');
  189.         return $arrProduct;
  190.     }
  191.  
  192.     /**
  193.      * lfGetProductsAllData.
  194.      *
  195.      * @return array $arrProduct 商品情報の配列を返す
  196.      */
  197.     function lfGetProductsAllData({
  198.         $objQuery SC_Query_Ex::getSingletonInstance();
  199.         //商品情報を取得
  200.         $arrProduct $this->lfGetProductsAllclass($objQuery);
  201.         // 値の整形
  202.         foreach ($arrProduct as $key => $val{
  203.             //販売価格を税込みに編集
  204.             $arrProduct[$key]['price02_max'SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02_max']);
  205.             $arrProduct[$key]['price02_min'SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02_min']);
  206.             // 画像ファイルのURLセット
  207.             if file_exists(IMAGE_SAVE_REALDIR $arrProduct[$key]['main_list_image']) ) {
  208.                 $dir IMAGE_SAVE_RSS_URL;
  209.             else {
  210.                 $dir IMAGE_TEMP_RSS_URL;
  211.             }
  212.             $arrProduct[$key]['main_list_image'$dir $arrProduct[$key]['main_list_image'];
  213.             if file_exists(IMAGE_SAVE_REALDIR $arrProduct[$key]['main_image']) ) {
  214.                 $dir IMAGE_SAVE_RSS_URL;
  215.             else {
  216.                 $dir IMAGE_TEMP_RSS_URL;
  217.             }
  218.             $arrProduct[$key]['main_image'$dir $arrProduct[$key]['main_image'];
  219.             if file_exists(IMAGE_SAVE_REALDIR $arrProduct[$key]['main_large_image']) ) {
  220.                 $dir IMAGE_SAVE_RSS_URL;
  221.             else {
  222.                 $dir IMAGE_TEMP_RSS_URL;
  223.             }
  224.             $arrProduct[$key]['main_large_image'$dir $arrProduct[$key]['main_large_image'];
  225.             // ポイント計算
  226.             $arrProduct[$key]['point_max'SC_Utils_Ex::sfPrePoint(
  227.                 $arrProduct[$key]['price02_max'],
  228.                 $arrProduct[$key]['point_rate']
  229.             );
  230.             $arrProduct[$key]['point_min'SC_Utils_Ex::sfPrePoint(
  231.                 $arrProduct[$key]['price02_min'],
  232.                 $arrProduct[$key]['point_rate']
  233.             );
  234.         }
  235.         return $arrProduct;
  236.     }
  237.  
  238.     /**
  239.      * 商品情報を取得する
  240.      *
  241.      * @param SC_Query $objQuery DB操作クラス
  242.      * @param integer $product_id 商品ID
  243.      * @return array $arrProduct 取得結果を配列で返す
  244.      */
  245.     function lfGetProductsDetail(&$objQuery$product_id 'all'){
  246.         $objProduct new SC_Product_Ex();
  247.  
  248.         // --- 商品詳細の取得
  249.         if ($product_id == 'all'{
  250.             $objQuery->setOrder('product_id');
  251.             $arrProductLsit $objProduct->lists($objQuery);
  252.         else {
  253.             $arrProductLsit $objProduct->getListByProductIds($objQuery$product_id);
  254.         }
  255.  
  256.         // 各商品のカテゴリIDとランクの取得
  257.         $arrProduct array();
  258.         foreach$arrProductLsit as $key => $val {
  259.             $sql '';
  260.             $sql .= ' SELECT';
  261.             $sql .= '   T1.category_id,';
  262.             $sql .= '   T1.rank AS product_rank,';
  263.             $sql .= '   T2.rank AS category_rank';
  264.             $sql .= ' FROM';
  265.             $sql .= '   dtb_product_categories AS T1';
  266.             $sql .= ' LEFT JOIN';
  267.             $sql .= '   dtb_category AS T2';
  268.             $sql .= ' ON';
  269.             $sql .= '   T1.category_id = T2.category_id';
  270.             $sql .= ' WHERE';
  271.             $sql .= '   product_id = ?';
  272.             $arrCategory $objQuery->getAll($sqlarray($val['product_id']));
  273.             if !empty($arrCategory) ) {
  274.                 $arrProduct[$keyarray_merge($val$arrCategory[0]);
  275.             }
  276.         }
  277.         return $arrProduct;
  278.     }
  279.  
  280.     /**
  281.      * 商品情報を取得する(vw_products_allclass使用)
  282.      *
  283.      * @param SC_Query $objQuery DB操作クラス
  284.      * @return array $arrProduct 取得結果を配列で返す
  285.      */
  286.     function lfGetProductsAllclass(&$objQuery){
  287.         // --- 商品一覧の取得
  288.         $objQuery->setOrder('product_id');
  289.         $objProduct new SC_Product_Ex();
  290.         $arrProductLsit $objProduct->lists($objQuery);
  291.         // 各商品のカテゴリIDとランクの取得
  292.         $arrProduct array();
  293.         foreach$arrProductLsit as $key => $val {
  294.             $sql '';
  295.             $sql .= ' SELECT';
  296.             $sql .= '   T1.category_id,';
  297.             $sql .= '   T1.rank AS product_rank,';
  298.             $sql .= '   T2.rank AS category_rank';
  299.             $sql .= ' FROM';
  300.             $sql .= '   dtb_product_categories AS T1';
  301.             $sql .= ' LEFT JOIN';
  302.             $sql .= '   dtb_category AS T2';
  303.             $sql .= ' ON';
  304.             $sql .= '   T1.category_id = T2.category_id';
  305.             $sql .= ' WHERE';
  306.             $sql .= '   product_id = ?';
  307.             $arrCategory $objQuery->getAll($sqlarray($val['product_id']));
  308.             if !empty($arrCategory) ) {
  309.                 $arrProduct[$keyarray_merge($val$arrCategory[0]);
  310.             }
  311.         }
  312.         return $arrProduct;
  313.     }
  314.  
  315.     /**
  316.      * lfGetProductKeys.
  317.      *
  318.      * @param array $arrProduct 商品データ配列
  319.      * @return array $arrProductKeys 商品情報のkey配列を返す
  320.      */
  321.     function lfGetProductKeys($arrProduct{
  322.         $arrProductKeys array();
  323.         $arrProduct SC_Utils_Ex::sfSwapArray($arrProduct);
  324.         if is_array($arrProduct) ) {
  325.             $arrProductKeys array_keys($arrProduct);
  326.         }
  327.         return $arrProductKeys;
  328.     }
  329.  
  330. }
  331. ?>

Documentation generated on Fri, 24 Feb 2012 14:02:15 +0900 by Seasoft