/** * @see CommonDBTM::doSpecificMassiveActions() **/ function doSpecificMassiveActions($input = array()) { $res = array('ok' => 0, 'ko' => 0, 'noright' => 0); switch ($input['action']) { case "add_contact_supplier": $contactsupplier = new Contact_Supplier(); foreach ($input["item"] as $key => $val) { if (isset($input['contacts_id'])) { $input = array('suppliers_id' => $key, 'contacts_id' => $input['contacts_id']); } else { if (isset($input['suppliers_id'])) { $input = array('suppliers_id' => $input['suppliers_id'], 'contacts_id' => $key); } else { return false; } } if ($contactsupplier->can(-1, 'w', $input)) { if ($contactsupplier->add($input)) { $res['ok']++; } else { $res['ko']++; } } else { $res['noright']++; } } break; default: return parent::doSpecificMassiveActions($input); } return $res; }
break; case "add_contract": $contractitem = new Contract_Item(); foreach ($_POST["item"] as $key => $val) { $input = array('itemtype' => $_POST["itemtype"], 'items_id' => $key, 'contracts_id' => $_POST['contracts_id']); if ($contractitem->can(-1, 'w', $input)) { $contractitem->add($input); } } break; case "add_enterprise": if ($_POST["itemtype"] == 'Contact') { $contactsupplier = new Contact_Supplier(); foreach ($_POST["item"] as $key => $val) { $input = array('suppliers_id' => $_POST['entID'], 'contacts_id' => $key); if ($contactsupplier->can(-1, 'w', $input)) { $contactsupplier->add($input); } } } break; case "activate_infocoms": $ic = new Infocom(); if ($ic->canCreate()) { foreach ($_POST["item"] as $key => $val) { $input = array('itemtype' => $_POST['itemtype'], 'items_id' => $key); if (!$ic->getFromDBforDevice($_POST['itemtype'], $key)) { $ic->add($input); } } }
/** * Check right on CommonDBRelation object */ public function testContact_Supplier() { global $DB; $DB->connect(); $ent0 = $this->sharedFixture['entity'][0]; $ent1 = $this->sharedFixture['entity'][1]; $ent2 = $this->sharedFixture['entity'][2]; // Super admin Session::changeProfile(4); $this->assertEquals(4, $_SESSION['glpiactiveprofile']['id']); $this->assertEquals(31, $_SESSION['glpiactiveprofile']['contact_enterprise']); // See all $this->assertTrue(Session::changeActiveEntities("all")); // Create some contacts $contact = new Contact(); $idc[0] = $contact->add(array('name' => "Contact 1", 'entities_id' => $ent0, 'is_recursive' => 0)); $this->assertGreaterThan(0, $idc[0]); $idc[1] = $contact->add(array('name' => "Contact 2", 'entities_id' => $ent0, 'is_recursive' => 1)); $this->assertGreaterThan(0, $idc[1]); $idc[2] = $contact->add(array('name' => "Contact 3", 'entities_id' => $ent1, 'is_recursive' => 1)); $this->assertGreaterThan(0, $idc[2]); $idc[3] = $contact->add(array('name' => "Contact 4", 'entities_id' => $ent2)); $this->assertGreaterThan(0, $idc[3]); // Create some suppliers $supplier = new Supplier(); $ids[0] = $supplier->add(array('name' => "Supplier 1", 'entities_id' => $ent0, 'is_recursive' => 0)); $this->assertGreaterThan(0, $ids[0]); $ids[1] = $supplier->add(array('name' => "Supplier 2", 'entities_id' => $ent0, 'is_recursive' => 1)); $this->assertGreaterThan(0, $ids[1]); $ids[2] = $supplier->add(array('name' => "Supplier 3", 'entities_id' => $ent1)); $this->assertGreaterThan(0, $ids[2]); $ids[3] = $supplier->add(array('name' => "Supplier 4", 'entities_id' => $ent2)); $this->assertGreaterThan(0, $ids[3]); // Relation $rel = new Contact_Supplier(); $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[0]); // root $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[0] = $rel->add($input); $this->assertGreaterThan(0, $idr[0]); $this->assertTrue($rel->can($idr[0], READ)); $this->assertTrue($rel->canEdit($idr[0])); $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[1]); // root + rec $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[1] = $rel->add($input); $this->assertGreaterThan(0, $idr[1]); $this->assertTrue($rel->can($idr[1], READ)); $this->assertTrue($rel->canEdit($idr[1])); $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[2]); // child 1 $this->assertFalse($rel->can(-1, CREATE, $input)); $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[3]); // child 2 $this->assertFalse($rel->can(-1, CREATE, $input)); $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[0]); // root $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[2] = $rel->add($input); $this->assertGreaterThan(0, $idr[2]); $this->assertTrue($rel->can($idr[2], READ)); $this->assertTrue($rel->canEdit($idr[2])); $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[1]); // root + rec $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[3] = $rel->add($input); $this->assertGreaterThan(0, $idr[3]); $this->assertTrue($rel->can($idr[3], READ)); $this->assertTrue($rel->canEdit($idr[3])); $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[2]); // child 1 $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[4] = $rel->add($input); $this->assertGreaterThan(0, $idr[4]); $this->assertTrue($rel->can($idr[4], READ)); $this->assertTrue($rel->canEdit($idr[4])); $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[3]); // child 2 $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[5] = $rel->add($input); $this->assertGreaterThan(0, $idr[5]); $this->assertTrue($rel->can($idr[5], READ)); $this->assertTrue($rel->canEdit($idr[5])); $input = array('contacts_id' => $idc[2], 'suppliers_id' => $ids[0]); // root $this->assertFalse($rel->can(-1, CREATE, $input)); $input = array('contacts_id' => $idc[2], 'suppliers_id' => $ids[1]); // root + rec $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[6] = $rel->add($input); $this->assertGreaterThan(0, $idr[6]); $this->assertTrue($rel->can($idr[6], READ)); $this->assertTrue($rel->canEdit($idr[6])); $input = array('contacts_id' => $idc[2], 'suppliers_id' => $ids[2]); // Child 1 $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[7] = $rel->add($input); $this->assertGreaterThan(0, $idr[7]); $this->assertTrue($rel->can($idr[7], READ)); $this->assertTrue($rel->canEdit($idr[7])); $input = array('contacts_id' => $idc[2], 'suppliers_id' => $ids[3]); // Child 2 $this->assertFalse($rel->can(-1, CREATE, $input)); // See only in child entity 2 + parent if recursive $this->assertTrue(Session::changeActiveEntities($ent2)); $this->assertFalse($rel->can($idr[0], READ)); // root / root $this->assertFalse($rel->canEdit($idr[0])); $this->assertFalse($rel->can($idr[1], READ)); // root / root rec $this->assertFalse($rel->canEdit($idr[1])); $this->assertFalse($rel->can($idr[2], READ)); // root rec / root $this->assertFalse($rel->canEdit($idr[2])); $this->assertTrue($rel->can($idr[3], READ)); // root rec / root rec $this->assertFalse($rel->canEdit($idr[3])); $this->assertFalse($rel->can($idr[4], READ)); // root rec / child 1 $this->assertFalse($rel->canEdit($idr[4])); $this->assertTrue($rel->can($idr[5], READ)); // root rec / child 2 $this->assertTrue($rel->canEdit($idr[5])); $this->assertFalse($rel->can($idr[6], READ)); // child 1 / root rec $this->assertFalse($rel->canEdit($idr[6])); $this->assertFalse($rel->can($idr[7], READ)); // child 1 / child 1 $this->assertFalse($rel->canEdit($idr[7])); $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[0]); // root $this->assertFalse($rel->can(-1, CREATE, $input)); $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[1]); // root + rec $this->assertFalse($rel->can(-1, CREATE, $input)); $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[0]); // root $this->assertFalse($rel->can(-1, CREATE, $input)); $input = array('contacts_id' => $idc[3], 'suppliers_id' => $ids[0]); // root $this->assertFalse($rel->can(-1, CREATE, $input)); $input = array('contacts_id' => $idc[3], 'suppliers_id' => $ids[1]); // root + rec $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[7] = $rel->add($input); $this->assertGreaterThan(0, $idr[7]); $this->assertTrue($rel->can($idr[7], READ)); $this->assertTrue($rel->canEdit($idr[7])); $input = array('contacts_id' => $idc[3], 'suppliers_id' => $ids[2]); // Child 1 $this->assertFalse($rel->can(-1, CREATE, $input)); $input = array('contacts_id' => $idc[3], 'suppliers_id' => $ids[3]); // Child 3 $this->assertTrue($rel->can(-1, CREATE, $input)); $idr[8] = $rel->add($input); $this->assertGreaterThan(0, $idr[8]); $this->assertTrue($rel->can($idr[8], READ)); $this->assertTrue($rel->canEdit($idr[8])); }