/**
  * Inserts/updates custom macro
  *
  * @param string $parameters
  * @return void
  * @throws CentreonClapiException
  */
 public function setmacro($parameters)
 {
     $params = explode($this->delim, $parameters);
     if (count($params) == 4) {
         $params[4] = 0;
     }
     if (count($params) < 4) {
         throw new CentreonClapiException(self::MISSINGPARAMETER);
     }
     $hostName = $params[0];
     $serviceDescription = $params[1];
     $relObject = new Centreon_Object_Relation_Host_Service();
     $elements = $relObject->getMergedParameters(array('host_id'), array('service_id'), -1, 0, null, null, array("host_name" => $hostName, "service_description" => $serviceDescription), "AND");
     if (!count($elements)) {
         throw new CentreonClapiException(self::OBJECT_NOT_FOUND . ":" . $hostName . "/" . $serviceDescription);
     }
     $macroObj = new Centreon_Object_Service_Macro_Custom();
     $macroList = $macroObj->getList($macroObj->getPrimaryKey(), -1, 0, null, null, array("svc_svc_id" => $elements[0]['service_id'], "svc_macro_name" => $this->wrapMacro($params[2])), "AND");
     if (count($macroList)) {
         $macroObj->update($macroList[0][$macroObj->getPrimaryKey()], array('svc_macro_value' => $params[3], 'is_password' => $params[4]));
     } else {
         $macroObj->insert(array('svc_svc_id' => $elements[0]['service_id'], 'svc_macro_name' => $this->wrapMacro($params[2]), 'svc_macro_value' => $params[3], 'is_password' => $params[4]));
     }
     $this->addAuditLog('c', $elements[0]['service_id'], $hostName . ' - ' . $serviceDescription, array($params[2] => $params[3]));
 }
 /**
  * Inserts/updates custom macro
  *
  * @param string $parameters
  * @return void
  * @throws CentreonClapiException
  */
 public function setmacro($parameters)
 {
     $params = explode($this->delim, $parameters);
     if (count($params) < 3) {
         throw new CentreonClapiException(self::MISSINGPARAMETER);
     }
     $elements = $this->object->getList("service_id", -1, 0, null, null, array('service_description' => $params[0], 'service_register' => 0), "AND");
     if (!count($elements)) {
         throw new CentreonClapiException(self::OBJECT_NOT_FOUND . ":" . $params[0]);
     }
     $macroObj = new Centreon_Object_Service_Macro_Custom();
     $macroList = $macroObj->getList($macroObj->getPrimaryKey(), -1, 0, null, null, array("svc_svc_id" => $elements[0]['service_id'], "svc_macro_name" => $this->wrapMacro($params[1])), "AND");
     if (count($macroList)) {
         $macroObj->update($macroList[0][$macroObj->getPrimaryKey()], array('svc_macro_value' => $params[2]));
     } else {
         $macroObj->insert(array('svc_svc_id' => $elements[0]['service_id'], 'svc_macro_name' => $this->wrapMacro($params[1]), 'svc_macro_value' => $params[2]));
     }
 }
 /**
  * Inserts/updates custom macro
  *
  * @param string $parameters
  * @return void
  * @throws CentreonClapiException
  */
 public function setmacro($parameters)
 {
     $params = explode($this->delim, $parameters);
     if (count($params) == 4) {
         $params[4] = 0;
     }
     if (count($params) < 4) {
         throw new CentreonClapiException(self::MISSINGPARAMETER);
     }
     $hostName = $params[0];
     $serviceDescription = $params[1];
     $relObject = new Centreon_Object_Relation_Host_Service();
     $elements = $relObject->getMergedParameters(array('host_id'), array('service_id'), -1, 0, null, null, array("host_name" => $hostName, "service_description" => $serviceDescription), "AND");
     if (!count($elements)) {
         throw new CentreonClapiException(self::OBJECT_NOT_FOUND . ":" . $hostName . "/" . $serviceDescription);
     }
     $macroObj = new Centreon_Object_Service_Macro_Custom();
     $macroList = $macroObj->getList($macroObj->getPrimaryKey(), -1, 0, null, null, array("svc_svc_id" => $elements[0]['service_id'], "svc_macro_name" => $this->wrapMacro($params[2])), "AND");
     $maxOrder = $macroObj->getList('max(macro_order)', -1, 0, null, null, array("svc_svc_id" => $elements[0]['service_id']));
     if (empty($maxOrder)) {
         $macroOrder = 0;
     } else {
         $macroOrder = $maxOrder[0]["max(macro_order)"] + 1;
     }
     // disable the check if the macro added is already in service template with same value
     //if($this->hasMacroFromServiceChanged($this->db, $elements[0]['service_id'], $params[2], $params[3])){
     if (count($macroList)) {
         $macroObj->update($macroList[0][$macroObj->getPrimaryKey()], array('svc_macro_value' => $params[3], 'is_password' => $params[4], 'description' => $params[5]));
     } else {
         $macroObj->insert(array('svc_svc_id' => $elements[0]['service_id'], 'svc_macro_name' => $this->wrapMacro($params[2]), 'svc_macro_value' => $params[3], 'is_password' => $params[4], 'description' => $params[5], 'macro_order' => $macroOrder));
     }
     $this->addAuditLog('c', $elements[0]['service_id'], $hostName . ' - ' . $serviceDescription, array($params[2] => $params[3]));
     //}
 }