public function getDate() { $lang = Config::get('application.language', 'en'); if ($lang == 'en') { return DateFmt::Format('D__, AT[d# of M__ of y##]', strtotime($this->event_date), $lang); } else { return DateFmt::Format('D__, AT[d# de M__ de y##]', strtotime($this->event_date), $lang); } }
public static function event_data($event, $field) { if (!isset($event)) { return ''; } $real_field = $field; if (stripos($field, '_') && $field !== 'event_date') { $real_field = array_get(explode('_', $field), 1); } if (Input::had($field)) { return Input::old($field); } else { if ($real_field == 'event_date') { $date = $event->{$real_field}; $lang = Config::get('application.language', 'en'); return DateFmt::Format('d#my', strtotime($date), $lang); } else { return $event->{$real_field}; } } }
$result = array(); $now = time(); foreach (self::$selfTests as $key => $test) { if ($key === 'now') { $now = $test; } else { $lang = $test[0]; if (isset(self::$languages[$lang])) { array_shift($test); } else { $lang = 'en'; } list($format, $date, $expected) = $test; $timestamp = is_string($date) ? $date : $now + $date; $datefmt = new self($timestamp); $datefmt->now = $now; $datefmt->LoadLanguage($lang); $got = $datefmt->FormatAs($format); if ($got === $expected) { $result[] = false; } else { $result[] = compact('expected', 'got', 'format', 'timestamp', 'lang'); } } } return $result; } } DateFmt::$languages = array('en' => array('name' => 'English', 'number rolls' => false, 'force AT-form for AGO' => false, '12 hour time' => true, 'float delim' => '.', 'at-time' => ' at', 'AM' => 'AM', 'PM' => 'PM', 'date without year' => 'd/m', 'date with year' => 'd/m/y', 'time without seconds' => 'h:m %', 'time with seconds' => 'h:m:s %', 'full months' => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'), 'short months' => array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'), 'full days' => array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Friday', 'Thursday', 'Saturday'), 'short days' => array('Sun', 'Mon', 'Tue', 'Wed', 'Fri', 'Thu', 'Sat'), 'full year' => 'year', 'short year' => 'y.', 'AGO s' => array(' second', 's', '', 's', 's'), 'AGO short s' => 's', 'AGO i' => array(' minute', 's', '', 's', 's'), 'AGO short i' => 'min', 'AGO h' => array(' hour', 's', '', 's', 's'), 'AGO short h' => 'h', 'AGO d' => array(' day', 's', '', 's', 's'), 'AGO short d' => 'd', 'AGO o' => array(' month', 's', '', 's', 's'), 'AGO short o' => 'mon', 'AGO w' => array(' week', 's', '', 's', 's'), 'AGO short w' => 'w', 'AGO y' => array(' year', 's', '', 's', 's'), 'AGO short y' => 'y', 'AGO b0' => 'today', 'AGO short b0' => 'today', 'AGO b1' => 'yesterday', 'AGO short b1' => 'yesterday', 'AGO b2' => 'day before yesterday', 'AGO short b2' => 'day before', 'AGO future b0' => 'later today', 'AGO future short b0' => 'today', 'AGO future b1' => 'tomorrow', 'AGO future short b1' => 'tomorrow', 'AGO future b2' => 'day after tomorrow', 'AGO future short b2' => 'day after', 'half s' => 'half a second', 'half i' => 'half a minute', 'half h' => 'half an hour', 'half d' => 'half a day', 'half o' => 'half a month', 'half w' => 'half a week', 'half y' => 'half a year', 'number word' => 'n%', 'exact' => 'n% p', 'ago' => '% ago', 'in future' => 'after %'), 'ru' => array('name' => 'Русский', 'number rolls' => true, 'force AT-form for AGO' => true, '12 hour time' => false, 'float delim' => ',', 'at-time' => ' в', 'AM' => 'дня', 'PM' => 'вечера', 'time without seconds' => 'h:m', 'time with seconds' => 'h:m:s', 'date without year' => 'd.m', 'date with year' => 'd.m.y', 'full months' => array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'), 'full months-at' => array('Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря'), 'short months' => array('Янд', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'), 'full days' => array('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'), 'full days-at' => array('Воскресенье', 'Понедельник', 'Вторник', 'Среду', 'Четверг', 'Пятницу', 'Субботу'), 'short days' => array('Вос', 'Пон', 'Вто', 'Сре', 'Чет', 'Пят', 'Суб'), 'full year' => 'год', 'full year-at' => 'года', 'short year' => 'г.', 'AGO s' => array(' секунд', '', 'а', 'ы', ''), 'AGO short s' => 'с.', 'AGO i' => array(' минут', '', 'а', 'ы', ''), 'AGO short i' => 'мин', 'AGO h' => array(' час', 'ов', '', 'а', 'ов'), 'AGO short h' => 'ч', 'AGO d' => array(' ', 'дней', 'день', 'дня', 'дней'), 'AGO short d' => 'дн', 'AGO o' => array(' месяц', 'ев', '', 'а', 'ев'), 'AGO short o' => 'мес', 'AGO w' => array(' недел', 'ь', 'я', 'и', 'ь'), 'AGO short w' => 'н', 'AGO y' => array(' ', 'лет', 'год', 'года', 'лет'), 'AGO short y' => array('', 'л', 'г', 'г', 'л'), 'AGO s-at' => array(' секунд', '', 'у', 'ы', ''), 'AGO i-at' => array(' минут', '', 'у', 'ы', ''), 'AGO w-at' => array(' недел', 'ь', 'ю', 'и', 'ь'), 'AGO b0' => 'сегодня', 'AGO short b0' => 'сег.', 'AGO b1' => 'вчера', 'AGO short b1' => 'вчера', 'AGO b2' => 'позавчера', 'AGO short b2' => 'позавч.', 'AGO future b0' => 'позже сегодня', 'AGO future short b0' => 'сегодня', 'AGO future b1' => 'завтра', 'AGO future short b1' => 'завтра', 'AGO future b2' => 'послезавтра', 'AGO future short b2' => 'послез.', 'half s' => 'полсекунды', 'half i' => 'полминуты', 'half h' => 'полчаса', 'half d' => 'полдня', 'half o' => 'полмесяца', 'half w' => 'полнедели', 'half y' => 'полгода', '1.5 s' => 'полторы секунды', '1.5 i' => 'полторы минуты', '1.5 h' => 'полтора часа', '1.5 d' => 'полтора дня', '1.5 o' => 'полтора месяца', '1.5 w' => 'полторы недели', '1.5 y' => 'полтора года', 'ago' => '% назад', 'in future' => '% спустя')); DateFmt::$selfTests = array('now' => 1309519239, array('AGO[h-w]', 5, 'after 0 hours'), array('AGO[h-w]', 400, 'after 0.1 hours'), array('AGO[h-w]', 1 * 24 * 3600, 'after 1 day'), array('AGO[h-w]', 6 * 24 * 3600, 'after 6 days'), array('AGO[h-w]', 7 * 24 * 3600, 'after 1 week'), array('AGO[h-w]', 18 * 24 * 3600, 'after 3 weeks'), array('AGO[h-w]', 99 * 24 * 3600, 'after 14 weeks'), array('AGO[h-d]', 99 * 24 * 3600, 'after 99 days'), array('AGO[h-o]', 99 * 24 * 3600, 'after 3 months'), array('AGO[w]IF>2[on d##my]', 0.5 * 24 * 3600, 'after 0 weeks'), array('AGO[w]IF>2[on d##my]', 5 * 24 * 3600, 'after half a week'), array('AGO[w]IF>2[on d##my]', 13 * 24 * 3600, 'after 2 weeks'), array('AGO[w]IF>2[on d##my]', 14 * 24 * 3600, 'after 2 weeks'), array('AGO[w]IF>2[on d##my]', 15 * 24 * 3600, 'on 16/07/2011'), array('AGO[w]IF-FAR[on d##my]', 40 * 24 * 3600, 'on 10/08/2011'), array('AGO[h-d]IF-FAR[on d##my]', 29 * 24 * 3600, 'after 29 days'), array('AGO[h-d]IF-FAR[on d##my]', 30 * 24 * 3600, 'after 30 days'), array('AGO[h-d]IF-FAR[on d##my]', 31 * 24 * 3600, 'on 01/08/2011'), array('AGO[h-w]IF-FAR[on d##my]', 35 * 24 * 3600, 'on 05/08/2011'), array('AGO[h-w]IF-FAR[on d##my]', 29 * 24 * 3600, 'on 30/07/2011'), array('AGO[h-w]IF-FAR[on d##my]', 28 * 24 * 3600, 'after 4 weeks'), array('AGO[h-w]IF-FAR[on d##my]', 27 * 24 * 3600, 'after 4 weeks'), array('AGO[i]', 30, 'after half a minute'), array('AGO[i]', -59, 'half a minute ago'), array('AGO[i]', -60, '1 minute ago'), array('AGO[w.o]', 1 * 30 * 24 * 3600 + 2 * 7 * 24 * 3600, 'after 2 weeks 1 month'), array('AGO[w.o]', 2 * 30 * 24 * 3600 + 2 * 7 * 24 * 3600, 'after 2 weeks 2 months'), array('AGO[w]', 2 * 30 * 24 * 3600 + 2 * 7 * 24 * 3600, 'after 11 weeks'), array('AGO[w]', 3 * 24 * 3600, 'after 0.4 weeks'), array('AGO[w]', 5 * 24 * 3600, 'after half a week'), array('AGO[d.s.i]', 2 * 24 * 3600 + 3600 + 3, 'after 2 days 3 seconds 60 minutes'), array('AGO-SHORT[h.d.i.s]', 2 * 24 * 3600 + 3600 + 3, 'after 1h 2d 3s'), array('AGO-SHORT[h.d.i.s]', 0, '0s ago'), array('AGO-SHORT[h.d.i.s]', 1, 'after 1s'), array('AGO-SHORT[h.d.i.s]', -1, '1s ago'), array('AGO-SHORT[h.d.i.s]', 3600, 'after 1h'), array('AGO-SHORT[h.d.i.s]', -3600, '1h ago'), array('Now is D__, AT[d# of M__ y##] (h##ms).', 0, 'Now is Thursday, 1 of July 2011 (11:20:39 AM).'), array('ru', 'Сегодня D__, AT[d# M__ y##] (h##ms).', 0, 'Сегодня Пятница, 1 Июля 2011 (11:20:39).'), array('Last commit was AGO[d.h].', -40 * 24 * 3600 - 14 * 3600 - 12, 'Last commit was 40 days 14 hours ago.'), array('ru', 'Last commit was AGO[d.h].', -40 * 24 * 3600 - 14 * 3600 - 12, 'Last commit was 40 дней 14 часов назад.'), array('It was on H#:m## A.M..', '1309519239', 'It was on 11:20 AM.'), array('ru', 'Это было в H#:m## A.M..', '1309519239', 'Это было в 11:20 дня.'), array('This entry was posted AGO[*]AT D__, d# M__ y##.', -50 * 60 - 3, 'This entry was posted 50 minutes ago at Thursday, 1 July 2011.'), array('This document was created on d#my.', '1294790400', 'This document was created on 12/01/2011.'), array('ru', 'This document was created on d#my.', '1294790400', 'This document was created on 12.01.2011.'), array('A diary post saying AT[d# m__ y##] in its top right corner.', '1355270400', 'A diary post saying 12 december 2012 in its top right corner.'), array('ru', 'Записка с надписью AT[d# m__ y##] в правом верхнем углу.', '1355270400', 'Записка с надписью 12 декабря 2012 в правом верхнем углу.'), array('ru', 'Записка с надписью d# m__ y## в правом верхнем углу.', '1355270400', 'Записка с надписью 12 декабрь 2012 в правом верхнем углу.'), array('This reply was posted AGO[s-d]IF-FAR[on d#my]AT D__.', 3 * 3600, 'This reply was posted after 3 hours at Thursday.'), array('This reply was posted AGO[s-d]IF-FAR[on d#my]AT D__.', 40 * 24 * 3600, 'This reply was posted on 10/08/2011 at Wednesday.'), array('Posted at d##-M_-y# h##m (AGO[h-y]_ since last post...', 0.5 * 3600, 'Posted at 01-Jul-11 11:50 AM (half an hour since last post...'), array('...and AGO[*]_ before next reply).', -5 * 60, '...and 5 minutes before next reply).'), array('ru', 'Добавлено d##-M_-y# h##m (через AGO[h-y]_ после предыдущего сообщения...', 0.5 * 3600, 'Добавлено 01-Июл-11 11:50 (через полчаса после предыдущего сообщения...'), array('ru', '...и за AGO[*]_ перед следующим).', -5 * 60, '...и за 5 минут перед следующим).')); //var_dump(array_filter(DateFmt::RunSelfTests()));
if (count($logs) > 0) { ?> <table class="table table-striped"> <?php foreach ($logs as $log) { ?> <tr class="<?php echo $log->passed ? 'success' : 'error'; ?> "> <td><?php echo $log->message; ?> </td> <td><?php echo DateFmt::Format('AGO[t]IF-FAR[M__ d##, y##]', strtotime($log->created_at)); ?> </td> </tr> <?php } ?> </table> <?php } else { ?> <p>This test has never been run.</p> <?php } ?>