Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Intl/DateTimeFormatProvider.php')
-rw-r--r--plugins/Intl/DateTimeFormatProvider.php133
1 files changed, 133 insertions, 0 deletions
diff --git a/plugins/Intl/DateTimeFormatProvider.php b/plugins/Intl/DateTimeFormatProvider.php
new file mode 100644
index 0000000000..19fcd7acca
--- /dev/null
+++ b/plugins/Intl/DateTimeFormatProvider.php
@@ -0,0 +1,133 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Intl;
+
+use Piwik\Plugins\LanguagesManager\LanguagesManager;
+use Piwik\Translation\Translator;
+
+/**
+ * Provides date and time formats.
+ */
+class DateTimeFormatProvider extends \Piwik\Intl\Data\Provider\DateTimeFormatProvider
+{
+ protected $use12HourClock;
+
+ /**
+ * @var Translator
+ */
+ protected $translator;
+
+ public function __construct(Translator $translator)
+ {
+ $this->translator = $translator;
+ }
+
+ /**
+ * Returns the format pattern for the given format type
+ *
+ * @param int $format one of the format constants
+ *
+ * @return string
+ */
+ public function getFormatPattern($format)
+ {
+
+ switch ($format) {
+ case self::DATETIME_FORMAT_LONG:
+ $pattern = $this->translator->translate('Intl_Format_DateTime_Long');
+ break;
+
+ case self::DATETIME_FORMAT_SHORT:
+ $pattern = $this->translator->translate('Intl_Format_DateTime_Short');
+ break;
+
+ case self::DATE_FORMAT_LONG:
+ $pattern = $this->translator->translate('Intl_Format_Date_Long');
+ break;
+
+ case self::DATE_FORMAT_DAY_MONTH:
+ $pattern = $this->translator->translate('Intl_Format_Date_Day_Month');
+ break;
+
+ case self::DATE_FORMAT_SHORT:
+ $pattern = $this->translator->translate('Intl_Format_Date_Short');
+ break;
+
+ case self::DATE_FORMAT_MONTH_SHORT:
+ $pattern = $this->translator->translate('Intl_Format_Month_Short');
+ break;
+
+ case self::DATE_FORMAT_MONTH_LONG:
+ $pattern = $this->translator->translate('Intl_Format_Month_Long');
+ break;
+
+ case self::DATE_FORMAT_YEAR:
+ $pattern = $this->translator->translate('Intl_Format_Year');
+ break;
+
+ case self::TIME_FORMAT:
+ $pattern = $this->translator->translate('Intl_Format_Time');
+ break;
+
+ default:
+ $pattern = $format;
+ }
+
+ if (strpos($pattern, '{time}') !== false) {
+ $pattern = str_replace('{time}', $this->getTimeFormat(), $pattern);
+ }
+
+ return $pattern;
+ }
+
+ /**
+ * Returns interval format pattern for the given format type
+ *
+ * @param bool $short whether to return short or long format pattern
+ * @param string $maxDifference maximal difference in interval dates (Y, M or D)
+ *
+ * @return string
+ */
+ public function getRangeFormatPattern($short=false, $maxDifference='Y')
+ {
+ return $this->translator->translate(
+ sprintf(
+ 'Intl_Format_Interval_%s_%s',
+ $short ? 'Short' : 'Long',
+ $maxDifference
+ ));
+ }
+
+ protected function getTimeFormat()
+ {
+ if (is_null($this->use12HourClock)) {
+ $this->use12HourClock = LanguagesManager::uses12HourClockForCurrentUser();
+ }
+
+ $timeFormat = 'Intl_Format_Time_24';
+
+ if ($this->use12HourClock) {
+ $timeFormat = 'Intl_Format_Time_12';
+ }
+
+ $template = $this->translator->translate($timeFormat);
+
+ return $template;
+ }
+
+ /**
+ * For testing purpose only: Overwrites time format
+ *
+ * @param bool $use12HourClock
+ */
+ public function forceTimeFormat($use12HourClock = false)
+ {
+ $this->use12HourClock = $use12HourClock;
+ }
+} \ No newline at end of file