source: branches/version-2_5-dev/data/class/pages/admin/LC_Page_Admin_Home.php @ 19729

Revision 19729, 8.2 KB checked in by Seasoft, 11 years ago (diff)

#855(SC_Query の #select, #getRow, #getCol, #get, #min, #max の引数順を統一する)

  • SC_Query#get を改訂
  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id Revision Date
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * This file is part of EC-CUBE
4 *
5 * Copyright(c) 2000-2010 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
25require_once CLASS_PATH . "pages/admin/LC_Page_Admin.php";
26require_once DATA_PATH . 'module/Request.php';
27
28/**
29 * 管理画面ホーム のページクラス.
30 *
31 * @package Page
32 * @author LOCKON CO.,LTD.
33 * @version $Id$
34 */
35class LC_Page_Admin_Home extends LC_Page_Admin {
36
37    // }}}
38    // {{{ functions
39
40    /**
41     * Page を初期化する.
42     *
43     * @return void
44     */
45    function init() {
46        parent::init();
47        $this->tpl_mainpage = 'home.tpl';
48    }
49
50    /**
51     * Page のプロセス.
52     *
53     * @return void
54     */
55    function process() {
56        $this->action();
57        $this->sendResponse();
58    }
59
60    /**
61     * Page のアクション.
62     *
63     * @return void
64     */
65    function action() {
66        $objQuery = new SC_Query();
67        $objSess = new SC_Session();
68
69        // 認証可否の判定
70        SC_Utils_Ex::sfIsSuccess($objSess);
71
72        // DBバージョンの取得
73        $objDb = new SC_Helper_DB_Ex();
74        $this->db_version = $objDb->sfGetDBVersion();
75
76        // PHPバージョンの取得
77        $this->php_version = "PHP " . phpversion();
78
79        // 現在の会員数
80        $this->customer_cnt = $this->lfGetCustomerCnt($objQuery);
81
82        // 昨日の売上高
83        $this->order_yesterday_amount = $this->lfGetOrderYesterday($objQuery, "SUM");
84
85        // 昨日の売上件数
86        $this->order_yesterday_cnt = $this->lfGetOrderYesterday($objQuery, "COUNT");
87
88        // 今月の売上高
89        $this->order_month_amount = $this->lfGetOrderMonth($objQuery, "SUM");
90
91        // 今月の売上件数
92        $this->order_month_cnt = $this->lfGetOrderMonth($objQuery, "COUNT");
93
94        // 顧客の累計ポイント
95        $this->customer_point = $this->lfGetTotalCustomerPoint();
96
97        //昨日のレビュー書き込み数
98        $this->review_yesterday_cnt = $this->lfGetReviewYesterday($objQuery);
99
100        //レビュー書き込み非表示数
101        $this->review_nondisp_cnt = $this->lfGetReviewNonDisp($objQuery);
102
103        // 品切れ商品
104        $this->arrSoldout = $this->lfGetSoldOut();
105
106        // 新規受付一覧
107        $arrNewOrder = $this->lfGetNewOrder();
108
109        foreach ($arrNewOrder as $key => $val){
110            $arrNewOrder[$key]['create_date'] = str_replace("-", "/", substr($val['create_date'], 0,19));
111
112        }
113        $this->arrNewOrder = $arrNewOrder;
114
115        // お知らせ一覧の取得
116        $this->arrInfo = $this->lfGetInfo();
117    }
118
119    /**
120     * デストラクタ.
121     *
122     * @return void
123     */
124    function destroy() {
125        parent::destroy();
126    }
127
128    // 会員数
129    function lfGetCustomerCnt(&$objQuery){
130
131        $sql = "SELECT COUNT(customer_id) FROM dtb_customer WHERE del_flg = 0 AND status = 2";
132        $return = $objQuery->getOne($sql);
133        return $return;
134    }
135
136    // 昨日の売上高・売上件数
137    function lfGetOrderYesterday(&$objQuery, $method){
138        if ( $method == 'SUM' or $method == 'COUNT'){
139            $dbFactory = SC_DB_DBFactory::getInstance();
140            $sql = $dbFactory->getOrderYesterdaySql($method);
141            $return = $objQuery->getOne($sql);
142        }
143        return $return;
144    }
145
146    function lfGetOrderMonth(&$objQuery, $method){
147
148        $month = date("Y/m", mktime());
149
150        if ( $method == 'SUM' or $method == 'COUNT'){
151            $dbFactory = SC_DB_DBFactory::getInstance();
152            $sql = $dbFactory->getOrderMonthSql($method);
153            $return = $objQuery->getOne($sql, array($month));
154        }
155        return $return;
156    }
157
158    function lfGetTotalCustomerPoint() {
159        $objQuery = new SC_Query();
160        $col = "SUM(point)";
161        $where = "del_flg = 0";
162        $from = "dtb_customer";
163        $ret = $objQuery->get($col, $from, $where);
164        return $ret;
165    }
166
167    function lfGetReviewYesterday(&$objQuery){
168        $dbFactory = SC_DB_DBFactory::getInstance();
169        $sql = $dbFactory->getReviewYesterdaySql();
170        $return = $objQuery->getOne($sql);
171        return $return;
172    }
173
174    function lfGetReviewNonDisp(&$objQuery){
175        $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";
176        $return = $objQuery->getOne($sql);
177        return $return;
178    }
179
180    // 品切れ商品IDの取得
181    function lfGetSoldOut() {
182        $objQuery = new SC_Query();
183        $where = "product_id IN (SELECT product_id FROM dtb_products_class WHERE stock_unlimited = 0 AND stock <= 0)";
184        $arrRet = $objQuery->select("product_id, name", "dtb_products", $where);
185        return $arrRet;
186    }
187
188    // 新規受付一覧
189    function lfGetNewOrder() {
190        $objQuery = new SC_Query();
191        $sql = "SELECT
192                    ord.order_id,
193                    ord.customer_id,
194                    ord.order_name01 AS name01,
195                    ord.order_name02 AS name02,
196                    ord.total,
197                    ord.create_date,
198                    (SELECT
199                        det.product_name
200                    FROM
201                        dtb_order_detail AS det
202                    WHERE
203                        ord.order_id = det.order_id LIMIT 1
204                    ) AS product_name,
205                    (SELECT
206                        pay.payment_method
207                    FROM
208                        dtb_payment AS pay
209                    WHERE
210                        ord.payment_id = pay.payment_id
211                    ) AS payment_method
212                FROM (
213                    SELECT
214                        order_id,
215                        customer_id,
216                        order_name01,
217                        order_name02,
218                        total,
219                        create_date,
220                        payment_id
221                    FROM
222                        dtb_order AS ord
223                    WHERE
224                        del_flg = 0 AND status <> " . ORDER_CANCEL . "
225                    ORDER BY
226                        create_date DESC LIMIT 10 OFFSET 0
227                ) AS ord";
228        $arrRet = $objQuery->getAll($sql);
229        return $arrRet;
230    }
231
232    /**
233     * リリース情報を取得する.
234     *
235     * @return unknown
236     */
237    function lfGetInfo() {
238
239        // パラメータ「UPDATE_HTTP」が空文字の場合、処理しない。
240        // XXX これと別に on/off を持たせるべきか。
241        if (strlen(UPDATE_HTTP) == 0) return array();
242
243        $query = '';
244        // サイト情報の送信可否設定
245        // XXX インストール時に問い合わせて送信可否設定を行うように設定すべきか。
246        // XXX (URLは強制送信すべきではないと思うが)バージョンは強制送信すべきか。
247        if (UPDATE_SEND_SITE_INFO === true) {
248            $query = '?site_url=' . SITE_URL . '&eccube_version=' . ECCUBE_VERSION;
249        }
250
251        $url = UPDATE_HTTP . $query;
252        $jsonStr = @file_get_contents($url);
253
254        $objJson = new Services_JSON;
255        $arrTmpData = is_string($jsonStr) ? $objJson->decode($jsonStr) : null;
256
257        if (empty($arrTmpData)) {
258            SC_Utils_Ex::sfErrorHeader(">> 更新情報の取得に失敗しました。");
259            return array();
260        }
261
262        $arrInfo = array();
263        foreach ($arrTmpData as $objData) {
264            $arrInfo[] = get_object_vars($objData);
265        }
266
267        return $arrInfo;
268    }
269}
270?>
Note: See TracBrowser for help on using the repository browser.