예제 #1
0
 /**
  * returns record prepared for json transport
  *
  * @param Tinebase_Record_Interface $_record
  * @return array record data
  */
 protected function _recordToJson($_record)
 {
     switch (get_class($_record)) {
         case 'Timetracker_Model_Timesheet':
             $_record['timeaccount_id'] = $_record['timeaccount_id'] ? $this->_timeaccountController->get($_record['timeaccount_id']) : $_record['timeaccount_id'];
             $_record['timeaccount_id']['account_grants'] = Timetracker_Model_TimeaccountGrants::getGrantsOfAccount(Tinebase_Core::get('currentAccount'), $_record['timeaccount_id']);
             $_record['timeaccount_id']['account_grants'] = $this->_resolveTimesheetGrantsByTimeaccountGrants($_record['timeaccount_id']['account_grants'], $_record['account_id']);
             Tinebase_User::getInstance()->resolveUsers($_record, 'account_id');
             $recordArray = parent::_recordToJson($_record);
             break;
         case 'Timetracker_Model_Timeaccount':
             $recordArray = parent::_recordToJson($_record);
             // When editing a single TA we send _ALL_ grants to the client
             $recordArray['grants'] = Timetracker_Model_TimeaccountGrants::getTimeaccountGrants($_record)->toArray();
             foreach ($recordArray['grants'] as &$value) {
                 switch ($value['account_type']) {
                     case Tinebase_Acl_Rights::ACCOUNT_TYPE_USER:
                         $value['account_name'] = Tinebase_User::getInstance()->getUserById($value['account_id'])->toArray();
                         break;
                     case Tinebase_Acl_Rights::ACCOUNT_TYPE_GROUP:
                         $value['account_name'] = Tinebase_Group::getInstance()->getGroupById($value['account_id'])->toArray();
                         break;
                     case Tinebase_Acl_Rights::ACCOUNT_TYPE_ANYONE:
                         $value['account_name'] = array('accountDisplayName' => 'Anyone');
                         break;
                     default:
                         throw new Tinebase_Exception_InvalidArgument('Unsupported accountType.');
                         break;
                 }
             }
             break;
     }
     return $recordArray;
 }
 /**
  * returns multiple records prepared for json transport
  *
  * @param Tinebase_Record_RecordSet $_records
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @param Tinebase_Model_Pagination $_pagination
  * 
  * @return array data
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL, $_pagination = NULL)
 {
     $result = parent::_multipleRecordsToJson($_records, $_filter, $_pagination);
     // get groups + types (departments) and merge data
     $groupIds = $_records->group_id;
     $groups = Tinebase_Group::getInstance()->getMultiple(array_unique(array_values($groupIds)));
     $knownTypes = Tinebase_Department::getInstance()->search(new Tinebase_Model_DepartmentFilter());
     foreach ($result as &$course) {
         $groupIdx = $groups->getIndexById($course['group_id']);
         if ($groupIdx !== FALSE) {
             $group = $groups[$groupIdx]->toArray();
             unset($group['id']);
             $course = array_merge($group, $course);
         } else {
             if (Tinebase_Core::isLogLevel(Zend_Log::NOTICE)) {
                 Tinebase_Core::getLogger()->notice(__METHOD__ . '::' . __LINE__ . ' Group with ID ' . $course['group_id'] . ' does not exist.');
             }
         }
         $typeIdx = $knownTypes->getIndexById($course['type']);
         if ($typeIdx !== FALSE) {
             //if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($knownTypes[$typeIdx]->toArray(), true));
             $course['type'] = $knownTypes[$typeIdx]->toArray();
         } else {
             if (Tinebase_Core::isLogLevel(Zend_Log::NOTICE)) {
                 Tinebase_Core::getLogger()->notice(__METHOD__ . '::' . __LINE__ . ' Department with ID ' . $course['type'] . ' does not exist.');
             }
             $course['type'] = array('id' => $course['type'], 'name' => $course['type']);
         }
     }
     return $result;
 }
예제 #3
0
 /**
  * converts Tinebase_Record_RecordSet to external format
  * 
  * @param  Tinebase_Record_RecordSet  $_records
  * @param  array $_resolveUserFields
  * @return mixed
  */
 public function fromTine20RecordSet(Tinebase_Record_RecordSet $_records, $_resolveUserFields = array())
 {
     if (count($_records) == 0) {
         return array();
     }
     Tinebase_Frontend_Json_Abstract::resolveContainerTagsUsers($_records, $_resolveUserFields);
     $_records->setTimezone(Tinebase_Core::get(Tinebase_Core::USERTIMEZONE));
     $_records->convertDates = true;
     $result = $_records->toArray();
     return $result;
 }
예제 #4
0
 /**
  * returns record prepared for json transport
  *
  * @param Tinebase_Record_Interface $_record
  * @return array record data
  */
 protected function _recordToJson($_record)
 {
     $recordArray = parent::_recordToJson($_record);
     switch (get_class($_record)) {
         case 'Voipmanager_Model_Snom_Phone':
             // add settings
             $recordArray = array_merge($recordArray, $this->getSnomPhoneSettings($_record->getId()));
             // add snom templates (no filter + no pagination)
             $recordArray['template_id'] = array('value' => $_record->template_id, 'records' => $this->searchSnomTemplates('', ''));
             // add snom locations (no filter + no pagination)
             $recordArray['location_id'] = array('value' => $_record->location_id, 'records' => $this->searchSnomLocations('', ''));
             // resolve lines
             foreach ($recordArray['lines'] as &$line) {
                 $line['asteriskline_id'] = Voipmanager_Controller_Asterisk_SipPeer::getInstance()->get($line['asteriskline_id'])->toArray();
             }
             break;
         case 'Voipmanager_Model_Snom_Template':
             // add snom softwares (no filter + no pagination)
             $recordArray['software_id'] = array('value' => $recordArray['software_id'], 'records' => $this->searchSnomSoftwares('', ''));
             // add snom settings (no filter + no pagination)
             $recordArray['setting_id'] = array('value' => $recordArray['setting_id'], 'records' => $this->searchSnomSettings('', ''));
             break;
         case 'Voipmanager_Model_Snom_Phone':
             // add settings
             $recordArray = array_merge($recordArray, $this->getSnomPhoneSettings($recordArray['id']));
             // resolve snom template_id
             $recordArray['template_id'] = array('value' => $recordArray['template_id'], 'records' => $this->searchSnomTemplates('', ''));
             // resolve snom location_id
             $recordArray['location_id'] = array('value' => $recordArray['location_id'], 'records' => $this->searchSnomLocations('', ''));
             // add names to lines
             foreach ($recordArray['lines'] as &$line) {
                 $line['name'] = Voipmanager_Controller_Asterisk_SipPeer::getInstance()->get($line['asteriskline_id'])->name;
             }
             break;
         case 'Voipmanager_Model_Asterisk_SipPeer':
         case 'Voipmanager_Model_Asterisk_Voicemail':
             // resolve context_id
             $recordArray['context_id'] = array('value' => $recordArray['context_id'], 'records' => $this->searchAsteriskContexts('', ''));
             break;
     }
     return $recordArray;
 }
 /**
  * returns record prepared for json transport
  *
  * @param Tinebase_Record_Interface $_record
  * @return array record data
  */
 protected function _recordToJson($_record)
 {
     switch (get_class($_record)) {
         case 'Timetracker_Model_Timesheet':
             $_record['timeaccount_id'] = $_record['timeaccount_id'] ? $this->_timeaccountController->get($_record['timeaccount_id']) : $_record['timeaccount_id'];
             $_record['timeaccount_id']['account_grants'] = Timetracker_Model_TimeaccountGrants::getGrantsOfAccount(Tinebase_Core::get('currentAccount'), $_record['timeaccount_id']);
             $_record['timeaccount_id']['account_grants'] = $this->_resolveTimesheetGrantsByTimeaccountGrants($_record['timeaccount_id']['account_grants'], $_record['account_id']);
             Tinebase_User::getInstance()->resolveUsers($_record, 'account_id');
             if (Tinebase_Core::getUser()->hasRight('Sales', 'manage_invoices') && !empty($_record['invoice_id'])) {
                 try {
                     $_record['invoice_id'] = Sales_Controller_Invoice::getInstance()->get($_record['invoice_id']);
                 } catch (Tinebase_Exception_NotFound $nfe) {
                     Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Could not resolve invoice with id ' . $_record['invoice_id']);
                 }
             }
             $recordArray = parent::_recordToJson($_record);
             break;
         case 'Timetracker_Model_Timeaccount':
             $recordArray = parent::_recordToJson($_record);
             // When editing a single TA we send _ALL_ grants to the client
             $recordArray['grants'] = Timetracker_Model_TimeaccountGrants::getTimeaccountGrants($_record)->toArray();
             foreach ($recordArray['grants'] as &$value) {
                 switch ($value['account_type']) {
                     case Tinebase_Acl_Rights::ACCOUNT_TYPE_USER:
                         $value['account_name'] = Tinebase_User::getInstance()->getUserById($value['account_id'])->toArray();
                         break;
                     case Tinebase_Acl_Rights::ACCOUNT_TYPE_GROUP:
                         $value['account_name'] = Tinebase_Group::getInstance()->getGroupById($value['account_id'])->toArray();
                         break;
                     case Tinebase_Acl_Rights::ACCOUNT_TYPE_ANYONE:
                         $value['account_name'] = array('accountDisplayName' => 'Anyone');
                         break;
                     default:
                         throw new Tinebase_Exception_InvalidArgument('Unsupported accountType.');
                         break;
                 }
             }
             break;
     }
     return $recordArray;
 }
 /**
  * Search for tasks matching given arguments
  *
  * @param array $filter
  * @param array $paging
  * @return array
  */
 public function searchTasks($filter, $paging)
 {
     return parent::_search($filter, $paging, Tasks_Controller_Task::getInstance(), 'Tasks_Model_TaskFilter', TRUE);
 }
 /**
  * returns multiple records prepared for json transport
  *
  * @param Tinebase_Record_RecordSet $_records Tinebase_Record_Abstract
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @param Tinebase_Model_Pagination $_pagination
  * @return array data
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL, $_pagination = null)
 {
     switch ($_records->getRecordClassName()) {
         case 'Sipgate_Model_Connection':
             Sipgate_Controller_Line::getInstance()->resolveMultipleLines($_records);
             $this->_resolveMultipleContacts($_records);
             break;
         case 'Sipgate_Model_Line':
             Sipgate_Controller_Account::getInstance()->resolveMultipleAccounts($_records);
             Tinebase_User::getInstance()->resolveMultipleUsers($_records, $this->_resolveUserFields['Sipgate_Model_Line']);
             break;
     }
     return parent::_multipleRecordsToJson($_records);
 }
예제 #8
0
 /**
  * returns multiple records prepared for json transport
  *
  * @param Tinebase_Record_RecordSet $_records Tinebase_Record_Abstract
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @param Tinebase_Model_Pagination $_pagination needed for sorting
  * @return array data
  * 
  * @todo perhaps we need to resolveContainerTagsUsers() before  mergeAndRemoveNonMatchingRecurrences(), but i'm not sure about that
  * @todo use Calendar_Convert_Event_Json
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL, $_pagination = NULL)
 {
     if ($_records->getRecordClassName() == 'Calendar_Model_Event') {
         if (is_null($_filter)) {
             throw new Tinebase_Exception_InvalidArgument('Required argument $_filter is missing');
         }
         Tinebase_Notes::getInstance()->getMultipleNotesOfRecords($_records);
         Calendar_Model_Attender::resolveAttendee($_records->attendee, TRUE, $_records);
         Calendar_Convert_Event_Json::resolveOrganizer($_records);
         Calendar_Convert_Event_Json::resolveRrule($_records);
         Calendar_Controller_Event::getInstance()->getAlarms($_records);
         Calendar_Model_Rrule::mergeAndRemoveNonMatchingRecurrences($_records, $_filter);
         $_records->sortByPagination($_pagination);
         $eventsData = parent::_multipleRecordsToJson($_records);
         foreach ($eventsData as $eventData) {
             if (!array_key_exists(Tinebase_Model_Grants::GRANT_READ, $eventData) || !$eventData[Tinebase_Model_Grants::GRANT_READ]) {
                 $eventData['notes'] = array();
                 $eventData['tags'] = array();
             }
         }
         return $eventsData;
     }
     return parent::_multipleRecordsToJson($_records);
 }
 /**
  * returns record prepared for json transport
  *
  * @param Tinebase_Record_Interface $_record
  * @return array record data
  */
 protected function _recordToJson($_record)
 {
     $recordArray = parent::_recordToJson($_record);
     switch (get_class($_record)) {
         case 'Phone_Model_MyPhone':
             // add settings
             $settings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->get($_record->getId());
             $recordArray = array_merge($recordArray, $settings->toArray());
             // resolve lines
             foreach ($recordArray['lines'] as &$line) {
                 $line['asteriskline_id'] = Voipmanager_Controller_Asterisk_SipPeer::getInstance()->get($line['asteriskline_id'])->toArray();
             }
             break;
     }
     return $recordArray;
 }
 /**
  * returns multiple records prepared for json transport
  *
  * @param Tinebase_Record_RecordSet $_records Tinebase_Record_Abstract
  * @param Tinebase_Model_Filter_FilterGroup
  * @param Tinebase_Model_Pagination $_pagination
  * @return array data
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL, $_pagination = NULL)
 {
     $result = parent::_multipleRecordsToJson($_records, $_filter, $_pagination);
     foreach ($result as &$contact) {
         $contact['jpegphoto'] = $this->_getImageLink($contact);
     }
     return $result;
 }
 /**
  * Returns registry data of the application.
  *
  * Each application has its own registry to supply static data to the client.
  * Registry data is queried only once per session from the client.
  *
  * This registry must not be used for rights or ACL purposes. Use the generic
  * rights and ACL mechanisms instead!
  *
  * @return mixed array 'variable name' => 'data'
  */
 public function getRegistryData()
 {
     $data = parent::getRegistryData();
     $ci = HumanResources_Config::getInstance();
     $calid = $ci->get($ci::DEFAULT_FEAST_CALENDAR, NULL);
     $data[$ci::DEFAULT_FEAST_CALENDAR] = $calid ? Tinebase_Container::getInstance()->get($calid)->toArray() : NULL;
     $data[$ci::VACATION_EXPIRES] = $ci->get($ci::VACATION_EXPIRES);
     return $data;
 }
 /**
  * do some call json functions if preferences name match
  * - every app should define its own special handlers
  *
  * @param Tinebase_Frontend_Json_Abstract $_jsonFrontend
  * @param string $name
  * @param string $value
  * @param string $appName
  */
 public function doSpecialJsonFrontendActions(Tinebase_Frontend_Json_Abstract $_jsonFrontend, $name, $value, $appName)
 {
     if ($appName == $this->_application) {
         // get default prefs if value = use default
         if ($value == Tinebase_Model_Preference::DEFAULT_VALUE) {
             $value = $this->{$name};
             if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
                 Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Using default (' . $value . ') for ' . $name);
             }
         }
         $session = Tinebase_Core::get(Tinebase_Session::SESSION);
         switch ($name) {
             case Tinebase_Preference::LOCALE:
                 unset($session->userLocale);
                 $_jsonFrontend->setLocale($value, FALSE, TRUE);
                 break;
             case Tinebase_Preference::TIMEZONE:
                 unset($session->timezone);
                 $_jsonFrontend->setTimezone($value, FALSE);
                 break;
         }
     }
 }
예제 #13
0
 /**
  * returns multiple records prepared for json transport
  *
  * @param  Tinebase_Record_RecordSet $_records Tinebase_Record_Abstract
  * @param  Tinebase_Model_Filter_FilterGroup
  * @return array data
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL)
 {
     if ($_records->getRecordClassName() == 'Tasks_Model_Task') {
         // NOTE: in contrast to calendar, organizers in tasks are accounts atm.
         Tinebase_User::getInstance()->resolveMultipleUsers($_records, 'organizer', true);
     }
     //if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(print_r($_records->toArray(), true));
     return parent::_multipleRecordsToJson($_records);
 }
 /**
  * resolves child records before converting the record set to an array
  * 
  * @param Tinebase_Record_RecordSet $records
  * @param Tinebase_ModelConfiguration $modelConfiguration
  * @param boolean $multiple
  */
 protected function _resolveBeforeToArray($records, $modelConfiguration, $multiple = false)
 {
     Tinebase_Frontend_Json_Abstract::resolveContainersAndTags($records);
     self::resolveAttachmentImage($records);
     self::resolveMultipleIdFields($records);
     // use modern record resolving, if the model was configured using Tinebase_ModelConfiguration
     // at first, resolve all single record fields
     if ($modelConfiguration) {
         $this->_resolveSingleRecordFields($records, $modelConfiguration);
         // resolve all multiple records fields
         $this->_resolveMultipleRecordFields($records, $modelConfiguration, $multiple);
     }
 }
 /**
  * converts Tinebase_Record_RecordSet to external format
  * 
  * @param Tinebase_Record_RecordSet         $_records
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @param Tinebase_Model_Pagination         $_pagination
  *
  * @return mixed
  */
 public function fromTine20RecordSet(Tinebase_Record_RecordSet $_records = NULL, $_filter = NULL, $_pagination = NULL)
 {
     if (count($_records) == 0) {
         return array();
     }
     Tinebase_Notes::getInstance()->getMultipleNotesOfRecords($_records);
     Tinebase_Tags::getInstance()->getMultipleTagsOfRecords($_records);
     if (Tinebase_Core::isFilesystemAvailable()) {
         Tinebase_FileSystem_RecordAttachments::getInstance()->getMultipleAttachmentsOfRecords($_records);
     }
     Calendar_Model_Attender::resolveAttendee($_records->attendee, TRUE, $_records);
     Calendar_Convert_Event_Json::resolveRrule($_records);
     Calendar_Controller_Event::getInstance()->getAlarms($_records);
     Calendar_Convert_Event_Json::resolveGrantsOfExternalOrganizers($_records);
     Calendar_Model_Rrule::mergeAndRemoveNonMatchingRecurrences($_records, $_filter);
     $_records->sortByPagination($_pagination);
     Tinebase_Frontend_Json_Abstract::resolveContainersAndTags($_records, array('container_id'));
     $_records->setTimezone(Tinebase_Core::getUserTimezone());
     $_records->convertDates = true;
     $eventsData = $_records->toArray();
     foreach ($eventsData as $idx => $eventData) {
         if (!(isset($eventData[Tinebase_Model_Grants::GRANT_READ]) || array_key_exists(Tinebase_Model_Grants::GRANT_READ, $eventData)) || !$eventData[Tinebase_Model_Grants::GRANT_READ]) {
             $eventsData[$idx] = array_intersect_key($eventsData[$idx], array_flip(array('id', 'dtstart', 'dtend', 'transp', 'is_all_day_event')));
         }
     }
     return $eventsData;
 }
 /**
  * returns multiple records prepared for json transport
  *
  * @param Tinebase_Record_RecordSet $_records Tinebase_Record_Abstract
  * @param Tinebase_Model_Filter_FilterGroup
  * @param Tinebase_Model_Pagination $_pagination
  * @return array data
  * 
  * @todo move to converter
  * @todo get multiple grants at once
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL, $_pagination = NULL)
 {
     $result = parent::_multipleRecordsToJson($_records, $_filter);
     foreach ($result as $idx => $recordArray) {
         $recordIdx = $_records->getIndexById($recordArray['id']);
         try {
             if (!is_object($_records[$recordIdx]->filters)) {
                 throw new Tinebase_Exception_UnexpectedValue('no filter group found');
             }
             $result[$idx]['filters'] = $_records[$recordIdx]->filters->toArray(TRUE);
         } catch (Exception $e) {
             if (Tinebase_Core::isLogLevel(Zend_Log::NOTICE)) {
                 Tinebase_Core::getLogger()->notice(__METHOD__ . '::' . __LINE__ . ' Skipping filter: ' . $e->getMessage());
             }
             unset($result[$idx]);
             continue;
         }
         // resolve grant users/groups
         if (isset($result[$idx]['grants'])) {
             $result[$idx]['grants'] = Tinebase_Frontend_Json_Container::resolveAccounts($result[$idx]['grants']);
             $result[$idx]['account_grants'] = Tinebase_PersistentFilter::getInstance()->getGrantsOfAccount(Tinebase_Core::getUser(), $_records[$recordIdx])->toArray();
         }
     }
     return array_values($result);
 }
 /**
  * returns message prepared for json transport
  * - overwriten to convert recipients to array
  *
  * @param Tinebase_Record_Interface $_record
  * @return array record data
  */
 protected function _recordToJson($_record)
 {
     if ($_record instanceof Felamimail_Model_Message) {
         foreach (array('to', 'cc', 'bcc') as $type) {
             if (!is_array($_record->{$type})) {
                 if (!empty($_record->{$type})) {
                     $exploded = explode(',', $_record->{$type});
                     $_record->{$type} = $exploded;
                 } else {
                     $_record->{$type} = array();
                 }
             }
         }
         if ($_record->preparedParts instanceof Tinebase_Record_RecordSet) {
             foreach ($_record->preparedParts as $preparedPart) {
                 if ($preparedPart->preparedData instanceof Calendar_Model_iMIP) {
                     try {
                         $iMIPFrontend = new Calendar_Frontend_iMIP();
                         $iMIPFrontend->prepareComponent($preparedPart->preparedData, true);
                     } catch (Exception $e) {
                         Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Could not prepare calendar iMIP component: ' . $e->getMessage());
                         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
                             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getTraceAsString());
                         }
                         $_record->preparedParts->removeRecord($preparedPart);
                     }
                 }
             }
         }
     } else {
         if ($_record instanceof Felamimail_Model_Account) {
             // add usernames
             $_record->resolveCredentials();
             // imap
             $_record->resolveCredentials(TRUE, FALSE, TRUE);
             // smtp
         } else {
             if ($_record instanceof Felamimail_Model_Sieve_Vacation) {
                 if (!$_record->mime) {
                     $_record->reason = Tinebase_Mail::convertFromTextToHTML($_record->reason, 'felamimail-body-blockquote');
                 }
             }
         }
     }
     return parent::_recordToJson($_record);
 }
예제 #18
0
 /**
  * returns multiple records prepared for json transport
  *
  * @param Tinebase_Record_RecordSet $_records Tinebase_Record_Abstract
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @return array data
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL)
 {
     switch ($_records->getRecordClassName()) {
         case 'Tinebase_Model_AccessLog':
             // TODO use _resolveUserFields and remove this
             foreach ($_records as $record) {
                 if (!empty($record->account_id)) {
                     try {
                         $record->account_id = Admin_Controller_User::getInstance()->get($record->account_id)->toArray();
                     } catch (Tinebase_Exception_NotFound $e) {
                         $record->account_id = Tinebase_User::getInstance()->getNonExistentUser('Tinebase_Model_FullUser')->toArray();
                     }
                 }
             }
             break;
         case 'Tinebase_Model_Container':
         case 'Tinebase_Model_CustomField_Config':
             $applications = Tinebase_Application::getInstance()->getApplications();
             foreach ($_records as $record) {
                 $idx = $applications->getIndexById($record->application_id);
                 if ($idx !== FALSE) {
                     $record->application_id = $applications[$idx];
                 }
             }
             break;
     }
     $result = parent::_multipleRecordsToJson($_records, $_filter);
     return $result;
 }
예제 #19
0
 /**
  * returns multiple records prepared for json transport
  *
  * @param Tinebase_Record_RecordSet $_records Tinebase_Record_Abstract
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @return array data
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL)
 {
     if (count($_records) == 0) {
         return array();
     }
     switch ($_records->getRecordClassName()) {
         case 'Tinebase_Model_Preference':
             $accountFilterArray = $_filter->getFilter('account')->toArray();
             $adminMode = $accountFilterArray['value']['accountId'] == 0 && $accountFilterArray['value']['accountType'] == Tinebase_Acl_Rights::ACCOUNT_TYPE_ANYONE;
             foreach ($_records as $record) {
                 if (!isset($app) || $record->application_id != $app->getId()) {
                     $app = Tinebase_Application::getInstance()->getApplicationById($record->application_id);
                 }
                 $preference = Tinebase_Core::getPreference($app->name, TRUE);
                 $preference->resolveOptions($record);
                 if ($record->type == Tinebase_Model_Preference::TYPE_DEFAULT || !$adminMode && $record->type == Tinebase_Model_Preference::TYPE_ADMIN) {
                     $record->value = Tinebase_Model_Preference::DEFAULT_VALUE;
                 }
             }
             break;
     }
     $result = parent::_multipleRecordsToJson($_records, $_filter);
     return $result;
 }
예제 #20
0
 /**
  * returns multiple records prepared for json transport
  *
  * @param Tinebase_Record_RecordSet $_records Tinebase_Record_Abstract
  * @param Tinebase_Model_Filter_FilterGroup
  * @return array data
  */
 protected function _multipleRecordsToJson(Tinebase_Record_RecordSet $_records, $_filter = NULL)
 {
     $result = parent::_multipleRecordsToJson($_records, $_filter);
     foreach ($result as $idx => $recordArray) {
         $recordIdx = $_records->getIndexById($recordArray['id']);
         try {
             $result[$idx]['filters'] = $_records[$recordIdx]->filters->toArray(TRUE);
         } catch (Exception $e) {
             // skip filter
             unset($result[$idx]);
         }
     }
     return array_values($result);
 }