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 "DateHelper.php";
|
||||||
require_once "OsPath.php";
|
require_once "OsPath.php";
|
||||||
require_once "Database.php";
|
require_once "Database.php";
|
||||||
|
require_once "Timezone.php";
|
||||||
require_once __DIR__.'/forms/helpers/ValidationTypes.php';
|
require_once __DIR__.'/forms/helpers/ValidationTypes.php';
|
||||||
require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.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::SetDefaultFade($values["stationDefaultFade"]);
|
||||||
Application_Model_Preference::SetAllow3rdPartyApi($values["thirdPartyApi"]);
|
Application_Model_Preference::SetAllow3rdPartyApi($values["thirdPartyApi"]);
|
||||||
Application_Model_Preference::SetDefaultLocale($values["locale"]);
|
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::SetWeekStartDay($values["weekStartDay"]);
|
||||||
|
|
||||||
Application_Model_Preference::SetEnableSystemEmail($values["enableSystemEmail"]);
|
Application_Model_Preference::SetEnableSystemEmail($values["enableSystemEmail"]);
|
||||||
|
|
|
@ -74,10 +74,11 @@ class UserController extends Zend_Controller_Action
|
||||||
$user->setJabber($formData['jabber']);
|
$user->setJabber($formData['jabber']);
|
||||||
$user->save();
|
$user->save();
|
||||||
|
|
||||||
// Language settings are saved on a per-user basis
|
// Language and timezone settings are saved on a per-user basis
|
||||||
// By default, the general language setting on preferences
|
// By default, the default language, and timezone setting on
|
||||||
// page is what gets assigned.
|
// preferences page is what gets assigned.
|
||||||
Application_Model_Preference::SetUserLocale($user->getId());
|
Application_Model_Preference::SetUserLocale($user->getId());
|
||||||
|
Application_Model_Preference::SetUserTimezone($user->getId());
|
||||||
|
|
||||||
$form->reset();
|
$form->reset();
|
||||||
$this->view->form = $form;
|
$this->view->form = $form;
|
||||||
|
@ -157,6 +158,7 @@ class UserController extends Zend_Controller_Action
|
||||||
$user->setJabber($formData['cu_jabber']);
|
$user->setJabber($formData['cu_jabber']);
|
||||||
$user->save();
|
$user->save();
|
||||||
Application_Model_Preference::SetUserLocale($user->getId(), $formData['cu_locale']);
|
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->successMessage = "<div class='success'>"._("User updated successfully!")."</div>";
|
||||||
}
|
}
|
||||||
$this->view->form = $form;
|
$this->view->form = $form;
|
||||||
|
|
|
@ -12,7 +12,8 @@ class Application_Form_EditUser extends Zend_Form
|
||||||
* */
|
* */
|
||||||
|
|
||||||
$currentUser = Application_Model_User::getCurrentUser();
|
$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();
|
$notEmptyValidator = Application_Form_Helper_ValidationTypes::overrideNotEmptyValidator();
|
||||||
$emailValidator = Application_Form_Helper_ValidationTypes::overrideEmailAddressValidator();
|
$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 = new Zend_Form_Element_Select("cu_locale");
|
||||||
$locale->setLabel(_("Language:"));
|
$locale->setLabel(_("Language:"));
|
||||||
$locale->setMultiOptions(Application_Model_Locale::getLocales());
|
$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'));
|
$locale->setDecorators(array('ViewHelper'));
|
||||||
$this->addElement($locale);
|
$this->addElement($locale);
|
||||||
/*
|
|
||||||
$saveBtn = new Zend_Form_Element_Button('cu_save_user');
|
$timezone = new Zend_Form_Element_Select("cu_timezone");
|
||||||
$saveBtn->setAttrib('class', 'btn btn-small right-floated');
|
$timezone->setLabel(_("Timezone:"));
|
||||||
$saveBtn->setIgnore(true);
|
$timezone->setMultiOptions(Application_Common_Timezone::getTimezones());
|
||||||
$saveBtn->setLabel(_('Save'));
|
$timezone->setValue(Application_Model_Preference::GetUserTimezone($currentUserId));
|
||||||
$saveBtn->setDecorators(array('viewHelper'));
|
$timezone->setDecorators(array('ViewHelper'));
|
||||||
$this->addElement($saveBtn);
|
$this->addElement($timezone);
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateLogin($p_login, $p_userId) {
|
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 */
|
/* Form Element for setting the Timezone */
|
||||||
$timezone = new Zend_Form_Element_Select("timezone");
|
$timezone = new Zend_Form_Element_Select("timezone");
|
||||||
$timezone->setLabel(_("Timezone"));
|
$timezone->setLabel(_("Default Interface Timezone"));
|
||||||
$timezone->setMultiOptions($this->getTimezones());
|
$timezone->setMultiOptions(Application_Common_Timezone::getTimezones());
|
||||||
$timezone->setValue(Application_Model_Preference::GetTimezone());
|
$timezone->setValue(Application_Model_Preference::GetDefaultTimezone());
|
||||||
$timezone->setDecorators(array('ViewHelper'));
|
$timezone->setDecorators(array('ViewHelper'));
|
||||||
$this->addElement($timezone);
|
$this->addElement($timezone);
|
||||||
|
|
||||||
|
@ -76,33 +76,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
|
||||||
$this->addElement($week_start_day);
|
$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()
|
private function getWeekStartDays()
|
||||||
{
|
{
|
||||||
$days = array(
|
$days = array(
|
||||||
|
|
|
@ -434,17 +434,43 @@ class Application_Model_Preference
|
||||||
return self::getValue("description");
|
return self::getValue("description");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function SetTimezone($timezone)
|
public static function SetDefaultTimezone($timezone)
|
||||||
{
|
{
|
||||||
self::setValue("timezone", $timezone);
|
self::setValue("timezone", $timezone);
|
||||||
date_default_timezone_set($timezone);
|
date_default_timezone_set($timezone);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function GetTimezone()
|
public static function GetDefaultTimezone()
|
||||||
{
|
{
|
||||||
return self::getValue("timezone");
|
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
|
// This is the language setting on preferences page
|
||||||
public static function SetDefaultLocale($locale)
|
public static function SetDefaultLocale($locale)
|
||||||
{
|
{
|
||||||
|
|
|
@ -128,6 +128,20 @@
|
||||||
</ul>
|
</ul>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</dd>
|
</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>
|
<button id="cu_save_user" type="button" class="btn btn-small right-floated">Save</button>
|
||||||
</dl>
|
</dl>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -340,6 +340,11 @@ class AirtimeInstall
|
||||||
if ($result < 1) {
|
if ($result < 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
$sql = "INSERT INTO cc_pref (subjid, keystr, valstr) VALUES (1, 'user_1_timezone', '$defaultTimezone')";
|
||||||
|
$result = $con->exec($sql);
|
||||||
|
if ($result < 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue