Example #1
0
function getCalendarView($calendar)
{
    $context = Model_Context::getInstance();
    $current = $calendar['year'] . $calendar['month'];
    $previous = addPeriod($current, -1);
    $next = addPeriod($current, 1);
    $firstWeekday = date('w', mktime(0, 0, 0, $calendar['month'], 1, $calendar['year']));
    $lastDay = date('t', mktime(0, 0, 0, $calendar['month'], 1, $calendar['year']));
    $today = $current == Timestamp::get('Ym') ? Timestamp::get('j') : null;
    $currentMonthStr = fireEvent('ViewCalendarHead', Timestamp::format('%Y/%m', getTimeFromPeriod($current)));
    ob_start();
    ?>
    <table class="tt-calendar" cellpadding="0" cellspacing="1" style="width: 100%; table-layout: fixed">
        <caption class="cal_month">
            <a href="<?php 
    echo $context->getProperty('uri.blog');
    ?>
/archive/<?php 
    echo $previous;
    ?>
"
               title="<?php 
    echo _text('1개월 앞의 달력을 보여줍니다.');
    ?>
">&laquo;</a>
            &nbsp;
            <a href="<?php 
    echo $context->getProperty('uri.blog');
    ?>
/archive/<?php 
    echo $current;
    ?>
"
               title="<?php 
    echo _text('현재 달의 달력을 보여줍니다.');
    ?>
"><?php 
    echo $currentMonthStr;
    ?>
</a>
            &nbsp;
            <a href="<?php 
    echo $context->getProperty('uri.blog');
    ?>
/archive/<?php 
    echo $next;
    ?>
"
               title="<?php 
    echo _text('1개월 뒤의 달력을 보여줍니다.');
    ?>
">&raquo;</a>
        </caption>
        <thead>
        <tr>
            <th class="cal_week2"><?php 
    echo fireEvent('ViewCalendarHeadWeekday', _text('일요일'));
    ?>
</th>
            <th class="cal_week1"><?php 
    echo fireEvent('ViewCalendarHeadWeekday', _text('월요일'));
    ?>
</th>
            <th class="cal_week1"><?php 
    echo fireEvent('ViewCalendarHeadWeekday', _text('화요일'));
    ?>
</th>
            <th class="cal_week1"><?php 
    echo fireEvent('ViewCalendarHeadWeekday', _text('수요일'));
    ?>
</th>
            <th class="cal_week1"><?php 
    echo fireEvent('ViewCalendarHeadWeekday', _text('목요일'));
    ?>
</th>
            <th class="cal_week1"><?php 
    echo fireEvent('ViewCalendarHeadWeekday', _text('금요일'));
    ?>
</th>
            <th class="cal_week1"><?php 
    echo fireEvent('ViewCalendarHeadWeekday', _text('토요일'));
    ?>
</th>
        </tr>
        </thead>
        <tbody>
        <?php 
    $day = 0;
    $totalDays = $firstWeekday + $lastDay;
    $lastWeek = ceil($totalDays / 7);
    for ($week = 0; $week < $lastWeek; $week++) {
        // 주중에 현재 날짜가 포함되어 있으면 주를 현재 주 class(tt-current-week)를 부여한다.
        if ($today + $firstWeekday > $week * 7 && $today + $firstWeekday <= ($week + 1) * 7) {
            echo '		<tr class="cal_week cal_current_week">' . CRLF;
        } else {
            echo '		<tr class="cal_week">' . CRLF;
        }
        for ($weekday = 0; $weekday < 7; $weekday++) {
            $day++;
            $dayString = isset($calendar['days'][$day]) ? '<a class="cal_click" href="' . $context->getProperty('uri.blog') . '/archive/' . $current . ($day > 9 ? $day : "0{$day}") . '">' . $day . '</a>' : $day;
            // 일요일, 평일, 토요일별로 class를 부여한다.
            switch ($weekday) {
                case 0:
                    $className = " cal_day cal_day_sunday";
                    break;
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                    $className = " cal_day";
                    break;
            }
            // 오늘에 현재 class(tt-current-day)를 부여한다.
            $className .= $day == $today ? " cal_day4" : " cal_day3";
            if ($week == 0) {
                if ($weekday < $firstWeekday) {
                    $day--;
                    // 달의 첫째날이 되기 전의 빈 칸.
                    echo '			<td class="cal_day1">&nbsp;</td>' . CRLF;
                } else {
                    echo '			<td class="' . $className . '">' . $dayString . '</td>' . CRLF;
                }
            } else {
                if ($week == $lastWeek - 1) {
                    if ($day <= $lastDay) {
                        echo '			<td class="' . $className . '">' . $dayString . '</td>' . CRLF;
                    } else {
                        // 달의 마지막날을 넘어간 날짜 빈 칸.
                        echo '			<td class="cal_day2">&nbsp;</td>' . CRLF;
                    }
                } else {
                    echo '			<td class="' . $className . '">' . $dayString . '</td>' . CRLF;
                }
            }
        }
        echo '		</tr>' . CRLF;
        if ($day >= $lastDay) {
            break;
        }
    }
    ?>
        </tbody>
    </table>
    <?php 
    $view = ob_get_contents();
    ob_end_clean();
    return $view;
}
Example #2
0
<?php

/**
 * Convert timestamps to different formats
 */
//TODO Validate that NTP conversion is correct
require_once 'config.php';
require_once 'prop_Timestamp.php';
$ts = new Timestamp(1200685768);
if (!empty($_POST['ts'])) {
    $ts->set($_POST['ts']);
    echo 'Unix timestamp (RFC 2822): ' . date('r', $ts->get()) . '<br/>';
    echo 'NTP timestamp (RFC 2822): ' . date('r', $ts->getNTP()) . '<br/>';
    echo '<br/>';
}
?>

<form method="post" action="">
Timestamp: <input type="text" name="ts" size="15" value="<?php 
echo $ts->get();
?>
"/>
<input type="submit" class="button" value="Convert"/>
</form>
Example #3
0
 /**
  * 指定された時刻をタイムスタンプに変換します.
  * 
  * このメソッドは、引数の Timestamp オブジェクトが持つ各フィールド
  * (年月日・時分秒) の値から {@link http://www.php.net/manual/function.mktime.php mktime()}
  * を行い, その結果を返り値とします.
  * 
  * ただし, 返り値が string 型となることに注意してください.
  * 
  * @param  Timestamp $d 書式化対象の時間オブジェクト
  * @return string       指定された時刻のタイムスタンプ
  */
 public function formatTimestamp(Timestamp $d)
 {
     $hour = $d->get('hour');
     $min = $d->get('minute');
     $sec = $d->get('second');
     $month = $d->get('month');
     $date = $d->get('date');
     $year = $d->get('year');
     return strval(mktime($hour, $min, $sec, $month, $date, $year));
 }
		function getCalendarView($period = null) {
			global $service, $database, $db;

			if ((empty($period) === true) || !TimePeriod::checkPeriod($period))
				$period = Timestamp::getYearMonth();
	        $calendar = array('days' => array());
			$calendar['period'] = $period;
			$calendar['year'] = substr($period, 0, 4);
			$calendar['month'] = substr($period, 4, 2);
			if ($db->query("SELECT DISTINCT DAYOFMONTH(FROM_UNIXTIME(written)) FROM {$database['prefix']}FeedItems WHERE YEAR(FROM_UNIXTIME(written)) = {$calendar['year']} AND MONTH(FROM_UNIXTIME(written)) = {$calendar['month']}")) {
				while (list($day) = $db->fetchArray())
						array_push($calendar['days'], $day);
			}
			$calendar['days'] = array_flip($calendar['days']);

			$current = $calendar['year'] . $calendar['month'];
			$previous = TimePeriod::addPeriod($current, - 1);
			$next = TimePeriod::addPeriod($current, 1);
			$firstWeekday = date('w', mktime(0, 0, 0, $calendar['month'], 1, $calendar['year']));
			$lastDay = date('t', mktime(0, 0, 0, $calendar['month'], 1, $calendar['year']));
			$today = ($current == Timestamp::get('Ym') ? Timestamp::get('j') : null);

			$currentMonthStr = Timestamp::format('%Y.%m', TimePeriod::getTimeFromPeriod($current));

			define('CRLF', "\r\n");
			ob_start();
		?>
		<table class="calendar" cellpadding="0" cellspacing="1" style="width: 100%; table-layout: fixed">
			<caption class="cal_month">
				<?php echo $currentMonthStr;?>
			</caption>
			<thead>
				<tr>
					<th class="cal_week2"><?php echo _t('일요일');?></th>
					<th class="cal_week1"><?php echo _t('월요일');?></th>
					<th class="cal_week1"><?php echo _t('화요일');?></th>
					<th class="cal_week1"><?php echo _t('수요일');?></th>
					<th class="cal_week1"><?php echo _t('목요일');?></th>
					<th class="cal_week1"><?php echo _t('금요일');?></th>
					<th class="cal_week1"><?php echo _t('토요일');?></th>
				</tr>
			</thead>
			<tbody>
		<?php
			$day = 0;
			$totalDays = $firstWeekday + $lastDay;
			$lastWeek = ceil($totalDays / 7);

			for ($week=0; $week<$lastWeek; $week++) {
				// 주중에 현재 날짜가 포함되어 있으면 주를 현재 주 class(tt-current-week)를 부여한다.
				if (($today + $firstWeekday) >= $week * 7 && ($today + $firstWeekday) < ($week + 1) * 7) {
					echo '		<tr class="cal_week cal_current_week">'.CRLF;
				} else {
					echo '		<tr class="cal_week">'.CRLF;
				}

				for($weekday=0; $weekday<7; $weekday++) {
					$day++;
					$dayString = isset($calendar['days'][$day]) ? '<a class="cal_click" href="'.$service['path'].'/?archive='.$current.($day > 9 ? $day : "0$day").'">'.$day.'</a>' : $day;

					// 일요일, 평일, 토요일별로 class를 부여한다.
					switch ($weekday) {
						case 0:
							$className = " cal_day cal_day_sunday";
							break;
						case 1:
						case 2:
						case 3:
						case 4:
						case 5:
						case 6:
							$className = " cal_day";
							break;
					}

					// 오늘에 현재 class(tt-current-day)를 부여한다.
					$className .= $day == $today ? " cal_day4" : " cal_day3";

					if ($week == 0) {
						if ($weekday < $firstWeekday) {
							$day--;
							// 달의 첫째날이 되기 전의 빈 칸.
							echo '			<td class="cal_day1">&nbsp;</td>'.CRLF;
						} else {
							echo '			<td class="'.$className.'">'.$dayString.'</td>'.CRLF;
						}
					} else if ($week == ($lastWeek - 1)) {
						if ($day <= $lastDay) {
							echo '			<td class="'.$className.'">'.$dayString.'</td>'.CRLF;
						} else {
							// 달의 마지막날을 넘어간 날짜 빈 칸.
							echo '			<td class="cal_day2">&nbsp;</td>'.CRLF;
						}
					} else {
						echo '			<td class="'.$className.'">'.$dayString.'</td>'.CRLF;
					}
				}
				echo '		</tr>'.CRLF;

				if ($day >= $lastDay) {
					break;
				}
			}
		?>
			</tbody>
		</table>
		<?php
			$view = ob_get_contents();
			ob_end_clean();
			return $view;
		}