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-2007 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_PATH "pages/LC_Page.php");
  26.  
  27. /**
  28.  * RSS(商品) のページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id: LC_Page_Rss_Products.php 17570 2008-08-28 02:18:46Z Seasoft $
  33.  */
  34. class LC_Page_Rss_Products extends LC_Page {
  35.  
  36.     // }}}
  37.     // {{{ functions
  38.  
  39.     /**
  40.      * Page を初期化する.
  41.      *
  42.      * @return void 
  43.      */
  44.     function init({
  45.         parent::init();
  46.         $this->tpl_mainpage = "rss/product.tpl";
  47.         $this->encode "UTF-8";
  48.         $this->title "商品一覧情報";
  49.     }
  50.  
  51.     /**
  52.      * Page のプロセス.
  53.      *
  54.      * @return void 
  55.      */
  56.     function process({
  57.         $objQuery new SC_Query();
  58.         $objView new SC_SiteView();
  59.         $objSiteInfo new SC_SiteInfo();
  60.  
  61.         //店舗情報をセット
  62.         $arrSiteInfo $objSiteInfo->data;
  63.  
  64.         //商品IDを取得
  65.         $product_id $_GET['product_id'];
  66.         $mode $_GET['mode'];
  67.  
  68.         if(($product_id != "" and is_numeric($product_id)) or $mode == "all"){
  69.             //商品詳細を取得
  70.             ($mode == "all"$arrProduct $this->lfGetProductsDetail($objQuery$mode$arrProduct $this->lfGetProductsDetail($objQuery$product_id);
  71.  
  72.             // 値のセットし直し
  73.             foreach($arrProduct as $key => $val){
  74.                 //販売価格を税込みに編集
  75.                 $arrProduct[$key]["price02"SC_Utils_Ex::sfPreTax($arrProduct[$key]["price02"]$arrSiteInfo["tax"]$arrSiteInfo["tax_rule"]);
  76.  
  77.                 // 画像ファイルのURLセット
  78.                 (file_exists(IMAGE_SAVE_DIR $arrProduct[$key]["main_list_image"])) $dir IMAGE_SAVE_URL_RSS $dir IMAGE_TEMP_URL_RSS;
  79.                 $arrProduct[$key]["main_list_image"$dir $arrProduct[$key]["main_list_image"];
  80.                 (file_exists(IMAGE_SAVE_DIR $arrProduct[$key]["main_image"])) $dir IMAGE_SAVE_URL_RSS $dir IMAGE_TEMP_URL_RSS;
  81.                 $arrProduct[$key]["main_image"$dir $arrProduct[$key]["main_image"];
  82.                 (file_exists(IMAGE_SAVE_DIR $arrProduct[$key]["main_large_image"])) $dir IMAGE_SAVE_URL_RSS $dir IMAGE_TEMP_URL_RSS;
  83.                 $arrProduct[$key]["main_large_image"$dir $arrProduct[$key]["main_large_image"];
  84.  
  85.                 // ポイント計算
  86.                 $arrProduct[$key]["point"SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02"]$arrProduct[$key]["point_rate"]POINT_RULE$arrProduct[$key]["product_id"]);
  87.  
  88.                 // 在庫無制限
  89.                 $arrProduct[$key]["stock_unlimited"($arrProduct[$key]["stock_unlimited"== 1"在庫無制限" NULL;
  90.             }
  91.         }elseif($mode == "list"){
  92.             //商品一覧を取得
  93.             $arrProduct $objQuery->getall("SELECT product_id, name AS product_name FROM dtb_products");
  94.         }else{
  95.             $arrProduct $this->lfGetProductsAllclass($objQuery);
  96.  
  97.             // 値のセットし直し
  98.             foreach($arrProduct as $key => $val){
  99.                 //販売価格を税込みに編集
  100.                 $arrProduct[$key]["price01_max"SC_Utils_Ex::sfPreTax($arrProduct[$key]["price01_max"]$arrSiteInfo["tax"]$arrSiteInfo["tax_rule"]);
  101.                 $arrProduct[$key]["price01_min"SC_Utils_Ex::sfPreTax($arrProduct[$key]["price01_min"]$arrSiteInfo["tax"]$arrSiteInfo["tax_rule"]);
  102.                 $arrProduct[$key]["price02_max"SC_Utils_Ex::sfPreTax($arrProduct[$key]["price02_max"]$arrSiteInfo["tax"]$arrSiteInfo["tax_rule"]);
  103.                 $arrProduct[$key]["price02_min"SC_Utils_Ex::sfPreTax($arrProduct[$key]["price02_min"]$arrSiteInfo["tax"]$arrSiteInfo["tax_rule"]);
  104.  
  105.                 // 画像ファイルのURLセット
  106.                 (file_exists(IMAGE_SAVE_DIR $arrProduct[$key]["main_list_image"])) $dir IMAGE_SAVE_URL_RSS $dir IMAGE_TEMP_URL_RSS;
  107.                 $arrProduct[$key]["main_list_image"$dir $arrProduct[$key]["main_list_image"];
  108.                 (file_exists(IMAGE_SAVE_DIR $arrProduct[$key]["main_image"])) $dir IMAGE_SAVE_URL_RSS $dir IMAGE_TEMP_URL_RSS;
  109.                 $arrProduct[$key]["main_image"$dir $arrProduct[$key]["main_image"];
  110.                 (file_exists(IMAGE_SAVE_DIR $arrProduct[$key]["main_large_image"])) $dir IMAGE_SAVE_URL_RSS $dir IMAGE_TEMP_URL_RSS;
  111.                 $arrProduct[$key]["main_large_image"$dir $arrProduct[$key]["main_large_image"];
  112.  
  113.                 // ポイント計算
  114.                 $arrProduct[$key]["point_max"SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02_max"]$arrProduct[$key]["point_rate"]POINT_RULE$arrProduct[$key]["product_id"]);
  115.                 $arrProduct[$key]["point_min"SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02_min"]$arrProduct[$key]["point_rate"]POINT_RULE$arrProduct[$key]["product_id"]);
  116.             }
  117.         }
  118.  
  119.         //商品情報をセット
  120.         $this->arrProduct $arrProduct;
  121.         if(is_array(SC_Utils_Ex::sfswaparray($arrProduct))){
  122.             $this->arrProductKeys array_keys(SC_Utils_Ex::sfswaparray($arrProduct));
  123.         }
  124.  
  125.         //店舗情報をセット
  126.         $this->arrSiteInfo $arrSiteInfo;
  127.  
  128.         //セットしたデータをテンプレートファイルに出力
  129.         $objView->assignobj($this);
  130.  
  131.         //キャッシュしない(念のため)
  132.         header("Pragma: no-cache");
  133.  
  134.         //XMLテキスト(これがないと正常にRSSとして認識してくれないツールがあるため)
  135.         header("Content-type: application/xml");
  136.         DETAIL_P_HTML;
  137.  
  138.         //画面表示
  139.         $objView->display($this->tpl_mainpagetrue);
  140.     }
  141.  
  142.     /**
  143.      * デストラクタ.
  144.      *
  145.      * @return void 
  146.      */
  147.     function destroy({
  148.         parent::destroy();
  149.     }
  150.  
  151.     /**
  152.      * 商品情報を取得する
  153.      *
  154.      * @param SC_Query $objQuery DB操作クラス
  155.      * @param integer $product_id 商品ID
  156.      * @return array $arrProduct 取得結果を配列で返す
  157.      */
  158.     function lfGetProductsDetail(&$objQuery$product_id "all"){
  159.         $sql "";
  160.         $sql .= "SELECT ";
  161.         $sql .= "   prod.product_id ";
  162.         $sql .= "   ,prod.name AS product_name ";
  163.         $sql .= "   ,prod.category_id ";
  164.         $sql .= "   ,prod.point_rate ";
  165.         $sql .= "   ,prod.comment3 ";
  166.         $sql .= "   ,prod.main_list_comment ";
  167.         $sql .= "   ,prod.main_list_image ";
  168.         $sql .= "   ,prod.main_comment ";
  169.         $sql .= "   ,prod.main_image ";
  170.         $sql .= "   ,prod.main_large_image ";
  171.         $sql .= "   ,cls.product_code ";
  172.         $sql .= "   ,cls.price01 ";
  173.         $sql .= "   ,cls.price02 ";
  174.         $sql .= "   ,cls.stock ";
  175.         $sql .= "   ,cls.stock_unlimited ";
  176.         $sql .= "   ,cls.classcategory_id1 ";
  177.         $sql .= "   ,cls.classcategory_id2 ";
  178.         $sql .= "   ,(SELECT name FROM dtb_classcategory AS clscat WHERE clscat.classcategory_id = cls.classcategory_id1) AS classcategory_name1 ";
  179.         $sql .= "   ,(SELECT name FROM dtb_classcategory AS clscat WHERE clscat.classcategory_id = cls.classcategory_id2) AS classcategory_name2 ";
  180.         $sql .= "   ,(SELECT category_name FROM dtb_category AS cat WHERE cat.category_id = prod.category_id) AS category_name";
  181.         $sql .= "   ,prod.update_date ";
  182.         $sql .= " FROM dtb_products AS prod, dtb_products_class AS cls";
  183.         $sql .= " WHERE prod.product_id = cls.product_id AND prod.del_flg = 0 AND prod.status = 1";
  184.  
  185.         if($product_id != "all"){
  186.             $sql .= " AND prod.product_id = ?";
  187.             $arrval array($product_id);
  188.         }
  189.         $sql .= " ORDER BY prod.product_id, cls.classcategory_id1, cls.classcategory_id2";
  190.         $arrProduct $objQuery->getall($sql$arrval);
  191.         return $arrProduct;
  192.     }
  193.  
  194.     /**
  195.      * 商品情報を取得する(vw_products_allclass使用)
  196.      *
  197.      * @param SC_Query $objQuery DB操作クラス
  198.      * @return array $arrProduct 取得結果を配列で返す
  199.      */
  200.     function lfGetProductsAllclass($objQuery){
  201.         $sql "";
  202.         $sql .= "SELECT
  203.                 product_id
  204.                 ,name as product_name
  205.                 ,category_id
  206.                 ,point_rate
  207.                 ,comment3
  208.                 ,main_list_comment
  209.                 ,main_image
  210.                 ,main_list_image
  211.                 ,product_code_min
  212.                 ,product_code_max
  213.                 ,price01_min
  214.                 ,price01_max
  215.                 ,price02_min
  216.                 ,price02_max
  217.                 ,(SELECT category_name FROM dtb_category AS cat WHERE cat.category_id = allcls.category_id) AS category_name
  218.                 ,(SELECT main_large_image FROM dtb_products AS prod WHERE prod.product_id = allcls.product_id) AS main_large_image
  219.             FROM  vw_products_allclass as allcls
  220.             WHERE allcls.del_flg = 0 AND allcls.status = 1";
  221.         
  222.         // 在庫無し商品の非表示
  223.         if (NOSTOCK_HIDDEN === true{
  224.             $sql .= ' AND (allcls.stock_max >= 1 OR allcls.stock_unlimited_max = 1)';
  225.         }
  226.         
  227.         $sql .= " ORDER BY allcls.product_id";
  228.         
  229.         $arrProduct $objQuery->getall($sql);
  230.         return $arrProduct;
  231.     }
  232. }
  233. ?>

Documentation generated on Tue, 28 Apr 2009 18:12:49 +0900 by phpDocumentor 1.4.2