예제 #1
0
 /**
  * Get the standard massive actions
  *
  * @since version 0.84
  *
  * This must not be overloaded in Class
  * @param $is_deleted massive action for deleted items ?   (default 0)
  * @param $checkitem link item to check right              (default NULL)
  *
  * @return an array of massive actions
  **/
 function getAllMassiveActions($is_deleted = 0, $checkitem = NULL)
 {
     global $CFG_GLPI, $PLUGIN_HOOKS;
     if (!is_null($checkitem)) {
         $isadmin = $checkitem->canUpdate();
     } else {
         $isadmin = static::canUpdate();
     }
     $itemtype = $this->getType();
     $actions = array();
     if ($is_deleted) {
         if ($isadmin) {
             $actions['purge'] = _x('button', 'Delete permanently');
             $actions['restore'] = _x('button', 'Restore');
         }
     } else {
         if ($isadmin || in_array($itemtype, $CFG_GLPI["infocom_types"]) && Infocom::canUpdate()) {
             //TRANS: select action 'update' (before doing it)
             $actions['update'] = _x('button', 'Update');
         }
         if (in_array($itemtype, $CFG_GLPI["infocom_types"]) && Infocom::canCreate()) {
             $actions['activate_infocoms'] = __('Enable the financial and administrative information');
         }
         // No delete for entities and tracking of not have right
         if ($isadmin) {
             // do not take into account is_deleted if items may be dynamic
             if ($this->maybeDeleted() && !$this->useDeletedToLockIfDynamic()) {
                 $actions['delete'] = _x('button', 'Put in dustbin');
             } else {
                 $actions['purge'] = _x('button', 'Delete permanently');
             }
         }
         if (in_array($itemtype, $CFG_GLPI["document_types"])) {
             if (Document::canView()) {
                 $actions['add_document'] = _x('button', 'Add a document');
                 $actions['remove_document'] = _x('button', 'Remove a document');
             }
         }
         if (in_array($itemtype, $CFG_GLPI["contract_types"])) {
             if (Contract::canUpdate()) {
                 $actions['add_contract_item'] = _x('button', 'Add a contract');
                 $actions['remove_contract_item'] = _x('button', 'Remove a contract');
             }
         }
         // Specific actions
         $actions += $this->getSpecificMassiveActions($checkitem);
         // Plugin Specific actions
         if (isset($PLUGIN_HOOKS['use_massive_action'])) {
             foreach ($PLUGIN_HOOKS['use_massive_action'] as $plugin => $val) {
                 $plug_actions = Plugin::doOneHook($plugin, 'MassiveActions', $itemtype);
                 if (count($plug_actions)) {
                     $actions += $plug_actions;
                 }
             }
         }
     }
     //Add unlock if needed
     $actions += Lock::getUnlockMassiveActions($itemtype);
     // Manage forbidden actions
     $forbidden_actions = $this->getForbiddenStandardMassiveAction();
     if (is_array($forbidden_actions) && count($forbidden_actions)) {
         foreach ($forbidden_actions as $actiontodel) {
             if (isset($actions[$actiontodel])) {
                 unset($actions[$actiontodel]);
             }
         }
     }
     return $actions;
 }