diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index c60840fb4..0a7824bd8 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -6,10 +6,6 @@ require_once __DIR__."/configs/ACL.php"; require_once 'propel/runtime/lib/Propel.php'; Propel::init(__DIR__."/configs/airtime-conf.php"); -//DateTime in PHP 5.3.0+ need a default timezone set. -$tz = ini_get('date.timezone') ? ini_get('date.timezone') : 'UTC'; -date_default_timezone_set($tz); - require_once __DIR__."/logging/Logging.php"; require_once __DIR__."/configs/constants.php"; require_once __DIR__."/configs/conf.php"; @@ -26,22 +22,6 @@ require_once 'RabbitMq.php'; require_once 'DateHelper.php'; require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php'; -global $CC_CONFIG, $CC_DBC; -$dsn = $CC_CONFIG['dsn']; - -$CC_DBC = DB::connect($dsn, FALSE); -if (PEAR::isError($CC_DBC)) { - echo "ERROR: ".$CC_DBC->getMessage()." ".$CC_DBC->getUserInfo()."\n"; - exit(1); -} -$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC); -Logging::setLogPath('/var/log/airtime/zendphp.log'); - -Zend_Validate::setDefaultNamespaces("Zend"); - -$front = Zend_Controller_Front::getInstance(); -$front->registerPlugin(new RabbitMqPlugin()); - class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDoctype() @@ -89,6 +69,29 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $view = $this->getResource('view'); $view->headTitle(Application_Model_Preference::GetHeadTitle()); } + + protected function _initDbConnection(){ + global $CC_CONFIG, $CC_DBC; + $dsn = $CC_CONFIG['dsn']; + $CC_DBC = DB::connect($dsn, FALSE); + if (PEAR::isError($CC_DBC)) { + echo "ERROR: ".$CC_DBC->getMessage()." ".$CC_DBC->getUserInfo()."\n"; + exit(1); + } + $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC); + + //DateTime in PHP 5.3.0+ need a default timezone set. + date_default_timezone_set(Application_Model_Preference::GetTimezone()); + } + + protected function _initMisc(){ + Logging::setLogPath('/var/log/airtime/zendphp.log'); + + Zend_Validate::setDefaultNamespaces("Zend"); + + $front = Zend_Controller_Front::getInstance(); + $front->registerPlugin(new RabbitMqPlugin()); + } } diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index cf5d29b1b..3d043cd59 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -35,6 +35,7 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetDefaultFade($values["preferences_general"]["stationDefaultFade"]); Application_Model_Preference::SetStreamLabelFormat($values["preferences_general"]["streamFormat"]); Application_Model_Preference::SetAllow3rdPartyApi($values["preferences_general"]["thirdPartyApi"]); + Application_Model_Preference::SetTimezone($values["preferences_general"]["timezone"]); Application_Model_Preference::SetDoSoundCloudUpload($values["preferences_soundcloud"]["UseSoundCloud"]); Application_Model_Preference::SetSoundCloudUser($values["preferences_soundcloud"]["SoundCloudUser"]); diff --git a/airtime_mvc/application/forms/GeneralPreferences.php b/airtime_mvc/application/forms/GeneralPreferences.php index 3e5ba710e..a2807c716 100644 --- a/airtime_mvc/application/forms/GeneralPreferences.php +++ b/airtime_mvc/application/forms/GeneralPreferences.php @@ -58,7 +58,38 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm $third_party_api->setValue(Application_Model_Preference::GetAllow3rdPartyApi()); $third_party_api->setDecorators(array('ViewHelper')); $this->addElement($third_party_api); + + /* 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->setDecorators(array('ViewHelper')); + $this->addElement($timezone); + } + + private function getTimezones(){ + $regions = array( + 'Africa' => DateTimeZone::AFRICA, + 'America' => DateTimeZone::AMERICA, + 'Antarctica' => DateTimeZone::ANTARCTICA, + 'Aisa' => DateTimeZone::ASIA, + 'Atlantic' => DateTimeZone::ATLANTIC, + '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; } diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 4d8b10cbe..dc4f6792c 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -260,6 +260,14 @@ class Application_Model_Preference public static function GetStationDescription(){ return Application_Model_Preference::GetValue("description"); } + + public static function SetTimezone($timezone){ + Application_Model_Preference::SetValue("timezone", $timezone); + } + + public static function GetTimezone(){ + return Application_Model_Preference::GetValue("timezone"); + } public static function SetStationLogo($imagePath){ if(!empty($imagePath)){ diff --git a/airtime_mvc/application/views/scripts/form/preferences_general.phtml b/airtime_mvc/application/views/scripts/form/preferences_general.phtml index 21df5c566..7e694f47e 100644 --- a/airtime_mvc/application/views/scripts/form/preferences_general.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences_general.phtml @@ -75,5 +75,20 @@ +
+ +
+
+ element->getElement('timezone') ?> + element->getElement('timezone')->hasErrors()) : ?> + + +
diff --git a/airtime_mvc/public/.htaccess b/airtime_mvc/public/.htaccess index 8a50c17ef..3dfbebfef 100644 --- a/airtime_mvc/public/.htaccess +++ b/airtime_mvc/public/.htaccess @@ -2,7 +2,6 @@ php_value post_max_size 500M php_value upload_max_filesize 500M php_value request_order "GPC" php_value session.gc_probability 0 -php_value date.timezone "America/Toronto" php_value phar.readonly Off RewriteEngine On diff --git a/install_minimal/include/AirtimeInstall.php b/install_minimal/include/AirtimeInstall.php index 78371447f..f0326ef85 100644 --- a/install_minimal/include/AirtimeInstall.php +++ b/install_minimal/include/AirtimeInstall.php @@ -294,6 +294,18 @@ class AirtimeInstall return true; } + public static function SetDefaultTimezone() + { + global $CC_DBC; + + $sql = "INSERT INTO cc_pref (keystr, valstr) VALUES ('timezone', 'America/Toronto')"; + $result = $CC_DBC->query($sql); + if (PEAR::isError($result)) { + return false; + } + return true; + } + public static function SetImportTimestamp() { global $CC_DBC; diff --git a/install_minimal/include/airtime-db-install.php b/install_minimal/include/airtime-db-install.php index c2fd837b0..87f07161d 100644 --- a/install_minimal/include/airtime-db-install.php +++ b/install_minimal/include/airtime-db-install.php @@ -50,6 +50,7 @@ AirtimeInstall::SetAirtimeVersion(AIRTIME_VERSION); // set up some keys in DB AirtimeInstall::SetUniqueId(); AirtimeInstall::SetImportTimestamp(); +AirtimeInstall::SetDefaultTimezone(); if (AirtimeInstall::$databaseTablesCreated) { diff --git a/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php new file mode 100644 index 000000000..6c9bdce85 --- /dev/null +++ b/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php @@ -0,0 +1,53 @@ +query($sql); + if (PEAR::isError($result)) { + return false; + } + return true; + } +} + +class Airtime200Upgrade{ + + public static function connectToDatabase(){ + global $CC_DBC, $CC_CONFIG; + + $values = parse_ini_file('/etc/airtime/airtime.conf', true); + + // Database config + $CC_CONFIG['dsn']['username'] = $values['database']['dbuser']; + $CC_CONFIG['dsn']['password'] = $values['database']['dbpass']; + $CC_CONFIG['dsn']['hostspec'] = $values['database']['host']; + $CC_CONFIG['dsn']['phptype'] = 'pgsql'; + $CC_CONFIG['dsn']['database'] = $values['database']['dbname']; + + $CC_DBC = DB::connect($CC_CONFIG['dsn'], FALSE); + } + +} + +Airtime200Upgrade::connectToDatabase(); +AirtimeInstall::SetDefaultTimezone();