Esempio n. 1
0
function str_replace_first($search, $replace, $subject)
{
    $pos = zbx_strpos($subject, $search);
    if ($pos !== false) {
        $subject = zbx_substr_replace($subject, $replace, $pos, zbx_strlen($search));
    }
    return $subject;
}
 /**
  * Replace macros in trigger description by values.
  * All macros are resolved in one go.
  *
  * @param array $trigger
  * @param array $macroValues
  *
  * @return array
  */
 protected function replaceMacroValues(array $trigger, array $macroValues)
 {
     $macroBegin = false;
     for ($i = 0; $i < zbx_strlen($trigger['description']); $i++) {
         $c = zbx_substr($trigger['description'], $i, 1);
         switch ($c) {
             case '{':
                 $macroBegin = $i;
                 break;
             case '}':
                 if ($macroBegin !== false) {
                     $macro = zbx_substr($trigger['description'], $macroBegin, $i - $macroBegin + 1);
                     if (isset($macroValues[$macro])) {
                         $replace = $macroValues[$macro];
                     } elseif ($this->isAllowedMacro($macro)) {
                         $replace = UNRESOLVED_MACRO_STRING;
                     } else {
                         $replace = false;
                     }
                     if ($replace !== false) {
                         $trigger['description'] = zbx_substr_replace($trigger['description'], $replace, $macroBegin, zbx_strlen($macro));
                         // - 1 because for loop adds 1 on next iteration
                         $i = $macroBegin + zbx_strlen($replace) - 1;
                         $macroBegin = false;
                     }
                 }
                 break;
         }
     }
     return $trigger;
 }