/** * add one record * * @param Tinebase_Record_Interface $_record * @return Tinebase_Record_Interface */ public function create(Tinebase_Record_Interface $_record) { $this->_checkRight('create'); $_record->account_grants = $this->_convertGrantsToRecordSet($_record->account_grants); Tinebase_Container::getInstance()->checkContainerOwner($_record); Tinebase_Timemachine_ModificationLog::setRecordMetaData($_record, 'create'); $container = $this->_containerController->addContainer($_record, $_record->account_grants, TRUE); $container->account_grants = $this->_containerController->getGrantsOfContainer($container, TRUE); return $container; }
public function testAccountAnyoneDisabled() { $container = new Tinebase_Model_Container(array('name' => 'tine20shared', 'type' => Tinebase_Model_Container::TYPE_SHARED, 'owner_id' => Tinebase_Core::getUser(), 'backend' => 'Sql', 'application_id' => Tinebase_Application::getInstance()->getApplicationByName('Addressbook')->getId())); $grants = new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array('account_id' => '0', 'account_type' => Tinebase_Acl_Rights::ACCOUNT_TYPE_ANYONE, Tinebase_Model_Grants::GRANT_READ => true, Tinebase_Model_Grants::GRANT_EXPORT => true, Tinebase_Model_Grants::GRANT_SYNC => true)), TRUE); $sharedContainer = $this->_instance->addContainer($container, $grants); $readGrant = $this->_instance->hasGrant(Tinebase_Core::getUser(), $sharedContainer, Tinebase_Model_Grants::GRANT_READ); $this->assertTrue($readGrant); Tinebase_Config::getInstance()->set(Tinebase_Config::ANYONE_ACCOUNT_DISABLED, TRUE); Tinebase_Core::getCache()->clean(); $readGrant = $this->_instance->resetClassCache('hasGrant')->hasGrant(Tinebase_Core::getUser(), $sharedContainer, Tinebase_Model_Grants::GRANT_READ); $this->assertFalse($readGrant); }
/** * try to move a contact to another container and check content sequence */ public function testMoveContactToContainer() { $sharedContainer = $this->_instance->addContainer(new Tinebase_Model_Container(array('name' => 'tine20shared', 'type' => Tinebase_Model_Container::TYPE_SHARED, 'owner_id' => Tinebase_Core::getUser(), 'backend' => 'Sql', 'application_id' => Tinebase_Application::getInstance()->getApplicationByName('Addressbook')->getId()))); $initialContainer = $this->_instance->get($this->objects['initialContainer']); $contact = new Addressbook_Model_Contact(array('n_family' => 'Tester', 'container_id' => $sharedContainer->getId())); $contact = Addressbook_Controller_Contact::getInstance()->create($contact); $filter = array(array('field' => 'id', 'operator' => 'in', 'value' => array($contact->getId()))); $containerJson = new Tinebase_Frontend_Json_Container(); $result = $containerJson->moveRecordsToContainer($initialContainer->getId(), $filter, 'Addressbook', 'Contact'); $this->assertEquals($contact->getId(), $result['results'][0]); $movedContact = Addressbook_Controller_Contact::getInstance()->get($contact->getId()); $this->assertEquals($initialContainer->getId(), $movedContact->container_id, 'contact has not been moved'); $contentSeqs = $this->_instance->getContentSequence(array($sharedContainer->getId(), $initialContainer->getId())); $this->assertEquals(2, $contentSeqs[$sharedContainer->getId()], 'content seq mismatch: ' . print_r($contentSeqs, TRUE)); $this->assertEquals(1, $contentSeqs[$initialContainer->getId()], 'content seq mismatch: ' . print_r($contentSeqs, TRUE)); // check container content $contentRecords = $this->_instance->getContentHistory($sharedContainer->getId()); $this->assertEquals(2, count($contentRecords)); $this->assertEquals($contact->getId(), $contentRecords->getFirstRecord()->record_id); $this->assertEquals(Tinebase_Model_ContainerContent::ACTION_CREATE, $contentRecords->getFirstRecord()->action); }