示例#1
0
 function doSpecificMassiveActions($input = array())
 {
     $res = array('ok' => 0, 'ko' => 0, 'noright' => 0);
     $database_item = new PluginDatabasesDatabase_Item();
     switch ($input['action']) {
         case "Transfert":
             if ($input['itemtype'] == 'PluginDatabasesDatabase') {
                 foreach ($input["item"] as $key => $val) {
                     if ($val == 1) {
                         $this->getFromDB($key);
                         $type = PluginDatabasesDatabaseType::transfer($this->fields["plugin_databases_databasetypes_id"], $input['entities_id']);
                         if ($type > 0) {
                             $values["id"] = $key;
                             $values["plugin_databases_databasetypes_id"] = $type;
                             if ($this->update($values)) {
                                 $res['ok']++;
                             } else {
                                 $res['ko']++;
                             }
                         }
                         unset($values);
                         $values["id"] = $key;
                         $values["entities_id"] = $input['entities_id'];
                         if ($this->update($values)) {
                             $res['ok']++;
                         } else {
                             $res['ko']++;
                         }
                     }
                 }
             }
             break;
         case "Install":
             foreach ($input["item"] as $key => $val) {
                 if ($val == 1) {
                     $values = array('plugin_databases_databases_id' => $key, 'items_id' => $input["item_item"], 'itemtype' => $input['typeitem']);
                     if ($database_item->add($values)) {
                         $res['ok']++;
                     } else {
                         $res['ko']++;
                     }
                 }
             }
             break;
         case "Desinstall":
             foreach ($input["item"] as $key => $val) {
                 if ($val == 1) {
                     if ($database_item->deleteItemByDatabasesAndItem($key, $input['item_item'], $input['typeitem'])) {
                         $res['ok']++;
                     } else {
                         $res['ko']++;
                     }
                 }
             }
             break;
         default:
             return parent::doSpecificMassiveActions($input);
             break;
     }
     return $res;
 }
function plugin_databases_getAddSearchOptions($itemtype)
{
    $sopt = array();
    if (in_array($itemtype, PluginDatabasesDatabase::getTypes(true))) {
        if (Session::haveRight("plugin_databases", READ)) {
            $sopt[2410]['table'] = 'glpi_plugin_databases_databases';
            $sopt[2410]['field'] = 'name';
            $sopt[2410]['name'] = PluginDatabasesDatabase::getTypeName(2) . " - " . __('Name');
            $sopt[2410]['forcegroupby'] = true;
            $sopt[2410]['datatype'] = 'itemlink';
            $sopt[2410]['massiveaction'] = false;
            $sopt[2410]['itemlink_type'] = 'PluginDatabasesDatabase';
            $sopt[2410]['joinparams'] = array('beforejoin' => array('table' => 'glpi_plugin_databases_databases_items', 'joinparams' => array('jointype' => 'itemtype_item')));
            $sopt[2411]['table'] = 'glpi_plugin_databases_databasecategories';
            $sopt[2411]['field'] = 'name';
            $sopt[2411]['name'] = PluginDatabasesDatabase::getTypeName(2) . " - " . PluginDatabasesDatabaseCategory::getTypeName(1);
            $sopt[2411]['forcegroupby'] = true;
            $sopt[2411]['joinparams'] = array('beforejoin' => array(array('table' => 'glpi_plugin_databases_databases', 'joinparams' => $sopt[2410]['joinparams'])));
            $sopt[2411]['datatype'] = 'dropdown';
            $sopt[2411]['massiveaction'] = false;
            $sopt[2412]['table'] = 'glpi_plugin_databases_servertypes';
            $sopt[2412]['field'] = 'name';
            $sopt[2412]['name'] = PluginDatabasesDatabase::getTypeName(2) . " - " . PluginDatabasesServerType::getTypeName(1);
            $sopt[2412]['forcegroupby'] = true;
            $sopt[2412]['joinparams'] = array('beforejoin' => array(array('table' => 'glpi_plugin_databases_databases', 'joinparams' => $sopt[2410]['joinparams'])));
            $sopt[2412]['datatype'] = 'dropdown';
            $sopt[2412]['massiveaction'] = false;
            $sopt[2413]['table'] = 'glpi_plugin_databases_databasetypes';
            $sopt[2413]['field'] = 'name';
            $sopt[2413]['name'] = PluginDatabasesDatabase::getTypeName(2) . " - " . PluginDatabasesDatabaseType::getTypeName(1);
            $sopt[2413]['forcegroupby'] = true;
            $sopt[2413]['joinparams'] = array('beforejoin' => array(array('table' => 'glpi_plugin_databases_databases', 'joinparams' => $sopt[2410]['joinparams'])));
            $sopt[2413]['datatype'] = 'dropdown';
            $sopt[2413]['massiveaction'] = false;
        }
    }
    /*if ($itemtype == 'Ticket') {
         if (Session::haveRight("plugin_databases", READ)) {
            $sopt[2414]['table']         = 'glpi_plugin_databases_databases';
            $sopt[2414]['field']         = 'name';
            $sopt[2414]['linkfield']     = 'items_id';
            $sopt[2414]['datatype']      = 'itemlink';
            $sopt[2414]['massiveaction'] = false;
            $sopt[2414]['name']          = __('Database', 'databases')." - ".
                                           __('Name');
         }
      }*/
    return $sopt;
}
 /**
  * @since version 0.85
  *
  * @see CommonDBTM::processMassiveActionsForOneItemtype()
  **/
 static function processMassiveActionsForOneItemtype(MassiveAction $ma, CommonDBTM $item, array $ids)
 {
     global $DB;
     $database_item = new PluginDatabasesDatabase_Item();
     switch ($ma->getAction()) {
         case "plugin_databases_add_item":
             $input = $ma->getInput();
             foreach ($ids as $id) {
                 $input = array('plugin_databases_databasetypes_id' => $input['plugin_databases_databasetypes_id'], 'items_id' => $id, 'itemtype' => $item->getType());
                 if ($database_item->can(-1, UPDATE, $input)) {
                     if ($database_item->add($input)) {
                         $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_OK);
                     } else {
                         $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_KO);
                     }
                 } else {
                     $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_KO);
                 }
             }
             return;
         case "transfer":
             $input = $ma->getInput();
             if ($item->getType() == 'PluginDatabasesDatabase') {
                 foreach ($ids as $key) {
                     $item->getFromDB($key);
                     $type = PluginDatabasesDatabaseType::transfer($item->fields["plugin_databases_databasetypes_id"], $input['entities_id']);
                     if ($type > 0) {
                         $values["id"] = $key;
                         $values["plugin_databases_databasetypes_id"] = $type;
                         $item->update($values);
                     }
                     unset($values);
                     $values["id"] = $key;
                     $values["entities_id"] = $input['entities_id'];
                     if ($item->update($values)) {
                         $ma->itemDone($item->getType(), $key, MassiveAction::ACTION_OK);
                     } else {
                         $ma->itemDone($item->getType(), $key, MassiveAction::ACTION_KO);
                     }
                 }
             }
             return;
         case 'install':
             $input = $ma->getInput();
             foreach ($ids as $key) {
                 if ($item->can($key, UPDATE)) {
                     $values = array('plugin_databases_databases_id' => $key, 'items_id' => $input["item_item"], 'itemtype' => $input['typeitem']);
                     if ($database_item->add($values)) {
                         $ma->itemDone($item->getType(), $key, MassiveAction::ACTION_OK);
                     } else {
                         $ma->itemDone($item->getType(), $key, MassiveAction::ACTION_KO);
                     }
                 } else {
                     $ma->itemDone($item->getType(), $key, MassiveAction::ACTION_NORIGHT);
                     $ma->addMessage($item->getErrorMessage(ERROR_RIGHT));
                 }
             }
             return;
         case 'uninstall':
             $input = $ma->getInput();
             foreach ($ids as $key) {
                 if ($val == 1) {
                     if ($database_item->deleteItemByDatabasesAndItem($key, $input['item_item'], $input['typeitem'])) {
                         $ma->itemDone($item->getType(), $key, MassiveAction::ACTION_OK);
                     } else {
                         $ma->itemDone($item->getType(), $key, MassiveAction::ACTION_KO);
                     }
                 }
             }
             return;
     }
     parent::processMassiveActionsForOneItemtype($ma, $item, $ids);
 }