예제 #1
0
 /**
  * @see CommonDBTM::doSpecificMassiveActions()
  **/
 function doSpecificMassiveActions($input = array())
 {
     $res = array('ok' => 0, 'ko' => 0, 'noright' => 0);
     switch ($input['action']) {
         case "add_document":
         case "add_document_item":
             $documentitem = new Document_Item();
             foreach ($input["item"] as $key => $val) {
                 if (isset($input['items_id'])) {
                     // Add items to documents
                     $input2 = array('itemtype' => $input["item_itemtype"], 'items_id' => $input["items_id"], 'documents_id' => $key);
                 } else {
                     if (isset($input['documents_id'])) {
                         // Add document to item
                         $input2 = array('itemtype' => $input["itemtype"], 'items_id' => $key, 'documents_id' => $input['documents_id']);
                     } else {
                         return false;
                     }
                 }
                 if ($documentitem->can(-1, 'w', $input2)) {
                     if ($documentitem->add($input2)) {
                         $res['ok']++;
                     } else {
                         $res['ko']++;
                     }
                 } else {
                     $res['noright']++;
                 }
             }
             break;
         case "remove_document":
         case "remove_document_item":
             foreach ($input["item"] as $key => $val) {
                 if (isset($input['items_id'])) {
                     // Remove item to documents
                     $input2 = array('itemtype' => $input["item_itemtype"], 'items_id' => $input["items_id"], 'documents_id' => $key);
                 } else {
                     if (isset($input['documents_id'])) {
                         // Remove contract to items
                         $input2 = array('itemtype' => $input["itemtype"], 'items_id' => $key, 'documents_id' => $input['documents_id']);
                     } else {
                         return false;
                     }
                 }
                 $docitem = new Document_Item();
                 if ($docitem->can(-1, 'w', $input2)) {
                     if ($item = getItemForItemtype($input2["itemtype"])) {
                         if ($item->getFromDB($input2['items_id'])) {
                             $doc = new self();
                             if ($doc->getFromDB($input2['documents_id'])) {
                                 if ($docitem->getFromDBForItems($doc, $item)) {
                                     if ($docitem->delete(array('id' => $docitem->getID()))) {
                                         $res['ok']++;
                                     } else {
                                         $res['ko']++;
                                     }
                                 } else {
                                     $res['ko']++;
                                 }
                             } else {
                                 $res['ko']++;
                             }
                         } else {
                             $res['ko']++;
                         }
                     } else {
                         $res['ko']++;
                     }
                 } else {
                     $res['noright']++;
                 }
             }
             break;
         default:
             return parent::doSpecificMassiveActions($input);
     }
     return $res;
 }