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 | |
| parent | 616715ae783f353d07b1cfa1f48a7631c165a2f8 (diff) | |
| download | zabbix-da89a85a0eeed1b50bc3b5e38b3392e852fa0f72.tar.gz zabbix-da89a85a0eeed1b50bc3b5e38b3392e852fa0f72.tar.xz zabbix-da89a85a0eeed1b50bc3b5e38b3392e852fa0f72.zip | |
- [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')
| -rw-r--r-- | frontends/php/include/classes/ctag.inc.php | 120 | ||||
| -rw-r--r-- | frontends/php/include/forms.inc.php | 470 | ||||
| -rw-r--r-- | frontends/php/include/graphs.inc.php | 44 | ||||
| -rw-r--r-- | frontends/php/include/html.inc.php | 1 | ||||
| -rw-r--r-- | frontends/php/include/items.inc.php | 278 | ||||
| -rw-r--r-- | frontends/php/include/screens.inc.php | 761 | ||||
| -rw-r--r-- | frontends/php/include/triggers.inc.php | 8 |
7 files changed, 837 insertions, 845 deletions
diff --git a/frontends/php/include/classes/ctag.inc.php b/frontends/php/include/classes/ctag.inc.php index e05ac3f1..ed44da5c 100644 --- a/frontends/php/include/classes/ctag.inc.php +++ b/frontends/php/include/classes/ctag.inc.php @@ -90,11 +90,16 @@ $this->CleanItems(); } - function CleanItems() { $this->items = array(); } - function ItemsCount() { return count($this->items); } + function CleanItems(){ + $this->items = array(); + } + + function ItemsCount(){ + return count($this->items); + } + + function AddItem($value){ - function AddItem($value) - { if(is_object($value)){ array_push($this->items,unpack_object($value)); } @@ -113,8 +118,7 @@ } } - class CTag extends CObject - { + class CTag extends CObject{ /* private *//* var $tagname; var $options = array(); @@ -128,122 +132,113 @@ var $tag_end;*/ /* public */ - function CTag($tagname=NULL, $paired='no', $body=NULL, $class=null) - { + function CTag($tagname=NULL, $paired='no', $body=NULL, $class=null){ parent::CObject(); $this->options = array(); - if(!is_string($tagname)) - { + if(!is_string($tagname)){ return $this->error('Incorrect tagname for CTag ['.$tagname.']'); } + $this->tagname = $tagname; $this->paired = $paired; $this->tag_start = $this->tag_end = $this->tag_body_start = $this->tag_body_end = ''; - if(is_null($body)) - { + if(is_null($body)){ $this->tag_end = $this->tag_body_start = "\n"; } - else - { + else{ CTag::AddItem($body); } $this->SetClass($class); - } + function ShowStart() { echo $this->StartToString(); } function ShowBody() { echo $this->BodyToString(); } function ShowEnd() { echo $this->EndToString(); } - function StartToString() - { + function StartToString(){ $res = $this->tag_start.'<'.$this->tagname; - foreach($this->options as $key => $value) - { + foreach($this->options as $key => $value){ $res .= ' '.$key.'="'.$value.'"'; } $res .= ($this->paired=='yes') ? '>' : '/>'; - return $res; + return $res; } - function BodyToString() - { + + function BodyToString(){ $res = $this->tag_body_start; - return $res.parent::ToString(false); + return $res.parent::ToString(false); /*foreach($this->items as $item) $res .= $item; return $res;*/ } - function EndToString() - { + + function EndToString(){ $res = ($this->paired=='yes') ? $this->tag_body_end.'</'.$this->tagname.'>' : ''; $res .= $this->tag_end; - return $res; + return $res; } - function ToString($destroy=true) - { + + function ToString($destroy=true){ $res = $this->StartToString(); $res .= $this->BodyToString(); $res .= $this->EndToString(); if($destroy) $this->Destroy(); - return $res; + return $res; } - function SetName($value) - { + + function SetName($value){ if(is_null($value)) return $value; - if(!is_string($value)) - { + if(!is_string($value)){ return $this->error("Incorrect value for SetName [$value]"); } - return $this->AddOption("name",$value); + return $this->AddOption("name",$value); } - function GetName() - { + + function GetName(){ if(isset($this->options['name'])) return $this->options['name']; - return NULL; + return NULL; } - function SetClass($value) - { + + function SetClass($value){ if(isset($value)) $this->options['class'] = $value; else unset($this->options['class']); - return $value; + return $value; } - function DelOption($name) - { + + function DelOption($name){ unset($this->options[$name]); } - function GetOption($name) - { + + function GetOption($name){ $ret = NULL; if(isset($this->options[$name])) $ret =& $this->options[$name]; - return $ret; + return $ret; } - function SetHint($text, $width='', $class='') - { + function SetHint($text, $width='', $class=''){ if(empty($text)) return false; insert_showhint_javascript(); $text = unpack_object($text); - if($width != '' || $class!= '') - { + if($width != '' || $class != ''){ $code = "show_hint_ext(this,event,'".$text."','".$width."','".$class."');"; } - else - { + else{ $code = "show_hint(this,event,'".$text."');"; } @@ -251,13 +246,11 @@ $this->AddAction('onMouseMove', 'update_hint(this,event);'); } - function OnClick($handle_code) - { + function OnClick($handle_code){ $this->AddAction('onclick', $handle_code); } - function AddAction($name, $value) - { + function AddAction($name, $value){ if(is_object($value)){ $this->options[$name] = unpack_object($value); } @@ -266,8 +259,7 @@ } } - function AddOption($name, $value) - { + function AddOption($name, $value){ if(is_object($value)){ $this->options[$name] = unpack_object($value); } @@ -277,24 +269,22 @@ unset($this->options[$name]); } - function SetEnabled($value='yes') - { + function SetEnabled($value='yes'){ if((is_string($value) && ($value == 'yes' || $value == 'enabled' || $value=='on') || $value=='1') - || (is_int($value) && $value<>0)) + || (is_int($value) && $value<>0)) { unset($this->options['disabled']); } - elseif((is_string($value) && ($value == 'no' || $value == 'disabled' || $value=='off') || $value=='0') - || (is_int($value) && $value==0)) + else if((is_string($value) && ($value == 'no' || $value == 'disabled' || $value=='off') || $value=='0') + || (is_int($value) && $value==0)) { $this->options['disabled'] = 'disabled'; } } - function error($value) - { + + function error($value){ error('class('.get_class($this).') - '.$value); return 1; } - } ?> diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php index 080b62b7..3d77e844 100644 --- a/frontends/php/include/forms.inc.php +++ b/frontends/php/include/forms.inc.php @@ -2093,9 +2093,8 @@ // TRIGGERS function insert_mass_update_trigger_form(){//$elements_array_name){ global $USER_DETAILS; -SDI($_REQUEST); - $visible = get_request('visible',array()); + $visible = get_request('visible',array()); $priority = get_request('priority', ''); $dependencies = get_request('dependencies',array()); @@ -3899,390 +3898,6 @@ SDI($_REQUEST); $frmScr->Show(); } - 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", 0); - $form->AddVar("height", 0); - } - - 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; - } - function insert_housekeeper_form(){ $config=select_config(); @@ -4626,7 +4241,7 @@ SDI($_REQUEST); $status = $db_host['status']; $useip = $db_host['useip']; $dns = $db_host['dns']; - $ip = $db_host['ip']; + $ip = $db_host['ip']; // add groups $db_groups=DBselect('SELECT DISTINCT groupid '. @@ -4795,25 +4410,96 @@ SDI($_REQUEST); $frmHost->AddVar("notes", $notes); } + if($_REQUEST['form'] == 'full_clone'){ +// Host items + $items_lbx = new CListBox('items',null,8); + $items_lbx->AddOption('disabled','disabled'); + + $sql = 'SELECT * '. + ' FROM items '. + ' WHERE hostid='.$_REQUEST['hostid']. + ' AND templateid=0 '. + ' ORDER BY description'; + + $host_items_res = DBselect($sql); + while($host_item = DBfetch($host_items_res)){ + $item_description = item_description($host_item['description'],$host_item['key_']); + $items_lbx->AddItem($host_item['itemid'],$item_description); + } + + if($items_lbx->ItemsCount() < 1) $items_lbx->AddOption('style','width: 200px;'); + $frmHost->AddRow(S_ITEMS, $items_lbx); + +// Host triggers + $available_triggers = get_accessible_triggers(PERM_READ_ONLY, PERM_RES_IDS_ARRAY); + + $trig_lbx = new CListBox('triggers',null,8); + $trig_lbx->AddOption('disabled','disabled'); + + $sql = 'SELECT DISTINCT t.* '. + ' FROM triggers t, items i, functions f'. + ' WHERE i.hostid='.$_REQUEST['hostid']. + ' AND f.itemid=i.itemid '. + ' AND t.triggerid=f.triggerid '. + ' AND '.DBcondition('t.triggerid', $available_triggers). + ' AND t.templateid=0 '. + ' ORDER BY t.description'; + + $host_trig_res = DBselect($sql); + while($host_trig = DBfetch($host_trig_res)){ + $trig_description = expand_trigger_description($host_trig["triggerid"]); + $trig_lbx->AddItem($host_trig['triggerid'],$trig_description); + } + + if($trig_lbx->ItemsCount() < 1) $trig_lbx->AddOption('style','width: 200px;'); + $frmHost->AddRow(S_TRIGGERS, $trig_lbx); + +// Host graphs + $available_graphs = get_accessible_graphs(PERM_READ_ONLY, PERM_RES_IDS_ARRAY); + + $graphs_lbx = new CListBox('graphs',null,8); + $graphs_lbx->AddOption('disabled','disabled'); + + $def_items = array(); + $sql = 'SELECT DISTINCT g.* '. + ' FROM graphs g, graphs_items gi,items i '. + ' WHERE '.DBcondition('g.graphid',$available_graphs). + ' AND gi.graphid=g.graphid '. + ' AND g.templateid=0 '. + ' AND i.itemid=gi.itemid '. + ' AND i.hostid='.$_REQUEST['hostid']. + ' ORDER BY g.name'; + + $host_graph_res = DBselect($sql); + while($host_graph = DBfetch($host_graph_res)){ + $graphs_lbx->AddItem($host_graph['graphid'],$host_graph['name']); + } + + if($graphs_lbx->ItemsCount() < 1) $graphs_lbx->AddOption('style','width: 200px;'); + + $frmHost->AddRow(S_GRAPHS, $graphs_lbx); + } + $frmHost->AddItemToBottomRow(new CButton("save",S_SAVE)); if(isset($_REQUEST["hostid"])){ $frmHost->AddItemToBottomRow(SPACE); $frmHost->AddItemToBottomRow(new CButton("clone",S_CLONE)); $frmHost->AddItemToBottomRow(SPACE); + $frmHost->AddItemToBottomRow(new CButton("full_clone",S_FULL_CLONE)); + + $frmHost->AddItemToBottomRow(SPACE); $frmHost->AddItemToBottomRow( new CButtonDelete(S_DELETE_SELECTED_HOST_Q, url_param("form").url_param("config").url_param("hostid"). url_param("groupid") - ) - ); + )); - if($show_only_tmp) - { + if($show_only_tmp){ $frmHost->AddItemToBottomRow(SPACE); $frmHost->AddItemToBottomRow( new CButtonQMessage('delete_and_clear', 'Delete AND clear', - S_DELETE_SELECTED_HOSTS_Q, + S_DELETE_SELECTED_HOSTS_Q, url_param("form").url_param("config").url_param("hostid"). url_param("groupid") ) diff --git a/frontends/php/include/graphs.inc.php b/frontends/php/include/graphs.inc.php index 8c203c6b..7159d424 100644 --- a/frontends/php/include/graphs.inc.php +++ b/frontends/php/include/graphs.inc.php @@ -802,8 +802,7 @@ $db_graphs = get_graphs_by_hostid($templateid); - while($db_graph = DBfetch($db_graphs)) - { + while($db_graph = DBfetch($db_graphs)){ copy_graph_to_host($db_graph["graphid"], $hostid, $copy_mode); } } @@ -820,15 +819,13 @@ * Comments: !!! Don't forget sync code with C !!! * */ - function copy_graph_to_host($graphid, $hostid, $copy_mode = false) - { + function copy_graph_to_host($graphid, $hostid, $copy_mode = false){ $result = false; $gitems = array(); $db_graph_items = get_graphitems_by_graphid($graphid); - while( $db_gitem = DBfetch($db_graph_items) ) - { + while( $db_gitem = DBfetch($db_graph_items) ){ $gitems[] = array( 'itemid' => $db_gitem['itemid'], 'color' => $db_gitem['color'], @@ -843,68 +840,63 @@ $db_graph = get_graph_by_graphid($graphid); - if ( ($new_gitems = get_same_graphitems_for_host($gitems, $hostid)) ) - { + if ( ($new_gitems = get_same_graphitems_for_host($gitems, $hostid)) ){ unset($chd_graphid); + $chd_graphs = get_graphs_by_hostid($hostid); - while( !isset($chd_graphid) && $chd_graph = DBfetch($chd_graphs)) - { /* compare graphs */ + while( !isset($chd_graphid) && $chd_graph = DBfetch($chd_graphs)){ +/* compare graphs */ if ( $chd_graph['templateid'] != 0 ) continue; unset($equal); $chd_gitems = get_graphitems_by_graphid($chd_graph["graphid"]); - while($chd_gitem = DBfetch($chd_gitems)) - { + while($chd_gitem = DBfetch($chd_gitems)){ unset($gitem_equal); - foreach($new_gitems as $new_gitem) - { + + foreach($new_gitems as $new_gitem){ if(cmp_graphitems($new_gitem, $chd_gitem)) continue; $gitem_equal = true; break; } - if ( !isset($gitem_equal) ) - { + if(!isset($gitem_equal)){ unset($equal); break; } /* founded equal graph item */ - if ( !isset($equal) ) $equal = 0; + if(!isset($equal))$equal = 0; $equal++; } - if ( isset($equal) && count($new_gitems) == $equal ) - { /* founded equal graph */ + if(isset($equal) && (count($new_gitems) == $equal)){ +/* founded equal graph */ $chd_graphid = $chd_graph["graphid"]; break; } } - if ( isset($chd_graphid) ) - { + if(isset($chd_graphid)){ $result = update_graph_with_items($chd_graphid, $db_graph['name'], $db_graph['width'], $db_graph['height'], $db_graph['yaxistype'], $db_graph['yaxismin'], $db_graph['yaxismax'], $db_graph['show_work_period'], $db_graph['show_triggers'], $db_graph['graphtype'], $db_graph['show_legend'], $db_graph['show_3d'], $new_gitems, ($copy_mode ? 0: $db_graph['graphid'])); } - else - { + else{ $result = add_graph_with_items($db_graph['name'], $db_graph['width'], $db_graph['height'], $db_graph['yaxistype'], $db_graph['yaxismin'], $db_graph['yaxismax'], $db_graph['show_work_period'], $db_graph['show_triggers'], $db_graph['graphtype'], $db_graph['show_legend'], $db_graph['show_3d'], $new_gitems, ($copy_mode ? 0: $db_graph['graphid'])); } } - else - { + else{ $host = get_host_by_hostid($hostid); info('Skipped coping of graph "'.$db_graph["name"].'" to host "'.$host['host'].'"'); } - return $result; + return $result; } function navigation_bar_calc(){ diff --git a/frontends/php/include/html.inc.php b/frontends/php/include/html.inc.php index db6d95f4..34641c23 100644 --- a/frontends/php/include/html.inc.php +++ b/frontends/php/include/html.inc.php @@ -178,7 +178,6 @@ // $table->AddRow($tab); $table->AddRow($div); - return $table; } diff --git a/frontends/php/include/items.inc.php b/frontends/php/include/items.inc.php index c2c41c9b..ee13f9b2 100644 --- a/frontends/php/include/items.inc.php +++ b/frontends/php/include/items.inc.php @@ -32,10 +32,8 @@ * Comments: * */ - function item_type2str($type) - { - switch($type) - { + function item_type2str($type){ + switch($type){ case ITEM_TYPE_ZABBIX: $type = S_ZABBIX_AGENT; break; case ITEM_TYPE_SNMPV1: $type = S_SNMPV1_AGENT; break; case ITEM_TYPE_TRAPPER: $type = S_ZABBIX_TRAPPER; break; @@ -50,7 +48,7 @@ case ITEM_TYPE_DB_MONITOR: $type = S_ZABBIX_DATABASE_MONITOR; break; default:$type = S_UNKNOWN; break; } - return $type; + return $type; } /* @@ -65,10 +63,8 @@ * Comments: * */ - function item_value_type2str($value_type) - { - switch($value_type) - { + function item_value_type2str($value_type){ + switch($value_type){ case ITEM_VALUE_TYPE_UINT64: $value_type = S_NUMERIC_UINT64; break; case ITEM_VALUE_TYPE_FLOAT: $value_type = S_NUMERIC_FLOAT; break; case ITEM_VALUE_TYPE_STR: $value_type = S_CHARACTER; break; @@ -76,7 +72,7 @@ case ITEM_VALUE_TYPE_TEXT: $value_type = S_TEXT; break; default:$value_type = S_UNKNOWN; break; } - return $value_type; + return $value_type; } /* @@ -91,17 +87,15 @@ * Comments: * */ - function item_status2str($status) - { - switch($status) - { + function item_status2str($status){ + switch($status){ case ITEM_STATUS_ACTIVE: $status = S_ACTIVE; break; case ITEM_STATUS_DISABLED: $status = S_DISABLED; break; case ITEM_STATUS_NOTSUPPORTED: $status = S_NOT_SUPPORTED; break; default: $status = S_UNKNOWN; break; } - return $status; + return $status; } /* @@ -116,17 +110,15 @@ * Comments: * */ - function item_status2style($status) - { - switch($status) - { + function item_status2style($status){ + switch($status){ case ITEM_STATUS_ACTIVE: $status = 'off'; break; case ITEM_STATUS_DISABLED: $status = 'on'; break; case ITEM_STATUS_NOTSUPPORTED: default: $status = 'unknown'; break; } - return $status; + return $status; } # Update Item definition for selected group @@ -134,11 +126,10 @@ { $sql="select i.itemid,i.hostid from hosts_groups hg,items i where hg.groupid=$groupid and i.key_=".zbx_dbstr($key)." and hg.hostid=i.hostid"; $result=DBexecute($sql); - while($row=DBfetch($result)) - { + while($row=DBfetch($result)){ update_item($row["itemid"],$description,$key,$row["hostid"],$delay,$history,$status,$type,$snmp_community,$snmp_oid,$value_type,$trapper_hosts,$snmp_port,$units,$multiplier,$delta,$snmpv3_securityname,$snmpv3_securitylevel,$snmpv3_authpassphrase,$snmpv3_privpassphrase,$formula,$trends,$logtimefmt,$valuemapid,$delay_flex,$params,$applications); } - return 1; + return 1; } # Delete Item definition from selected group @@ -323,8 +314,7 @@ # Update Item status - function update_item_status($itemid,$status) - { + function update_item_status($itemid,$status){ if($status==ITEM_STATUS_ACTIVE) $sql="update items set status=$status,error='' where itemid=$itemid"; else @@ -349,33 +339,28 @@ if(($i = array_search(0,$applications)) !== FALSE) unset($applications[$i]); - if( !eregi('^'.ZBX_EREG_ITEM_KEY_FORMAT.'$', $key) ) - { + if( !eregi('^'.ZBX_EREG_ITEM_KEY_FORMAT.'$', $key) ){ error("Incorrect key format 'key_name[param1,param2,...]'"); return false; } - if($delay<1) - { + if($delay<1){ error("Delay cannot be less than 1 second"); return FALSE; } - if( ($snmp_port<1)||($snmp_port>65535)) - { + if( ($snmp_port<1)||($snmp_port>65535)){ error("Invalid SNMP port"); return FALSE; } - if($value_type == ITEM_VALUE_TYPE_STR) - { + if($value_type == ITEM_VALUE_TYPE_STR){ $delta=0; } $db_item = DBfetch(DBselect("select itemid from items". " where hostid=$hostid and itemid<>$itemid and key_=".zbx_dbstr($key))); - if($db_item && $templateid == 0) - { + if($db_item && $templateid == 0){ error("An item with the same Key already exists for host ".$host["host"].".". " The key must be unique."); return FALSE; @@ -383,8 +368,7 @@ // first update child items $db_tmp_items = DBselect("select itemid, hostid from items where templateid=$itemid"); - while($db_tmp_item = DBfetch($db_tmp_items)) - { + while($db_tmp_item = DBfetch($db_tmp_items)){ // recursion $result = update_item( $db_tmp_item["itemid"], $description, $key, $db_tmp_item["hostid"], @@ -401,8 +385,7 @@ return $result; } - if($db_item && $templateid != 0) - { + if($db_item && $templateid != 0){ $result = delete_item($db_item["itemid"]); if(!$result) { error("Can't update item '".$host["host"].":$key'"); @@ -414,8 +397,7 @@ if(isset($_REQUEST['applications_visible'])){ $result = DBexecute("delete from items_applications where itemid=$itemid"); - foreach($applications as $appid) - { + foreach($applications as $appid){ $itemappid=get_dbid("items_applications","itemappid"); DBexecute("insert into items_applications (itemappid,itemid,applicationid) values($itemappid,".$itemid.",".$appid.")"); } @@ -437,12 +419,12 @@ "formula=".zbx_dbstr($formula).",trends=$trends,logtimefmt=".zbx_dbstr($logtimefmt).",". "valuemapid=$valuemapid,delay_flex=".zbx_dbstr($delay_flex).",params=".zbx_dbstr($params).",". "templateid=$templateid where itemid=$itemid"); - if($result) - { + + if($result){ info("Item '".$host["host"].":$key' updated"); - } - return $result; + + return $result; } /* @@ -614,15 +596,12 @@ * Comments: !!! Don't forget sync code with C !!! * */ - function copy_template_items($hostid, $templateid = null, $copy_mode = false) - { - if($templateid == null) - { + function copy_template_items($hostid, $templateid = null, $copy_mode = false){ + if($templateid == null){ $templateid = array_keys(get_templates_by_hostid($hostid)); } - if(is_array($templateid)) - { + if(is_array($templateid)){ foreach($templateid as $id) copy_template_items($hostid, $id, $copy_mode); // attention recursion return; @@ -631,8 +610,7 @@ $db_tmp_items = get_items_by_hostid($templateid); - while($db_tmp_item = DBfetch($db_tmp_items)) - { + while($db_tmp_item = DBfetch($db_tmp_items)){ add_item( $db_tmp_item["description"], $db_tmp_item["key_"], @@ -678,10 +656,8 @@ return $result; } - # Disable Item - - function disable_item($itemid) - { +// Disable Item + function disable_item($itemid){ // first update status for child items $db_tmp_items = DBselect("select itemid, hostid from items where templateid=$itemid"); while($db_tmp_item = DBfetch($db_tmp_items)) @@ -691,23 +667,20 @@ } $result = DBexecute("update items set status=".ITEM_STATUS_DISABLED." where itemid=$itemid"); - return $result; + return $result; } - function &get_items_by_hostid($hostid) - { - return DBselect("select * from items where hostid=$hostid"); + function get_items_by_hostid($hostid){ + return DBselect('select * from items where hostid='.$hostid); } - function get_item_by_itemid($itemid) - { - $row = DBfetch(DBselect("select * from items where itemid=$itemid")); - if($row) - { + function get_item_by_itemid($itemid){ + $row = DBfetch(DBselect('select * from items where itemid='.$itemid)); + if($row){ return $row; } error("No item with itemid=[$itemid]"); - return FALSE; + return FALSE; } /* @@ -814,44 +787,38 @@ * Comments: indexes between 1-x * */ - function get_n_param($key, $num) - { + function get_n_param($key, $num){ $param=""; $num--; - if( ereg('^'.ZBX_EREG_ITEM_KEY_FORMAT.'$', $key, $arr) ) - { + if(ereg('^'.ZBX_EREG_ITEM_KEY_FORMAT.'$', $key, $arr)){ $params = zbx_get_params($arr[ZBX_KEY_PARAM_ID]); - if(isset($params[$num])) - { + if(isset($params[$num])){ $param = $params[$num]; } } - return $param; + return $param; } - function item_description($description, $key) - { + function item_description($description, $key){ $descr=$description; - for($i=9;$i>0;$i--) - { + for($i=9;$i>0;$i--){ $descr=str_replace("$$i",get_n_param($key,$i),$descr); } - return $descr; + return $descr; } - function get_realhost_by_itemid($itemid) - { + function get_realhost_by_itemid($itemid){ $itme = get_item_by_itemid($itemid); if($itme["templateid"] <> 0) return get_realhost_by_itemid($itme["templateid"]); - return get_host_by_itemid($itemid); + return get_host_by_itemid($itemid); } /* @@ -866,8 +833,7 @@ * Comments: * */ - function get_items_data_overview($groupid,$view_style=null) - { + function get_items_data_overview($groupid,$view_style=null){ global $USER_DETAILS; $available_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY); @@ -875,20 +841,23 @@ $table = new CTableInfo(S_NO_ITEMS_DEFINED); - if($groupid > 0) - { + if($groupid > 0){ $group_where = ",hosts_groups hg where hg.groupid=$groupid and hg.hostid=h.hostid and"; - } else { + } + else { $group_where = " where"; } COpt::profiling_start('prepare data'); $result = DBselect('select distinct h.hostid, h.host,i.itemid, i.key_, i.value_type, i.lastvalue, i.units, '. - ' i.description, t.priority, i.valuemapid, t.value as tr_value, t.triggerid '. - ' from hosts h,items i left join functions f on f.itemid=i.itemid left join triggers t on t.triggerid=f.triggerid '. - $group_where. - ' h.hostid in ('.$available_hosts.') '. - ' and h.status='.HOST_STATUS_MONITORED.' and h.hostid=i.hostid and i.status='.ITEM_STATUS_ACTIVE. + ' i.description, t.priority, i.valuemapid, t.value as tr_value, t.triggerid '. + ' from hosts h,items i '. + ' left join functions f on f.itemid=i.itemid '. + ' left join triggers t on t.triggerid=f.triggerid '. + $group_where.' h.hostid in ('.$available_hosts.') '. + ' and h.status='.HOST_STATUS_MONITORED. + ' and h.hostid=i.hostid '. + ' and i.status='.ITEM_STATUS_ACTIVE. ' order by i.description,i.itemid'); unset($items); @@ -925,8 +894,8 @@ COpt::profiling_start('prepare data'); ); } } - if(!isset($hosts)) - { + + if(!isset($hosts)){ return $table; } @@ -936,14 +905,14 @@ COpt::profiling_start('prepare table'); if($view_style == STYLE_TOP){ $header=array(new CCol(S_ITEMS,'center')); - foreach($hosts as $hostname) - { + foreach($hosts as $hostname){ $header=array_merge($header,array(new CImg('vtext.php?text='.$hostname))); } + $table->SetHeader($header,'vertical_header'); $curr_rime = time(); - foreach($items as $descr => $ithosts) - { + + foreach($items as $descr => $ithosts){ $table_row = array(nbsp($descr)); foreach($hosts as $hostname){ $table_row = get_item_data_overview_cells($table_row,$ithosts,$hostname); @@ -953,18 +922,16 @@ COpt::profiling_start('prepare table'); } else{ $header=array(new CCol(S_HOSTS,'center')); - foreach($items as $descr => $ithosts) - { + foreach($items as $descr => $ithosts){ $header=array_merge($header,array(new CImg('vtext.php?text='.$descr))); } + $table->SetHeader($header,'vertical_header'); $curr_rime = time(); - foreach($hosts as $hostname) - { + foreach($hosts as $hostname){ $table_row = array(nbsp($hostname)); - foreach($items as $descr => $ithosts) - { + foreach($items as $descr => $ithosts){ $table_row = get_item_data_overview_cells($table_row,$ithosts,$hostname); } $table->AddRow($table_row); @@ -1000,8 +967,7 @@ COpt::profiling_stop('prepare table'); array('tw'=>'_blank')) ); - switch($ithosts[$hostname]['value_type']) - { + switch($ithosts[$hostname]['value_type']){ case ITEM_VALUE_TYPE_UINT64: case ITEM_VALUE_TYPE_FLOAT: $it_ov_menu = array_merge(array( @@ -1025,8 +991,7 @@ COpt::profiling_stop('prepare table'); // if($value == '-') $css_class = 'center'; $value_col = new CCol(array($value,$ack),$css_class); - if(isset($it_ov_menu)) - { + if(isset($it_ov_menu)){ $it_ov_menu = new CPUMenu($it_ov_menu,170); $value_col->OnClick($it_ov_menu->GetOnActionJS()); $value_col->AddOption('style', 'cursor: pointer;'); @@ -1080,13 +1045,11 @@ COpt::profiling_stop('prepare table'); * Comments: !!! Don't forget sync code with C !!! * * * ******************************************************************************/ - function delete_history_by_itemid($itemid, $use_housekeeper=0) - { + function delete_history_by_itemid($itemid, $use_housekeeper=0){ $result = delete_trends_by_itemid($itemid,$use_housekeeper); if(!$result) return $result; - if($use_housekeeper) - { + if($use_housekeeper){ $housekeeperid = get_dbid('housekeeper','housekeeperid'); DBexecute("insert into housekeeper (housekeeperid,tablename,field,value)". " values ($housekeeperid,'history_text','itemid',$itemid)"); @@ -1118,69 +1081,56 @@ COpt::profiling_stop('prepare table'); * Comments: !!! Don't forget sync code with C !!! * * * ******************************************************************************/ - function delete_trends_by_itemid($itemid, $use_housekeeper=0) - { - if($use_housekeeper) - { + function delete_trends_by_itemid($itemid, $use_housekeeper=0){ + if($use_housekeeper){ $housekeeperid = get_dbid('housekeeper','housekeeperid'); DBexecute("insert into housekeeper (housekeeperid,tablename,field,value)". " values ($housekeeperid, 'trends','itemid',$itemid)"); return TRUE; } - return DBexecute("delete from trends where itemid=$itemid"); + return DBexecute("delete from trends where itemid=$itemid"); } - function format_lastvalue($db_item) - { - if($db_item["value_type"] == ITEM_VALUE_TYPE_LOG) - { + function format_lastvalue($db_item){ + if($db_item["value_type"] == ITEM_VALUE_TYPE_LOG){ $row=DBfetch(DBselect("select value from history_log where itemid=".$db_item["itemid"]." order by clock desc", 1)); - if($row) - { + if($row){ $lastvalue=/*nbsp(htmlspecialchars(*/$row["value"]/*))*/; if(strlen($lastvalue) > 20) $lastvalue = substr($lastvalue,0,20)." ..."; $lastvalue = nbsp(htmlspecialchars($lastvalue)); } - else - { + else{ $lastvalue="-"; } } - else if(isset($db_item["lastvalue"])) - { - if($db_item["value_type"] == ITEM_VALUE_TYPE_FLOAT) - { + else if(isset($db_item["lastvalue"])){ + if($db_item["value_type"] == ITEM_VALUE_TYPE_FLOAT){ $lastvalue=convert_units($db_item["lastvalue"],$db_item["units"]); } - else if($db_item["value_type"] == ITEM_VALUE_TYPE_UINT64) - { + else if($db_item["value_type"] == ITEM_VALUE_TYPE_UINT64){ $lastvalue=convert_units($db_item["lastvalue"],$db_item["units"]); } - else if($db_item["value_type"] == ITEM_VALUE_TYPE_TEXT) - { + else if($db_item["value_type"] == ITEM_VALUE_TYPE_TEXT){ $lastvalue="..."; } - else if($db_item["value_type"] == ITEM_VALUE_TYPE_STR) - { + else if($db_item["value_type"] == ITEM_VALUE_TYPE_STR){ $lastvalue=nbsp(htmlspecialchars(substr($db_item["lastvalue"],0,20))); if(strlen($db_item["lastvalue"]) > 20) $lastvalue .= " ..."; } - else - { + else{ $lastvalue="Unknown value type"; } if($db_item["valuemapid"] > 0); $lastvalue = replace_value_by_map($lastvalue, $db_item["valuemapid"]); } - else - { + else{ $lastvalue = "-"; } - return $lastvalue; + return $lastvalue; } /* @@ -1199,42 +1149,38 @@ COpt::profiling_stop('prepare table'); * Comments: * */ - function item_get_history($db_item, $last = 1, $clock = 0) - { + function item_get_history($db_item, $last = 1, $clock = 0){ $value = NULL; - switch($db_item["value_type"]) - { - case ITEM_VALUE_TYPE_FLOAT: - $table = "history"; - break; - case ITEM_VALUE_TYPE_UINT64: - $table = "history_uint"; - break; - case ITEM_VALUE_TYPE_TEXT: - $table = "history_text"; - break; - case ITEM_VALUE_TYPE_STR: - $table = "history_str"; - break; - case ITEM_VALUE_TYPE_LOG: - default: - $table = "history_log"; - break; + switch($db_item["value_type"]){ + case ITEM_VALUE_TYPE_FLOAT: + $table = "history"; + break; + case ITEM_VALUE_TYPE_UINT64: + $table = "history_uint"; + break; + case ITEM_VALUE_TYPE_TEXT: + $table = "history_text"; + break; + case ITEM_VALUE_TYPE_STR: + $table = "history_str"; + break; + case ITEM_VALUE_TYPE_LOG: + default: + $table = "history_log"; + break; } - if ($last == 0) - { + + if($last == 0){ $sql = "select value from $table where itemid=".$db_item["itemid"]." and clock=$clock"; $row = DBfetch(DBselect($sql, 1)); if($row) $value = $row["value"]; } - else - { + else{ $sql = "select max(clock) as clock from $table where itemid=".$db_item["itemid"]; $row = DBfetch(DBselect($sql)); - if ($row && !is_null($row["clock"])) - { + if($row && !is_null($row["clock"])){ $clock = $row["clock"]; $sql = "select value from $table where itemid=".$db_item["itemid"]." and clock=$clock"; $row = DBfetch(DBselect($sql, 1)); 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; - } ?> diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php index f9a35473..d2b6a68c 100644 --- a/frontends/php/include/triggers.inc.php +++ b/frontends/php/include/triggers.inc.php @@ -198,8 +198,8 @@ $available_hosts = get_accessible_hosts_by_user($USER_DETAILS, $perm, PERM_RES_IDS_ARRAY, $nodeid); - $denied_graphs = array(); - $available_graphs = array(); + $denied_triggers = array(); + $available_triggers = array(); $sql = 'SELECT DISTINCT t.triggerid '. ' FROM triggers t, functions f, items i '. @@ -207,7 +207,6 @@ ' AND f.itemid=i.itemid'. (!empty($hostid)?' AND i.hostid='.$hostid:''). ' AND '.DBcondition('i.hostid',$available_hosts,true); - $db_triggers = DBselect($sql); while($trigger = DBfetch($db_triggers)){ $denied_triggers[] = $trigger['triggerid']; @@ -217,10 +216,9 @@ ' FROM triggers t, functions f, items i '. ' WHERE t.triggerid=f.triggerid '. ' AND f.itemid=i.itemid'. - ' AND i.status='.ITEM_STATUS_ACTIVE. (!empty($hostid)?' AND i.hostid='.$hostid:''). (!empty($denied_triggers)?' AND '.DBcondition('t.triggerid',$denied_triggers,true):''); - + $db_triggers = DBselect($sql); while($trigger = DBfetch($db_triggers)){ $result[$trigger['triggerid']] = $trigger['triggerid']; |
