CC-4816: Timezones should be a user preference
-done
This commit is contained in:
parent
f887ca3d8d
commit
db62b538dd
9 changed files with 98 additions and 46 deletions
|
@ -10,6 +10,7 @@ require_once 'Preference.php';
|
|||
require_once "DateHelper.php";
|
||||
require_once "OsPath.php";
|
||||
require_once "Database.php";
|
||||
require_once "Timezone.php";
|
||||
require_once __DIR__.'/forms/helpers/ValidationTypes.php';
|
||||
require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
|
||||
|
||||
|
|
31
airtime_mvc/application/common/Timezone.php
Normal file
31
airtime_mvc/application/common/Timezone.php
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
class Application_Common_Timezone
|
||||
{
|
||||
public static function getTimezones()
|
||||
{
|
||||
$regions = array(
|
||||
'Africa' => DateTimeZone::AFRICA,
|
||||
'America' => DateTimeZone::AMERICA,
|
||||
'Antarctica' => DateTimeZone::ANTARCTICA,
|
||||
'Arctic' => DateTimeZone::ARCTIC,
|
||||
'Asia' => DateTimeZone::ASIA,
|
||||
'Atlantic' => DateTimeZone::ATLANTIC,
|
||||
'Australia' => DateTimeZone::AUSTRALIA,
|
||||
'Europe' => DateTimeZone::EUROPE,
|
||||
'Indian' => DateTimeZone::INDIAN,
|
||||
'Pacific' => DateTimeZone::PACIFIC
|
||||
);
|
||||
|
||||
$tzlist = array();
|
||||
|
||||
foreach ($regions as $name => $mask) {
|
||||
$ids = DateTimeZone::listIdentifiers($mask);
|
||||
foreach ($ids as $id) {
|
||||
$tzlist[$id] = str_replace("_", " ", $id);
|
||||
}
|
||||
}
|
||||
|
||||
return $tzlist;
|
||||
}
|
||||
}
|
|
@ -45,7 +45,7 @@ class PreferenceController extends Zend_Controller_Action
|
|||
Application_Model_Preference::SetDefaultFade($values["stationDefaultFade"]);
|
||||
Application_Model_Preference::SetAllow3rdPartyApi($values["thirdPartyApi"]);
|
||||
Application_Model_Preference::SetDefaultLocale($values["locale"]);
|
||||
Application_Model_Preference::SetTimezone($values["timezone"]);
|
||||
Application_Model_Preference::SetDefaultTimezone($values["timezone"]);
|
||||
Application_Model_Preference::SetWeekStartDay($values["weekStartDay"]);
|
||||
|
||||
Application_Model_Preference::SetEnableSystemEmail($values["enableSystemEmail"]);
|
||||
|
|
|
@ -74,10 +74,11 @@ class UserController extends Zend_Controller_Action
|
|||
$user->setJabber($formData['jabber']);
|
||||
$user->save();
|
||||
|
||||
// Language settings are saved on a per-user basis
|
||||
// By default, the general language setting on preferences
|
||||
// page is what gets assigned.
|
||||
// Language and timezone settings are saved on a per-user basis
|
||||
// By default, the default language, and timezone setting on
|
||||
// preferences page is what gets assigned.
|
||||
Application_Model_Preference::SetUserLocale($user->getId());
|
||||
Application_Model_Preference::SetUserTimezone($user->getId());
|
||||
|
||||
$form->reset();
|
||||
$this->view->form = $form;
|
||||
|
@ -157,6 +158,7 @@ class UserController extends Zend_Controller_Action
|
|||
$user->setJabber($formData['cu_jabber']);
|
||||
$user->save();
|
||||
Application_Model_Preference::SetUserLocale($user->getId(), $formData['cu_locale']);
|
||||
Application_Model_Preference::SetUserTimezone($user->getId(), $formData['cu_timezone']);
|
||||
$this->view->successMessage = "<div class='success'>"._("User updated successfully!")."</div>";
|
||||
}
|
||||
$this->view->form = $form;
|
||||
|
|
|
@ -12,7 +12,8 @@ class Application_Form_EditUser extends Zend_Form
|
|||
* */
|
||||
|
||||
$currentUser = Application_Model_User::getCurrentUser();
|
||||
$userData = Application_Model_User::GetUserData($currentUser->getId());
|
||||
$currentUserId = $currentUser->getId();
|
||||
$userData = Application_Model_User::GetUserData($currentUserId);
|
||||
$notEmptyValidator = Application_Form_Helper_ValidationTypes::overrideNotEmptyValidator();
|
||||
$emailValidator = Application_Form_Helper_ValidationTypes::overrideEmailAddressValidator();
|
||||
|
||||
|
@ -100,17 +101,16 @@ class Application_Form_EditUser extends Zend_Form
|
|||
$locale = new Zend_Form_Element_Select("cu_locale");
|
||||
$locale->setLabel(_("Language:"));
|
||||
$locale->setMultiOptions(Application_Model_Locale::getLocales());
|
||||
$locale->setValue(Application_Model_Preference::GetUserLocale($currentUser->getId()));
|
||||
$locale->setValue(Application_Model_Preference::GetUserLocale($currentUserId));
|
||||
$locale->setDecorators(array('ViewHelper'));
|
||||
$this->addElement($locale);
|
||||
/*
|
||||
$saveBtn = new Zend_Form_Element_Button('cu_save_user');
|
||||
$saveBtn->setAttrib('class', 'btn btn-small right-floated');
|
||||
$saveBtn->setIgnore(true);
|
||||
$saveBtn->setLabel(_('Save'));
|
||||
$saveBtn->setDecorators(array('viewHelper'));
|
||||
$this->addElement($saveBtn);
|
||||
*/
|
||||
|
||||
$timezone = new Zend_Form_Element_Select("cu_timezone");
|
||||
$timezone->setLabel(_("Timezone:"));
|
||||
$timezone->setMultiOptions(Application_Common_Timezone::getTimezones());
|
||||
$timezone->setValue(Application_Model_Preference::GetUserTimezone($currentUserId));
|
||||
$timezone->setDecorators(array('ViewHelper'));
|
||||
$this->addElement($timezone);
|
||||
}
|
||||
|
||||
public function validateLogin($p_login, $p_userId) {
|
||||
|
|
|
@ -61,9 +61,9 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
|
|||
|
||||
/* Form Element for setting the Timezone */
|
||||
$timezone = new Zend_Form_Element_Select("timezone");
|
||||
$timezone->setLabel(_("Timezone"));
|
||||
$timezone->setMultiOptions($this->getTimezones());
|
||||
$timezone->setValue(Application_Model_Preference::GetTimezone());
|
||||
$timezone->setLabel(_("Default Interface Timezone"));
|
||||
$timezone->setMultiOptions(Application_Common_Timezone::getTimezones());
|
||||
$timezone->setValue(Application_Model_Preference::GetDefaultTimezone());
|
||||
$timezone->setDecorators(array('ViewHelper'));
|
||||
$this->addElement($timezone);
|
||||
|
||||
|
@ -76,33 +76,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
|
|||
$this->addElement($week_start_day);
|
||||
}
|
||||
|
||||
private function getTimezones()
|
||||
{
|
||||
$regions = array(
|
||||
'Africa' => DateTimeZone::AFRICA,
|
||||
'America' => DateTimeZone::AMERICA,
|
||||
'Antarctica' => DateTimeZone::ANTARCTICA,
|
||||
'Arctic' => DateTimeZone::ARCTIC,
|
||||
'Asia' => DateTimeZone::ASIA,
|
||||
'Atlantic' => DateTimeZone::ATLANTIC,
|
||||
'Australia' => DateTimeZone::AUSTRALIA,
|
||||
'Europe' => DateTimeZone::EUROPE,
|
||||
'Indian' => DateTimeZone::INDIAN,
|
||||
'Pacific' => DateTimeZone::PACIFIC
|
||||
);
|
||||
|
||||
$tzlist = array();
|
||||
|
||||
foreach ($regions as $name => $mask) {
|
||||
$ids = DateTimeZone::listIdentifiers($mask);
|
||||
foreach ($ids as $id) {
|
||||
$tzlist[$id] = str_replace("_", " ", $id);
|
||||
}
|
||||
}
|
||||
|
||||
return $tzlist;
|
||||
}
|
||||
|
||||
private function getWeekStartDays()
|
||||
{
|
||||
$days = array(
|
||||
|
|
|
@ -434,17 +434,43 @@ class Application_Model_Preference
|
|||
return self::getValue("description");
|
||||
}
|
||||
|
||||
public static function SetTimezone($timezone)
|
||||
public static function SetDefaultTimezone($timezone)
|
||||
{
|
||||
self::setValue("timezone", $timezone);
|
||||
date_default_timezone_set($timezone);
|
||||
}
|
||||
|
||||
public static function GetTimezone()
|
||||
public static function GetDefaultTimezone()
|
||||
{
|
||||
return self::getValue("timezone");
|
||||
}
|
||||
|
||||
public static function SetUserTimezone($userId, $timezone = null)
|
||||
{
|
||||
// When a new user is created they will get the default timezone
|
||||
// setting which the admin sets on preferences page
|
||||
if (is_null($timezone)) {
|
||||
$timezone = self::GetDefaultTimezone();
|
||||
}
|
||||
self::setValue("user_".$userId."_timezone", $timezone, true, $userId);
|
||||
}
|
||||
|
||||
public static function GetUserTimezone($id)
|
||||
{
|
||||
return self::getValue("user_".$id."_timezone", true);
|
||||
}
|
||||
|
||||
public static function GetTimezone()
|
||||
{
|
||||
$auth = Zend_Auth::getInstance();
|
||||
if ($auth->hasIdentity()) {
|
||||
$id = $auth->getIdentity()->id;
|
||||
return self::GetUserTimezone($id);
|
||||
} else {
|
||||
return self::GetDefaultTimezone();
|
||||
}
|
||||
}
|
||||
|
||||
// This is the language setting on preferences page
|
||||
public static function SetDefaultLocale($locale)
|
||||
{
|
||||
|
|
|
@ -128,6 +128,20 @@
|
|||
</ul>
|
||||
<?php endif; ?>
|
||||
</dd>
|
||||
<dt id="cu-timezone-label">
|
||||
<label><?php echo $this->element->getElement('cu_timezone')->getLabel() ?>
|
||||
</label>
|
||||
</dt>
|
||||
<dd id="cu-timezone-element">
|
||||
<?php echo $this->element->getElement('cu_timezone') ?>
|
||||
<?php if($this->element->getElement('cu_timezone')->hasErrors()) : ?>
|
||||
<ul class='errors'>
|
||||
<?php foreach($this->element->getElement('cu_timezone')->getMessages() as $error): ?>
|
||||
<li><?php echo $error; ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
</dd>
|
||||
<button id="cu_save_user" type="button" class="btn btn-small right-floated">Save</button>
|
||||
</dl>
|
||||
</form>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue