/**
 * Expand macros inside key name and return it
 * Example:
 *	key: 'test.key[a, b, "{HOSTNAME}"]'
 *	name: 'Test item $1, $2, $3'
 *	result: 'Test item a, b, Zabbix-server'
 *
 * @param array $item
 * @param string $item['key_']
 * @param string $item['itemid']
 * @param string $item['name']
 *
 * @return string
 */
function itemName($item)
{
    $name = $item['name'];
    // if item name contains $1..$9 macros, we need to expand them
    if (preg_match('/\\$[1-9]/', $name)) {
        $key = resolveItemKeyMacros($item);
        // parsing key to get the parameters out of it
        $ItemKey = new CItemKey($key);
        if ($ItemKey->isValid()) {
            $keyParameters = $ItemKey->getParameters();
            $searchOffset = 0;
            while (preg_match('/\\$[1-9]/', $name, $matches, PREG_OFFSET_CAPTURE, $searchOffset)) {
                // matches[0][0] - matched param, [1] - second character of it
                $paramNumber = $matches[0][0][1] - 1;
                $replaceString = isset($keyParameters[$paramNumber]) ? $keyParameters[$paramNumber] : '';
                $name = substr_replace($name, $replaceString, $matches[0][1], 2);
                $searchOffset = $matches[0][1] + strlen($replaceString);
            }
        }
    }
    if (preg_match_all('/' . ZBX_PREG_EXPRESSION_USER_MACROS . '/', $name, $arr)) {
        $macros = API::UserMacro()->getMacros(array('macros' => $arr[1], 'itemid' => $item['itemid']));
        $name = str_replace(array_keys($macros), array_values($macros), $name);
    }
    return $name;
}
Exemplo n.º 2
0
     $change .= convert_units(array('value' => bcsub($lastHistory['value'], $prevHistory['value'], $digits), 'units' => $item['units'] == 'unixtime' ? 'uptime' : $item['units']));
     $change = nbsp($change);
 } else {
     $change = ' - ';
 }
 // column "action"
 if ($item['value_type'] == ITEM_VALUE_TYPE_FLOAT || $item['value_type'] == ITEM_VALUE_TYPE_UINT64) {
     $actions = new CLink(_('Graph'), 'history.php?action=showgraph&itemid=' . $item['itemid']);
 } else {
     $actions = new CLink(_('History'), 'history.php?action=showvalues&itemid=' . $item['itemid']);
 }
 $stateCss = $item['state'] == ITEM_STATE_NOTSUPPORTED ? 'unknown txt' : 'txt';
 $itemName = $item['resolvedName'];
 $host = $hosts[$item['hostid']];
 if ($filterShowDetails) {
     $itemKey = $item['type'] == ITEM_TYPE_HTTPTEST || $item['flags'] == ZBX_FLAG_DISCOVERY_CREATED ? new CSpan(resolveItemKeyMacros($item), 'enabled') : new CLink(resolveItemKeyMacros($item), 'items.php?form=update&itemid=' . $item['itemid'], 'enabled');
     $statusIcons = array();
     if ($item['status'] == ITEM_STATUS_ACTIVE) {
         if (zbx_empty($item['error'])) {
             $error = new CDiv(SPACE, 'status_icon iconok');
         } else {
             $error = new CDiv(SPACE, 'status_icon iconerror');
             $error->setHint($item['error'], '', 'on');
         }
         $statusIcons[] = $error;
     }
     if ($item['value_type'] == ITEM_VALUE_TYPE_FLOAT || $item['value_type'] == ITEM_VALUE_TYPE_UINT64) {
         $trendValue = $config['hk_trends_global'] ? $config['hk_trends'] : $item['trends'];
     } else {
         $trendValue = UNKNOWN_VALUE;
     }