Example #1
0
 function execute($requests)
 {
     $u = $GLOBALS['AUTH']->uid();
     // --- リクエスト変数
     $this->set("list", biz_getShisetsuList());
     //カレンダー表示用
     require_once 'Calendar/Week.php';
     $w = intval($_REQUEST['w']);
     if (empty($w)) {
         $w = 0;
     }
     $this->set('w', $w);
     $time = strtotime($w . " week");
     $Week = new Calendar_Week(date('Y', $time), date('m', $time), date('d', $time), 0);
     $Week->build();
     $calendar = array();
     $dayofweek = array('日', '月', '火', '水', '木', '金', '土');
     $i = 0;
     $schedule = array();
     while ($Day = $Week->fetch()) {
         $y = sprintf("%02d", $Day->thisYear());
         $m = sprintf("%02d", $Day->thisMonth());
         $d = sprintf("%02d", $Day->thisDay());
         $schedule = biz_getShisetsuSchedule($y, $m, $d);
         $item = array('year' => $y, 'month' => $m, 'day' => $d, 'dayofweek' => $dayofweek[$i++], 'now' => false, 'schedule' => $schedule);
         if ($w == 0 && $d == date('d')) {
             $item['now'] = true;
         }
         $calendar[] = $item;
     }
     $list = biz_getShisetsuList();
     $calendar = '';
     foreach ($list as $key => $value) {
         $calendar .= biz_getScheduleWeek($u, $value['biz_shisetsu_id'], $requests['w'], 's_list', true, true, true);
     }
     $this->set('calendar', $calendar);
     $hours = biz_makeSerialArray(23);
     //時
     $this->set("hours", $hours);
     $config = biz_getConfig();
     $this->set('inc_navi', fetch_inc_navi('h'));
     $this->set('is_closed_shisetsu', $config['IS_CLOSED_SHISETSU']);
     return 'success';
 }
function biz_getScheduleWeek($u, $member_id, $w, $cmd, $head = true, $value = true, $foot = true, $member_info = false, $start_day = 0)
{
    $inc_smarty = new OpenPNE_Smarty($GLOBALS['SMARTY']);
    $inc_smarty->assign("PHPSESSID", md5(session_id()));
    $inc_smarty->templates_dir = 'biz/templates';
    $inc_smarty->assign("cmd", $cmd);
    //操作の対象ページ
    $inc_smarty->assign("target_id", $member_id);
    //予定参加者
    require_once 'Calendar/Week.php';
    $w = intval($w);
    if (empty($w)) {
        $w = 0;
    }
    $inc_smarty->assign('w', $w);
    $time = strtotime($w . " week");
    $Week = new Calendar_Week(date('Y', $time), date('m', $time), date('d', $time), $start_day);
    $Week->build();
    $calendar = array();
    $dayofweek = array('日', '月', '火', '水', '木', '金', '土');
    $i = $start_day;
    $dayofweek = array_merge($dayofweek, array_slice($dayofweek, 0, $start_day + 1));
    $schedule = array();
    while ($Day = $Week->fetch()) {
        $y = sprintf("%02d", $Day->thisYear());
        $m = sprintf("%02d", $Day->thisMonth());
        $d = sprintf("%02d", $Day->thisDay());
        $m_disp = sprintf("%2d", $Day->thisMonth());
        $d_disp = sprintf("%2d", $Day->thisDay());
        if ($cmd != 's_list') {
            $schedule = biz_getDateMemberSchedule($y, $m, $d, $member_id, $u);
            $banner = biz_isBannerSchedule($y, $m, $d, $member_id);
            if (!empty($banner)) {
                foreach ($banner as $value) {
                    array_push($schedule, $value);
                }
            }
        } else {
            $schedule = biz_getShisetsuSchedule($y, $m, $d, $member_id);
        }
        $item = array('year' => $y, 'month' => $m, 'day' => $d, 'month_disp' => $m_disp, 'day_disp' => $d_disp, 'dayofweek' => $dayofweek[$i++], 'now' => false, 'birth' => db_member_birth4c_member_id($m, $d, $member_id), 'event' => db_commu_event4c_member_id($y, $m, $d, $member_id), 'schedule' => $schedule, 'todo' => biz_schedule_todo4c_member_id($u, $member_id, $y, $m, $d), 'holiday' => db_c_holiday_list4date($m, $d));
        if ($w == 0 && $d == date('d')) {
            $item['now'] = true;
        }
        $calendar[] = $item;
    }
    $daylist = $calendar;
    //コピー
    for ($i = 1; $i <= 2; $i++) {
        $j = $start_day;
        //曜日ポインタを示す
        $time = strtotime($w + $i . " week");
        $Week = new Calendar_Week(date('Y', $time), date('m', $time), date('d', $time), $start_day);
        $Week->build();
        while ($Day = $Week->fetch()) {
            $y = sprintf("%02d", $Day->thisYear());
            $m = sprintf("%02d", $Day->thisMonth());
            $d = sprintf("%02d", $Day->thisDay());
            $item = array('year' => $y, 'month' => $m, 'day' => $d, 'dayofweek' => $dayofweek[$j++]);
            $daylist[] = $item;
        }
    }
    $inc_smarty->assign("daylist", $daylist);
    if ($cmd == 's_list') {
        $hours = biz_makeSerialArray(23);
        //時
        $inc_smarty->assign("hours", $hours);
        $mins = biz_makeSerialArray(300, 30, 30);
        //分
        $inc_smarty->assign("mins", $mins);
        $inc_smarty->assign("list", biz_getShisetsuData($member_id));
        $config = biz_getConfig();
        $inc_smarty->assign('is_closed_shisetsu', $config['IS_CLOSED_SHISETSU']);
    }
    $inc_smarty->assign('calendar', $calendar);
    $inc_smarty->assign('head', $head);
    $inc_smarty->assign('value', $value);
    $inc_smarty->assign('foot', $foot);
    if ($member_info) {
        $inc_smarty->assign('member_info', $member_info);
    }
    if ($cmd == 'h') {
        if (OPENPNE_USE_POINT_RANK) {
            // ポイント
            $point = db_point_get_point($member_id);
            $inc_smarty->assign("point", $point);
            // ランク
            $inc_smarty->assign("rank", db_point_get_rank4point($point));
        }
    }
    $content = $inc_smarty->fetch('file:' . OPENPNE_MODULES_BIZ_DIR . '/biz/templates/inc_biz_schedule_week.tpl');
    return $content;
}
function biz_isBatting($shisetsu_id, $y, $m, $d, $begin_time, $finish_time)
{
    $list = biz_getShisetsuSchedule($y, $m, $d, $shisetsu_id);
    if (empty($list)) {
        //初めての予定登録
        return true;
    }
    $result = false;
    foreach ($list as $value) {
        //日付を演算できる値に変換
        $b_begin = strtotime($value['begin_time']);
        $b_finish = strtotime($value['finish_time']);
        $t_begin = strtotime($begin_time);
        $t_finish = strtotime($finish_time);
        //OKパターンの判別
        if ($t_begin >= $b_finish) {
            //登録される予定開始が、既存予定終了以下である
            $result = true;
        } elseif ($t_finish <= $b_begin) {
            //登録される予定終了が、既存予定開始以下である
            $result = true;
        } else {
            //OKパターンに当てはまらない予定である
            return false;
        }
    }
    return $result;
}