<?php
define('CALENDAR_ROOT', DATA_PATH
.'module/Calendar'.DIRECTORY_SEPARATOR); require_once($current_dir . "/../../../../module/Calendar/Month/Weekdays.php");
require_once(CLASS_PATH . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php");
/**
* Calendar のページクラス.
*
* @package Page
* @author LOCKON CO.,LTD.
* @version $ $
*/
class LC_Page_FrontParts_Bloc_Calendar extends LC_Page_FrontParts_Bloc {
/**
* Page を初期化する.
*
* @return void
*/
function init() {
parent::init();
$bloc_file = 'calendar.tpl';
$this->setTplMainpage($bloc_file);
// カレンダーの追加初期設定 @2009.05.12
require_once(DATA_PATH. 'calendar_conf.php');
$this->setHoliday_w = $cal_holiday;
$this->setHoliday_open = $cal_open;
$this->setHoliday_wnum = $cal_w_num;
}
/**
* Page のプロセス.
*
* @return void
*/
function process() {
if (defined("MOBILE_SITE") && MOBILE_SITE
) { $objView = new SC_MobileView();
} else {
$objView = new SC_SiteView();
}
// 定休日取得取得
$this->arrHoliday = $this->lfGetHoliday();
// カレンダーデータ取得
$this->arrCalendar = $this->lfGetCalendar(2);
$objView->assignobj($this);
$objView->display($this->tpl_mainpage);
}
/**
* モバイルページを初期化する.
*
* @return void
*/
function mobileInit() {
$this->tpl_mainpage = MOBILE_TEMPLATE_DIR . "frontparts/"
. BLOC_DIR . 'best5.tpl';
}
/**
* Page のプロセス(モバイル).
*
* @return void
*/
function mobileProcess() {
$this->process();
}
/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
// カレンダー情報取得
function lfGetCalendar($disp_month = 1){
for ($j = 0; $j <= $disp_month-1; ++$j) {
if ($month > 12) {
$month = $month%12;
$year = $year + $month%12;
}
$Month = new Calendar_Month_Weekdays($year, $month, 0);
$Month->build();
$i = 0;
while ($Day = $Month->fetch()) {
if ($month == $Day->month) {
$arrCalendar[$j][$i]['in_month'] = true;
} else {
$arrCalendar[$j][$i]['in_month'] = false;
}
$arrCalendar[$j][$i]['first'] = $Day->first;
$arrCalendar[$j][$i]['last'] = $Day->last;
$arrCalendar[$j][$i]['empty'] = $Day->empty; $arrCalendar[$j][$i]['year'] = $year;
$arrCalendar[$j][$i]['month'] = $month;
$arrCalendar[$j][$i]['day'] = $Day->day;
if ($this->lfCheckHoliday($month, $Day->day) || $Day->first || $Day->last) {
$arrCalendar[$j][$i]['holiday'] = true;
} else {
$arrCalendar[$j][$i]['holiday'] = false;
}
++$i;
}
}
return $arrCalendar;
}
// 休日取得
function lfGetHoliday() {
$objQuery = new SC_Query();
$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;
}
// 休日チェック
function lfCheckHoliday($month, $day) {
if (!empty($this->arrHoliday[$month])) { if (in_array($day, $this->arrHoliday[$month])) { return true;
}
}
return false;
}
/***
* カレンダー情報取得
* @2009.05.12追加
***/
function lfGetCalendar($disp_month = 1) {
for($j = 0; $j <= $disp_month-1; ++$j){
if($month > 12){
$month = $month%12;
$year = $year + $month;
}
$Month = new Calendar_Month_Weekdays($year, $month, 0);
$Month->build();
$i = 0;
$z = 1; // 週
$w_count = array(0,0,0,0,0,0,0); // 曜日毎のカウント
while($Day = $Month->fetch()){
if($month == $Day->month){
$arrCalendar[$j][$i]['in_month'] = true;
} else {
$arrCalendar[$j][$i]['in_month'] = false;
}
$arrCalendar[$j][$i]['first'] = $Day->first;
$arrCalendar[$j][$i]['last'] = $Day->last;
$arrCalendar[$j][$i]['empty'] = $Day->empty; $arrCalendar[$j][$i]['year'] = $year;
$arrCalendar[$j][$i]['month'] = $month;
$arrCalendar[$j][$i]['day'] = $Day->day;
// 曜日を求めたあと、曜日の出現回数をカウント
$w_day = date('w', mktime(0,0,0,$arrCalendar[$j][$i]['month'], $arrCalendar[$j][$i]['day'], $arrCalendar[$j][$i]['year']));
if($arrCalendar[$j][$i]['in_month']){
$w_count[$w_day] ++;
}
// 第何週かのカウント
if($Day->last){
$z ++;
}
// 1=日曜日、2=土曜日、3=休業日、4=その他
if($this->lfCheckHoliday($month, $Day->day)){
$arrCalendar[$j][$i]['holiday'] = 3;
} elseif($Day->first){
$arrCalendar[$j][$i]['holiday'] = 1;
} elseif($Day->last){
$arrCalendar[$j][$i]['holiday'] = 2;
} else {
$arrCalendar[$j][$i]['holiday'] = 4;
}
// 毎週○○曜日が休みの設定をオーバーライド
foreach($this->setHoliday_w as $chk){
if($w_day == $chk){
$arrCalendar[$j][$i]['holiday'] = 3;
}
}
// 第○△曜日が休みの設定をオーバーライド
if ($this->setHoliday_wnum[$w_count[$w_day]][$w_day]){
$arrCalendar[$j][$i]['holiday'] = 3;
}
// 決まった休みでも特別に営業する場合などをオーバーライド
foreach($this->setHoliday_open as $chk){
$w_day = $arrCalendar[$j][$i]['year'] . "-" . $arrCalendar[$j][$i]['month'] . "-" . $arrCalendar[$j][$i]['day'];
if($w_day == $chk){
$arrCalendar[$j][$i]['holiday'] = 4;
}
}
++$i;
}
}
return $arrCalendar;
}
}
?>