예제 #1
0
 /**
  *
  * @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;
 }
예제 #2
0
 /**
  * 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);
     }
 }
예제 #3
0
 /**
  * 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);
     }
 }
예제 #4
0
 /**
  * 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);
 }
예제 #5
0
 /**
  * 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);
     }
 }
예제 #6
0
 /**
  * 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);
 }