Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Насколько актуально использовать хак PrettyDate (человеко-понятные даты)?

Насколько актуально использовать хак PrettyDate (человеко-понятные даты)?


     25.08.2019    PrettyDate    Общие вопросы по PHP, Хаки, Ламерские вопросы    902

вопрос
Здравствуйте.
Нашел на просторах сети хак под названием PrettyDate ЧПД (человеко-понятные даты).
Состоит из 2х файлов:
prettydate.php

<?php
if( ! defined( 'DATALIFEENGINE' ) ) {	die( "Hacking attempt!" );	}
include_once ( ENGINE_DIR.'/modules/prettydate-fun.php' );
echo relativeTime($thetime) . " назад";
?>

и prettydate-fun.php

<?php
if( ! defined( 'DATALIFEENGINE' ) ) {	die( "Hacking attempt!" );	}

function plural($n, $plurals) {
	$plural =
		($n % 10 == 1 && $n % 100 != 11 ? 0 :
		($n % 10 >= 2 && $n % 10 <= 4 &&
		($n % 100 < 10 or $n % 100 >= 20) ? 1 : 2));
	return $plurals[$plural];
}

function relativeTime($dt, $precision = 2) {
	$times = array(
		365*24*60*60    =>  array("год", "года", "лет"),
		30*24*60*60     =>  array("месяц", "месяца", "месяцев"),
		7*24*60*60      =>  array("неделю", "недели", "недель"),
		24*60*60        =>  array("день", "дня", "дней"),
		60*60           =>  array("час", "часа", "часов"),
		60              =>  array("минуту", "минуты", "минут"),
	);

	$diff = time() - $dt;

	if($diff < 60)	$output='меньше минуты';
	else {
		$output = array();
		$exit = 0;

		foreach($times as $period => $name) {

			if($exit >= $precision || ($exit > 0 && $period < 60)) break;
				$result = floor($diff / $period);

				if ($result > 0) {
						if($result == 1) $output[] = plural($result, $name);
						else $output[] = $result . ' ' . plural($result, $name);

						$diff -= $result * $period;
						$exit++;
				} else if ($exit > 0) $exit++;
		}
		if ($precision < 3) $sep = " и "; else $sep = ", ";

		$output = implode($sep, $output);
	}
	return $output;
}

?>

Подключается в шаблоне строкой:
{include file="engine/modules/prettydate.php?thetime={date=U}"}

На выходе:
новость опубликована: 9 минут назад... и т.д.

Насколько я понял, этот хак никак не кэшируется...
Подскажите, несет ли он какую-нибудь серьезную нагрузку и стоит ли его вообще использовать, т.к. он используется в шортстори, а новостей на сайте много?
DLE 13.2

Ответил: Sander


Использовать можно. Нагрузкой можно пренебречь. Вы же не считаете что 0.0001 сек - это нагрузка?

Работает на любой версии DLE.
Подключать только нужно с правильно заданным форматом даты.
{include file="engine/modules/prettydate.php?thetime={date=U}"}

2 комментария

doom45
Юзер

doom45 - 25 августа 2019 20:07 -

Попытался в 13 версий, надо обновить код, там какие-то ошибки были, давно было не помню точно + дописать функцию кэша для всех по таймеру.

ТeraМoune
Юзер

ТeraМoune - 25 августа 2019 20:25 -

А зачем кэш ? Суть хака как раз и предоставлять актуальную информацию, а не показывать отредактировано '9 минут назад' через 10 минут когда вывод должен быть уже '19 минут назад'.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх