diff options
| author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-07-10 08:04:38 +0000 |
|---|---|---|
| committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-07-10 08:04:38 +0000 |
| commit | da89a85a0eeed1b50bc3b5e38b3392e852fa0f72 (patch) | |
| tree | 26daa648960d802c28067bf1a766cdce0c8c79e2 /frontends/php/include/screens.inc.php | |
| parent | 616715ae783f353d07b1cfa1f48a7631c165a2f8 (diff) | |
- [DEV-144] fixes to trigger mass-update (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5821 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include/screens.inc.php')
| -rw-r--r-- | frontends/php/include/screens.inc.php | 761 |
1 files changed, 571 insertions, 190 deletions
diff --git a/frontends/php/include/screens.inc.php b/frontends/php/include/screens.inc.php index 16d4c47e..e6c0acd7 100644 --- a/frontends/php/include/screens.inc.php +++ b/frontends/php/include/screens.inc.php @@ -209,6 +209,571 @@ return get_screen($slide_data['screenid'],2,$effectiveperiod); } + + + function slideshow_accessible($slideshowid, $perm) + { + $result = false; + + if(DBselect('select slideshowid from slideshows where slideshowid='.$slideshowid. + ' and '.DBin_node('slideshowid', get_current_nodeid($perm)))) + { + $result = true; + $db_slides = DBselect('select distinct screenid from slides where slideshowid='.$slideshowid); + while($slide_data = DBfetch($db_slides)) + { + if( !($result = screen_accessible($slide_data["screenid"], PERM_READ_ONLY)) ) break; + } + } + return $result; + } + + function get_slideshow_by_slideshowid($slideshowid) + { + return DBfetch(DBselect('select * from slideshows where slideshowid='.$slideshowid)); + } + + function validate_slide($slide) + { + if(!screen_accessible($slide["screenid"], PERM_READ_ONLY)) return false; + + if( !is_numeric($slide['delay']) ) return false; + + return true; + } + + function add_slideshow($name, $delay, $slides) + { + foreach($slides as $slide) + { + if( !validate_slide($slide) ) + return false; + } + + $slideshowid = get_dbid('slideshows','slideshowid'); + $result = DBexecute('insert into slideshows (slideshowid,name,delay) '. + ' values ('.$slideshowid.','.zbx_dbstr($name).','.$delay.')'); + + $i = 0; + foreach($slides as $slide) + { + $slideid = get_dbid('slides','slideid'); + if( !($result = DBexecute('insert into slides (slideid,slideshowid,screenid,step,delay) '. + ' values ('.$slideid.','.$slideshowid.','.$slide['screenid'].','.($i++).','.$slide['delay'].')')) ) + { + break; + } + } + + if( !$result ) + { + delete_slideshow($slideshowid); + return false; + } + return $slideshowid; + } + + function update_slideshow($slideshowid, $name, $delay, $slides){ + foreach($slides as $slide){ + if(!validate_slide($slide)) + return false; + } + + if(!$result = DBexecute('update slideshows set name='.zbx_dbstr($name).',delay='.$delay.' where slideshowid='.$slideshowid)) + return false; + + DBexecute('DELETE FROM slides where slideshowid='.$slideshowid); + + $i = 0; + foreach($slides as $slide){ + $slideid = get_dbid('slides','slideid'); + if( !($result = DBexecute('insert into slides (slideid,slideshowid,screenid,step,delay) '. + ' values ('.$slideid.','.$slideshowid.','.$slide['screenid'].','.($i++).','.$slide['delay'].')')) ){ + return false; + } + } + + return true; + } + + function delete_slideshow($slideshowid){ + + $result = DBexecute('DELETE FROM slideshows where slideshowid='.$slideshowid); + $result &= DBexecute('DELETE FROM slides where slideshowid='.$slideshowid); + $result &= DBexecute("DELETE FROM profiles WHERE idx='web.favorite.screenids' AND source='slideshowid' AND value_id=$slideshowid"); + + return $result; + } + + + # 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; + + $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; + case ITEM_VALUE_TYPE_LOG: $history_table = "history_log"; 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; + } + + function get_screen_item_form(){ + global $USER_DETAILS; + + $form = new CFormTable(S_SCREEN_CELL_CONFIGURATION,'screenedit.php#form'); + $form->SetHelp('web.screenedit.cell.php'); + + if(isset($_REQUEST["screenitemid"])){ + $iresult=DBSelect('SELECT * FROM screens_items'. + ' WHERE screenid='.$_REQUEST['screenid']. + ' AND screenitemid='.$_REQUEST['screenitemid'] + ); + + $form->AddVar("screenitemid",$_REQUEST["screenitemid"]); + } + else{ + $form->AddVar("x",$_REQUEST["x"]); + $form->AddVar("y",$_REQUEST["y"]); + } + + if(isset($_REQUEST["screenitemid"]) && !isset($_REQUEST["form_refresh"])){ + + $irow = DBfetch($iresult); + $resourcetype = $irow["resourcetype"]; + $resourceid = $irow["resourceid"]; + $width = $irow["width"]; + $height = $irow["height"]; + $colspan = $irow["colspan"]; + $rowspan = $irow["rowspan"]; + $elements = $irow["elements"]; + $valign = $irow["valign"]; + $halign = $irow["halign"]; + $style = $irow["style"]; + $url = $irow["url"]; + $dynamic = $irow['dynamic']; + } + else{ + $resourcetype = get_request("resourcetype", 0); + $resourceid = get_request("resourceid", 0); + $width = get_request("width", 500); + $height = get_request("height", 100); + $colspan = get_request("colspan", 0); + $rowspan = get_request("rowspan", 0); + $elements = get_request("elements", 25); + $valign = get_request("valign", VALIGN_DEFAULT); + $halign = get_request("halign", HALIGN_DEFAULT); + $style = get_request("style", 0); + $url = get_request("url", ""); + $dynamic = get_request("dynamic", SCREEN_SIMPLE_ITEM); + } + + $form->AddVar("screenid",$_REQUEST["screenid"]); + + $cmbRes = new CCombobox("resourcetype",$resourcetype,"submit()"); + $cmbRes->AddItem(SCREEN_RESOURCE_GRAPH, S_GRAPH); + $cmbRes->AddItem(SCREEN_RESOURCE_SIMPLE_GRAPH, S_SIMPLE_GRAPH); + $cmbRes->AddItem(SCREEN_RESOURCE_PLAIN_TEXT, S_PLAIN_TEXT); + $cmbRes->AddItem(SCREEN_RESOURCE_MAP, S_MAP); + $cmbRes->AddItem(SCREEN_RESOURCE_SCREEN, S_SCREEN); + $cmbRes->AddItem(SCREEN_RESOURCE_SERVER_INFO, S_SERVER_INFO); + $cmbRes->AddItem(SCREEN_RESOURCE_HOSTS_INFO, S_HOSTS_INFO); + $cmbRes->AddItem(SCREEN_RESOURCE_TRIGGERS_INFO, S_TRIGGERS_INFO); + $cmbRes->AddItem(SCREEN_RESOURCE_TRIGGERS_OVERVIEW, S_TRIGGERS_OVERVIEW); + $cmbRes->AddItem(SCREEN_RESOURCE_DATA_OVERVIEW, S_DATA_OVERVIEW); + $cmbRes->AddItem(SCREEN_RESOURCE_CLOCK, S_CLOCK); + $cmbRes->AddItem(SCREEN_RESOURCE_URL, S_URL); + $cmbRes->AddItem(SCREEN_RESOURCE_ACTIONS, S_HISTORY_OF_ACTIONS); + $cmbRes->AddItem(SCREEN_RESOURCE_EVENTS, S_HISTORY_OF_EVENTS); + $form->AddRow(S_RESOURCE,$cmbRes); + + if($resourcetype == SCREEN_RESOURCE_GRAPH){ + // User-defined graph + $resourceid = graph_accessible($resourceid)?$resourceid:0; + + $caption = ''; + $id=0; + + if($resourceid > 0){ + $result = DBselect('SELECT DISTINCT g.graphid,g.name,n.name as node_name, h.host'. + ' FROM graphs g '. + ' LEFT JOIN graphs_items gi ON g.graphid=gi.graphid '. + ' LEFT JOIN items i ON gi.itemid=i.itemid '. + ' LEFT JOIN hosts h ON h.hostid=i.hostid '. + ' LEFT JOIN nodes n ON n.nodeid='.DBid2nodeid('g.graphid'). + ' WHERE g.graphid='.$resourceid); + + while($row=DBfetch($result)){ + $row["node_name"] = isset($row["node_name"]) ? "(".$row["node_name"].") " : ''; + $caption = $row["node_name"].$row["host"].":".$row["name"]; + $id = $resourceid; + } + } + + $form->AddVar('resourceid',$id); + + $textfield = new Ctextbox('caption',$caption,75,'yes'); + $selectbtn = new Cbutton('select',S_SELECT,"javascript: return PopUp('popup.php?dstfrm=".$form->getName()."&dstfld1=resourceid&dstfld2=caption&srctbl=graphs&srcfld1=graphid&srcfld2=name',800,450);"); + $selectbtn->AddOption('onmouseover','javascript: this.style.cursor = "pointer";'); + + $form->AddRow(S_GRAPH_NAME,array($textfield,SPACE,$selectbtn)); + + } + else if($resourcetype == SCREEN_RESOURCE_SIMPLE_GRAPH){ + // Simple graph + $caption = ''; + $id=0; + + if($resourceid > 0){ + $result=DBselect('SELECT n.name as node_name,h.host,i.description,i.itemid,i.key_ '. + ' FROM hosts h,items i '. + ' LEFT JOIN nodes n on n.nodeid='.DBid2nodeid('i.itemid'). + ' WHERE h.hostid=i.hostid '. + ' AND h.status='.HOST_STATUS_MONITORED. + ' AND i.status='.ITEM_STATUS_ACTIVE. + ' AND i.hostid IN ('.get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY).')'. + ' AND i.itemid='.$resourceid); + + while($row=DBfetch($result)){ + $description_=item_description($row['description'],$row['key_']); + $row["node_name"] = isset($row["node_name"]) ? "(".$row["node_name"].") " : ''; + + $caption = $row['node_name'].$row['host'].': '.$description_; + $id = $resourceid; + } + } + + $form->AddVar('resourceid',$id); + + $textfield = new Ctextbox('caption',$caption,75,'yes'); + $selectbtn = new Cbutton('select',S_SELECT,"javascript: return PopUp('popup.php?dstfrm=".$form->getName()."&dstfld1=resourceid&dstfld2=caption&srctbl=simple_graph&srcfld1=itemid&srcfld2=description',800,450);"); + $selectbtn->AddOption('onmouseover','javascript: this.style.cursor = "pointer";'); + + $form->AddRow(S_PARAMETER,array($textfield,SPACE,$selectbtn)); + } + else if($resourcetype == SCREEN_RESOURCE_MAP){ + // Map + $caption = ''; + $id=0; + + if($resourceid > 0){ + $result=DBselect('SELECT n.name as node_name, s.sysmapid,s.name '. + ' FROM sysmaps s'. + ' LEFT JOIN nodes n ON n.nodeid='.DBid2nodeid('s.sysmapid'). + ' WHERE s.sysmapid='.$resourceid); + + while($row=DBfetch($result)){ + if(!sysmap_accessible($row['sysmapid'],PERM_READ_ONLY)) continue; + + $row['node_name'] = isset($row['node_name']) ? '('.$row['node_name'].') ' : ''; + $caption = $row['node_name'].$row['name']; + $id = $resourceid; + } + } + + $form->AddVar('resourceid',$id); + $textfield = new Ctextbox('caption',$caption,60,'yes'); + + $selectbtn = new Cbutton('select',S_SELECT,"javascript: return PopUp('popup.php?dstfrm=".$form->getName()."&dstfld1=resourceid&dstfld2=caption&srctbl=sysmaps&srcfld1=sysmapid&srcfld2=name',400,450);"); + $selectbtn->AddOption('onmouseover','javascript: this.style.cursor = "pointer";'); + + $form->AddRow(S_PARAMETER,array($textfield,SPACE,$selectbtn)); + + } + else if($resourcetype == SCREEN_RESOURCE_PLAIN_TEXT){ +// Plain text + $caption = ''; + $id=0; + + if($resourceid > 0){ + $result=DBselect('SELECT n.name as node_name,h.host,i.description,i.itemid,i.key_ '. + ' FROM hosts h,items i '. + ' LEFT JOIN nodes n on n.nodeid='.DBid2nodeid('i.itemid'). + ' WHERE h.hostid=i.hostid '. + ' AND h.status='.HOST_STATUS_MONITORED. + ' AND i.status='.ITEM_STATUS_ACTIVE. + ' AND i.hostid IN ('.get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY).')'. + ' AND i.itemid='.$resourceid); + + while($row=DBfetch($result)){ + $description_=item_description($row['description'],$row['key_']); + $row["node_name"] = isset($row["node_name"]) ? '('.$row["node_name"].') ' : ''; + + $caption = $row['node_name'].$row['host'].': '.$description_; + $id = $resourceid; + } + } + + $form->AddVar('resourceid',$id); + + $textfield = new Ctextbox('caption',$caption,75,'yes'); + $selectbtn = new Cbutton('select',S_SELECT,"javascript: return PopUp('popup.php?dstfrm=".$form->getName()."&dstfld1=resourceid&dstfld2=caption&srctbl=plain_text&srcfld1=itemid&srcfld2=description',800,450);"); + $selectbtn->AddOption('onmouseover','javascript: this.style.cursor = "pointer";'); + + $form->AddRow(S_PARAMETER,array($textfield,SPACE,$selectbtn)); + $form->AddRow(S_SHOW_LINES, new CNumericBox('elements',$elements,2)); + } + else if($resourcetype == SCREEN_RESOURCE_ACTIONS){ +// History of actions + $form->AddRow(S_SHOW_LINES, new CNumericBox('elements',$elements,2)); + $form->AddVar('resourceid',0); + } + else if($resourcetype == SCREEN_RESOURCE_EVENTS){ +// History of events + $form->AddRow(S_SHOW_LINES, new CNumericBox('elements',$elements,2)); + $form->AddVar('resourceid',0); + } + else if(uint_in_array($resourcetype,array(SCREEN_RESOURCE_TRIGGERS_OVERVIEW,SCREEN_RESOURCE_DATA_OVERVIEW))){ +// Overiews + $caption = ''; + $id=0; + + if($resourceid > 0){ + $result=DBselect('SELECT DISTINCT n.name as node_name,g.groupid,g.name '. + ' FROM hosts_groups hg,hosts h,groups g '. + ' LEFT JOIN nodes n ON n.nodeid='.DBid2nodeid('g.groupid'). + ' WHERE g.groupid IN ('.get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY).')'. + ' AND g.groupid=hg.groupid '. + ' AND hg.hostid=h.hostid '. + ' AND h.status='.HOST_STATUS_MONITORED. + ' AND g.groupid='.$resourceid); + + while($row=DBfetch($result)){ + $row['node_name'] = isset($row['node_name']) ? '('.$row['node_name'].') ' : ''; + + $caption = $row['node_name'].$row['name']; + $id = $resourceid; + } + } + + $form->AddVar('resourceid',$id); + + $textfield = new Ctextbox('caption',$caption,75,'yes'); + $selectbtn = new Cbutton('select',S_SELECT,"javascript: return PopUp('popup.php?dstfrm=".$form->getName()."&dstfld1=resourceid&dstfld2=caption&srctbl=overview&srcfld1=groupid&srcfld2=name',800,450);"); + $selectbtn->AddOption('onmouseover','javascript: this.style.cursor = "pointer";'); + + $form->AddRow(S_GROUP,array($textfield,SPACE,$selectbtn)); + } + else if($resourcetype == SCREEN_RESOURCE_SCREEN){ +// Screens + $caption = ''; + $id=0; + + if($resourceid > 0){ + $result=DBselect('SELECT DISTINCT n.name as node_name,s.screenid,s.name '. + ' FROM screens s '. + ' LEFT JOIN nodes n ON n.nodeid='.DBid2nodeid('s.screenid'). + ' WHERE s.screenid='.$resourceid); + + while($row=DBfetch($result)){ + if(!screen_accessible($row['screenid'], PERM_READ_ONLY)) continue; + if(check_screen_recursion($_REQUEST['screenid'],$row['screenid'])) continue; + + $row['node_name'] = isset($row['node_name']) ? '('.$row['node_name'].') ' : ''; + $caption = $row['node_name'].$row['name']; + $id = $resourceid; + } + } + + $form->AddVar('resourceid',$id); + + $textfield = new Ctextbox('caption',$caption,60,'yes'); + $selectbtn = new Cbutton('select',S_SELECT,"javascript: return PopUp('popup.php?dstfrm=".$form->getName()."&dstfld1=resourceid&dstfld2=caption&srctbl=screens2&srcfld1=screenid&srcfld2=name&screenid=".$_REQUEST['screenid']."',800,450);"); + $selectbtn->AddOption('onmouseover','javascript: this.style.cursor = "pointer";'); + + $form->AddRow(S_PARAMETER,array($textfield,SPACE,$selectbtn)); + } + else if($resourcetype == SCREEN_RESOURCE_HOSTS_INFO){ +// HOTS info + $caption = ''; + $id=0; + + if(remove_nodes_from_id($resourceid) > 0){ + $result=DBselect('SELECT DISTINCT n.name as node_name,g.groupid,g.name '. + ' FROM hosts_groups hg, groups g '. + ' LEFT JOIN nodes n ON n.nodeid='.DBid2nodeid('g.groupid'). + ' WHERE g.groupid in ('.get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY).')'. + ' AND g.groupid='.$resourceid); + + while($row=DBfetch($result)){ + $row['node_name'] = isset($row['node_name']) ? '('.$row['node_name'].') ' : ''; + $caption = $row['node_name'].$row['name']; + $id = $resourceid; + } + } + else if(remove_nodes_from_id($resourceid)==0){ + $result=DBselect('SELECT DISTINCT n.name as node_name '. + ' FROM nodes n '. + ' WHERE n.nodeid='.id2nodeid($resourceid)); + + while($row=DBfetch($result)){ + $row['node_name'] = isset($row['node_name']) ? '('.$row['node_name'].') ' : ''; + $caption = $row['node_name'].S_MINUS_ALL_GROUPS_MINUS; + $id = $resourceid; + } + } + + $form->AddVar('resourceid',$id); + + $textfield = new Ctextbox('caption',$caption,60,'yes'); + $selectbtn = new Cbutton('select',S_SELECT,"javascript: return PopUp('popup.php?dstfrm=".$form->getName()."&dstfld1=resourceid&dstfld2=caption&srctbl=host_group_scr&srcfld1=groupid&srcfld2=name',480,450);"); + $selectbtn->AddOption('onmouseover','javascript: this.style.cursor = "pointer";'); + + $form->AddRow(S_GROUP,array($textfield,SPACE,$selectbtn)); + } + else{ +// SCREEN_RESOURCE_TRIGGERS_INFO, SCREEN_RESOURCE_CLOCK + $form->AddVar("resourceid",0); + } + + if(uint_in_array($resourcetype,array(SCREEN_RESOURCE_HOSTS_INFO,SCREEN_RESOURCE_TRIGGERS_INFO))){ + $cmbStyle = new CComboBox("style", $style); + $cmbStyle->AddItem(STYLE_HORISONTAL, S_HORISONTAL); + $cmbStyle->AddItem(STYLE_VERTICAL, S_VERTICAL); + $form->AddRow(S_STYLE, $cmbStyle); + } + else if(uint_in_array($resourcetype,array(SCREEN_RESOURCE_TRIGGERS_OVERVIEW,SCREEN_RESOURCE_DATA_OVERVIEW))){ + $cmbStyle = new CComboBox('style', $style); + $cmbStyle->AddItem(STYLE_LEFT, S_LEFT); + $cmbStyle->AddItem(STYLE_TOP, S_TOP); + $form->AddRow(S_HOSTS_LOCATION, $cmbStyle); + } + else if($resourcetype == SCREEN_RESOURCE_CLOCK){ + $cmbStyle = new CComboBox("style", $style); + $cmbStyle->AddItem(TIME_TYPE_LOCAL, S_LOCAL_TIME); + $cmbStyle->AddItem(TIME_TYPE_SERVER, S_SERVER_TIME); + $form->AddRow(S_TIME_TYPE, $cmbStyle); + } + else{ + $form->AddVar("style", 0); + } + + if(uint_in_array($resourcetype,array(SCREEN_RESOURCE_URL))){ + $form->AddRow(S_URL, new CTextBox("url",$url,60)); + } + else{ + $form->AddVar("url", ""); + } + + if(uint_in_array($resourcetype,array(SCREEN_RESOURCE_GRAPH,SCREEN_RESOURCE_SIMPLE_GRAPH,SCREEN_RESOURCE_CLOCK,SCREEN_RESOURCE_URL))){ + $form->AddRow(S_WIDTH, new CNumericBox("width",$width,5)); + $form->AddRow(S_HEIGHT, new CNumericBox("height",$height,5)); + } + else{ + $form->AddVar("width", 500); + $form->AddVar("height", 100); + } + + if(uint_in_array($resourcetype,array(SCREEN_RESOURCE_GRAPH,SCREEN_RESOURCE_SIMPLE_GRAPH,SCREEN_RESOURCE_MAP, + SCREEN_RESOURCE_CLOCK,SCREEN_RESOURCE_URL))){ + $cmbHalign = new CComboBox("halign",$halign); + $cmbHalign->AddItem(HALIGN_CENTER, S_CENTER); + $cmbHalign->AddItem(HALIGN_LEFT, S_LEFT); + $cmbHalign->AddItem(HALIGN_RIGHT, S_RIGHT); + $form->AddRow(S_HORISONTAL_ALIGN, $cmbHalign); + } + else{ + $form->AddVar("halign", 0); + } + + $cmbValign = new CComboBox("valign",$valign); + $cmbValign->AddItem(VALIGN_MIDDLE, S_MIDDLE); + $cmbValign->AddItem(VALIGN_TOP, S_TOP); + $cmbValign->AddItem(VALIGN_BOTTOM, S_BOTTOM); + $form->AddRow(S_VERTICAL_ALIGN, $cmbValign); + + $form->AddRow(S_COLUMN_SPAN, new CNumericBox("colspan",$colspan,2)); + $form->AddRow(S_ROW_SPAN, new CNumericBox("rowspan",$rowspan,2)); + +// dynamic AddOn + if(uint_in_array($resourcetype,array(SCREEN_RESOURCE_GRAPH,SCREEN_RESOURCE_SIMPLE_GRAPH,SCREEN_RESOURCE_PLAIN_TEXT))){ + $form->AddRow(S_DYNAMIC_ITEM, new CCheckBox("dynamic",$dynamic,null,1)); + } + + $form->AddItemToBottomRow(new CButton("save",S_SAVE)); + if(isset($_REQUEST["screenitemid"])){ + $form->AddItemToBottomRow(SPACE); + $form->AddItemToBottomRow(new CButtonDelete(null, + url_param("form").url_param("screenid").url_param("screenitemid"))); + } + $form->AddItemToBottomRow(SPACE); + $form->AddItemToBottomRow(new CButtonCancel(url_param("screenid"))); + return $form; + } // editmode: 0 - view with actions, 1 - edit mode, 2 - view without any actions function get_screen($screenid, $editmode, $effectiveperiod=NULL) @@ -265,8 +830,7 @@ " where screenid=$screenid and x=$c and y=$r"); $irow = DBfetch($iresult); - if($irow) - { + if($irow){ $screenitemid = $irow["screenitemid"]; $resourcetype = $irow["resourcetype"]; $resourceid = $irow["resourceid"]; @@ -281,8 +845,7 @@ $url = $irow["url"]; $dynamic = $irow['dynamic']; } - else - { + else{ $screenitemid = 0; $resourcetype = 0; $resourceid = 0; @@ -294,15 +857,14 @@ $valign = VALIGN_DEFAULT; $halign = HALIGN_DEFAULT; $style = 0; - $url = ""; + $url = ''; $dynamic = 0; } if($editmode == 1 && $screenitemid!=0) - $action = "screenedit.php?form=update".url_param("screenid"). - "&screenitemid=$screenitemid#form"; + $action = 'screenedit.php?form=update'.url_param('screenid').'&screenitemid='.$screenitemid.'#form'; else if ($editmode == 1 && $screenitemid==0) - $action = "screenedit.php?form=update".url_param("screenid")."&x=$c&y=$r#form"; + $action = 'screenedit.php?form=update'.url_param('screenid').'&x='.$c.'&y='.$r.'#form'; else $action = NULL; @@ -362,7 +924,7 @@ $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)){ @@ -541,185 +1103,4 @@ } return $table; } - - function slideshow_accessible($slideshowid, $perm) - { - $result = false; - - if(DBselect('select slideshowid from slideshows where slideshowid='.$slideshowid. - ' and '.DBin_node('slideshowid', get_current_nodeid($perm)))) - { - $result = true; - $db_slides = DBselect('select distinct screenid from slides where slideshowid='.$slideshowid); - while($slide_data = DBfetch($db_slides)) - { - if( !($result = screen_accessible($slide_data["screenid"], PERM_READ_ONLY)) ) break; - } - } - return $result; - } - - function get_slideshow_by_slideshowid($slideshowid) - { - return DBfetch(DBselect('select * from slideshows where slideshowid='.$slideshowid)); - } - - function validate_slide($slide) - { - if(!screen_accessible($slide["screenid"], PERM_READ_ONLY)) return false; - - if( !is_numeric($slide['delay']) ) return false; - - return true; - } - - function add_slideshow($name, $delay, $slides) - { - foreach($slides as $slide) - { - if( !validate_slide($slide) ) - return false; - } - - $slideshowid = get_dbid('slideshows','slideshowid'); - $result = DBexecute('insert into slideshows (slideshowid,name,delay) '. - ' values ('.$slideshowid.','.zbx_dbstr($name).','.$delay.')'); - - $i = 0; - foreach($slides as $slide) - { - $slideid = get_dbid('slides','slideid'); - if( !($result = DBexecute('insert into slides (slideid,slideshowid,screenid,step,delay) '. - ' values ('.$slideid.','.$slideshowid.','.$slide['screenid'].','.($i++).','.$slide['delay'].')')) ) - { - break; - } - } - - if( !$result ) - { - delete_slideshow($slideshowid); - return false; - } - return $slideshowid; - } - - function update_slideshow($slideshowid, $name, $delay, $slides){ - foreach($slides as $slide){ - if(!validate_slide($slide)) - return false; - } - - if(!$result = DBexecute('update slideshows set name='.zbx_dbstr($name).',delay='.$delay.' where slideshowid='.$slideshowid)) - return false; - - DBexecute('DELETE FROM slides where slideshowid='.$slideshowid); - - $i = 0; - foreach($slides as $slide){ - $slideid = get_dbid('slides','slideid'); - if( !($result = DBexecute('insert into slides (slideid,slideshowid,screenid,step,delay) '. - ' values ('.$slideid.','.$slideshowid.','.$slide['screenid'].','.($i++).','.$slide['delay'].')')) ){ - return false; - } - } - - return true; - } - - function delete_slideshow($slideshowid){ - - $result = DBexecute('DELETE FROM slideshows where slideshowid='.$slideshowid); - $result &= DBexecute('DELETE FROM slides where slideshowid='.$slideshowid); - $result &= DBexecute("DELETE FROM profiles WHERE idx='web.favorite.screenids' AND source='slideshowid' AND value_id=$slideshowid"); - - return $result; - } - - - # 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; - - $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; - case ITEM_VALUE_TYPE_LOG: $history_table = "history_log"; 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; - } ?> |
