/**
  * update favorites to new filter syntax and update to 5.0 
  * 
  * @return void
  */
 public function update_0()
 {
     $pfBackend = new Tinebase_PersistentFilter_Backend_Sql();
     $filters = $pfBackend->getAll();
     $projectFilters = $filters->filter('application_id', Tinebase_Application::getInstance()->getApplicationByName('Projects')->getId());
     foreach ($projectFilters as $pfilter) {
         foreach ($pfilter->filters as $filter) {
             if ($filter->getField() === 'contact' && $filter instanceof Tinebase_Model_Filter_Relation) {
                 $values = array();
                 foreach ($filter->getValue() as $idx => $subfilter) {
                     $values[$idx] = $subfilter;
                     if (in_array($subfilter['field'], array('relation_type', 'id'))) {
                         $values[$idx]['field'] = ':' . $subfilter['field'];
                     }
                 }
                 $filter->setValue($values);
                 $pfBackend->update($pfilter);
             }
         }
     }
     $this->setApplicationVersion('Projects', '5.0');
 }
 /**
  * update favorites to new filter syntax and update to 5.2
  *
  * @return void
  */
 public function update_1()
 {
     $pfBackend = new Tinebase_PersistentFilter_Backend_Sql();
     $filters = $pfBackend->getAll();
     $timetrackerFilters = $filters->filter('application_id', Tinebase_Application::getInstance()->getApplicationByName('Timetracker')->getId());
     foreach ($timetrackerFilters as $pfilter) {
         foreach ($pfilter->filters as $filter) {
             if (in_array($filter->getField(), array('timeaccount_id')) && $filter instanceof Tinebase_Model_Filter_ForeignId) {
                 $values = array();
                 foreach ($filter->getValue() as $idx => $subfilter) {
                     $values[$idx] = $subfilter;
                     if (in_array($subfilter['field'], array('id'))) {
                         $values[$idx]['field'] = ':' . $subfilter['field'];
                     }
                 }
                 $filter->setValue($values);
                 $pfBackend->update($pfilter);
             }
         }
     }
     $this->setApplicationVersion('Timetracker', '5.2');
 }
 /**
  * add default grants to existing filters
  */
 protected function _addGrantsToExistingFilters()
 {
     $pfBackend = new Tinebase_PersistentFilter_Backend_Sql();
     $filters = $pfBackend->getAll();
     $pfGrantsBackend = new Tinebase_Backend_Sql_Grants(array('modelName' => 'Tinebase_Model_PersistentFilterGrant', 'tableName' => 'filter_acl'));
     $pfGrantsBackend->getGrantsForRecords($filters);
     foreach ($filters as $filter) {
         if (count($filter->grants) > 0) {
             if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
                 Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Filter ' . $filter->name . ' already has grants.');
             }
             continue;
         }
         $grant = new Tinebase_Model_PersistentFilterGrant(array('account_type' => $filter->isPersonal() ? Tinebase_Acl_Rights::ACCOUNT_TYPE_USER : Tinebase_Acl_Rights::ACCOUNT_TYPE_ANYONE, 'account_id' => $filter->account_id, 'record_id' => $filter->getId()));
         $grant->sanitizeAccountIdAndFillWithAllGrants();
         $filter->grants = new Tinebase_Record_RecordSet('Tinebase_Model_PersistentFilterGrant');
         $filter->grants->addRecord($grant);
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Updating filter "' . $filter->name . '" with grant: ' . print_r($grant->toArray(), true));
         }
         Tinebase_PersistentFilter::getInstance()->setGrants($filter);
     }
 }