/** * A method to test the deliveryBlocked() method. */ function testDeliveryBlocked() { OA_setTimeZoneUTC(); $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Hour', 'comparison' => '=~', 'data' => '1,5,7,20', 'executionorder' => 1); $oLimitationHour = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); $oDate = new Date('2006-02-07 23:15:45'); for ($i = 0; $i < 24; $i++) { $oDate->addSeconds(SECONDS_PER_HOUR); if ($i == 1 || $i == 5 || $i == 7 || $i == 20) { $this->assertFalse($oLimitationHour->deliveryBlocked($oDate)); } else { $this->assertTrue($oLimitationHour->deliveryBlocked($oDate)); } } // Test timezone $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Hour', 'comparison' => '=~', 'data' => '1,5,7,20@Europe/Rome', 'executionorder' => 1); $oLimitationHour = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); $oDate = new Date('2006-02-07 23:15:45'); for ($i = 0; $i < 24; $i++) { $oDate->addSeconds(SECONDS_PER_HOUR); if ($i == 0 || $i == 4 || $i == 6 || $i == 19) { $this->assertFalse($oLimitationHour->deliveryBlocked($oDate)); } else { $this->assertTrue($oLimitationHour->deliveryBlocked($oDate)); } } OA_setTimeZoneLocal(); }
/** * Setup common variables - used by both delivery and admin part as well * * This function should be executed after the config file is read in. * * The reason behind using GLOBAL variables is that * there are faster than constants */ function setupConfigVariables() { $GLOBALS['_MAX']['MAX_DELIVERY_MULTIPLE_DELIMITER'] = '|'; $GLOBALS['_MAX']['MAX_COOKIELESS_PREFIX'] = '__'; // Set the URL access mechanism if (!empty($GLOBALS['_MAX']['CONF']['openads']['requireSSL'])) { $GLOBALS['_MAX']['HTTP'] = 'https://'; } else { if (isset($_SERVER['SERVER_PORT'])) { if (isset($GLOBALS['_MAX']['CONF']['openads']['sslPort']) && $_SERVER['SERVER_PORT'] == $GLOBALS['_MAX']['CONF']['openads']['sslPort']) { $GLOBALS['_MAX']['HTTP'] = 'https://'; } else { $GLOBALS['_MAX']['HTTP'] = 'http://'; } } } // Maximum random number (use default if doesn't exist - eg the case when application is upgraded) $GLOBALS['_MAX']['MAX_RAND'] = isset($GLOBALS['_MAX']['CONF']['priority']['randmax']) ? $GLOBALS['_MAX']['CONF']['priority']['randmax'] : 2147483647; list($micro_seconds, $seconds) = explode(" ", microtime()); $GLOBALS['_MAX']['NOW_ms'] = round(1000 * ((double) $micro_seconds + (double) $seconds)); // Always use UTC when outside the installer if (substr($_SERVER['SCRIPT_NAME'], -11) != 'install.php') { OA_setTimeZoneUTC(); } }
function testCheckTimeDay() { OA_setTimeZoneUTC(); // =~ and !~ - Single value $this->assertTrue(MAX_checkTime_Day('3', '=~', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); // Wed $this->assertTrue(MAX_checkTime_Day('3', '!~', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); // Thu // =~ and !~ - Multiple value $this->assertTrue(MAX_checkTime_Day('1,3,4', '=~', array('timestamp' => mktime(0, 0, 0, 7, 6, 2009)))); // Mon $this->assertTrue(MAX_checkTime_Day('1,3,4', '=~', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); // Thu $this->assertTrue(MAX_checkTime_Day('1,3,4', '!~', array('timestamp' => mktime(0, 0, 0, 7, 3, 2009)))); // Fri $this->assertFalse(MAX_checkTime_Day('1,3,4', '!~', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); // Wed // =~ and !~ - Single value with TZ $this->assertTrue(MAX_checkTime_Day('2@America/New_York', '=~', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); // Wed $this->assertTrue(MAX_checkTime_Day('2@America/New_York', '!~', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); // Thu // =~ and !~ - Multiple value with TZ $this->assertTrue(MAX_checkTime_Day('0,2,3@America/New_York', '=~', array('timestamp' => mktime(0, 0, 0, 7, 6, 2009)))); // Mon $this->assertTrue(MAX_checkTime_Day('0,2,3@America/New_York', '=~', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); // Thu $this->assertTrue(MAX_checkTime_Day('0,2,3@America/New_York', '!~', array('timestamp' => mktime(0, 0, 0, 7, 3, 2009)))); // Fri $this->assertFalse(MAX_checkTime_Day('0,2,3@America/New_York', '!~', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); // Wed OA_setTimeZoneLocal(); }
/** * A method to run maintenance. */ function run() { // Print a blank line in the debug log file when maintenance starts OA::debug(); // Do not run if distributed stats are enabled if (!empty($this->aConf['lb']['enabled'])) { OA::debug('Distributed stats enabled, not running maintenance tasks', PEAR_LOG_INFO); return; } // Acquire the maintenance lock $oLock =& OA_DB_AdvisoryLock::factory(); if ($oLock->get(OA_DB_ADVISORYLOCK_MAINTENANCE)) { OA::switchLogIdent('maintenance'); OA::debug(); OA::debug('Running Maintenance Engine', PEAR_LOG_INFO); // Attempt to increase PHP memory OX_increaseMemoryLimit(OX_getMinimumRequiredMemory('maintenance')); // Set UTC timezone OA_setTimeZoneUTC(); // Get last run $oLastRun = $this->getLastRun(); // Update the timestamp for old maintenance code and auto-maintenance $this->updateLastRun(); // Record the current time, and register with the OA_ServiceLocator $oDate = new Date(); $oServiceLocator =& OA_ServiceLocator::instance(); $oServiceLocator->register('now', $oDate); // Check the operation interval is valid $result = OX_OperationInterval::checkOperationIntervalValue($this->aConf['maintenance']['operationInterval']); if (PEAR::isError($result)) { // Unable to continue! $oLock->release(); OA::debug('Aborting maintenance: Invalid Operation Interval length', PEAR_LOG_CRIT); exit; } // Run the Maintenance Statistics Engine (MSE) process $this->_runMSE(); // Run the "midnight" tasks, if required if ($this->isMidnightMaintenance($oLastRun)) { $this->_runMidnightTasks(); } // Release lock before starting MPE $oLock->release(); // Run the Maintenance Priority Engine (MPE) process, ensuring that the // process always runs, even if instant update of priorities is disabled $this->_runMPE(); // Log the completion of the entire ME process OA::switchLogIdent('maintenance'); $oEndDate = new Date(); $oDateSpan = new Date_Span(); $oDateSpan->setFromDateDiff($oDate, $oEndDate); OA::debug('Maintenance Engine Completed (Started at ' . $oDate->format('%Y-%m-%d %H:%M:%S') . ' ' . $oDate->tz->getShortName() . ', taking ' . $oDateSpan->format('%H:%M:%S') . ')', PEAR_LOG_INFO); OA::switchLogIdent(); } else { OA::switchLogIdent('maintenance'); OA::debug('Maintenance Engine not run: could not acquire lock', PEAR_LOG_INFO); OA::switchLogIdent(); } }
/** * The constructor method. */ function Test_OA_Maintenance_Priority_DeliveryLimitation() { $this->UnitTestCase(); Mock::generatePartial('OA_Maintenance_Priority_DeliveryLimitation', 'Partial_MockOA_Maintenance_Priority_DeliveryLimitation', array('_getOperationInterval')); // Install the openXDeliveryLog plugin TestEnv::uninstallPluginPackage('openXDeliveryLimitations', false); TestEnv::installPluginPackage('openXDeliveryLimitations', false); OA_setTimeZoneUTC(); }
function _testImageServe($timeZone) { OA_setTimeZone($timeZone); $fileName = 'tz_test.gif'; $doImages = OA_Dal::factoryDO('images'); $doImages->filename = $fileName; $doImages->contents = ''; $this->assertTrue(DataGenerator::generateOne($doImages)); $now = time(); $this->assertTrue($timeZone == 'UTC' || date('Z', $now), 'Time zone not correctly set'); // Simulate delivery OA_setTimeZoneUTC(); $aCreative = OA_Dal_Delivery_getCreative($fileName); $this->assertTrue($aCreative); // Serve with no If-Modified-Since header unset($GLOBALS['_HEADERS']); unset($_SERVER['HTTP_IF_MODIFIED_SINCE']); MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 2, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^Last-Modified: /i', $GLOBALS['_HEADERS'][0]); $this->assertPattern('/^Content-Type: /i', $GLOBALS['_HEADERS'][1]); } // 1-day old If-Modified-Since header unset($GLOBALS['_HEADERS']); $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s', $now - 86400) . ' GMT'; MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 2, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^Last-Modified: /i', $GLOBALS['_HEADERS'][0]); $this->assertPattern('/^Content-Type: /i', $GLOBALS['_HEADERS'][1]); } // 1-day future If-Modified-Since header unset($GLOBALS['_HEADERS']); $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s', $now + 86400) . ' GMT'; MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 1, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^HTTP\\/1.0 304/i', $GLOBALS['_HEADERS'][0]); } // 1 minute ago If-Modified-Since header unset($GLOBALS['_HEADERS']); $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s', $now - 60) . ' GMT'; MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 2, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^Last-Modified: /i', $GLOBALS['_HEADERS'][0]); $this->assertPattern('/^Content-Type: /i', $GLOBALS['_HEADERS'][1]); } // 1 minute in future If-Modified-Since header unset($GLOBALS['_HEADERS']); $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s', $now + 60) . ' GMT'; MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 1, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^HTTP\\/1.0 304/i', $GLOBALS['_HEADERS'][0]); } }
/** * A method to test the deliveryBlocked() method. */ function testDeliveryBlocked() { OA_setTimeZoneUTC(); $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Day', 'comparison' => '=~', 'data' => '1,5,4,6', 'executionorder' => 1); $oLimitationDay = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); $oDate = new Date('2006-02-05'); // Sunday $this->assertTrue($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-06'); // Monday $this->assertFalse($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-07'); // Tuesday $this->assertTrue($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-08'); // Wednesday $this->assertTrue($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-09'); // Thursday $this->assertFalse($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-10'); // Friday $this->assertFalse($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-11'); // Saturday $this->assertFalse($oLimitationDay->deliveryBlocked($oDate)); // Test timezone $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Day', 'comparison' => '=~', 'data' => '1,5,4,6@America/New_York', 'executionorder' => 1); $oLimitationDay = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); $oDate = new Date('2006-02-05'); // Sunday, but Saturday in GMT-5 $this->assertFalse($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-06'); // Monday, but Sunday in GMT-5 $this->assertTrue($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-07'); // Tuesday, but Monday in GMT-5 $this->assertFalse($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-08'); // Wednesday, but Tuesday in GMT-5 $this->assertTrue($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-09'); // Thursday, but Wednesday in GMT-5 $this->assertTrue($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-10'); // Friday, but Friday in GMT-5 $this->assertFalse($oLimitationDay->deliveryBlocked($oDate)); $oDate = new Date('2006-02-11'); // Saturday, but Friday in GMT-5 $this->assertFalse($oLimitationDay->deliveryBlocked($oDate)); OA_setTimeZoneLocal(); }
/** * Check to see if this impression contains the valid date. * * @param string $limitation The date limitation * @param string $op The operator (either '==' or '!=') * @param array $aParams An array of additional parameters to be checked * @return boolean Whether this impression's date passes this limitation's test. */ function MAX_checkTime_Date($limitation, $op, $aParams = array()) { // Get timezone, if any $offset = strpos($limitation, '@'); if ($offset !== false) { $tz = substr($limitation, $offset + 1); $limitation = substr($limitation, 0, $offset); } else { $tz = false; } if ($limitation == '' && $limitation == '00000000') { return true; } $timestamp = !empty($aParams['timestamp']) ? $aParams['timestamp'] : time(); if ($tz && $tz != 'UTC') { OA_setTimeZone($tz); $date = date('Ymd', $timestamp); OA_setTimeZoneUTC(); } else { $date = gmdate('Ymd', $timestamp); } switch ($op) { case '==': return $date == $limitation; break; case '!=': return $date != $limitation; break; case '<=': return $date <= $limitation; break; case '>=': return $date >= $limitation; break; case '<': return $date < $limitation; break; case '>': return $date > $limitation; break; } return true; }
function testCheckTimeHour() { OA_setTimeZoneUTC(); // =~ and !~ - Single value $this->assertTrue(MAX_checkTime_Hour('3', '=~', array('timestamp' => mktime(3, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Hour('3', '!~', array('timestamp' => mktime(4, 0, 0, 7, 1, 2009)))); // =~ and !~ - Multiple value $this->assertTrue(MAX_checkTime_Hour('1,3,4', '=~', array('timestamp' => mktime(1, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Hour('1,3,4', '=~', array('timestamp' => mktime(4, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Hour('1,3,4', '!~', array('timestamp' => mktime(5, 0, 0, 7, 1, 2009)))); $this->assertFalse(MAX_checkTime_Hour('1,3,4', '!~', array('timestamp' => mktime(3, 0, 0, 7, 1, 2009)))); // =~ and !~ - Single value with TZ $this->assertTrue(MAX_checkTime_Hour('5@Europe/Rome', '=~', array('timestamp' => mktime(3, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Hour('5@Europe/Rome', '!~', array('timestamp' => mktime(4, 0, 0, 7, 1, 2009)))); // =~ and !~ - Multiple value with TZ $this->assertTrue(MAX_checkTime_Hour('3,5,6@Europe/Rome', '=~', array('timestamp' => mktime(1, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Hour('3,5,6@Europe/Rome', '=~', array('timestamp' => mktime(4, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Hour('3,5,6@Europe/Rome', '!~', array('timestamp' => mktime(5, 0, 0, 7, 1, 2009)))); $this->assertFalse(MAX_checkTime_Hour('3,5,6@Europe/Rome', '!~', array('timestamp' => mktime(3, 0, 0, 7, 1, 2009)))); OA_setTimeZoneLocal(); }
/** * Setup common variables - used by both delivery and admin part as well * * This function should be executed after the config file is read in. * * The reason behind using GLOBAL variables is that * there are faster than constants */ function setupConfigVariables() { $GLOBALS['_MAX']['MAX_DELIVERY_MULTIPLE_DELIMITER'] = '|'; $GLOBALS['_MAX']['MAX_COOKIELESS_PREFIX'] = '__'; $GLOBALS['_MAX']['thread_id'] = uniqid(); // Set a flag if this request was made over an SSL connection (used more for delivery rather than UI) $GLOBALS['_MAX']['SSL_REQUEST'] = false; if (!empty($_SERVER['SERVER_PORT']) && !empty($GLOBALS['_MAX']['CONF']['openads']['sslPort']) && $_SERVER['SERVER_PORT'] == $GLOBALS['_MAX']['CONF']['openads']['sslPort'] || !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) == 'on' || $_SERVER['HTTPS'] == 1) || !empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && strtolower($_SERVER['HTTP_X_FORWARDED_SSL']) == 'on' || !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) == 'on' || !empty($_SERVER['FRONT-END-HTTPS']) && strtolower($_SERVER['FRONT-END-HTTPS']) == 'on') { // This request should be treated as if it was received over an SSL connection $GLOBALS['_MAX']['SSL_REQUEST'] = true; } // Maximum random number (use default if doesn't exist - eg the case when application is upgraded) $GLOBALS['_MAX']['MAX_RAND'] = isset($GLOBALS['_MAX']['CONF']['priority']['randmax']) ? $GLOBALS['_MAX']['CONF']['priority']['randmax'] : 2147483647; list($micro_seconds, $seconds) = explode(" ", microtime()); $GLOBALS['_MAX']['NOW_ms'] = round(1000 * ((double) $micro_seconds + (double) $seconds)); // Always use UTC when outside the installer if (substr($_SERVER['SCRIPT_NAME'], -11) != 'install.php') { // Save server timezone for auto-maintenance $GLOBALS['serverTimezone'] = date_default_timezone_get(); OA_setTimeZoneUTC(); } }
function testCheckTimeDay() { OA_setTimeZoneUTC(); // All operators, active $this->assertTrue(MAX_checkTime_Date('20090701', '==', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701', '!=', array('timestamp' => mktime(0, 0, 0, 6, 30, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701', '!=', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701', '<', array('timestamp' => mktime(0, 0, 0, 6, 30, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701', '>', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701', '<=', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701', '<=', array('timestamp' => mktime(0, 0, 0, 6, 30, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701', '>=', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701', '>=', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); // All operators, inactive $this->assertFalse(MAX_checkTime_Date('20090701', '==', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701', '!=', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701', '<', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701', '>', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701', '<=', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701', '>=', array('timestamp' => mktime(0, 0, 0, 6, 30, 2009)))); // All operators, active with TZ $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '==', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '!=', array('timestamp' => mktime(0, 0, 0, 6, 30, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '!=', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '<', array('timestamp' => mktime(0, 0, 0, 6, 30, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '>', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '<=', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '<=', array('timestamp' => mktime(0, 0, 0, 6, 30, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '>=', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertTrue(MAX_checkTime_Date('20090701@Europe/Rome', '>=', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); // All operators, inactive with TZ $this->assertFalse(MAX_checkTime_Date('20090701@Europe/Rome', '==', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701@Europe/Rome', '!=', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701@Europe/Rome', '<', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701@Europe/Rome', '>', array('timestamp' => mktime(0, 0, 0, 7, 1, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701@Europe/Rome', '<=', array('timestamp' => mktime(0, 0, 0, 7, 2, 2009)))); $this->assertFalse(MAX_checkTime_Date('20090701@Europe/Rome', '>=', array('timestamp' => mktime(0, 0, 0, 6, 30, 2009)))); OA_setTimeZoneLocal(); }
/** * Check to see if this impression contains the valid day. * * @param string $limitation The day limitation * @param string $op The operator (either '==' or '!=') * @param array $aParams An array of additional parameters to be checked * @return boolean Whether this impression's day passes this limitation's test. */ function MAX_checkTime_Day($limitation, $op, $aParams = array()) { // Get timezone, if any $offset = strpos($limitation, '@'); if ($offset !== false) { $tz = substr($limitation, $offset + 1); $limitation = substr($limitation, 0, $offset); } else { $tz = false; } if ($limitation == '') { return true; } $timestamp = !empty($aParams['timestamp']) ? $aParams['timestamp'] : time(); if ($tz && $tz != 'UTC') { OA_setTimeZone($tz); $day = date('w', $timestamp); OA_setTimeZoneUTC(); } else { $day = gmdate('w', $timestamp); } return MAX_limitationsMatchArrayValue($day, $limitation, $op, $aParams); }
function setupConfigVariables() { $GLOBALS['_MAX']['MAX_DELIVERY_MULTIPLE_DELIMITER'] = '|'; $GLOBALS['_MAX']['MAX_COOKIELESS_PREFIX'] = '__'; $GLOBALS['_MAX']['thread_id'] = uniqid(); $GLOBALS['_MAX']['SSL_REQUEST'] = false; if (!empty($_SERVER['SERVER_PORT']) && !empty($GLOBALS['_MAX']['CONF']['openads']['sslPort']) && $_SERVER['SERVER_PORT'] == $GLOBALS['_MAX']['CONF']['openads']['sslPort'] || !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) == 'on' || $_SERVER['HTTPS'] == 1) || !empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && strtolower($_SERVER['HTTP_X_FORWARDED_SSL']) == 'on' || !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) == 'on' || !empty($_SERVER['FRONT-END-HTTPS']) && strtolower($_SERVER['FRONT-END-HTTPS']) == 'on') { $GLOBALS['_MAX']['SSL_REQUEST'] = true; } $GLOBALS['_MAX']['MAX_RAND'] = isset($GLOBALS['_MAX']['CONF']['priority']['randmax']) ? $GLOBALS['_MAX']['CONF']['priority']['randmax'] : 2147483647; list($micro_seconds, $seconds) = explode(" ", microtime()); $GLOBALS['_MAX']['NOW_ms'] = round(1000 * ((double) $micro_seconds + (double) $seconds)); if (substr($_SERVER['SCRIPT_NAME'], -11) != 'install.php') { $GLOBALS['serverTimezone'] = date_default_timezone_get(); OA_setTimeZoneUTC(); } }
/** * A method to test the deliveryBlocked() method. * * Test 1: Test date == delivery requirement * Test 2: Test date != delivery requirement * Test 3: Test date <= delivery requirement * Test 4: Test date >= delivery requirement * Test 5: Test date < delivery requirement * Test 6: Test date > delivery requirement * Test 7: Bad input, no date object passed to method */ function testDeliveryBlocked() { // Set timezone to UTC OA_setTimeZoneUTC(); $oDate = new Date('2005-04-03'); $oEarlierDate = new Date('2005-04-02'); $oLaterDate = new Date('2005-04-04'); $limitationData = $oDate->format('%Y%m%d@%Z'); // Test 1 $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Date', 'comparison' => '==', 'data' => $limitationData, 'executionorder' => 1); $oLimitationDate = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); // Test with same date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oDate)); // Test with ealier date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oEarlierDate)); // Test with later date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oLaterDate)); // Test 2 $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Date', 'comparison' => '!=', 'data' => $limitationData, 'executionorder' => 1); $oLimitationDate = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); // Test with same date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oDate)); // Test with ealier date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oEarlierDate)); // Test with later date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oLaterDate)); // Test 3 $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Date', 'comparison' => '<=', 'data' => $limitationData, 'executionorder' => 1); $oLimitationDate = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); // Test with same date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oDate)); // Test with ealier date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oEarlierDate)); // Test with later date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oLaterDate)); // Test 4 $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Date', 'comparison' => '>=', 'data' => $limitationData, 'executionorder' => 1); $oLimitationDate = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); // Test with same date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oDate)); // Test with ealier date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oEarlierDate)); // Test with later date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oLaterDate)); // Test 5 $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Date', 'comparison' => '<', 'data' => $limitationData, 'executionorder' => 1); $oLimitationDate = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); // Test with same date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oDate)); // Test with ealier date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oEarlierDate)); // Test with later date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oLaterDate)); // Test 6 $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Date', 'comparison' => '>', 'data' => $limitationData, 'executionorder' => 1); $oLimitationDate = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); // Test with same date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oDate)); // Test with ealier date: true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oEarlierDate)); // Test with later date: false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oLaterDate)); // Test 7 $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Date', 'comparison' => '>', 'data' => $limitationData, 'executionorder' => 1); $oLimitationDate = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); PEAR::pushErrorHandling(null); $this->assertTrue(is_a($oLimitationDate->deliveryBlocked('not a date'), 'pear_error')); PEAR::popErrorHandling(); // Test with PST timezone $limitationData = $oDate->format('%Y%m%d') . '@America/New_York'; $aDeliveryLimitation = array('ad_id' => 1, 'logical' => 'and', 'type' => 'deliveryLimitations:Time:Date', 'comparison' => '==', 'data' => $limitationData, 'executionorder' => 1); $oLimitationDate = OA_Maintenance_Priority_DeliveryLimitation_Factory::factory($aDeliveryLimitation); // Test with same date (-1 day, 19pm in EST): true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oDate)); // Test with ealier date (-2 days, 19pm in EST): true, ad is inactive $this->assertTrue($oLimitationDate->deliveryBlocked($oEarlierDate)); // Test with later date (-0 days, 19pm in EST): false, ad is active $this->assertFalse($oLimitationDate->deliveryBlocked($oLaterDate)); // Reset timezone OA_setTimeZoneLocal(); }
<?php /* +---------------------------------------------------------------------------+ | Revive Adserver | | http://www.revive-adserver.com | | | | Copyright: See the COPYRIGHT.txt file. | | License: GPLv2 or later, see the LICENSE.txt file. | +---------------------------------------------------------------------------+ */ // Require the initialisation file require_once '../../init.php'; // Required files require_once MAX_PATH . '/www/admin/config.php'; require_once MAX_PATH . '/lib/OA/Maintenance/Priority.php'; // Security check OA_Permission::enforceAccount(OA_ACCOUNT_ADMIN); /*-------------------------------------------------------*/ /* Main code */ /*-------------------------------------------------------*/ // Set timezone to UTC OA_setTimeZoneUTC(); // Run the Maintenance Priority Engine process OA_Maintenance_Priority::run(); // Rebuild cache // include_once MAX_PATH . '/lib/max/deliverycache/cache-'.$conf['delivery']['cache'].'.inc.php'; // phpAds_cacheDelete(); OX_Admin_Redirect::redirect('maintenance-priority.php');