/**
  * @return Tinebase_Model_ImportFilter
  */
 public function getScheduledImportFilter()
 {
     $timestampBefore = null;
     $now = new Tinebase_DateTime();
     $anHourAgo = clone $now;
     $anHourAgo->subHour(1);
     $aDayAgo = clone $now;
     $aDayAgo->subDay(1);
     $aWeekAgo = clone $now;
     $aWeekAgo->subWeek(1);
     $filter = new Tinebase_Model_ImportFilter(array(array(array('field' => 'failcount', 'operator' => 'greater', 'value' => 5)), array('condition' => 'OR', 'filters' => array(array('field' => 'timestamp', 'operator' => 'isnull', 'value' => null), array('condition' => 'AND', 'filters' => array(array('field' => 'interval', 'operator' => 'equals', 'value' => Tinebase_Model_Import::INTERVAL_HOURLY), array('field' => 'timestamp', 'operator' => 'before', 'value' => $anHourAgo))), array('condition' => 'AND', 'filters' => array(array('field' => 'interval', 'operator' => 'equals', 'value' => Tinebase_Model_Import::INTERVAL_DAILY), array('field' => 'timestamp', 'operator' => 'before', 'value' => $aDayAgo))), array('condition' => 'AND', 'filters' => array(array('field' => 'interval', 'operator' => 'equals', 'value' => Tinebase_Model_Import::INTERVAL_WEEKLY), array('field' => 'timestamp', 'operator' => 'before', 'value' => $aWeekAgo)))))));
     if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
         Tinebase_Core::getLogger()->trace(__METHOD__ . ' ' . __LINE__ . ' Filter used: ' . print_r($filter->toArray(), true));
     }
     return $filter;
 }
 /**
  * Get the next scheduled import
  * 
  * @param interval
  * @param recursive
  * @return Object
  */
 protected function _getNextScheduledImport()
 {
     $timestampBefore = null;
     $now = new Tinebase_DateTime();
     $anHourAgo = clone $now;
     $anHourAgo->subHour(1);
     $aDayAgo = clone $now;
     $aDayAgo->subDay(1);
     $aWeekAgo = clone $now;
     $aWeekAgo->subWeek(1);
     $filter = new Tinebase_Model_ImportFilter(array(), 'OR');
     $filter0 = new Tinebase_Model_ImportFilter(array(array('field' => 'timestamp', 'operator' => 'isnull', 'value' => null)), 'AND');
     $filter1 = new Tinebase_Model_ImportFilter(array(array('field' => 'interval', 'operator' => 'equals', 'value' => Tinebase_Model_Import::INTERVAL_HOURLY), array('field' => 'timestamp', 'operator' => 'before', 'value' => $anHourAgo)), 'AND');
     $filter2 = new Tinebase_Model_ImportFilter(array(array('field' => 'interval', 'operator' => 'equals', 'value' => Tinebase_Model_Import::INTERVAL_DAILY), array('field' => 'timestamp', 'operator' => 'before', 'value' => $aDayAgo)), 'AND');
     $filter3 = new Tinebase_Model_ImportFilter(array(array('field' => 'interval', 'operator' => 'equals', 'value' => Tinebase_Model_Import::INTERVAL_WEEKLY), array('field' => 'timestamp', 'operator' => 'before', 'value' => $aWeekAgo)), 'AND');
     $filter->addFilterGroup($filter0);
     $filter->addFilterGroup($filter1);
     $filter->addFilterGroup($filter2);
     $filter->addFilterGroup($filter3);
     // Always sort by creation timestamp to ensure first in first out
     $pagination = new Tinebase_Model_Pagination(array('limit' => 1, 'sort' => 'timestamp', 'dir' => 'DESC'));
     $record = $this->search($filter, $pagination)->getFirstRecord();
     if (!$record) {
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . ' ' . __LINE__ . ' No ScheduledImport could be found.');
         }
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
             Tinebase_Core::getLogger()->trace(__METHOD__ . ' ' . __LINE__ . ' Filter used: ' . print_r($filter->toArray(), true));
         }
         return NULL;
     }
     return $record;
 }