/**
  * 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();
 }
Example #2
0
/**
 * 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);
}
Example #13
0
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');