/** * * @param string $parameters * @return string */ public static function createBooleanIndicator($lastIndicatorId, $parameters) { $dbconn = Di::getDefault()->get('db_centreon'); $class = '\\CentreonBam\\Models\\BooleanIndicator'; $repoClass = '\\CentreonBam\\Repository\\BooleanIndicatorRepository'; $sSlug = $parameters['boolean_name']; $oSlugify = new CentreonSlugify($class, $repoClass); $sSlug = $oSlugify->slug($parameters['boolean_name']); $insertBooleanRequest = "INSERT INTO cfg_bam_boolean(name, expression, bool_state, slug)" . " VALUES(:boolean_name, :boolean_expression, :bool_state, :slug)"; $stmtBooleanInsert = $dbconn->prepare($insertBooleanRequest); $stmtBooleanInsert->bindParam(':boolean_name', $parameters['boolean_name'], \PDO::PARAM_STR); $stmtBooleanInsert->bindParam(':slug', $sSlug, \PDO::PARAM_STR); $stmtBooleanInsert->bindParam(':boolean_expression', $parameters['boolean_expression'], \PDO::PARAM_INT); $stmtBooleanInsert->bindParam(':bool_state', $parameters['bool_state'], \PDO::PARAM_INT); $stmtBooleanInsert->execute(); $lastBooleanId = $dbconn->lastInsertId('cfg_bam_boolean', 'boolean_id'); $insertIndicatorRequest = "UPDATE cfg_bam_kpi" . " SET boolean_id=:boolean_id WHERE kpi_id = :kpi_id"; $stmtIndicatorInsert = $dbconn->prepare($insertIndicatorRequest); $stmtIndicatorInsert->bindParam(':boolean_id', $lastBooleanId, \PDO::PARAM_INT); $stmtIndicatorInsert->bindParam(':kpi_id', $lastIndicatorId, \PDO::PARAM_INT); $stmtIndicatorInsert->execute(); return $lastBooleanId; }
/** * Deploy services by host templates * * @param int $hostId * @param int $hostTemplateId */ public static function deployServices($hostId, $hostTemplateId = null) { static $deployedServices = array(); $db = Di::getDefault()->get('db_centreon'); $hid = is_null($hostTemplateId) ? $hostId : $hostTemplateId; $services = HostServiceRelation::getMergedParameters(array(), array('service_id', 'service_description', 'service_alias'), -1, 0, null, 'ASC', array(HostServiceRelation::getFirstKey() => $hid), 'AND'); foreach ($services as $service) { if (is_null($hostTemplateId)) { $deployedServices[$hostId][$service['service_description']] = true; } elseif (!isset($deployedServices[$hostId][$service['service_alias']])) { $oRepositorie = "CentreonConfiguration\\Repository\\ServiceRepository"; $oSlugify = new CentreonSlugify(self, $oRepositorie); if (!empty($service['service_alias'])) { $sData = $service['service_alias']; } else { $sData = $service['service_description']; } $sHostName = Host::get($hostId, 'host_name'); $sString = $sHostName['host_name'] . " " . $sData; $sSlug = $oSlugify->slug($sString); $serviceId = Service::insert(array('service_slug' => $sSlug, 'service_description' => $sData, 'service_template_model_stm_id' => $service['service_id'], 'service_register' => 1, 'service_activate' => 1)); HostServiceRelation::insert($hostId, $serviceId); $deployedServices[$hostId][$service['service_alias']] = true; } } $templates = HostHosttemplateRelation::getTargetIdFromSourceId('host_tpl_id', 'host_host_id', $hid); foreach ($templates as $tplId) { self::deployServices($hostId, $tplId); } }
/** * Update slug services by host * * @param int $iHostId * @param string $sHostName */ public static function updateSlugServices($iHostId, $sHostName) { $aServices = array(); $db = Di::getDefault()->get('db_centreon'); $repository = "CentreonConfiguration\\Repository\\ServiceRepository"; $repository::setObjectName("Service"); $repository::setObjectClass("\\CentreonConfiguration\\Models\\Service"); $oModel = "CentreonConfiguration\\Models\\Service"; $oSlugify = new CentreonSlugify($oModel, $repository); // get services $aHostServices = HostServiceRelation::getMergedParameters(array('host_id'), array('service_id', 'service_description', 'service_alias'), -1, 0, null, "ASC", array('host_id' => $iHostId), "OR"); foreach ($aHostServices as $key => $oService) { $sString = $sHostName . " " . $oService['service_description']; $sSlug = $oSlugify->slug($sString); Service::updateSlug($oService['service_id'], $sSlug); } }
/** * Update contact * @param array $givenParameters */ public static function update($givenParameters, $origin = "", $route = "", $validate = true, $validateMandatory = true) { if ($validate) { self::validateForm($givenParameters, $origin, $route, $validateMandatory); } $aTagList = array(); $aTags = array(); if (isset($givenParameters['contact_tags'])) { $aTagList = explode(",", $givenParameters['contact_tags']); foreach ($aTagList as $var) { $var = trim($var); if (!empty($var)) { array_push($aTags, $var); } } } if (count($aTags) > 0) { TagsRepository::saveTagsForResource(self::$objectName, $givenParameters['object_id'], $aTags, '', false, 1); } $infoToUpdate['contact_id'] = $givenParameters['object_id']; if (isset($givenParameters['timezone_id']) && is_numeric($givenParameters['timezone_id'])) { $infoToUpdate['timezone_id'] = $givenParameters['timezone_id']; } else { $infoToUpdate['timezone_id'] = ""; } if (isset($givenParameters['description'])) { $infoToUpdate['description'] = $givenParameters['description']; } $class = static::$objectClass; $sField = $class::getUniqueLabelField(); if (isset($givenParameters[$sField])) { $oSlugify = new CentreonSlugify($class, get_called_class()); $sSlug = $oSlugify->slug($givenParameters[$sField]); $infoToUpdate[$class::getSlugField()] = $sSlug; } return Contact::update($givenParameters['object_id'], $infoToUpdate); }
/** * Generic update function * * @param array $givenParameters * @throws \Centreon\Internal\Exception */ public static function update($givenParameters, $origin = "", $route = "", $validate = true, $validateMandatory = true) { if ($validate) { self::validateForm($givenParameters, $origin, $route, $validateMandatory); } if (isset($givenParameters['password']) && isset($givenParameters['password2'])) { $givenParameters['password'] = $givenParameters['password2']; } $extraParameters = array(); foreach ($givenParameters as $name => $value) { $explodedName = explode("__", $name); if (count($explodedName) == 2) { $extraParameters[$explodedName[0]][$explodedName[1]] = $value; unset($givenParameters[$name]); } } $events = Di::getDefault()->get('events'); $preSaveEvent = new PreSaveEvent('update', $givenParameters, $extraParameters); $events->emit('centreon-main.pre.save', array($preSaveEvent)); $class = static::$objectClass; $pk = $class::getPrimaryKey(); $givenParameters[$pk] = $givenParameters['object_id']; $sField = $class::getUniqueLabelField(); if (isset($givenParameters[$sField]) && !is_null($class::getSlugField()) && (!isset($givenParameters[$class::getSlugField()]) || isset($givenParameters[$class::getSlugField()]) && is_null($givenParameters[$class::getSlugField()]))) { $oSlugify = new CentreonSlugify($class, get_called_class()); $sSlug = $oSlugify->slug($givenParameters[$sField], $givenParameters['object_id']); $givenParameters[$class::getSlugField()] = $sSlug; } if (!isset($givenParameters[$pk])) { throw new \Exception('Primary key of object is not defined'); } $db = Di::getDefault()->get('db_centreon'); $id = $givenParameters[$pk]; unset($givenParameters[$pk]); foreach (static::$relationMap as $k => $rel) { try { if (!isset($givenParameters[$k])) { continue; } try { if ($rel::$firstObject == static::$objectClass) { $rel::delete($id); } else { $rel::delete(null, $id); } } catch (Exception $e) { // it's okay if nothing got deleted } $arr = explode(',', ltrim($givenParameters[$k], ',')); $db->beginTransaction(); foreach ($arr as $relId) { $relId = trim($relId); if (is_numeric($relId)) { if ($rel::$firstObject == static::$objectClass) { $rel::insert($id, $relId); } else { $rel::insert($relId, $id); } } elseif (!empty($relId)) { $complexeRelId = explode('_', $relId); if ($rel::$firstObject == static::$objectClass) { $rel::insert($id, $complexeRelId[1], $complexeRelId[0]); } } } $db->commit(); unset($givenParameters[$k]); } catch (Exception $e) { throw new Exception('Error while updating', 0, $e); } } $columns = $class::getColumns(); $updateValues = array(); foreach ($givenParameters as $key => $value) { if (in_array($key, $columns)) { if (is_string($value)) { $updateValues[$key] = trim($value); } else { $updateValues[$key] = $value; } } } $class::update($id, $updateValues); $postSaveEvent = new PostSaveEvent('update', $givenParameters, $extraParameters); $events->emit('centreon-main.post.save', array($postSaveEvent)); if (method_exists(get_called_class(), 'postSave')) { static::postSave($id, 'update', $givenParameters); } }
/** * Generic update function * * @param type $givenParameters * @param type $origin * @param type $route * @param type $validate * @param type $validateMandatory * * @throws \Centreon\Internal\Exception */ public static function update($givenParameters, $origin = "", $route = "", $validate = true, $validateMandatory = true) { $id = null; $db = Di::getDefault()->get('db_centreon'); $class = static::$objectClass; $pk = $class::getPrimaryKey(); $columns = $class::getColumns(); if (isset($givenParameters['service_hosts'])) { $sField = $class::getUniqueLabelField(); $aHostId = explode(",", $givenParameters['service_hosts']); $aHostId = array_filter($aHostId, 'strlen'); if (count($aHostId) > 0) { $sHostName = Host::get(current($aHostId), 'host_name'); if (isset($sField) && isset($givenParameters[$sField]) && !is_null($class::getSlugField()) && (isset($givenParameters[$class::getSlugField()]) && is_null($givenParameters[$class::getSlugField()]) or !isset($givenParameters[$class::getSlugField()]))) { $oSlugify = new CentreonSlugify($class, get_called_class()); $sString = $sHostName['host_name'] . " " . $givenParameters[$sField]; $sSlug = $oSlugify->slug($sString); $givenParameters[$class::getSlugField()] = $sSlug; } } } parent::update($givenParameters, $origin, $route, $validate, $validateMandatory); }