[Svn-src-all:1245] [version-2_5-dev 20134] #961 (リファクタリング [管理画面]ログイン/ホーム) ホーム画面の修正。

AMUAMU admin @ mail.ec-cube.net
2011年 2月 11日 (金) 11:55:39 JST


Subversion committed to /home/svn/open 20134
http://svn.ec-cube.net/open_trac/changeset/20134
┌────────────────────────────┐
│更新者 :  AMUAMU                                       │
│更新日時:  2011-02-11 11:55:39 +0900 (金, 11  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#961 (リファクタリング [管理画面]ログイン/ホーム) ホーム画面の修正。
#674 (サイト情報の送信を任意に設定できるように) の実装。

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/pages/admin/LC_Page_Admin_Home.php
U   branches/version-2_5-dev/data/mtb_constants_init.php
U   branches/version-2_5-dev/html/install/sql/insert_data.sql

変更: branches/version-2_5-dev/data/class/pages/admin/LC_Page_Admin_Home.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/LC_Page_Admin_Home.php	2011-02-10 13:19:59 UTC (rev 20133)
+++ branches/version-2_5-dev/data/class/pages/admin/LC_Page_Admin_Home.php	2011-02-11 02:55:39 UTC (rev 20134)
@@ -65,55 +65,46 @@
      * @return void
      */
     function action() {
-        $objQuery = new SC_Query();
-        $objSess = new SC_Session();
 
         // 認証可否の判定
-        SC_Utils_Ex::sfIsSuccess($objSess);
+        SC_Utils_Ex::sfIsSuccess(new SC_Session());
 
         // DBバージョンの取得
-        $objDb = new SC_Helper_DB_Ex();
-        $this->db_version = $objDb->sfGetDBVersion();
+        $this->db_version = $this->lfGetDBVersion();
 
         // PHPバージョンの取得
-        $this->php_version = "PHP " . phpversion();
+        $this->php_version = $this->lfGetPHPVersion();
 
         // 現在の会員数
-        $this->customer_cnt = $this->lfGetCustomerCnt($objQuery);
+        $this->customer_cnt = $this->lfGetCustomerCnt();
 
         // 昨日の売上高
-        $this->order_yesterday_amount = $this->lfGetOrderYesterday($objQuery, "SUM");
+        $this->order_yesterday_amount = $this->lfGetOrderYesterday("SUM");
 
         // 昨日の売上件数
-        $this->order_yesterday_cnt = $this->lfGetOrderYesterday($objQuery, "COUNT");
+        $this->order_yesterday_cnt = $this->lfGetOrderYesterday("COUNT");
 
         // 今月の売上高
-        $this->order_month_amount = $this->lfGetOrderMonth($objQuery, "SUM");
+        $this->order_month_amount = $this->lfGetOrderMonth("SUM");
 
         // 今月の売上件数
-        $this->order_month_cnt = $this->lfGetOrderMonth($objQuery, "COUNT");
+        $this->order_month_cnt = $this->lfGetOrderMonth("COUNT");
 
         // 顧客の累計ポイント
         $this->customer_point = $this->lfGetTotalCustomerPoint();
 
         //昨日のレビュー書き込み数
-        $this->review_yesterday_cnt = $this->lfGetReviewYesterday($objQuery);
+        $this->review_yesterday_cnt = $this->lfGetReviewYesterday();
 
         //レビュー書き込み非表示数
-        $this->review_nondisp_cnt = $this->lfGetReviewNonDisp($objQuery);
+        $this->review_nondisp_cnt = $this->lfGetReviewNonDisp();
 
         // 品切れ商品
         $this->arrSoldout = $this->lfGetSoldOut();
 
         // 新規受付一覧
-        $arrNewOrder = $this->lfGetNewOrder();
+        $this->arrNewOrder = $this->lfGetNewOrder();
 
-        foreach ($arrNewOrder as $key => $val){
-            $arrNewOrder[$key]['create_date'] = str_replace("-", "/", substr($val['create_date'], 0,19));
-
-        }
-        $this->arrNewOrder = $arrNewOrder;
-
         // お知らせ一覧の取得
         $this->arrInfo = $this->lfGetInfo();
     }
@@ -127,69 +118,134 @@
         parent::destroy();
     }
 
-    // 会員数
-    function lfGetCustomerCnt(&$objQuery){
+    /**
+     * PHPバージョンの取得
+     *
+     * @return string PHPバージョン情報
+     */
+    function lfGetPHPVersion() {
+        return "PHP " . phpversion();
+    }
+    
+    /**
+     * DBバージョンの取得
+     *
+     * @return mixed DBバージョン情報
+     */
+    function lfGetDBVersion() {
+        $objDb = new SC_Helper_DB_Ex();
+        return $objDb->sfGetDBVersion();
+    }
 
-        $sql = "SELECT COUNT(customer_id) FROM dtb_customer WHERE del_flg = 0 AND status = 2";
-        $return = $objQuery->getOne($sql);
-        return $return;
+    /**
+     * 現在の会員数の取得
+     *
+     * @return integer 会員数
+     */
+    function lfGetCustomerCnt(){
+        $objQuery =& SC_Query::getSingletonInstance();
+        $col = "COUNT(customer_id)";
+        $table = "dtb_customer";
+        $where = "del_flg = 0 AND status = 2";
+        return $objQuery->get($col, $table, $where);
     }
 
-    // 昨日の売上高・売上件数
-    function lfGetOrderYesterday(&$objQuery, $method){
-        if ( $method == 'SUM' or $method == 'COUNT'){
-            $dbFactory = SC_DB_DBFactory::getInstance();
-            $sql = $dbFactory->getOrderYesterdaySql($method);
-            $return = $objQuery->getOne($sql);
-        }
-        return $return;
+    /**
+     * 昨日の売上データの取得
+     *
+     * @param string $method 取得タイプ 件数:"COUNT" or 金額:"SUM"
+     * @return integer 結果数値
+     */
+    function lfGetOrderYesterday($method){
+        $objQuery =& SC_Query::getSingletonInstance();
+        
+        // TODO: DBFactory使わないでも共通化できそうな気もしますが
+        $dbFactory = SC_DB_DBFactory::getInstance();
+        $sql = $dbFactory->getOrderYesterdaySql($method);
+        return $objQuery->getOne($sql);
     }
 
-    function lfGetOrderMonth(&$objQuery, $method){
-
+    /**
+     * 今月の売上データの取得
+     *
+     * @param string $method 取得タイプ 件数:"COUNT" or 金額:"SUM"
+     * @return integer 結果数値
+     */
+    function lfGetOrderMonth($method){
+        $objQuery =& SC_Query::getSingletonInstance();
         $month = date("Y/m", mktime());
-
-        if ( $method == 'SUM' or $method == 'COUNT'){
-            $dbFactory = SC_DB_DBFactory::getInstance();
-            $sql = $dbFactory->getOrderMonthSql($method);
-            $return = $objQuery->getOne($sql, array($month));
-        }
-        return $return;
+        
+        // TODO: DBFactory使わないでも共通化できそうな気もしますが
+        $dbFactory = SC_DB_DBFactory::getInstance();
+        $sql = $dbFactory->getOrderMonthSql($method);
+        return $objQuery->getOne($sql, array($month));
     }
 
+    /**
+     * 顧客の保持ポイント合計の取得
+     *
+     * @return integer 顧客の保持ポイント合計
+     */
     function lfGetTotalCustomerPoint() {
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
+        
         $col = "SUM(point)";
         $where = "del_flg = 0";
         $from = "dtb_customer";
-        $ret = $objQuery->get($col, $from, $where);
-        return $ret;
+        return $objQuery->get($col, $from, $where);
     }
 
-    function lfGetReviewYesterday(&$objQuery){
+    /**
+     * 昨日のレビュー書き込み数の取得
+     *
+     * @return integer 昨日のレビュー書き込み数
+     */
+    function lfGetReviewYesterday(){
+        $objQuery =& SC_Query::getSingletonInstance();
+
+        // TODO: DBFactory使わないでも共通化できそうな気もしますが
         $dbFactory = SC_DB_DBFactory::getInstance();
         $sql = $dbFactory->getReviewYesterdaySql();
-        $return = $objQuery->getOne($sql);
-        return $return;
+        return $objQuery->getOne($sql);
     }
 
-    function lfGetReviewNonDisp(&$objQuery){
-        $sql = "SELECT COUNT(*) FROM dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id WHERE A.del_flg=0 AND A.status=2 AND B.del_flg=0";
-        $return = $objQuery->getOne($sql);
-        return $return;
+    /**
+     * レビュー書き込み非表示数の取得
+     *
+     * @return integer レビュー書き込み非表示数
+     */
+    function lfGetReviewNonDisp(){
+        $objQuery =& SC_Query::getSingletonInstance();
+        
+        $table = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id";
+        $where = "A.del_flg = 0 AND A.status = 2 AND B.del_flg = 0";
+        return $objQuery->count($table, $where);
     }
 
-    // 品切れ商品IDの取得
+    /**
+     * 品切れ商品の取得
+     *
+     * @return array 品切れ商品一覧
+     */
     function lfGetSoldOut() {
-        $objQuery = new SC_Query();
-        $where = "product_id IN (SELECT product_id FROM dtb_products_class WHERE stock_unlimited = 0 AND stock <= 0)";
-        $arrRet = $objQuery->select("product_id, name", "dtb_products", $where);
-        return $arrRet;
+        $objQuery =& SC_Query::getSingletonInstance();
+        
+        $cols = "product_id, name";
+        $table = "dtb_products";
+        $where = "product_id IN ("
+                  . "SELECT product_id FROM dtb_products_class "
+                  . "WHERE stock_unlimited = ? AND stock <= 0)";
+        return $objQuery->select($cols, $table, $where, array(UNLIMITED_FLG_LIMITED));
     }
 
-    // 新規受付一覧
+    /**
+     * 新規受付一覧の取得
+     *
+     * @return array 新規受付一覧配列
+     */
     function lfGetNewOrder() {
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
+        
         $sql = "SELECT
                     ord.order_id,
                     ord.customer_id,
@@ -227,16 +283,22 @@
                     ORDER BY
                         create_date DESC LIMIT 10 OFFSET 0
                 ) AS ord";
-        $arrRet = $objQuery->getAll($sql);
-        return $arrRet;
+        $arrNewOrder = $objQuery->getAll($sql);
+        foreach ($arrNewOrder as $key => $val){
+            $arrNewOrder[$key]['create_date'] = str_replace("-", "/", substr($val['create_date'], 0,19));
+
+        }
+        return $arrNewOrder;
     }
 
     /**
      * リリース情報を取得する.
      *
-     * @return unknown
+     * @return array 取得した情報配列
      */
     function lfGetInfo() {
+        // 更新情報の取得ON/OFF確認
+        if (!ECCUBE_INFO) return array();
 
         // パラメータ「UPDATE_HTTP」が空文字の場合、処理しない。
         // XXX これと別に on/off を持たせるべきか。
@@ -251,8 +313,12 @@
         }
 
         $url = UPDATE_HTTP . $query;
-        $jsonStr = @file_get_contents($url);
 
+        // タイムアウト時間設定
+        $context = array('http' => array('timeout' => HTTP_REQUEST_TIMEOUT));
+        
+        $jsonStr = @file_get_contents($url, false, stream_context_create($context));
+
         $objJson = new Services_JSON;
         $arrTmpData = is_string($jsonStr) ? $objJson->decode($jsonStr) : null;
 
@@ -260,12 +326,10 @@
             SC_Utils_Ex::sfErrorHeader(">> 更新情報の取得に失敗しました。");
             return array();
         }
-
         $arrInfo = array();
         foreach ($arrTmpData as $objData) {
             $arrInfo[] = get_object_vars($objData);
         }
-
         return $arrInfo;
     }
 }

変更: branches/version-2_5-dev/data/mtb_constants_init.php
===================================================================
--- branches/version-2_5-dev/data/mtb_constants_init.php	2011-02-10 13:19:59 UTC (rev 20133)
+++ branches/version-2_5-dev/data/mtb_constants_init.php	2011-02-11 02:55:39 UTC (rev 20134)
@@ -598,4 +598,8 @@
 define('UNLIMITED_FLG_UNLIMITED', "1");
 /** 無制限フラグ: 制限有り */
 define('UNLIMITED_FLG_LIMITED', "0");
+/** EC-CUBE更新情報取得 (true:取得する false:取得しない) */
+define('ECCUBE_INFO', true);
+/** 外部サイトHTTP取得タイムアウト時間(秒) */
+define('HTTP_REQUEST_TIMEOUT', "5");
 ?>

変更: branches/version-2_5-dev/html/install/sql/insert_data.sql
===================================================================
--- branches/version-2_5-dev/html/install/sql/insert_data.sql	2011-02-10 13:19:59 UTC (rev 20133)
+++ branches/version-2_5-dev/html/install/sql/insert_data.sql	2011-02-11 02:55:39 UTC (rev 20134)
@@ -1267,6 +1267,8 @@
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('CSV_COLUMN_RW_FLG_KEY_FIELD', '3', 1215, 'CSV入出力列設定読み書きフラグ: キー列');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('UNLIMITED_FLG_UNLIMITED', '"1"', 1216, '無制限フラグ: 無制限');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('UNLIMITED_FLG_LIMITED', '"0"', 1217, '無制限フラグ: 制限有り');
+INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('ECCUBE_INFO', 'true', 1218, ' EC-CUBE更新情報取得 (true:取得する false:取得しない)');
+INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('HTTP_REQUEST_TIMEOUT', '"5"', 1219, '外部サイトHTTP取得タイムアウト時間(秒)');
 
 INSERT INTO dtb_index_list (table_name, column_name, recommend_flg, recommend_comment) VALUES ('dtb_customer', 'email_mobile', 0, '会員数増加時のログイン処理速度を向上させたいときに試してみてください');
 INSERT INTO dtb_index_list (table_name, column_name, recommend_flg, recommend_comment) VALUES ('dtb_products', 'name', 2, '商品名検索速度を向上させたいときに試してみてください');




Svn-src-all メーリングリストの案内