[Svn-src-all:3664] [version-2_12-dev 22576] #2155 pageクラスからdtb_holidayテーブルを直接指定している箇所をなくす

pineray admin @ mail.ec-cube.net
2013年 2月 20日 (水) 21:20:34 JST


Subversion committed to /home/svn/open 22576
http://svn.ec-cube.net/open_trac/changeset/22576
┌────────────────────────────┐
│更新者 :  pineray                                      │
│更新日時:  2013-02-20 21:20:34 +0900 (水, 20  2月 2013)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#2155 pageクラスからdtb_holidayテーブルを直接指定している箇所をなくす

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_12-dev/data/class/SC_Date.php
U   branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php

変更: branches/version-2_12-dev/data/class/SC_Date.php
===================================================================
--- branches/version-2_12-dev/data/class/SC_Date.php	2013-02-20 10:57:25 UTC (rev 22575)
+++ branches/version-2_12-dev/data/class/SC_Date.php	2013-02-20 12:20:34 UTC (rev 22576)
@@ -29,6 +29,9 @@
     var $day;
     var $end_year;
 
+    public static $arrHoliday = NULL;
+    public static $arrRegularHoliday = NULL;
+
     // コンストラクタ
     function __construct($start_year='', $end_year='')
     {
@@ -184,4 +187,58 @@
         $minutes_array = array('00'=>'00', '30'=>'30');
         return $minutes_array;
     }
+
+    /**
+     * 休日の判定.
+     * 
+     * @param integer $year
+     * @param integer $month
+     * @param integer $day
+     * @return boolean 休日の場合はtrue
+     */
+    public function isHoliday($year, $month, $day)
+    {
+        is_null(SC_Date_Ex::$arrHoliday) and $this->setArrHoliday();
+        is_null(SC_Date_Ex::$arrRegularHoliday) and $this->setRegularHoliday();
+
+        if (!empty(SC_Date_Ex::$arrHoliday[$month])) {
+            if (in_array($day, SC_Date_Ex::$arrHoliday[$month])) {
+                return true;
+            }
+        }
+        if (!empty(SC_Date_Ex::$arrRegularHoliday)) {
+            $day = date('w', mktime(0,0,0 ,$month, $day, $year));
+            if (in_array($day, SC_Date_Ex::$arrRegularHoliday)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 休日情報をスタティック変数にセット.
+     * 
+     * @return void
+     */
+    private function setArrHoliday()
+    {
+        $objHoliday = new SC_Helper_Holiday_Ex();
+        $holiday = $objHoliday->getList();
+        $arrHoliday = array();
+        foreach ($holiday AS $val) {
+            $arrHoliday[$val['month']][] = $val['day'];
+        }
+        SC_Date_Ex::$arrHoliday = $arrHoliday;
+    }
+
+    /**
+     * 定休日情報をスタティック変数にセット.
+     * 
+     * @return void
+     */
+    private function setRegularHoliday()
+    {
+        $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
+        SC_Date_Ex::$arrRegularHoliday = explode('|', $arrInfo['regular_holiday_ids']);
+    }
 }

変更: branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php	2013-02-20 10:57:25 UTC (rev 22575)
+++ branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php	2013-02-20 12:20:34 UTC (rev 22576)
@@ -67,10 +67,6 @@
     function action()
     {
 
-        // 休日取得取得
-        $this->arrHoliday = $this->lfGetHoliday();
-        // 定休日取得取得
-        $this->arrRegularHoliday = $this->lfGetRegularHoliday();
         // カレンダーデータ取得
         $this->arrCalendar = $this->lfGetCalendar(2);
 
@@ -95,6 +91,7 @@
      */
     function lfGetCalendar($disp_month = 1)
     {
+        $objDate = new SC_Date_Ex();
         $arrCalendar = array();
         $today = date('Y/m/d');
 
@@ -114,7 +111,7 @@
                 $arrCalendar[$j][$i]['year']        = $year;
                 $arrCalendar[$j][$i]['month']       = $month;
                 $arrCalendar[$j][$i]['day']         = $objDay->day;
-                $arrCalendar[$j][$i]['holiday']     = $this->lfCheckHoliday($year, $month, $objDay->day);
+                $arrCalendar[$j][$i]['holiday']     = $objDate->isHoliday($year, $month, $objDay->day);
                 $arrCalendar[$j][$i]['today']       = $today === sprintf('%04d/%02d/%02d', $year, $month, $objDay->day);
 
                 $i++;
@@ -123,59 +120,4 @@
 
         return $arrCalendar;
     }
-
-    /**
-     * 休日取得.
-     *
-     * @return array $arrHoliday 休日情報の配列を返す
-     */
-    function lfGetHoliday()
-    {
-        $objQuery = SC_Query_Ex::getSingletonInstance();
-        $objQuery->setOrder('rank DESC');
-
-        $where = 'del_flg <> 1';
-        $arrRet = $objQuery->select('month, day', 'dtb_holiday', $where);
-        foreach ($arrRet AS $key=>$val) {
-            $arrHoliday[$val['month']][] = $val['day'];
-        }
-        return $arrHoliday;
-    }
-
-    /**
-     * 定休日取得.
-     *
-     * @return array $arrRegularHoliday 定休日情報の配列を返す
-     */
-    function lfGetRegularHoliday()
-    {
-        $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
-        $arrRegularHoliday = explode('|', $arrInfo['regular_holiday_ids']);
-        return $arrRegularHoliday;
-    }
-
-    /**
-     * 休日チェック取得.
-     *
-     * @param integer $year 年
-     * @param integer $month 月
-     * @param integer $day 日
-     * @return boolean 休日の場合trueを返す
-     */
-    function lfCheckHoliday($year, $month, $day)
-    {
-        if (!empty($this->arrHoliday[$month])) {
-            if (in_array($day, $this->arrHoliday[$month])) {
-                return true;
-            }
-        }
-        if (!empty($this->arrRegularHoliday)) {
-            $day = date('w', mktime(0,0,0 ,$month, $day, $year));
-            if (in_array($day, $this->arrRegularHoliday)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
 }




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