diff -rc zabbix-1.8.3rc1/frontends/php/api/classes/class.cusermacro.php zabbix-1.8.3rc1-hack/frontends/php/api/classes/class.cusermacro.php
*** zabbix-1.8.3rc1/frontends/php/api/classes/class.cusermacro.php	2010-07-25 11:00:06.000000000 +0200
--- zabbix-1.8.3rc1-hack/frontends/php/api/classes/class.cusermacro.php	2010-07-25 19:02:31.000000000 +0200
***************
*** 1084,1089 ****
--- 1084,1100 ----
  
  				$triggers[$num]['expression'] = str_replace($search, $values, $trigger['expression']);
  			}
+       
+ 			if(!isset($trigger['description'])) continue;
+ 
+ 			if($res = preg_match_all('/'.ZBX_PREG_EXPRESSION_USER_MACROS.'/', $trigger['description'], $arr)){
+ 				$macros = self::getMacros($arr[1], array('triggerid' => $trigger['triggerid']));
+ 
+ 				$search = array_keys($macros);
+ 				$values = array_values($macros);
+ 
+ 				$triggers[$num]['description'] = str_replace($search, $values, $trigger['description']);
+ 			}
  		}
  
  		if($single) $triggers = reset($triggers);
diff -rc zabbix-1.8.3rc1/frontends/php/include/triggers.inc.php zabbix-1.8.3rc1-hack/frontends/php/include/triggers.inc.php
*** zabbix-1.8.3rc1/frontends/php/include/triggers.inc.php	2010-07-25 11:00:05.000000000 +0200
--- zabbix-1.8.3rc1-hack/frontends/php/include/triggers.inc.php	2010-07-25 19:05:42.000000000 +0200
***************
*** 1750,1755 ****
--- 1750,1759 ----
  				}
  
  			}
+ 
+ 			$row['description'] = $description;
+ 			CUserMacro::resolveTrigger($row);
+ 			$description = $row['description'];
  		}
  		else{
  			$description = '*ERROR*';
diff -rc zabbix-1.8.3rc1/src/libs/zbxserver/expression.c zabbix-1.8.3rc1-hack/src/libs/zbxserver/expression.c
*** zabbix-1.8.3rc1/src/libs/zbxserver/expression.c	2010-07-25 11:00:03.000000000 +0200
--- zabbix-1.8.3rc1-hack/src/libs/zbxserver/expression.c	2010-07-25 18:08:42.000000000 +0200
***************
*** 2021,2026 ****
--- 2021,2032 ----
  					ret = DBget_item_lastvalue_by_triggerid(event->objectid, &replace_to, N_functionid);
  				else if (0 == strcmp(m, MVAR_ITEM_VALUE))
  					ret = DBget_item_value_by_triggerid(event->objectid, &replace_to, N_functionid, event->clock);
+ 				else if (0 == strncmp(m, "{$", 2))	/* user defined macros */
+ 				{
+ 					zbxmacros_get_value_by_triggerid(macros, event->objectid, m, &replace_to);
+ 					if (NULL != replace_to && FAIL == (res = is_double_prefix(replace_to)) && NULL != error)
+ 						zbx_snprintf(error, maxerrlen, "Macro '%s' value is not numeric", m);
+ 				}
  			}
  		}
  		else if (macro_type & MACRO_TYPE_TRIGGER_EXPRESSION)
