/** * * @param type $sType * @param type $sNameMacro * @param type $iIdObject * @return type */ public static function validate($sType, $sNameMacro, $iIdObject, $iHostId = null) { $tables = array(); $conditions = array(); $objectId = 0; $errors = array(); $bSuccess = true; $resultError = _("Object already exists"); $sMessage = ''; $db = Di::getDefault()->get('db_centreon'); if (!in_array($sType, array('host', 'hosttemplate', 'service', 'servicetemplate'))) { return; } if ($sType == 'host' || $sType == 'hosttemplate') { $sElement = 'host_macro_id'; $query = 'SELECT host_macro_id FROM cfg_customvariables_hosts WHERE host_macro_name = :host_macro_name' . ' AND host_host_id = :host_host_id'; $stmt = $db->prepare($query); $macroName = '$_HOST' . $sNameMacro . '$'; $stmt->bindParam(':host_macro_name', $macroName, \PDO::PARAM_STR); $stmt->bindParam(':host_host_id', $iIdObject, \PDO::PARAM_INT); } elseif ($sType == 'servicetemplate') { $sElement = 'svc_macro_id'; $query = 'SELECT svc_macro_id FROM cfg_customvariables_services WHERE svc_macro_name = :svc_macro_name' . ' AND svc_svc_id = :svc_svc_id'; $stmt = $db->prepare($query); $macroName = '$_SERVICE' . $sNameMacro . '$'; $stmt->bindParam(':svc_macro_name', $macroName, \PDO::PARAM_STR); $stmt->bindParam(':svc_svc_id', $iIdObject, \PDO::PARAM_INT); } else { $sElement = 'svc_macro_id'; $query = 'SELECT svc_macro_id FROM cfg_customvariables_services join cfg_hosts_services_relations on service_service_id = svc_svc_id' . ' WHERE svc_macro_name = :svc_macro_name' . ' AND svc_svc_id = :svc_svc_id '; $stmt = $db->prepare($query); $macroName = '$_SERVICE' . $sNameMacro . '$'; $stmt->bindParam(':svc_macro_name', $macroName, \PDO::PARAM_STR); $stmt->bindParam(':svc_svc_id', $iIdObject, \PDO::PARAM_INT); } $stmt->execute(); $result = $stmt->fetchAll(\PDO::FETCH_ASSOC); if (count($result) > 0) { $iIdReturned = $result[0][$sElement]; $bSuccess = false; $sMessage = $resultError; } if ($bSuccess === false) { $errors[] = $sMessage; } $params['characters'] = self::$forbidenCHar; $res = ForbiddenChar::validate($sNameMacro, $params); if (!$res['success']) { $errors[] = 'Macro name : ' . $res['error']; } // If we got error, we throw Exception if (count($errors) > 0) { self::raiseValidationException($errors); } }
/** * * @method post * @route /validator/forbiddenchar */ public function forbiddenCharAction() { $params = $this->getParams('post'); $jsonResponse = ForbiddenChar::validate($params['value']); return $jsonResponse['success']; }