summaryrefslogtreecommitdiffstats
path: root/frontends/php/include/screens.inc.php
diff options
context:
space:
mode:
authorartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-11-29 09:17:03 +0000
committerartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-11-29 09:17:03 +0000
commit25fe20d517ee1553fd569fba2f6c33ee5a9a446a (patch)
tree74c7002f7eb1c9bd518128352a2711d1723dfa2c /frontends/php/include/screens.inc.php
parent4df0316c5b609a2a609d9c6a6cd539ded33351d6 (diff)
downloadzabbix-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.php210
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;
+ }
?>