[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 メーリングリストの案内