настоящее время время поста все также указывается во всплывающих подсказках
требуется наличие файла DeltaRussian.php, который можно скачать с http://forum.dklab.ru/viewtopic.php?p=35068#35068
описалово мода
Код: Выделить всё
#
#----[ COPY ]----
#
copy DeltaRussian.php to includes/Date/DeltaRussian.php
#
#----[ OPEN ]----
#
viewtopic.php
#
#----[ FIND ]----
#
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
//
#
#----[ BEFORE, ADD ]----
#
// +Posted After
include_once $phpbb_root_path . 'includes/Date/DeltaRussian.php';
$date_delta =& new Date_DeltaRussian();
$date_delta->setIntervals($lang['datetime']['intervals']);
// -Posted After
#
#----[ FIND ]----
#
$poster = ( $poster_id == ANONYMOUS ) ? $lang['Guest'] : $postrow[$i]['username'];
#
#----[ AFTER, ADD ]----
#
// +Posted After
$post_date_after = $post_date = create_date($board_config['default_dateformat'], $postrow[$i]['post_time'], $board_config['board_timezone']);
if ($i)
{
$post_date_after = sprintf(@$lang['datetime']['after'], $date_delta->spellDelta($postrow[$i - 1]['post_time'], $postrow[$i]['post_time']));
}
// -Poster After
#
#----[ FIND ]----
#
'POST_DATE' => $post_date,
#
#----[ BEFORE, ADD ]----
#
// +Posted After
'POST_DATE_AFTER' => $post_date_after,
// -Posted After
#
#----[ OPEN ]----
#
language/lang_english/lang_main.php
#
#----[ FIND ]----
#
$lang['datetime']['Dec'] = 'Dec';
#
#----[ AFTER, ADD ]----
#
// +Posted After
$lang['datetime']['after'] = '% ago';
$lang['datetime']['intervals'] = array(
'seconds' => array('second', 'seconds'),
'minutes' => array('minute', 'minutes'),
'hours' => array('hour', 'hours'),
'mday' => array('day', 'days'),
'mon' => array('month', 'months'),
'years' => array('year', 'years'),
);
// -Posted After
#
#----[ OPEN ]----
#
language/lang_russian/lang_main.php
#
#----[ FIND ]----
#
$lang['datetime']['Dec'] = 'Дек';
#
#----[ AFTER, ADD ]----
#
// +Posted After
$lang['datetime']['after'] = 'Спустя %s';
$lang['datetime']['intervals'] = array(
'seconds' => array('секунду', 'секунды', 'секунд'),
'minutes' => array('минуту', 'минуты', 'минут'),
'hours' => array('час', 'часа', 'часов'),
'mday' => array('день', 'дня', 'дней'),
'mon' => array('месяц', 'месяца', 'месяца'),
'years' => array('год', 'года', 'лет'),
);
// -Posted After
#
#----[ OPEN ]----
#
templates/subSilver/viewtopic_body.tpl
#
#----[ FIND ]----
#
{postrow.POST_DATE}
#
#----[ REPLACE WITH ]----
#
<span title="{postrow.POST_DATE}">{postrow.POST_DATE_AFTER}</span>
#
#----[ SAVE/CLOSE ALL FILES ]----
#
#
# EoM
#
все оригинальные строки закомментированы и сохранены
Код: Выделить всё
<?php
// Original of this file had been downloaded from
// http://forum.dklab.ru/viewtopic.php?p=35068#35068
class Date_DeltaRussian
{
// +Posted After
var $intervals = array(
'seconds' => array('second', 'seconds'),
'minutes' => array('minute', 'minutes'),
'hours' => array('hour', 'hours'),
'mday' => array('day', 'days'),
'mon' => array('month', 'months'),
'years' => array('year', 'years'),
);
/*
var $intervals = array(
"seconds" => array("секунду", "секунды", "секунд"),
"minutes" => array("минуту", "минуты", "минут"),
"hours" => array("час", "часа", "часов"),
"mday" => array("день", "дня", "дней"),
"mon" => array("месяц", "месяца", "месяцев"),
"year" => array("год", "года", "лет")
);
*/
// -Posted After
var $from = "seconds";
// Creates new object.
// If $from is specified, "granularity" while spelling is $from.
function Date_DeltaRussian($from = "seconds")
{
$this->from = $from;
}
// +Posted After
// Sets language dependent time intervals
// Sets single, dualis and pluralis
function setIntervals($intervals)
{
foreach ($this->intervals as $k => $v)
{
if ( isset($intervals[$k]) && is_array($intervals[$k]) )
{
$this->intervals[$k] = $intervals[$k];
while ( count($this->intervals[$k]) < 3 )
{
array_push($this->intervals[$k], end($this->intervals[$k]));
}
}
}
}
// -Posted After
// returns the associative array with date deltas.
function getDelta($first, $last)
{
if ($last < $first) return false;
// Solve H:M:S part.
$hms = ($last - $first) % (3600 * 24);
$delta['seconds'] = $hms % 60;
$delta['minutes'] = floor($hms/60) % 60;
$delta['hours'] = floor($hms/3600) % 60;
// Now work only with date, delta time = 0.
$last -= $hms;
$f = getdate($first);
$l = getdate($last); // the same daytime as $first!
$dYear = $dMon = $dDay = 0;
// Delta day. Is negative, month overlapping.
$dDay += $l['mday'] - $f['mday'];
if ($dDay < 0) {
$monlen = Date_DeltaRussian::monthLength(date("Y", $first), date("m", $first));
$dDay += $monlen;
$dMon--;
}
$delta['mday'] = $dDay;
// Delta month. If negative, year overlapping.
$dMon += $l['mon'] - $f['mon'];
if ($dMon < 0) {
$dMon += 12;
$dYear --;
}
$delta['mon'] = $dMon;
// Delta year.
$dYear += $l['year'] - $f['year'];
$delta['year'] = $dYear;
return $delta;
}
// Makes the spellable phrase.
function spellDelta($first, $last)
{
// Solve data delta.
$delta = $this->getDelta($first, $last);
if (!$delta) return false;
// Make spellable phrase.
$parts = array();
foreach (array_reverse($delta) as $k=>$n) {
if (!$n) continue;
$parts[] = Date_DeltaRussian::declension($n, $this->intervals[$k]);
if ($this->from && $k == $this->from) break;
}
return join(" ", $parts);
}
// Returns the length (in days) of the specified month.
function monthLength($year, $mon)
{
$l = 28;
while (checkdate($mon, $l+1, $year)) $l++;
return $l;
}
// +Posted After
function declension($int, $expr)
{
if (!is_array($expr)) {
return $expr;
}
while (count($expr) < 3) {
array_push($expr, end($expr));
}
$int = (int)$int;
$count = $int % 100;
if ($count >= 5 && $count <= 20) {
$return = end($expr);
} else {
$count %= 10;
if ($count == 1) {
$return = reset($expr);
} elseif ($count && $count < 5) {
reset($expr);
$return = next($expr);
} else {
$return = end($expr);
}
}
return $int . ' ' . $return;
}
/*
// Функция предназначена для вывода численных результатов с учетом
// склонения слов, например: "1 ответ", "2 ответа", "13 ответов" и т.д.
// $int - целое число.
// $expressions - массив, например: array("ответ", "ответа", "ответов")
function declension($int, $expressions)
{
settype($int, "integer");
$count = $int % 100;
if ($count >= 5 && $count <= 20) {
$result = $int." ".$expressions['2'];
} else {
$count = $count % 10;
if ($count == 1) {
$result = $int." ".$expressions['0'];
} elseif ($count >= 2 && $count <= 4) {
$result = $int." ".$expressions['1'];
} else {
$result = $int." ".$expressions['2'];
}
}
return $result;
}
*/
// -Posted After
}
?>