Example #1
0
 static function methodAddAppliance($params, $protocol)
 {
     global $DB;
     // TODO : add more fields
     if (isset($params['help'])) {
         return array('help' => 'bool,optional', 'name' => 'string', 'entities_id' => 'integer,optional', 'is_helpdesk_visible' => 'bool,optional', 'is_recursive' => 'bool,optional', 'comment' => 'string,optional', 'externalid' => 'string,optional', 'plugin_appliances_appliancetypes_id' => 'integer,optional', 'plugin_appliances_appliancetypes_name' => 'string,optional');
     }
     if (!Session::getLoginUserID()) {
         return PluginWebservicesMethodCommon::Error($protocol, WEBSERVICES_ERROR_NOTAUTHENTICATED);
     }
     if (!isset($params['name'])) {
         return PluginWebservicesMethodCommon::Error($protocol, WEBSERVICES_ERROR_MISSINGPARAMETER);
     }
     if (isset($params['is_helpdesk_visible']) && !is_numeric($params['is_helpdesk_visible'])) {
         return PluginWebservicesMethodCommon::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'is_helpdesk_visible');
     }
     if (isset($params['is_recursive']) && !is_numeric($params['is_recursive'])) {
         return PluginWebservicesMethodCommon::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'is_recursive');
     }
     $input = array();
     $input['name'] = addslashes($params['name']);
     if (isset($params['entities_id'])) {
         $input['entities_id'] = intval($params['entities_id']);
     } else {
         $input['entities_id'] = $_SESSION["glpiactive_entity"];
     }
     if (isset($params['is_recursive'])) {
         // TODO check if canUnrecurs
         $input['is_recursive'] = $params['is_recursive'] ? 1 : 0;
     }
     if (isset($params['externalid']) && !empty($params['externalid'])) {
         $input['externalid'] = addslashes($params['externalid']);
     }
     if (isset($params['plugin_appliances_appliancetypes_name'])) {
         $type = new PluginAppliancesApplianceType();
         $input2 = array();
         $input2['entities_id'] = $input['entities_id'];
         $input2['is_recursive'] = $input['is_recursive'];
         $input2['name'] = addslashes($params['plugin_appliances_appliancetypes_name']);
         $input['plugin_appliances_appliancetypes_id'] = $type->import($input2);
     } else {
         if (isset($params['plugin_appliances_appliancetypes_id'])) {
             // TODO check if this id exists and is readable and is available in appliance entity
             $input['plugin_appliances_appliancetypes_id'] = intval($params['plugin_appliances_appliancetypes_id']);
         }
     }
     if (isset($params['is_helpdesk_visible'])) {
         $input['is_helpdesk_visible'] = $params['is_helpdesk_visible'] ? 1 : 0;
     }
     // Old field name for compatibility
     if (isset($params['notes'])) {
         $input['notepad'] = addslashes($params['notes']);
     }
     foreach (array('comment', 'notepad', 'serial', 'otherserial') as $field) {
         if (isset($params[$field])) {
             $input[$field] = addslashes($params[$field]);
         }
     }
     $appliance = new self();
     if (!$appliance->can(-1, 'w', $input)) {
         return PluginWebservicesMethodCommon::Error($protocol, WEBSERVICES_ERROR_NOTALLOWED);
     }
     $id = $appliance->add($input);
     if ($id) {
         // Return the newly created object
         return $appliance->methodGetAppliance(array('id' => $id), $protocol);
     }
     return PluginWebservicesMethodCommon::Error($protocol, WEBSERVICES_ERROR_FAILED);
 }