/** * converts Tinebase_Record_Abstract to external format * * @param Tinebase_Record_Abstract $_record * @return mixed */ public function fromTine20Model(Tinebase_Record_Abstract $_record) { $jsonData = parent::fromTine20Model($_record); if (Tinebase_Core::getUser()->hasRight('Calendar', Calendar_Acl_Rights::MANAGE_RESOURCES)) { $jsonData['grants'] = Tinebase_Container::getInstance()->getGrantsOfContainer($_record->container_id, TRUE)->toArray(); $jsonData['grants'] = Tinebase_Frontend_Json_Container::resolveAccounts($jsonData['grants']); } return $jsonData; }
/** * returns record prepared for json transport * * @param Tinebase_Record_Interface $_record * @return array record data */ protected function _recordToJson($_record) { $result = parent::_recordToJson($_record); if ($_record instanceof Tinebase_Model_Container) { $result['account_grants'] = Tinebase_Frontend_Json_Container::resolveAccounts($result['account_grants']); } return $result; }
/** * 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); }