コード例 #1
0
 /**
  * return contentfilter array
  * 
  * @param  int $_filterType
  * @return Tinebase_Model_Filter_FilterGroup
  */
 protected function _getContentFilter($_filterType)
 {
     $filter = parent::_getContentFilter($_filterType);
     // no persistent filter set -> add default filter
     // NOTE: we use attender+status as devices always show declined events
     if ($filter->isEmpty()) {
         $attendeeFilter = $filter->createFilter('attender', 'equals', array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => Tinebase_Core::getUser()->contact_id));
         $statusFilter = $filter->createFilter('attender_status', 'notin', array(Calendar_Model_Attender::STATUS_DECLINED));
         $containerFilter = $filter->createFilter('container_id', 'equals', array('path' => '/personal/' . Tinebase_Core::getUser()->getId()));
         $filter->addFilter($attendeeFilter);
         $filter->addFilter($statusFilter);
         $filter->addFilter($containerFilter);
     }
     if (in_array($_filterType, $this->_filterArray)) {
         switch ($_filterType) {
             case Syncroton_Command_Sync::FILTER_2_WEEKS_BACK:
                 $from = Tinebase_DateTime::now()->subWeek(2);
                 break;
             case Syncroton_Command_Sync::FILTER_1_MONTH_BACK:
                 $from = Tinebase_DateTime::now()->subMonth(2);
                 break;
             case Syncroton_Command_Sync::FILTER_3_MONTHS_BACK:
                 $from = Tinebase_DateTime::now()->subMonth(3);
                 break;
             case Syncroton_Command_Sync::FILTER_6_MONTHS_BACK:
                 $from = Tinebase_DateTime::now()->subMonth(6);
                 break;
         }
     } else {
         // don't return more than the previous 6 months
         $from = Tinebase_DateTime::now()->subMonth(6);
     }
     // next 10 years
     $to = Tinebase_DateTime::now()->addYear(10);
     // remove all 'old' period filters
     $filter->removeFilter('period');
     // add period filter
     $filter->addFilter(new Calendar_Model_PeriodFilter('period', 'within', array('from' => $from, 'until' => $to)));
     return $filter;
 }
 /**
  *
  * @param  string  $folderId
  * @param  int     $filterType
  * @return Tinebase_Record_RecordSet
  */
 public function getServerEntries($folderId, $filterType)
 {
     $folderBackend = Syncroton_Registry::get(Syncroton_Registry::FOLDERBACKEND);
     $folder = $folderBackend->getFolder($this->_device, $folderId);
     $bigContentIds = parent::getServerEntries($folder->bigfolderid, $filterType);
     foreach ($bigContentIds as $bigContentId) {
         $contentId = md5($bigContentId);
         $contents[$bigContentId] = $contentId;
     }
     return $contents;
 }
 /**
  * return contentfilter array
  * 
  * @param  int $_filterType
  * @return Tinebase_Model_Filter_FilterGroup
  */
 protected function _getContentFilter($_filterType)
 {
     $filter = parent::_getContentFilter($_filterType);
     // no persistent filter set -> add default filter
     // @todo what is this good for? I think should be handled in _addContainerFilter. LK
     #if ($filter->isEmpty()) {
     #    $defaultFilter = $filter->createFilter('container_id', 'equals', array(
     #        'path' => '/personal/' . Tinebase_Core::getUser()->getId()
     #    ));
     #
     #    $filter->addFilter($defaultFilter);
     #}
     if (in_array($_filterType, $this->_filterArray)) {
         switch ($_filterType) {
             case Syncroton_Command_Sync::FILTER_INCOMPLETE:
                 $filter->removeFilter('status');
                 $openStatus = Tasks_Config::getInstance()->get(Tasks_Config::TASK_STATUS)->records->filter('is_open', 1);
                 if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
                     Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " filter by status ids " . print_r($openStatus->getId(), TRUE));
                 }
                 $filter->addFilter(new Tinebase_Model_Filter_Text('status', 'in', $openStatus->getId()));
                 break;
         }
     }
     return $filter;
 }
コード例 #4
0
 /**
  * (non-PHPdoc)
  * @see ActiveSync_Frontend_Abstract::_getContentFilter()
  */
 protected function _getContentFilter($_filterType)
 {
     $filter = parent::_getContentFilter($_filterType);
     if (in_array($_filterType, $this->_filterArray)) {
         $today = Tinebase_DateTime::now()->setTime(0, 0, 0);
         switch ($_filterType) {
             case Syncroton_Command_Sync::FILTER_1_DAY_BACK:
                 $received = $today->subDay(1);
                 break;
             case Syncroton_Command_Sync::FILTER_3_DAYS_BACK:
                 $received = $today->subDay(3);
                 break;
             case Syncroton_Command_Sync::FILTER_1_WEEK_BACK:
                 $received = $today->subWeek(1);
                 break;
             case Syncroton_Command_Sync::FILTER_2_WEEKS_BACK:
                 $received = $today->subWeek(2);
                 break;
             case Syncroton_Command_Sync::FILTER_1_MONTH_BACK:
                 $received = $today->subMonth(1);
                 break;
         }
         // add period filter
         $filter->addFilter(new Tinebase_Model_Filter_DateTime('received', 'after', $received->get(Tinebase_Record_Abstract::ISO8601LONG)));
     }
     return $filter;
 }
コード例 #5
0
 /**
  * get devices with multiple folders
  * 
  * @return array
  */
 protected function _getDevicesWithMultipleFolders()
 {
     // outlook currently (Microsoft.Outlook.15) does not support mutliple addressbooks
     // @see 0009184: Only Admin Contact Data is synced (Outlook 2013)
     $doesNotSupportMultipleFolders = array('windowsoutlook15');
     $result = array_diff(parent::_getDevicesWithMultipleFolders(), $doesNotSupportMultipleFolders);
     return $result;
 }