Назначение (Отобразить)
Данное дополнение позволяет выводить дату и время в сокращённом, более удобочитаемом для пользователей виде. Например, если какое-либо из сообщений было добавлено в тему 15 минут назад, то вместо полных даты и времени в колонке Обновление (что не всегда удобно и наглядно) Вы будете видеть именно это: 15 минут назад (недавние обновления выделяются также жирным шрифтом и цветом). Вместо сегодняшней даты будет подставлено слово Сегодня, вместо вчерашней - слово Вчера. Это позволит Вашим пользователям визуально быстрее выделять последние новинки на форуме! Обновлённый формат вывода даты и времени будет доступен не только для списка разделов, тем и сообщений, но также и для многих других функций и модулей форума (например, для службы личных сообщений ЛС)
Установка (Отобразить)
Откройте файл include/fm.class.php, найдите строки:
и замените их строками:
Далее откройте файлы index.php и forums.php, в каждом из них найдите строки:
и замените их строками:
Затем откройте файл profile.php, найдите строку:
и замените её строкой:
Наконец, откройте файл messenger.php, найдите в нём фрагмент (встречается 2 раза):
Найдённый фрагмент нужно заменить на этот:
CODE:
/*
_DateFormat Форматирование даны в виде 21 Декабря, 2006 - 20:03:17
*/
function _DateFormat($time) {
$rus_m = array ('01'=>'Января','02'=>'Февраля','03'=>'Марта','04'=>'Апреля','05'=>'Мая','06'=>'Июня','07'=>'Июля','08'=>'Августа','09'=>'Сентября','10'=>'Октября','11'=>'Ноября','12'=>'Декабря');
$currDay = strftime ("%d",$time);
$currMonth = strftime ("%m",$time);
$currYear = strftime ("%Y",$time);
$tm = date("H:i:s",$time);
return $currDay.' '.$rus_m[$currMonth].', '.$currYear.' - '.$tm;
}
_DateFormat Форматирование даны в виде 21 Декабря, 2006 - 20:03:17
*/
function _DateFormat($time) {
$rus_m = array ('01'=>'Января','02'=>'Февраля','03'=>'Марта','04'=>'Апреля','05'=>'Мая','06'=>'Июня','07'=>'Июля','08'=>'Августа','09'=>'Сентября','10'=>'Октября','11'=>'Ноября','12'=>'Декабря');
$currDay = strftime ("%d",$time);
$currMonth = strftime ("%m",$time);
$currYear = strftime ("%Y",$time);
$tm = date("H:i:s",$time);
return $currDay.' '.$rus_m[$currMonth].', '.$currYear.' - '.$tm;
}
и замените их строками:
CODE:
/*
_RussianUnstemming Крайне упрощённая версия анстеммера (by yura3d)
*/
function _russianUnstemming($stem, $male, $value) {
$last = $value % 10;
if ($last >= 5 && $last <= 9 || $value >= 11 && $value <= 19 || !$last) {
return ($male) ? "{$stem}ов" : $stem;
}
else if ($last >= 2 && $last <= 4) {
return ($male) ? "{$stem}а" : "{$stem}ы";
}
return ($male) ? $stem : "{$stem}у";
}
/*
_DateFormat Форматирование даны в виде 21 Декабря, 2006 - 20:03:17
*/
function _DateFormat($time, $adv = true) {
static $rus_m = array('01' => 'января', '02' => 'февраля', '03' => 'марта', '04' => 'апреля', '05' => 'мая',
'06' => 'июня','07' => 'июля', '08' => 'августа', '09' => 'сентября', '10' => 'октября', '11' => 'ноября', '12' => 'декабря');
$currDay = strftime ("%d",$time);
$currMonth = strftime ("%m",$time);
$currYear = strftime ("%Y",$time);
$tm = date("H:i",$time);
if ($adv) {
$userTime = $this->_Nowtime + $this->user['timedif'] * 3600;
if ($userTime - $time < 60) {
return '<b>меньше минуты назад</b>';
}
else if ($userTime - $time < 18000) {
$hours = floor(($userTime - $time) / 3600);
$minutes = floor(($userTime - $time) / 60 - $hours * 60);
return '<b style="color: #a00">' . (($hours) ? $hours . ' ' . $this->_RussianUnstemming('час', true, $hours) . ' ' : '') .
(($minutes) ? $minutes . ' ' . $this->_RussianUnstemming('минут', false, $minutes) . ' ' : '') .
'назад</b>';
}
if ($currDay . $currMonth . $currYear == strftime("%d%m%Y", $userTime - 86400)) {
return "<b>Вчера — $tm</b>";
}
else if ($currDay . $currMonth . $currYear == strftime('%d%m%Y', $userTime)) {
return "<b>Сегодня — $tm</b>";
}
}
return (($currDay[0] == '0') ? $currDay[1] : $currDay).' '.$rus_m[$currMonth].' '.$currYear.' — '.$tm;
}
_RussianUnstemming Крайне упрощённая версия анстеммера (by yura3d)
*/
function _russianUnstemming($stem, $male, $value) {
$last = $value % 10;
if ($last >= 5 && $last <= 9 || $value >= 11 && $value <= 19 || !$last) {
return ($male) ? "{$stem}ов" : $stem;
}
else if ($last >= 2 && $last <= 4) {
return ($male) ? "{$stem}а" : "{$stem}ы";
}
return ($male) ? $stem : "{$stem}у";
}
/*
_DateFormat Форматирование даны в виде 21 Декабря, 2006 - 20:03:17
*/
function _DateFormat($time, $adv = true) {
static $rus_m = array('01' => 'января', '02' => 'февраля', '03' => 'марта', '04' => 'апреля', '05' => 'мая',
'06' => 'июня','07' => 'июля', '08' => 'августа', '09' => 'сентября', '10' => 'октября', '11' => 'ноября', '12' => 'декабря');
$currDay = strftime ("%d",$time);
$currMonth = strftime ("%m",$time);
$currYear = strftime ("%Y",$time);
$tm = date("H:i",$time);
if ($adv) {
$userTime = $this->_Nowtime + $this->user['timedif'] * 3600;
if ($userTime - $time < 60) {
return '<b>меньше минуты назад</b>';
}
else if ($userTime - $time < 18000) {
$hours = floor(($userTime - $time) / 3600);
$minutes = floor(($userTime - $time) / 60 - $hours * 60);
return '<b style="color: #a00">' . (($hours) ? $hours . ' ' . $this->_RussianUnstemming('час', true, $hours) . ' ' : '') .
(($minutes) ? $minutes . ' ' . $this->_RussianUnstemming('минут', false, $minutes) . ' ' : '') .
'назад</b>';
}
if ($currDay . $currMonth . $currYear == strftime("%d%m%Y", $userTime - 86400)) {
return "<b>Вчера — $tm</b>";
}
else if ($currDay . $currMonth . $currYear == strftime('%d%m%Y', $userTime)) {
return "<b>Сегодня — $tm</b>";
}
}
return (($currDay[0] == '0') ? $currDay[1] : $currDay).' '.$rus_m[$currMonth].' '.$currYear.' — '.$tm;
}
Далее откройте файлы index.php и forums.php, в каждом из них найдите строки:
CODE:
$LastTopicDate = ($forum['last_time'] > 0) ? date("d.m.Y - H:i", $forum['last_time'] + $fm->user['timedif']*3600) : $fm->LANG['NA'];
и замените их строками:
CODE:
$LastTopicDate = ($forum['last_time'] > 0) ? $fm->_DateFormat($forum['last_time'] + $fm->user['timedif'] * 3600) : $fm->LANG['NA'];
Затем откройте файл profile.php, найдите строку:
CODE:
$basetimes = $fm->_DateFormat($fm->_Nowtime);
и замените её строкой:
CODE:
$basetimes = $fm->_DateFormat($fm->_Nowtime, false);
Наконец, откройте файл messenger.php, найдите в нём фрагмент (встречается 2 раза):
CODE:
$MessageDate = date("d.m.Y - H:i", $message_id + $fm->user['timedif']*3600);
Найдённый фрагмент нужно заменить на этот:
CODE:
$MessageDate = $fm->_DateFormat($message_id + $fm->user['timedif'] * 3600);
Некоторые важные моменты (Отобразить)
- Посмотреть работу дополнения уже можно на этом форуме!
- Данное дополнение может незначительно замедлять скорость генерации тех страниц форума, на которых часто выводятся даты (например, в случае большого кол-ва разделов на главной странице форума)
- Данное дополнение не является модулем, и поэтому не имеет интерфейса управления через админку (в частности, нет возможности включения/отключения)