/** * add timesheet with customfield * * @param Tinebase_Model_CustomField_Config $_customField1 * @param string $_cf1Value */ protected function _addTsWithCf($_customField1, $_cf1Value) { // create custom fields $customField2 = $this->_getCustomField(); // create timesheet and add custom fields $timesheetArray = $this->_getTimesheet()->toArray(); $timesheetArray[$_customField1->name] = $_cf1Value; $timesheetArray[$customField2->name] = Tinebase_Record_Abstract::generateUID(); $timesheetData = $this->_json->saveTimesheet($timesheetArray); // checks $this->assertTrue(isset($timesheetData['customfields'][$_customField1->name]) || array_key_exists($_customField1->name, $timesheetData['customfields']), 'cf 1 not found'); $this->assertTrue(isset($timesheetData['customfields'][$customField2->name]) || array_key_exists($customField2->name, $timesheetData['customfields']), 'cf 2 not found'); $this->assertGreaterThan(0, count($timesheetData['customfields'])); $this->assertEquals($timesheetArray[$_customField1->name], $timesheetData['customfields'][$_customField1->name]); $this->assertEquals($timesheetArray[$customField2->name], $timesheetData['customfields'][$customField2->name]); // check if custom fields are returned with search $searchResult = $this->_json->searchTimesheets($this->_getTimesheetFilter(), $this->_getPaging()); $this->assertGreaterThan(0, count($searchResult['results'][0]['customfields'])); foreach ($searchResult['results'] as $result) { if ($result['id'] == $timesheetData['id']) { $ts = $result; } } $this->assertTrue(isset($ts)); $this->assertTrue(isset($ts['customfields'][$_customField1->name]) || array_key_exists($_customField1->name, $ts['customfields'])); $this->assertTrue(isset($ts['customfields'][$customField2->name]) || array_key_exists($customField2->name, $ts['customfields'])); $this->assertEquals($timesheetArray[$_customField1->name], $ts['customfields'][$_customField1->name]); $this->assertEquals($timesheetArray[$customField2->name], $ts['customfields'][$customField2->name]); // test search with custom field filter $searchResult = $this->_json->searchTimesheets($this->_getTimesheetFilterWithCustomField($_customField1->getId(), $_cf1Value), $this->_getPaging()); $this->assertGreaterThan(0, $searchResult['totalcount'], 'cf filter not working'); }
/** * set grants for custom field * * @param string|Tinebase_Model_CustomField_Config $_customfieldId * @param array $_grants list of grants to add * @param string $_accountType * @param int $_accountId * @return void */ public function setGrants($_customfieldId, $_grants = array(), $_accountType = NULL, $_accountId = NULL) { $cfId = $_customfieldId instanceof Tinebase_Model_CustomField_Config ? $_customfieldId->getId() : $_customfieldId; try { if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Setting grants for custom field ' . $cfId . ' -> ' . print_r($_grants, TRUE)); } $transactionId = Tinebase_TransactionManager::getInstance()->startTransaction(Tinebase_Core::getDb()); $this->_backendACL->deleteByProperty($cfId, 'customfield_id'); foreach ($_grants as $grant) { if (in_array($grant, Tinebase_Model_CustomField_Grant::getAllGrants())) { $newGrant = new Tinebase_Model_CustomField_Grant(array('customfield_id' => $cfId, 'account_type' => $_accountType !== NULL ? $_accountType : Tinebase_Acl_Rights::ACCOUNT_TYPE_ANYONE, 'account_id' => $_accountId !== NULL ? $_accountId : 0, 'account_grant' => $grant)); $this->_backendACL->create($newGrant); } } Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId); $this->_clearCache(); } catch (Exception $e) { Tinebase_TransactionManager::getInstance()->rollBack(); throw new Tinebase_Exception_Backend($e->getMessage()); } }