diff options
| author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-11-29 09:17:03 +0000 |
|---|---|---|
| committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-11-29 09:17:03 +0000 |
| commit | 25fe20d517ee1553fd569fba2f6c33ee5a9a446a (patch) | |
| tree | 74c7002f7eb1c9bd518128352a2711d1723dfa2c /frontends/php/include/screens.inc.php | |
| parent | 4df0316c5b609a2a609d9c6a6cd539ded33351d6 (diff) | |
| download | zabbix-25fe20d517ee1553fd569fba2f6c33ee5a9a446a.tar.gz zabbix-25fe20d517ee1553fd569fba2f6c33ee5a9a446a.tar.xz zabbix-25fe20d517ee1553fd569fba2f6c33ee5a9a446a.zip | |
- [DEV-55] Screen elements('graph','simple graph','plain text') are extended, added new field in DB,table 'screens_items' 'dynamic' (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5116 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include/screens.inc.php')
| -rw-r--r-- | frontends/php/include/screens.inc.php | 210 |
1 files changed, 168 insertions, 42 deletions
diff --git a/frontends/php/include/screens.inc.php b/frontends/php/include/screens.inc.php index 4cbe09bf..115c439a 100644 --- a/frontends/php/include/screens.inc.php +++ b/frontends/php/include/screens.inc.php @@ -106,42 +106,41 @@ return DBexecute($sql); } - function delete_screen($screenid) - { - $result=DBexecute("delete from screens_items where screenid=$screenid"); - if(!$result) return $result; - - $result=DBexecute("delete from screens_items where resourceid=$screenid and resourcetype=".SCREEN_RESOURCE_SCREEN); - if(!$result) return $result; - - $result=DBexecute('delete from slides where screenid='.$screenid); - if(!$result) return $result; + function delete_screen($screenid){ + $result=DBexecute("delete from screens_items where screenid=$screenid"); + if(!$result) return $result; + + $result=DBexecute("delete from screens_items where resourceid=$screenid and resourcetype=".SCREEN_RESOURCE_SCREEN); + if(!$result) return $result; - return DBexecute("delete from screens where screenid=$screenid"); + $result=DBexecute('delete from slides where screenid='.$screenid); + if(!$result) return $result; + + return DBexecute("delete from screens where screenid=$screenid"); } - function add_screen_item($resourcetype,$screenid,$x,$y,$resourceid,$width,$height,$colspan,$rowspan,$elements,$valign,$halign,$style,$url) - { - $sql="delete from screens_items where screenid=$screenid and x=$x and y=$y"; - DBexecute($sql); - $screenitemid=get_dbid("screens_items","screenitemid"); - $result=DBexecute("insert into screens_items (screenitemid,resourcetype,screenid,x,y,resourceid,width,height,". - " colspan,rowspan,elements,valign,halign,style,url) ". - " values ($screenitemid,$resourcetype,$screenid,$x,$y,$resourceid,". - " $width,$height,$colspan,$rowspan,$elements,$valign,$halign,$style,". - zbx_dbstr($url).")"); - - if(!$result) - return $result; - + function add_screen_item($resourcetype,$screenid,$x,$y,$resourceid,$width,$height,$colspan,$rowspan,$elements,$valign,$halign,$style,$url,$dynamic){ + $sql="DELETE FROM screens_items WHERE screenid=$screenid and x=$x and y=$y"; + DBexecute($sql); + + $screenitemid=get_dbid("screens_items","screenitemid"); + $result=DBexecute('INSERT INTO screens_items '. + '(screenitemid,resourcetype,screenid,x,y,resourceid,width,height,'. + ' colspan,rowspan,elements,valign,halign,style,url) '. + ' VALUES '. + "($screenitemid,$resourcetype,$screenid,$x,$y,$resourceid,$width,$height,$colspan,". + "$rowspan,$elements,$valign,$halign,$style,".zbx_dbstr($url).",$dynamic)"); + + if(!$result) return $result; return $screenitemid; } - function update_screen_item($screenitemid,$resourcetype,$resourceid,$width,$height,$colspan,$rowspan,$elements,$valign,$halign,$style,$url) - { - return DBexecute("update screens_items set resourcetype=$resourcetype,resourceid=$resourceid,". - "width=$width,height=$height,colspan=$colspan,rowspan=$rowspan,elements=$elements,valign=$valign,". - "halign=$halign,style=$style,url=".zbx_dbstr($url)." where screenitemid=$screenitemid"); + function update_screen_item($screenitemid,$resourcetype,$resourceid,$width,$height,$colspan,$rowspan,$elements,$valign,$halign,$style,$url,$dynamic){ + return DBexecute("UPDATE screens_items SET ". + "resourcetype=$resourcetype,"."resourceid=$resourceid,"."width=$width,". + "height=$height,colspan=$colspan,rowspan=$rowspan,elements=$elements,". + "valign=$valign,halign=$halign,style=$style,url=".zbx_dbstr($url).",dynamic=$dynamic". + " WHERE screenitemid=$screenitemid"); } function delete_screen_item($screenitemid) @@ -162,8 +161,7 @@ return FALSE; } - function check_screen_recursion($mother_screenid, $child_screenid) - { + function check_screen_recursion($mother_screenid, $child_screenid){ if($mother_screenid == $child_screenid) return TRUE; $db_scr_items = DBselect("select resourceid from screens_items where". @@ -227,7 +225,7 @@ access_deny(); if(is_null($effectiveperiod)) - $effectiveperiod = 3600; + $effectiveperiod = ZBX_MIN_PERIOD; $result=DBselect('SELECT name,hsize,vsize FROM screens WHERE screenid='.$screenid); $row=DBfetch($result); @@ -289,11 +287,11 @@ $halign = $irow["halign"]; $style = $irow["style"]; $url = $irow["url"]; + $dynamic = $irow['dynamic']; } else { $screenitemid = 0; - $screenitemid = 0; $resourcetype = 0; $resourceid = 0; $width = 0; @@ -305,6 +303,7 @@ $halign = HALIGN_DEFAULT; $style = 0; $url = ""; + $dynamic = 0; } if($editmode == 1 && $screenitemid!=0) @@ -335,7 +334,7 @@ $graphtype = GRAPH_TYPE_NORMAL; $yaxis = 0; -// GRAPH & ZOOM featers +// GRAPH & ZOOM features $sql = 'SELECT MAX(g.graphid) as graphid, MAX(g.graphtype) as graphtype, MIN(gi.yaxisside) as yaxissidel, MAX(gi.yaxisside) as yaxissider'. ' FROM graphs g, graphs_items gi '. ' WHERE g.graphid='.$resourceid. @@ -361,18 +360,40 @@ $shiftXright = 60; } //------------- +// Host feature + if(($dynamic == SCREEN_DYNAMIC_ITEM) && isset($_REQUEST['hostid']) && ($_REQUEST['hostid']>0)){ + $def_items = array(); + $di_res = get_graphitems_by_graphid($resourceid); + while( $gitem = DBfetch($di_res)){ + $def_items[] = $gitem; + }; + + $url=''; + if($new_items = get_same_graphitems_for_host($def_items, $_REQUEST['hostid'], false)){ + $url.= make_url_from_gitems($new_items); + } + + $url= make_url_from_graphid($resourceid,false).$url; + } +//------------- if(($graphtype == GRAPH_TYPE_PIE) || ($graphtype == GRAPH_TYPE_EXPLODED)){ + if(($dynamic==SCREEN_SIMPLE_ITEM) || empty($url)){ + $url="chart6.php?graphid=$resourceid"; + } $item = new CLink( - new CImg("chart6.php?graphid=$resourceid&width=$width&height=$height"."&period=$effectiveperiod".url_param("stime")), + new CImg($url."&width=$width&height=$height"."&period=$effectiveperiod".url_param("stime")), $action ); } else { - + if(($dynamic==SCREEN_SIMPLE_ITEM) || empty($url)){ + $url="chart2.php?graphid=$resourceid"; + } + $dom_graph_id = 'graph_'.$screenitemid.'_'.$resourceid; - $g_img = new CImg("chart2.php?graphid=$resourceid&width=$width&height=$height"."&period=$effectiveperiod".url_param("stime")); + $g_img = new CImg($url."&width=$width&height=$height"."&period=$effectiveperiod".url_param("stime")); $g_img->AddOPtion('id',$dom_graph_id); $item = new CLink($g_img,$action); @@ -399,9 +420,19 @@ $action = "history.php?action=showgraph&itemid=$resourceid". url_param("period").url_param("inc").url_param("dec"); +// Host feature + if(($dynamic == SCREEN_DYNAMIC_ITEM) && isset($_REQUEST['hostid']) && ($_REQUEST['hostid']>0)){ + if($newitemid = get_same_item_for_host($resourceid,$_REQUEST['hostid'],false)){ + $resourceid = $newitemid; + } + else{ + $resourceid=''; + } + } +//------------- + $url = (empty($resourceid))?'chart3.php?':"chart.php?itemid=$resourceid&"; $item = new CLink( - new CImg("chart.php?itemid=$resourceid&width=$width&height=$height". - "&period=$effectiveperiod".url_param("stime")), + new CImg($url."width=$width&height=$height"."&period=$effectiveperiod".url_param("stime")), $action ); } @@ -418,8 +449,17 @@ $item = new CLink($image_map, $action); } } - elseif( ($screenitemid!=0) && ($resourcetype==SCREEN_RESOURCE_PLAIN_TEXT) ) - { + elseif( ($screenitemid!=0) && ($resourcetype==SCREEN_RESOURCE_PLAIN_TEXT) ){ +// Host feature + if(($dynamic == SCREEN_DYNAMIC_ITEM) && isset($_REQUEST['hostid']) && ($_REQUEST['hostid']>0)){ + if($newitemid = get_same_item_for_host($resourceid,$_REQUEST['hostid'],false)){ + $resourceid = $newitemid; + } + else{ + $resourceid=0; + } + } +//------------- $item = array(get_screen_plaintext($resourceid,$elements)); if($editmode == 1) array_push($item,new CLink(S_CHANGE,$action)); } @@ -596,5 +636,91 @@ DBexecute('delete from slides where slideshowid='.$slideshowid) ); } + + + # Show screen cell containing plain text values + function get_screen_plaintext($itemid,$elements){ + + if($itemid == 0){ + $table = new CTableInfo(S_ITEM_NOT_EXISTS); + $table->SetHeader(array(S_TIMESTAMP,S_ITEM)); + return $table; + } + + global $DB_TYPE; + + $item=get_item_by_itemid($itemid); + switch($item["value_type"]) + { + case ITEM_VALUE_TYPE_FLOAT: $history_table = "history"; break; + case ITEM_VALUE_TYPE_UINT64: $history_table = "history_uint"; break; + case ITEM_VALUE_TYPE_TEXT: $history_table = "history_text"; break; + default: $history_table = "history_str"; break; + } + + $sql='SELECT h.clock,h.value,i.valuemapid '. + ' FROM '.$history_table.' h, items i '. + ' WHERE h.itemid=i.itemid '. + ' AND i.itemid='.$itemid. + ' ORDER BY h.clock DESC'; + + $result=DBselect($sql,$elements); + + $host = get_host_by_itemid($itemid); + + $table = new CTableInfo(); + $table->SetHeader(array(S_TIMESTAMP,item_description($host['host'].': '.$item["description"],$item["key_"]))); + + while($row=DBfetch($result)){ + switch($item["value_type"]) + { + case ITEM_VALUE_TYPE_TEXT: + if($DB_TYPE == "ORACLE") + { + if(isset($row["value"])) + { + $row["value"] = $row["value"]->load(); + } + else + { + $row["value"] = ""; + } + } + /* do not use break */ + case ITEM_VALUE_TYPE_STR: + $value = nl2br(nbsp(htmlspecialchars($row["value"]))); + break; + + default: + $value = $row["value"]; + break; + } + + if($row["valuemapid"] > 0) + $value = replace_value_by_map($value, $row["valuemapid"]); + + $table->AddRow(array(date(S_DATE_FORMAT_YMDHMS,$row["clock"]), $value)); + } + return $table; + } +/* +* Function: +* check_dynamic_items +* +* Description: +* Check if in screen are dynamic items, if so return TRUE, esle FALSE +* +* Author: +* Aly +*/ + + function check_dynamic_items($screenid){ + $sql = 'SELECT screenitemid '. + ' FROM screens_items '. + ' WHERE screenid='.$screenid. + ' AND dynamic='.SCREEN_DYNAMIC_ITEM; + if(DBfetch(DBselect($sql,1))) return TRUE; + return FALSE; + } ?> |
