function execute($aParams) { $this->oUpgrade =& $aParams[0]; $this->oDbh =& OA_DB::singleton(); $aConf = $GLOBALS['_MAX']['CONF']['table']; $prefix = $aConf['prefix']; foreach (array('tblAppVar' => 'application_variable', 'tblAccounts' => 'accounts', 'tblAgency' => 'agency', 'tblClients' => 'clients', 'tblCampaigns' => 'campaigns', 'tblBanners' => 'banners', 'tblAcls' => 'acls', 'tblPrefs' => 'preferences', 'tblAccPrefs' => 'account_preference_assoc') as $k => $v) { ${$k} = $this->oDbh->quoteIdentifier($prefix . ($aConf[$v] ? $aConf[$v] : $v), true); } // Get admin account ID $adminAccountId = (int) $this->oDbh->queryOne("SELECT value FROM {$tblAppVar} WHERE name = 'admin_account_id'"); if (PEAR::isError($adminAccountId)) { $this->logError("No admin account ID"); return false; } // Get preference ID for timezone $tzId = $this->oDbh->queryOne("SELECT preference_id FROM {$tblPrefs} WHERE preference_name = 'timezone'"); if (empty($tzId) || PEAR::isError($tzId)) { // Upgrading from 2.4 maybe? $tzId = 0; $this->logOnly("No timezone preference available, using default server timezone"); $adminTz = date_default_timezone_get(); if (empty($adminTz)) { // C'mon you should have set the timezone in your php.ini! $this->logOnly("No default server timezone, using UTC"); $adminTz = 'UTC'; } } else { // Get admin timezone $adminTz = $this->oDbh->queryOne("SELECT value FROM {$tblAccPrefs} WHERE preference_id = {$tzId} AND account_id = {$adminAccountId}"); if (empty($adminTz) || PEAR::isError($adminTz)) { $this->logOnly("No admin timezone, using UTC"); $adminTz = 'UTC'; } } $joinList = "{$tblBanners} b JOIN\n {$tblCampaigns} ca USING (campaignid) JOIN\n {$tblClients} cl USING (clientid) JOIN\n {$tblAgency} a USING (agencyid) LEFT JOIN\n {$tblAccPrefs} p ON (p.account_id = a.account_id AND p.preference_id = {$tzId})"; $tzPart = "COALESCE(p.value, " . $this->oDbh->quote($adminTz) . ")"; $wherePart = "\n ac.bannerid = b.bannerid AND\n \tac.type LIKE 'deliveryLimitations:Time:%' AND\n \tac.data NOT LIKE '%@%'\n "; if ($this->oDbh->dbsyntax == 'pgsql') { $query = "\n UPDATE\n {$tblAcls} ac\n SET\n data = data || '@' || {$tzPart}\n FROM\n {$joinList}\n WHERE\n {$wherePart}\n "; } else { $query = "\n UPDATE\n {$tblAcls} ac,\n {$joinList}\n SET\n ac.data = CONCAT(ac.data, '@', {$tzPart})\n WHERE\n {$wherePart}\n "; } $ret = $this->oDbh->exec($query); if (PEAR::isError($ret)) { $this->logError($ret->getUserInfo()); return false; } // Rebuild ACLs $this->oUpgrade->addPostUpgradeTask('Recompile_Acls'); // Also rebuild banner cache for OX-5184 $this->oUpgrade->addPostUpgradeTask('Rebuild_Banner_Cache'); $this->logOnly("Appended timezone information to {$ret} time based delivery limitations"); return true; }
function execute($aParams) { $this->oUpgrade =& $aParams[0]; // Recompile the delivery limitations to update the compiled limitations as well $this->oUpgrade->addPostUpgradeTask('Recompile_Acls'); $this->oDbh =& OA_DB::singleton(); $aConf = $GLOBALS['_MAX']['CONF']['table']; $this->prefix = $aConf['prefix']; $this->tblPreferences = $aConf['prefix'] . ($aConf['preferences'] ? $aConf['preferences'] : 'preferences'); $this->tblAccountPreferenceAssoc = $aConf['prefix'] . ($aConf['account_preference_assoc'] ? $aConf['account_preference_assoc'] : 'account_preference_assoc'); $query = "SELECT preference_id\n FROM " . $this->oDbh->quoteIdentifier($this->tblPreferences, true) . "\n WHERE preference_name = 'auto_alter_html_banners_for_click_tracking'"; $rs = $this->oDbh->query($query); //check for error if (PEAR::isError($rs)) { $this->logError($rs->getUserInfo()); return false; } $preferenceId = $rs->fetchRow(MDB2_FETCHMODE_ASSOC); $preferenceId = $preferenceId['preference_id']; if (!empty($preferenceId)) { $sql = "DELETE FROM " . $this->oDbh->quoteIdentifier($this->tblAccountPreferenceAssoc, true) . " WHERE preference_id = {$preferenceId}"; $rs = $this->oDbh->exec($sql); //check for error if (PEAR::isError($rs)) { $this->logError($rs->getUserInfo()); return false; } $this->logOnly("Removed entries in account_preferences_assoc table related to auto_alter_html_banners_for_click_tracking"); $sql = "DELETE FROM " . $this->oDbh->quoteIdentifier($this->tblPreferences, true) . " WHERE preference_id = {$preferenceId}"; $rs = $this->oDbh->exec($sql); //check for error if (PEAR::isError($rs)) { $this->logError($rs->getUserInfo()); return false; } $this->logOnly("Removed auto_alter_html_banners_for_click_tracking preference in preferences table"); } return true; }
function testGetPostUpgradeTasks() { // create upgrade file $oUpgrade = new OA_Upgrade(); $oUpgrade->addPostUpgradeTask('Test_1'); $oUpgrade->addPostUpgradeTask('Test_2'); $oUpgrade->addPostUpgradeTask('Test_3'); $this->assertTrue($oUpgrade->_writePostUpgradeTasksFile()); $result = $oUpgrade->getPostUpgradeTasks(); $this->assertEqual($result, array('Test_1', 'Test_2', 'Test_3')); // clean upgrade file $this->assertTrue($oUpgrade->pickupPostUpgradeTasksFile()); }