%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/TimezoneHelper.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2017 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\libs;
use DateTime;
use DateTimeZone;
use Yii;
use yii\db\Exception;
/**
* TimezoneHelpers
*
* @author luke
*/
class TimezoneHelper
{
/**
*
* // Modified version of the timezone list function from http://stackoverflow.com/a/17355238/507629
* // Includes current time for each timezone (would help users who don't know what their timezone is)
*
* @staticvar array $regions
* @param bool $includeUTC whether or not to include UTC timeZone
* @param bool $withOffset whether or not to add offset information
* @return array
* @throws \Exception
*/
public static function generateList($includeUTC = false, $withOffset = true)
{
$regions = [
DateTimeZone::AFRICA,
DateTimeZone::AMERICA,
DateTimeZone::ANTARCTICA,
DateTimeZone::ASIA,
DateTimeZone::ATLANTIC,
DateTimeZone::AUSTRALIA,
DateTimeZone::EUROPE,
DateTimeZone::INDIAN,
DateTimeZone::PACIFIC,
];
if ($includeUTC) {
$regions[] = DateTimeZone::UTC;
}
$timezones = [];
foreach ($regions as $region) {
$timezones = array_merge($timezones, DateTimeZone::listIdentifiers($region));
}
$timezone_offsets = [];
foreach ($timezones as $timezone) {
$tz = new DateTimeZone($timezone);
$timezone_offsets[$timezone] = $tz->getOffset(new DateTime);
}
// sort timezone by timezone name
asort($timezone_offsets);
$timezone_list = [];
foreach ($timezone_offsets as $timezone => $offset) {
if ($withOffset) {
$offset_prefix = $offset < 0 ? '-' : '+';
$offset_formatted = gmdate('H:i', abs($offset));
$pretty_offset = "UTC${offset_prefix}${offset_formatted}";
$timezone_list[$timezone] = $pretty_offset . ' - ' . $timezone;
} else {
$timezone_list[$timezone] = $timezone;
}
}
return $timezone_list;
}
/**
* Returns the date time from the database connection
*
* @return DateTime
*/
public static function getDatabaseConnectionTime(): DateTime
{
$timestamp = Yii::$app->db->createCommand('SELECT NOW()')->queryScalar();
return DateTime::createFromFormat("Y-m-d H:i:s", $timestamp);
}
}