public function testCRUD() { $salesproject = $this->create_object('org_openpsa_sales_salesproject_dba'); $person1 = $this->create_object('midcom_db_person'); $person2 = $this->create_object('midcom_db_person'); midcom::get('auth')->request_sudo('org.openpsa.contacts'); $member1 = new org_openpsa_contacts_role_dba(); $member1->objectGuid = $salesproject->guid; $member1->person = $person1->id; $member1->role = ORG_OPENPSA_OBTYPE_SALESPROJECT_MEMBER; $stat = $member1->create(); $this->assertTrue($stat); $this->register_object($member1); $this->assertEquals(ORG_OPENPSA_OBTYPE_SALESPROJECT_MEMBER, $member1->role); $this->assertEquals(array($person1->id => true), $salesproject->contacts); $stat = $member1->delete(); $this->assertTrue($stat); $stat = org_openpsa_contacts_role_dba::add($salesproject->guid, $person2->id, ORG_OPENPSA_OBTYPE_SALESPROJECT_MEMBER); $this->assertTrue($stat); $qb = org_openpsa_contacts_role_dba::new_query_builder(); $qb->add_constraint('objectGuid', '=', $salesproject->guid); $this->assertEquals(1, $qb->count()); $members = $qb->execute(); $member2 = $members[0]; $this->assertEquals(ORG_OPENPSA_OBTYPE_SALESPROJECT_MEMBER, $member2->role); $this->assertEquals($person2->id, $member2->person); $salesproject->refresh(); $this->assertEquals(array($person2->id => true), $salesproject->contacts); $stat = $member2->delete(); $this->assertTrue($stat); midcom::get('auth')->drop_sudo(); }
/** * Helper function that adds a member to parents if necessary * * @param org_openpsa_projects_task_dba $object The object for which we search the parent */ function add_resource_to_parent(&$object) { $parent = $object->get_parent(); if (!$parent) { return; } if (is_a($parent, 'org_openpsa_projects_project')) { org_openpsa_contacts_role_dba::add($parent->guid, $this->person, $this->orgOpenpsaObtype); return; } $mc = self::new_collector('task', $parent->id); $mc->add_constraint('orgOpenpsaObtype', '=', $this->orgOpenpsaObtype); $mc->add_constraint('person', '=', $this->person); $mc->execute(); if ($mc->count() > 0) { //Resource is already present, aborting return; } $new_resource = new org_openpsa_projects_task_resource_dba(); $new_resource->person = $this->person; $new_resource->orgOpenpsaObtype = $this->orgOpenpsaObtype; $new_resource->task = $parent->id; $new_resource->create(); }