Index: core/install/cache/class_structure.php
===================================================================
--- core/install/cache/class_structure.php
+++ core/install/cache/class_structure.php
@@ -44,6 +44,7 @@
'CustomDataEventHandler' => '/core/units/custom_data/custom_data_event_handler.php',
'CustomFieldsEventHandler' => '/core/units/custom_fields/custom_fields_event_handler.php',
'CustomFieldsTagProcessor' => '/core/units/custom_fields/custom_fields_tag_processor.php',
+ 'DateHelper' => '/core/units/helpers/date_helper.php',
'Debugger' => '/core/kernel/utility/debugger.php',
'DebuggerUtil' => '/core/kernel/utility/debugger.php',
'DeploymentHelper' => '/core/units/helpers/deployment_helper.php',
@@ -604,6 +605,13 @@
0 => 'kDBTagProcessor',
),
),
+ 'DateHelper' => array(
+ 'type' => 1,
+ 'modifiers' => 0,
+ 'extends' => array(
+ 0 => 'kHelper',
+ ),
+ ),
'Debugger' => array(
'type' => 1,
'modifiers' => 0,
Index: core/install/english.lang
===================================================================
--- core/install/english.lang
+++ core/install/english.lang
@@ -1747,6 +1747,7 @@
V2luZG93cw==
eWVhcg==
WWVz
+ YWdv
U3ViLXNlY3Rpb25zIFF1YW50aXR5
TmF2aWdhdGlvbiBCYXI=
UmF0aW5n
@@ -1779,6 +1780,7 @@
SXRlbSBJcyBhIFRvcCBTZWxsZXI=
VVJM
b2Y=
+ c2luY2U=
SW52YWxpZA==
Tm90IFZhbGlkYXRlZA==
VmFsaWQ=
Index: core/kernel/utility/formatters/date_formatter.php
===================================================================
--- core/kernel/utility/formatters/date_formatter.php
+++ core/kernel/utility/formatters/date_formatter.php
@@ -24,6 +24,13 @@
var $language = null;
/**
+ * Date helper.
+ *
+ * @var DateHelper
+ */
+ protected $dateHelper;
+
+ /**
* Create date formatter
*
* @access public
@@ -293,6 +300,30 @@
return date($format, $value);
}
+ /**
+ * Formats value as relation to current time.
+ *
+ * @param integer $from Date.
+ * @param integer $level_of_detail Level of details.
+ *
+ * @return string
+ */
+ protected function relativeFormat($from, $level_of_detail)
+ {
+ if ( !isset($this->dateHelper) ) {
+ $this->dateHelper = $this->Application->recallObject('DateHelper');
+ }
+
+ if ( $from == TIMENOW ) {
+ $from = TIMENOW - 1;
+ }
+
+ $suffix = $this->Application->Phrase($from > TIMENOW ? 'lc_since' : 'lc_ago');
+ $res = $this->dateHelper->getHumanTime(abs($from - TIMENOW), $level_of_detail);
+
+ return $res . ' ' . $suffix;
+ }
+
function HumanFormat($format)
{
$patterns = Array('/m/',
@@ -510,6 +541,12 @@
return $value;
}
+ if ( preg_match('/^relative(.*)/', $options['format'], $regs) ) {
+ $detalization_level = trim($regs[1], ':');
+
+ return $this->relativeFormat($value, ($detalization_level < 1) ? 1 : $detalization_level);
+ }
+
if (!$options['use_timezone']) {
return gmmktime($hour, $minute, $second, $month, $day, $year);
}