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); }