/**
  * @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);
             }
         }
     }
Exemple #3
0
 /**
  * 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]));
 }