/** * This will return the user timezone * @param int $user_id id of the user * @param String $forDisplay get the display, if true then return value will be formatted to the proper display * @return String depends on the value of format */ public static function getUserTime($user_id = null, $forDisplay = false) { $config = new JXConfig(); $user = JFactory::getUser($user_id); // First load account setting (if any) timezone to override timezone in language file $defaultTz = $config->getTimezone() != '' ? $config->getTimezone() : JText::_('JXLIB_DEFAULT_TIMEZONE'); $my = !$user instanceof JUser && !$user instanceof JXUser ? JXFactory::getUser() : $user; $timeZoneStr = $my->getParam('timezone'); // Second load user personalize timezone (if any) to override system default timezone $timeZoneStr = empty($timeZoneStr) ? $defaultTz : $timeZoneStr; $tz = new DateTimeZone($timeZoneStr); $date2 = new JDate('now', $tz); $offset = $date2->getOffset() / 3600; $date = new JDate(); $date->setOffset($offset); $xdate = new JXDate(); /* if the value want to be used as display purposes */ if ($forDisplay) { return $xdate->formatDate($date); } else { return $xdate->format($date); } }
/** * * $range array('month' => 2) */ public static function get($actions, $user_id, $group_id, $range, $group_by) { if ($group_by == 'hour') { // todo: db datetime is server utc, might need to calculate for offset $config = new JXConfig(); $defaultTz = $config->getTimezone() != '' ? $config->getTimezone() : JText::_('JXLIB_DEFAULT_TIMEZONE'); $my = JXFactory::getUser($user_id); $myTimeZone = $my->getParam('timezone'); // Second load user personalize timezone (if any) to override system default timezone $timeZoneStr = empty($myTimeZone) ? $defaultTz : $myTimeZone; $tz = new DateTimeZone($timeZoneStr); $date2 = new JDate('now', $tz); $offset = $date2->getOffset() / 3600; } else { $offset = 0; } $result = self::getDbRecord($actions, $user_id, $group_id, $range, $group_by, $offset); return self::formulateData($result, $group_by, $offset); }
/** * Return standardized formatted date * NOTE: FOR TEMPLATE DISPLAY PURPOSE ONLY!!! DO NOT USE FOR DB QUERIES * Also use only for server generated time, NOT */ static function formatDate($date, $long = self::LONG_DATE_FORMAT, $user = null) { // return original input date that cannot be processed if (strtotime($date) === false) { return $date; } $config = new JXConfig(); // First load account setting (if any) timezone to override timezone in language file $defaultTz = $config->getTimezone() != '' ? $config->getTimezone() : JText::_('JXLIB_DEFAULT_TIMEZONE'); $my = !$user instanceof JUser && !$user instanceof JXUser ? JXFactory::getUser() : $user; $timeZoneStr = $my->getParam('timezone'); // Second load user personalize timezone (if any) to override system default timezone $timeZoneStr = empty($timeZoneStr) ? $defaultTz : $timeZoneStr; $tz = new DateTimeZone($timeZoneStr); if ($date instanceof JDate) { $date = $date->format('Y-m-d h:i:s'); } $datenow = new JDate('now', $tz); $offset = $datenow->getOffset() / 3600; $date = new JDate($date); $date->setOffset($offset); $dateStr = $long == self::LONG_DATE_FORMAT ? $date->format(JText::_('JXLIB_DATE_FORMAT'), true) : $date->format(JText::_('JXLIB_DATE_SHORT_FORMAT'), true); if ($long == self::LONG_DATE_FORMAT) { // Test for today $dmy = $datenow->format(JText::_('JXLIB_DATE_DMY'), true); $dateStr = str_replace($dmy, JText::_('JXLIB_DATE_TODAY'), $dateStr); // Test for yesterday $datenow->modify('-1 day'); $dmy = $datenow->format(JText::_('JXLIB_DATE_DMY'), true); $dateStr = str_replace($dmy, JText::_('JXLIB_DATE_YESTERDAY'), $dateStr); } return $dateStr; }
public function getOffset($hours = false) { return C_JOOMLA_15 == 1 ? parent::getOffset() : parent::getOffsetFromGMT($hours); }