diff options
author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-05-12 14:23:12 +0000 |
---|---|---|
committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-05-12 14:23:12 +0000 |
commit | 4182bc6afb20b00fa27a54c67056bb98a58a49bb (patch) | |
tree | 5cab17d23e387cc3b6e8c92e4c928ac5e1111b76 /frontends | |
parent | 6a6ac0772b8215bffc5fe8b02fc1033dbf273f41 (diff) | |
download | zabbix-4182bc6afb20b00fa27a54c67056bb98a58a49bb.tar.gz zabbix-4182bc6afb20b00fa27a54c67056bb98a58a49bb.tar.xz zabbix-4182bc6afb20b00fa27a54c67056bb98a58a49bb.zip |
- speed improvement for Overview screens (Eugene)
- developed 'net.if.total[*]' parameter (Eugene)
- fixed new map link adding (Eugene)
- fixed host group adding (Eugene)
- fixed map displaying (Eugene)
- fixed 'No permissions' for 'Latest data','Triggers','Alarms' screens (Eugene)
- fixed permision deletion (Eugene)
- fixed 'get_map_by_sysmapid' function calls(Eugene)
- improved php code execution speed (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@2825 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends')
43 files changed, 845 insertions, 1163 deletions
diff --git a/frontends/php/actionconf.php b/frontends/php/actionconf.php index c4a7047e..acf4fc8b 100644 --- a/frontends/php/actionconf.php +++ b/frontends/php/actionconf.php @@ -241,8 +241,7 @@ $tblActions = new CTableInfo(S_NO_ACTIONS_DEFINED); $tblActions->SetHeader(array( - array( new CCheckBox("all_items",NULL,NULL, - "CheckAll('".$form->GetName()."','all_items');"), + array( new CCheckBox("all_items",NULL,"CheckAll('".$form->GetName()."','all_items');"), S_SOURCE ), S_CONDITIONS, @@ -302,7 +301,6 @@ new CCheckBox( "g_actionid[]", /* name */ NULL, /* checked */ - NULL, /* caption */ NULL, /* action */ $row["actionid"]), /* value */ SPACE, diff --git a/frontends/php/history.php b/frontends/php/history.php index 12f2da5c..38b4106e 100644 --- a/frontends/php/history.php +++ b/frontends/php/history.php @@ -170,7 +170,7 @@ new CButton("add_log","Add","return PopUp('popup.php?". "dstfrm=".$l_header->GetName()."&srctbl=logitems','new_win',". "'width=600,height=450,resizable=1,scrollbars=1');"),SPACE, - $cmbLogList->GetItemsCount() > 1 ? new CButton("remove_log","Remove selected") : NULL + $cmbLogList->ItemsCount() > 1 ? new CButton("remove_log","Remove selected") : NULL )); } else @@ -338,14 +338,13 @@ if(!isset($_REQUEST["plaintext"])) { - $tbl_msg = DBnum_rows($result) > 1 ? NULL : "..."; - $table = new CTableInfo($tbl_msg,"log_history_table"); + $table = new CTableInfo('...','log_history_table'); $table->SetHeader(array(S_TIMESTAMP, $item_cout > 1 ? S_ITEM : NULL, S_LOCAL_TIME,S_SOURCE,S_SEVERITY,S_VALUE),"header"); - $table->ShowTagStart(); // to solve memory leak we call 'Show' method by steps - $table->ShowTagBody(); // to solve memory leak we call 'Show' method by steps + $table->ShowStart(); // to solve memory leak we call 'Show' method by steps + $table->ShowBody(); // to solve memory leak we call 'Show' method by steps } else { @@ -406,9 +405,9 @@ if($severity==0) $severity = S_NOT_CLASSIFIED; elseif($severity==1) $severity = S_INFORMATION; elseif($severity==2) $severity = S_WARNING; - elseif($severity==3) $severity = new CSpan(S_AVERAGE,"average"); - elseif($severity==4) $severity = new CSpan(S_HIGH,"high"); - elseif($severity==5) $severity = new CSpan(S_DISASTER,"disaster"); + elseif($severity==3) $severity = new CCol(S_AVERAGE,"average"); + elseif($severity==4) $severity = new CCol(S_HIGH,"high"); + elseif($severity==5) $severity = new CCol(S_DISASTER,"disaster"); elseif($severity==6) $severity = S_AUDIT_SUCCESS; elseif($severity==7) $severity = S_AUDIT_FAILURE; else $severity = $row["priority"]; @@ -419,7 +418,9 @@ if(!isset($_REQUEST["plaintext"])) { + $crow = new CRow($new_row); + if(is_null($color_style) && is_array($_REQUEST["itemid"])) { $min_color = 0x98; @@ -441,7 +442,7 @@ } } if(!isset($_REQUEST["plaintext"])) - $table->ShowTagEnd(); // to solve memory leak we call 'Show' method by steps + $table->ShowEnd(); // to solve memory leak we call 'Show' method by steps else echo "</PRE>"; } @@ -460,22 +461,21 @@ $result=DBselect($sql); if(!isset($_REQUEST["plaintext"])) { - $tbl_msg = DBnum_rows($result) > 1 ? NULL : "..."; - $table = new CTableInfo($tbl_msg); + $table = new CTableInfo(); + $table->ShowStart(); // to solve memory leak we call 'Show' method by steps + $table->SetHeader(array(S_TIMESTAMP, S_VALUE)); - $table->ShowTagStart(); // to solve memory leak we call 'Show' method by steps - $table->ShowTagBody(); // to solve memory leak we call 'Show' method by steps + $table->ShowBody(); // to show Header } else { echo "<PRE>\n"; } - $i=0; +COpt::profiling_start("history"); while($row=DBfetch($result)) { - $value = replace_value_by_map($row["value"], $row["valuemapid"]); $new_row = array(date("Y.M.d H:i:s",$row["clock"])); @@ -489,13 +489,7 @@ } if(!isset($_REQUEST["plaintext"])) { - $crow = new CRow($new_row, - ($i % 2) != 0 ? - $table->evenRowClass : - $table->oddRowClass - ); - $crow->Show(); - $i++; + $table->ShowRow($new_row); } else { @@ -504,9 +498,10 @@ } } if(!isset($_REQUEST["plaintext"])) - $table->ShowTagEnd(); // to solve memory leak we call 'Show' method by steps + $table->ShowEnd(); // to solve memory leak we call 'Show' method by steps else echo "</PRE>"; +COpt::profiling_stop("history"); } } diff --git a/frontends/php/hosts.php b/frontends/php/hosts.php index 0695a0b9..cac15ebd 100644 --- a/frontends/php/hosts.php +++ b/frontends/php/hosts.php @@ -460,8 +460,7 @@ $table = new CTableInfo(S_NO_HOSTS_DEFINED); $table->setHeader(array( - array(new CCheckBox("all_hosts",NULL,NULL, - "CheckAll('".$form->GetName()."','all_hosts');"), + array(new CCheckBox("all_hosts",NULL,"CheckAll('".$form->GetName()."','all_hosts');"), SPACE.S_NAME), $show_only_tmp ? NULL : S_IP, $show_only_tmp ? NULL : S_PORT, @@ -492,7 +491,7 @@ if($template == "/") $template = NULL; $host=new CCol(array( - new CCheckBox("hosts[]",NULL,NULL,NULL,$row["hostid"]), + new CCheckBox("hosts[]",NULL,NULL,$row["hostid"]), SPACE, new CSpan($template,"unknown"), new CLink($row["host"],"hosts.php?form=update&hostid=". @@ -597,7 +596,7 @@ $table = new CTableInfo(S_NO_HOST_GROUPS_DEFINED); $table->setHeader(array( - array( new CCheckBox("all_groups",NULL,NULL, + array( new CCheckBox("all_groups",NULL, "CheckAll('".$form->GetName()."','all_groups');"), SPACE, S_NAME), @@ -629,7 +628,7 @@ $table->AddRow(array( array( - new CCheckBox("groups[]",NULL,NULL,NULL,$db_group["groupid"]), + new CCheckBox("groups[]",NULL,NULL,$db_group["groupid"]), SPACE, new CLink( $db_group["name"], @@ -771,7 +770,7 @@ $table = new CTableInfo(); $table->SetHeader(array( - array(new CCheckBox("all_applications",NULL,NULL, + array(new CCheckBox("all_applications",NULL, "CheckAll('".$form->GetName()."','all_applications');"), SPACE, S_ID), @@ -804,7 +803,7 @@ $table->AddRow(array( - array(new CCheckBox("applications[]",NULL,NULL,NULL,$db_app["applicationid"]), + array(new CCheckBox("applications[]",NULL,NULL,$db_app["applicationid"]), SPACE, $db_app["applicationid"]), $name, diff --git a/frontends/php/include/actions.inc.php b/frontends/php/include/actions.inc.php index 2beb10f2..b51d50f2 100644 --- a/frontends/php/include/actions.inc.php +++ b/frontends/php/include/actions.inc.php @@ -190,12 +190,9 @@ $sql="select distinct h.hostid from hosts h,functions f, items i where i.itemid=f.itemid and h.hostid=i.hostid and f.triggerid=".$action["triggerid"]; $result=dbselect($sql); - if(dbnum_rows($result)!=1) - { - return; - } $row=dbfetch($result); + if(!$row) return; $hostid=$row["hostid"]; diff --git a/frontends/php/include/classes/cbutton.inc.php b/frontends/php/include/classes/cbutton.inc.php index 139d3499..0c33caaf 100644 --- a/frontends/php/include/classes/cbutton.inc.php +++ b/frontends/php/include/classes/cbutton.inc.php @@ -24,70 +24,37 @@ /* public */ function CButton($name="button", $caption="", $action=NULL, $accesskey=NULL) { - parent::CTag("input","no"); - $this->tag_body_start = ""; - $this->AddOption("type","submit"); -// $this->AddOption("type","button"); - $this->SetClass("button"); + parent::CTag('input','no'); + $this->tag_body_start = ''; + $this->options['type'] = 'submit'; + $this->options['value'] = $caption; +// $this->options["type"] = "button"; + $this->options['class'] = 'button'; $this->SetName($name); - $this->SetCaption($caption); $this->SetAction($action); $this->SetAccessKey($accesskey); } function SetAction($value='submit()', $event='onClick') { - if(is_null($value)) - return 1; - if(!is_string($value)) - return $this->error("Incorrect value for SetAction [$value]"); - if(!is_string($event)) - return $this->error("Incorrect event for SetAction [$event]"); - return $this->AddOption($event,$value); + $this->options[$event] = $value; } function SetTitle($value='button title') { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetTitle [$value]"); - } - return $this->AddOption("title",$value); + $this->options['title'] = $value; } function SetAccessKey($value='B') { - if(is_null($value)) - return 0; - elseif(!is_string($value)) - { - return $this->error("Incorrect value for SetAccessKey [$value]"); - } - - if($this->GetOption('title')==NULL) - $this->SetTitle($this->GetOption('value')." [Alt+$value]"); + if(!isset($this->options['title'])) + $this->SetTitle($this->options['value'].' [Alt+$value]'); - return $this->AddOption("accessKey",$value); - } - function SetName($value='button') - { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetName [$value]"); - } - return $this->AddOption("name",$value); - } - function SetCaption($value="") - { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetCaption [$value]"); - } - return $this->AddOption("value",$value); + return $this->options['accessKey'] = $value; } } class CButtonCancel extends CButton { function CButtonCancel($vars=NULL){ - parent::CButton("cancel",S_CANCEL); + parent::CButton('cancel',S_CANCEL); $this->SetVars($vars); } function SetVars($value=NULL){ diff --git a/frontends/php/include/classes/ccheckbox.inc.php b/frontends/php/include/classes/ccheckbox.inc.php index 69a856e2..83ac51a6 100644 --- a/frontends/php/include/classes/ccheckbox.inc.php +++ b/frontends/php/include/classes/ccheckbox.inc.php @@ -22,66 +22,27 @@ class CCheckBox extends CTag { /* public */ - function CCheckBox($name='checkbox',$checked='no',$caption=NULL,$action=NULL,$value='yes') + function CCheckBox($name='checkbox',$checked='no',$action=NULL,$value='yes') { - parent::CTag("input","no"); - $this->tag_body_start = ""; - $this->AddOption('type','checkbox'); - $this->AddOption('value','yes'); - $this->SetName($name); - $this->SetCaption($caption); + parent::CTag('input','no'); + $this->tag_body_start = ''; + $this->options['type'] = 'checkbox'; + $this->options['value'] = $value; + $this->options['name'] = $name; + $this->options['onClick'] = $action; $this->SetChecked($checked); - $this->SetAction($action); - $this->SetValue($value); - } - function SetName($value='checkbox') - { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetName [$value]"); - } - return $this->AddOption("name",$value); - } - function SetCaption($value=NULL) - { - if(is_null($value)) - return 0; - elseif(is_string($value)) - return $this->AddItem(nbsp($value)); - return $this->error("Incorrect value for SetCaption [$value]"); - } - function SetValue($value=NULL) - { - if(is_null($value)) - return $this->DelOption("value"); - elseif(is_string($value) || is_numeric($value)) - return $this->AddOption('value',$value); - return $this->error("Incorrect value for SetValue [$value]"); } function SetChecked($value="yes") { - if(is_null($value)){ - return 0; - }elseif((is_string($value)&& - ($value=="yes" || $value=="checked" || $value=="on") || $value=="1") - || (is_int($value)&&$value<>0)){ - return $this->AddOption("checked","checked"); - }elseif((is_string($value)&& - ($value=="no" || $value=="unchecked" || $value=="off" || $value=="0")) - || (is_int($value)&&$value==0)){ - return $this->DelOption("checked"); - } - return $this->error("Incorrect value for SetChacked [$value]"); + if((is_string($value)&& ($value=="yes" || $value=="checked" || $value=="on") || $value=="1") + || (is_int($value)&&$value<>0)) + return $this->options['checked'] = 'checked'; + + $this->DelOption("checked"); } function SetAction($value='submit()', $event='onClick') { - if(is_null($value)) - return 1; - if(!is_string($value)) - return $this->error("Incorrect value for SetAction [$value]"); - if(!is_string($event)) - return $this->error("Incorrect event for SetAction [$event]"); - return $this->AddOption($event,$value); + $this->options[$event] = $value; } } ?> diff --git a/frontends/php/include/classes/ccombobox.inc.php b/frontends/php/include/classes/ccombobox.inc.php index ea579803..ee390332 100644 --- a/frontends/php/include/classes/ccombobox.inc.php +++ b/frontends/php/include/classes/ccombobox.inc.php @@ -26,90 +26,55 @@ { parent::CTag('option','yes'); $this->tag_body_start = ""; - $this->SetCaption($caption); - $this->SetValue($value); + $this->options['value'] = $value; + + $this->AddItem($caption); + $this->SetSelected($selected); $this->SetEnabled($enabled); } function SetValue($value) { - return parent::AddOption('value',$value); + return $this->options['value'] = $value; } function GetValue() { - return parent::GetOption('value'); + return $this->GetOption('value'); } function SetCaption($value=NULL) { - if(is_null($value)) - return 0; - elseif(is_string($value)){ - parent::AddItem(nbsp($value)); - return 0; - } - return $this->error("Incorrect value for SetCaption [$value]"); + $this->AddItem(nbsp($value)); } function SetSelected($value='yes') { - if(is_null($value)) - return $this->DelOption('selected'); - elseif((is_string($value) && ($value == 'yes' || $value == "selected" || $value=='on')) + if((is_string($value) && ($value == 'yes' || $value == "selected" || $value=='on')) || (is_int($value) && $value<>0)) - return $this->AddOption('selected','selected'); - elseif((is_string($value) && ($value == 'no' || $value=='off')) - || (is_int($value) && $value==0)) - return $this->DelOption('selected'); - return $this->error("Incorrect value for SetSelected [$value]"); + return $this->options['selected'] = 'selected'; + + $this->DelOption('selected'); } } class CComboBox extends CTag { /* private */ - var $caption; var $value; /* public */ function CComboBox($name='combobox',$value=NULL,$action=NULL) { - parent::CTag("select","yes"); - $this->tag_end = ""; - $this->SetClass("biginput"); - $this->SetName($name); - $this->SetValue($value); - $this->AddOption("size",1); + parent::CTag('select','yes'); + $this->tag_end = ''; + $this->options['class'] = 'biginput'; + $this->options['name'] = $name; + $this->value = $value; + $this->options['size'] = 1; $this->SetAction($action); } function SetAction($value='submit()', $event='onChange') { - if(is_null($value)) - return 1; - if(!is_string($value)) - return $this->error("Incorrect value for SetAction [$value]"); - if(!is_string($event)) - return $this->error("Incorrect event for SetAction [$event]"); - return $this->AddOption($event,$value); - } - function SetName($value='combobox') - { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetName [$value]"); - } - return $this->AddOption("name",$value); - } - function SetCaption($value=NULL) - { - if(is_null($value)) - unset($this->caption); - elseif(is_string($value)) - $this->caption = $value; - else - { - return $this->error("Incorrect value for SetCaption [$value]"); - } - return 0; + $this->AddOption($event,$value); } function SetValue($value=NULL) { @@ -119,30 +84,31 @@ { // if($enabled=='no') return; /* disable item method 1 */ - $cmbItem = new CComboItem($value,$caption,$selected,$enabled); - return parent::AddItem($cmbItem); - } - - function SetSelectedByValue(&$item) - { - if(!is_null($this->value)) + if(is_null($selected)) { $selected = 'no'; - if($item->GetValue() == $this->value) $selected = 'yes'; - $item->SetSelected($selected); + if($value == $this->value || (is_array($this->value) && in_array($value, $this->value))) + $selected = 'yes'; } + + parent::AddItem(new CComboItem($value,$caption,$selected,$enabled)); } + } - function ShowTagItem(&$item) + class CListBox extends CComboBox + { +/* public */ + function CListBox($name='combobox',$value=NULL,$size=5,$action=NULL) { - $this->SetSelectedByValue($item); - parent::ShowTagItem($item); + parent::CComboBox($name,NULL,$action); + $this->options['multiple'] = 'multiple'; + $this->options['size'] = $size; + $this->SetValue($value); } - function Show() + function SetSize($value) { - if(isset($this->caption)) - echo $this->caption." "; - parent::Show(); + $this->options['size'] = $value; } } + ?> diff --git a/frontends/php/include/classes/cflash.inc.php b/frontends/php/include/classes/cflash.inc.php index fa8886a7..0254443a 100644 --- a/frontends/php/include/classes/cflash.inc.php +++ b/frontends/php/include/classes/cflash.inc.php @@ -19,84 +19,62 @@ **/ ?> <?php - class CFlashEmbed extends CTag + /* private */ class CFlashEmbed extends CTag { function CFlashEmbed($src=NULL, $width = NULL, $height = NULL) { - parent::CTag("embed"); - $this->AddOption("allowScriptAccess","sameDomain"); - $this->AddOption("type","application/x-shockwave-flash"); - $this->AddOption("pluginspage","http://www.macromedia.com/go/getflashplayer"); - $this->AddOption("align","middle"); - $this->AddOption("quality","high"); + parent::CTag('embed'); + $this->options['allowScriptAccess'] = 'sameDomain'; + $this->options['type'] = 'application/x-shockwave-flash'; + $this->options['pluginspage'] = 'http://www.macromedia.com/go/getflashplayer'; + $this->options['align'] = 'middle'; + $this->options['quality'] = 'high'; - $this->SetWidth($width); - $this->SetHeight($height); - $this->SetSrc($src); + $this->options['width'] = $width; + $this->options['height'] = $height; + $this->options['src'] = $src; } function SetWidth($value) { - if(is_null($value)) - return $this->DelOption("width"); - if(!is_numeric($value)) - return $this->error("Incorrect value for SetWidth [$value]"); - - $this->AddOption("width",$value); + $this->options['width'] = $value; } function SetHeight($value) { - if(is_null($value)) - return $this->DelOption("height"); - if(!is_numeric($value)) - return $this->error("Incorrect value for SetHeight [$value]"); - - $this->AddOption("height",$value); + $this->options['height'] = $value; } function SetSrc($value) { - if(is_null($value)) - return $this->DelOption("src"); - if(!is_string($value)) - return $this->error("Incorrect value for SetSrc[$value]"); - - $this->AddOption("src",$value); + $this->options['src'] = $value; } } - class CParam extends CTag + /* private */ class CParam extends CTag { function CParam($name,$value) { parent::CTag("param","no"); - - $this->SetName($name); - $this->SetValue($value); - } - function SetName($value) - { - $this->AddOption("name",$value); - } - function SetValue($value) - { - $this->AddOption("value",$value); + $this->options['name'] = $name; + $this->options['value'] = $value; } } - class CFlash extends CTag + /* public */ class CFlash extends CTag { - var $timetype; + var $SrcParam; + var $EmbededFlash; + function CFlash($src=NULL, $width = NULL, $height = NULL) { parent::CTag("object",'yes'); - $this->AddOption("classid","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"); - $this->AddOption("codebase","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"); - $this->AddOption("align","middle"); + $this->options['classid'] = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'; + $this->options['codebase'] = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'; + $this->options['align'] = 'middle'; $this->AddItem(new CParam("allowScriptAccess","sameDomain")); $this->AddItem(new CParam("quality","high")); - $this->items["src"] = new CParam("movie",$src); - $this->items["embeded"] = new CFlashEmbed(); + $this->SrcParam = new CParam("movie",$src); + $this->EmbededFlash = new CFlashEmbed(); $this->SetWidth($width); $this->SetHeight($height); @@ -104,33 +82,25 @@ } function SetWidth($value) { - if(is_null($value)) - return $this->DelOption("width"); - if(!is_numeric($value)) - return $this->error("Incorrect value for SetWidth [$value]"); - - $this->AddOption("width",$value); - $this->items["embeded"]->SetWidth($value); + $this->options['width'] = $value; + $this->EmbededFlash->options['width'] = $value; } function SetHeight($value) { - if(is_null($value)) - return $this->DelOption("height"); - if(!is_numeric($value)) - return $this->error("Incorrect value for SetHeight [$value]"); - - $this->AddOption("height",$value); - $this->items["embeded"]->SetHeight($value); + $this->options['height'] = $value; + $this->EmbededFlash->options['height'] = $value; } function SetSrc($value) { - if(is_null($value)) - return $this->DelOption("src"); - if(!is_string($value)) - return $this->error("Incorrect value for SetSrc[$value]"); - - $this->items["src"]->SetValue($value); - $this->items["embeded"]->SetSrc($value); + $this->SrcParam->options['value'] = $value; + $this->EmbededFlash->options['src'] = $value; + } + function BodyToString() + { + $ret = parent::BodyToString(); + $ret .= $this->SrcParam->ToString(); + $ret .= $this->EmbededFlash->ToString(); + return $ret; } } ?> diff --git a/frontends/php/include/classes/cflashclock.mod.php b/frontends/php/include/classes/cflashclock.mod.php index b5e4cdab..dbfef8d3 100644 --- a/frontends/php/include/classes/cflashclock.mod.php +++ b/frontends/php/include/classes/cflashclock.mod.php @@ -41,11 +41,12 @@ $this->timetype = $value; } - function Show() + function BodyToString() { if($this->timetype == TIME_TYPE_SERVER) $this->SetSrc($this->src."×tamp=".time()); - parent::Show(); + + return parent::BodyToString(); } } ?> diff --git a/frontends/php/include/classes/cform.inc.php b/frontends/php/include/classes/cform.inc.php index 2d2e8103..e83679dd 100644 --- a/frontends/php/include/classes/cform.inc.php +++ b/frontends/php/include/classes/cform.inc.php @@ -31,11 +31,7 @@ } function SetMethod($value='post') { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetMethod [$value]"); - } - return $this->AddOption("method",$value); + return $this->options['method'] = $value; } function SetAction($value=NULL) { @@ -43,17 +39,13 @@ if(is_null($value)) { - if(isset($page["file"])) + if(isset($page['file'])) { - return $this->AddOption("action",$page["file"]); + return $this->options['action'] = $page['file']; } return 1; } - elseif(!is_string($value)) - { - return $this->error("Incorrect value for SetAction [$value]"); - } - return $this->AddOption("action",$value); + return $this->options['action'] = $value; } function SetEnctype($value=NULL) { diff --git a/frontends/php/include/classes/cformtable.inc.php b/frontends/php/include/classes/cformtable.inc.php index 170dc881..fb5640ed 100644 --- a/frontends/php/include/classes/cformtable.inc.php +++ b/frontends/php/include/classes/cformtable.inc.php @@ -40,7 +40,7 @@ $this->SetHelp(); $frm_link = new CLink(); - $frm_link->SetName("formtable"); +// $frm_link->SetName("formtable"); $this->AddItemToTopRow($frm_link); $this->AddVar("form",get_request("form",1)); @@ -59,6 +59,14 @@ else return $this->error("Incorrect value for SetAction [$value]"); } + function SetName($value) + { + if(!is_string($value)) + { + return $this->error("Incorrect value for SetAlign [$value]"); + } + return $this->AddOption('name',$value); + } function SetAlign($value) { if(!is_string($value)) @@ -128,19 +136,17 @@ $this->bottom_items->AddItem($value); } /* protected */ - function ShowTagBody() + function BodyToString() { - parent::ShowTagBody(); + parent::BodyToString(); $tbl = new CTable(NULL,'formtable'); + $tbl->SetOddRowClass('form_odd_row'); $tbl->SetEvenRowClass('form_even_row'); $tbl->SetCellSpacing(0); $tbl->SetCellPadding(1); $tbl->SetAlign($this->align); -# add center rows - foreach($this->center_items as $item) - $tbl->AddRow($item); # add first row $col = new CCol(NULL,'form_row_first'); $col->SetColSpan(2); @@ -150,7 +156,11 @@ $tbl->SetHeader($col); # add last row $tbl->SetFooter($this->bottom_items); - $tbl->Show(); +# add center rows + foreach($this->center_items as $item) + $tbl->AddRow($item); + + return $tbl->ToString(); } } ?> diff --git a/frontends/php/include/classes/chelp.inc.php b/frontends/php/include/classes/chelp.inc.php index 79055781..310c3286 100644 --- a/frontends/php/include/classes/chelp.inc.php +++ b/frontends/php/include/classes/chelp.inc.php @@ -24,8 +24,9 @@ /* public */ function CHelp($url="index.php") { - parent::CLink(new CImg("images/general/help.gif",'?'), "http://www.zabbix.com/manual/v1.1/$url"); - $this->AddOption("style","float:right"); + parent::CLink(new CImg('images/general/help.gif','?'), 'http://www.zabbix.com/manual/v1.1/'.$url); + $this->options['style'] = 'float:right'; + $this->options['target'] = '_blank'; } } ?> diff --git a/frontends/php/include/classes/clink.inc.php b/frontends/php/include/classes/clink.inc.php index cc160b45..8435092f 100644 --- a/frontends/php/include/classes/clink.inc.php +++ b/frontends/php/include/classes/clink.inc.php @@ -38,40 +38,24 @@ function SetAction($value=NULL) { if(is_null($value)) - { - return $this->AddOption("action",$page["file"]); - } - elseif(!is_string($value)) - { - return $this->error("Incorrect value for SetAction [$value]"); - } - return $this->AddOption("onClick",$value); + return $this->options['action'] = $page['file']; + + return $this->options['onClick'] = $value; } function SetUrl($value) { - if(is_null($value)) - { - return $this->DelOption("href"); - } - elseif(!is_string($value)) - { - return $this->error("Incorrect value for SetUrl [$value]"); - } - - $this->AddOption("href",$value); + $this->options['href'] = $value; } function SetTarget($value=NULL) { if(is_null($value)) { - return $this->DelOption("target"); + unset($this->options['target']); } - elseif(!is_string($value)) + else { - return $this->error("Incorrect value for SetTarget [$value]"); + $this->options['target'] = $value; } - - $this->AddOption("target",$value); } } ?> diff --git a/frontends/php/include/classes/clistbox.inc.php b/frontends/php/include/classes/clistbox.inc.php index bec590f7..311535b7 100644 --- a/frontends/php/include/classes/clistbox.inc.php +++ b/frontends/php/include/classes/clistbox.inc.php @@ -19,40 +19,7 @@ **/ ?> <?php - class CListBox extends CComboBox - { -/* public */ - function CListBox($name='combobox',$value=NULL,$size=5,$action=NULL) - { - parent::CComboBox($name,NULL,$action); - $this->AddOption("multiple","multiple"); - $this->SetSize($size); - $this->SetValue($value); - } - function SetSize($value) - { - if(is_null($value)) - return $this->DelOption("size"); - if(!is_numeric($value)) - return $this->error("Incorrect value for SetSize [$value]"); - $this->AddOption("size",$value); - } - function SetSelectedByValue(&$item) - { - if(!is_null($this->value)) - { - if(is_array($this->value)) - { - $selected = 'no'; - if(in_array($item->GetValue(),$this->value)) $selected = 'yes'; - return $item->SetSelected($selected); - } - else - { - return parent::SetSelectedByValue($item); - } - } - return false; - } - } +// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +// TODO REMOVE THIS FILE FROM CVS !!! +// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ?> diff --git a/frontends/php/include/classes/cpassbox.inc.php b/frontends/php/include/classes/cpassbox.inc.php index 2f51a9ee..12a198cb 100644 --- a/frontends/php/include/classes/cpassbox.inc.php +++ b/frontends/php/include/classes/cpassbox.inc.php @@ -19,13 +19,9 @@ **/ ?> <?php - class CPassBox extends CTextBox - { -/* public */ - function CPassBox($name="password",$value="",$size=20,$caption=NULL) - { - parent::CTextBox($name,$value,$size,$caption); - $this->AddOption("type","password"); - } - } + +// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +// TODO REMOVE THIS FILE FROM CVS +// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ?> diff --git a/frontends/php/include/classes/ctable.inc.php b/frontends/php/include/classes/ctable.inc.php index 69b10f71..d13c991d 100644 --- a/frontends/php/include/classes/ctable.inc.php +++ b/frontends/php/include/classes/ctable.inc.php @@ -30,27 +30,15 @@ } function SetAlign($value) { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetAlign [$value]"); - } - return $this->AddOption("align",$value); + return $this->options['align'] = $value; } function SetRowSpan($value) { - if(!is_int($value) && !is_numeric($value)) - { - return $this->error("Incorrect value for SetRowSpan [$value]"); - } - return $this->AddOption("rowspan",strval($value)); + return $this->options['rowspan'] = strval($value); } function SetColSpan($value) { - if(!is_int($value) && !is_numeric($value)) - { - return $this->error("Incorrect value for SetColSpan[$value]"); - } - return $this->AddOption("colspan",strval($value)); + return $this->options['colspan'] =strval($value); } } @@ -65,35 +53,30 @@ } function SetAlign($value) { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetAlign [$value]"); - } - return $this->AddOption("align",$value); + return $this->options['align'] = $value; } function AddItem($item=NULL) { - if(is_null($item)) - return 0; - elseif(is_a($item,'ccol')) + if(is_a($item,'ccol')) { - return parent::AddItem($item); + parent::AddItem($item); } elseif(is_array($item)) { - $ret = 0; foreach($item as $el) { if(is_a($el,'ccol')) { - $ret |= parent::AddItem($el); + parent::AddItem($el); } elseif(!is_null($el)) { - $ret |= parent::AddItem(new CCol($el)); + parent::AddItem('<td>'.unpack_object($el).'</td>'); } } - return $ret; } - return parent::AddItem(new CCol($item)); + elseif(!is_null($item)) + { + parent::AddItem('<td>'.unpack_object($item).'</td>'); + } } } @@ -103,7 +86,11 @@ var $oddRowClass; var $evenRowClass; var $header; + var $headerClass; + var $colnum; var $footer; + var $footerClass; + var $curr_row_class; /* public */ function CTable($message=NULL,$class=NULL) { @@ -113,153 +100,109 @@ $this->oddRowClass = NULL; $this->evenRowClass = NULL; - $this->header = NULL; - $this->footer = NULL;; - } - function SetHeader($value=NULL,$class=NULL) - { - if(is_null($value)){ - $this->header = NULL; - }elseif(is_a($value,'crow')) - { - if(isset($class)) - $value->SetClass($class); - $this->header = $value; - }else{ - $this->header = new CRow($value,$class); - } - return true; - } - function SetFooter($value=NULL,$class=NULL) - { - if(is_null($value)){ - $this->footer = NULL; - }elseif(is_a($value,'ccol')) - { - if(isset($this->header) && $value->GetOption('colspan')==NULL) - $value->SetColSpan(count($this->header->items)); - $this->footer = new CRow($value,$class); - }elseif(is_a($value,'crow')) - { - if(isset($class)) - $value->SetClass($class); - $this->footer = $value; - }else{ - $this->footer = new CRow($value,$class); - } + $this->curr_row_class = NULL; + + $this->header = ''; + $this->headerClass = NULL; + $this->footer = ''; + $this->footerClass = NULL; + $this->colnum = 0; } function SetOddRowClass($value=NULL) { - if(!is_string($value) && !is_null($value)) - { - return $this->error("Incorrect value for SetOddRowClass [$value]"); - } $this->oddRowClass = $value; } function SetEvenRowClass($value=NULL) { - if(!is_string($value) && !is_null($value)) - { - return $this->error("Incorrect value for SetEvenRowClass [$value]"); - } $this->evenRowClass = $value; } function SetAlign($value) { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetAlign [$value]"); - } - return $this->AddOption("align",$value); + return $this->options['align'] = $value; } function SetCellPadding($value) { - if(!is_int($value) && !is_numeric($value)) - { - return $this->error("Incorrect value for SetCellpadding [$value]"); - } - return $this->AddOption("cellpadding",strval($value)); + return $this->options['cellpadding'] = strval($value); } function SetCellSpacing($value) { - if(!is_int($value) && !is_numeric($value)) - { - return $this->error("Incorrect value for SetCellSpacing [$value]"); - } - return $this->AddOption("cellspacing",strval($value)); + return $this->options['cellspacing'] = strval($value); } - function AddRow($item,$rowClass=NULL) + + function PrepareRow($item,$rowClass=NULL) { - if(is_null($item)){ - return 0; - }elseif(is_a($item,'ccol')) + if(is_null($item)) return NULL; + + if(is_a($item,'ccol')) { - if(isset($this->header) && $item->GetOption('colspan')==NULL) - $item->SetColSpan(count($this->header->items)); + if(isset($this->header) && !isset($item->options['colspan'])) + $item->options['colspan'] = $this->colnum; - return $this->AddItem(new CRow($item,$rowClass)); - }elseif(is_a($item,'crow')) + $item = new CRow($item,$rowClass); + } + elseif(is_a($item,'crow')) { if(isset($rowClass)) - $item->SetClass($rowClass); + $item->options['class'] = $rowClass; + } + else + { + $item = new CRow($item,$rowClass); + } + if(!isset($item->options['class'])) + { + $this->curr_row_class = ($this->curr_row_class == $this->evenRowClass) ? + $this->oddRowClass: + $this->evenRowClass; + $item->options['class'] = $this->curr_row_class; + }/**/ + return $item->ToString(); + } + function SetHeader($value=NULL,$class=NULL) + { + if(is_null($class)) $class = $this->headerClass; - return $this->AddItem($item); + if(is_a($value,'crow')) + { + if(isset($class)) $value->SetClass($class); }else{ - return $this->AddItem(new CRow($item,$rowClass)); + $value = new CRow($value,$class); } + $this->colnum = $value->ItemsCount(); + $this->header = $value->ToString(); } -/* protected */ - function ShowHeader() + function SetFooter($value=NULL,$class=NULL) { - if(isset($this->header)) - $this->header->Show(); - } + if(is_null($class)) $class = $this->footerClass; - function GetNumRows() + $this->footer = $this->PrepareRow($value,$class);; + } + function AddRow($item,$rowClass=NULL) { - return $this->GetItemsCount(); + return $this->AddItem($this->PrepareRow($item,$rowClass)); } - - function ShowTagBody() + function ShowRow($item,$rowClass=NULL) { - $this->ShowHeader(); - - if(count($this->items)==0) - { - if(isset($this->message)) - $this->AddRow(new CCol($this->message,'message'),$this->evenRowClass); - } - - parent::ShowTagBody(); - - if(is_a($this->footer,'crow')) - $this->footer->Show(); + echo $this->PrepareRow($item,$rowClass); } - function AddItem($value) +/* protected */ + function GetNumRows() { - $cname="crow"; - if(!is_a($value,$cname)) - { - return $this->error("Incorrect value for AddItem [$value]"); - } - - if($value->GetOption('class')==NULL) - { - $value->SetClass( - ((count($this->items)+1)%2==1) ? - $this->evenRowClass : $this->oddRowClass - ); - } + return $this->ItemsCount(); + } - return parent::AddItem($value); + function StartToString() + { + $ret = parent::StartToString(); + $ret .= $this->header; + return $ret; } -/* function Show() + function EndToString() { - ob_start(); - parent::Show(); - ob_end_flush(); + $ret = $this->footer; + $ret .= parent::EndToString(); + return $ret; } -*/ } ?> diff --git a/frontends/php/include/classes/ctableinfo.inc.php b/frontends/php/include/classes/ctableinfo.inc.php index 4826eeba..34d35ddf 100644 --- a/frontends/php/include/classes/ctableinfo.inc.php +++ b/frontends/php/include/classes/ctableinfo.inc.php @@ -22,65 +22,15 @@ class CTableInfo extends CTable { /* public */ - var $sortby; - function CTableInfo($message='...',$class='tableinfo') { parent::CTable($message,$class); - $this->SetOddRowClass('odd_row'); - $this->SetEvenRowClass('even_row'); - $this->SetCellSpacing(1); - $this->SetCellPadding(3); - - $this->sortby = null; - } - function SetHeader($value=NULL,$class='header') - { - parent::SetHeader($value,$class); - } - function SetFooter($value=NULL,$class='footer') - { - parent::SetFooter($value,$class); - } - function SortBy($value = NULL) - { - if(!is_numeric($value) && !is_null($value)) - { - return $this->error("Incorrect value for SortBy [$value]"); - } - $this->sortby = $value; - } - function ShowHeader() - { - if(isset($this->header)) - { - // create a copy of real header - $header = $this->header; - - if(!is_null($this->sortby)) - { - $i = 1; - foreach($header->items as $id => $col) - { - $sort = new CSpan(); - $down = "_off"; - $up = "_off"; - - if(($i-$this->sortby) == 0) $down = ""; - if(($i+$this->sortby) == 0) $up = ""; - - $sort->AddItem(array( - new CImg("images/general/sortup$up.gif"), - new CImg("images/general/sortdown$down.gif"), - SPACE)); - $sort->AddOption("style","float:left"); - - $header->items[$id]->AddItem($sort); - $i++; - } - } - $header->Show(); - } + $this->oddRowClass = 'odd_row'; + $this->evenRowClass = 'even_row'; + $this->options['cellpadding'] = 3; + $this->options['cellspacing'] = 1; + $this->headerClass = 'header'; + $this->footerClass = 'footer'; } } ?> diff --git a/frontends/php/include/classes/ctag.inc.php b/frontends/php/include/classes/ctag.inc.php index a6e2ce3b..7b37e14d 100644 --- a/frontends/php/include/classes/ctag.inc.php +++ b/frontends/php/include/classes/ctag.inc.php @@ -19,230 +19,162 @@ **/ ?> <?php + function unpack_object(&$item) + { + $res = ""; + + if(is_object($item)) + { + $res = $item->ToString(); + } + elseif(is_array($item)) + { + foreach($item as $i) + $res .= unpack_object($i); // Attention, recursion !!! + } + elseif(!is_null($item)) + { + $res = strval($item); + } + return $res; + } + class CTag { /* private */ - var $name; + var $tagname; var $options = array(); var $paired; /* protected */ var $items = array(); - var $items_max_count; var $tag_body_start; var $tag_body_end; var $tag_start; var $tag_end; - function fnc($c) - { - $ret = '<tr>'; - foreach($c as $cc) - $ret .= '<td>'.$cc.'</td>'; - $ret .= '</tr>'; - return $ret; - } - /* public */ - function CTag($name=NULL, $paired='no', $body=NULL) + function CTag($tagname=NULL, $paired='no', $body=NULL) { - $this->SetTagName($name); - $this->SetPaired($paired); - - $this->items_max_count = 0; + 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= ""; + $this->tag_start = $this->tag_end = $this->tag_body_start = $this->tag_body_end = ''; if(is_null($body)) { - $this->tag_end = "\n"; - $this->tag_body_start = "\n"; - } else { + $this->tag_end = $this->tag_body_start = "\n"; + } + else + { CTag::AddItem($body); } } - function SetMaxLength($value) - { - if(!is_int($value)) - return $this->error("Incorrect value for SetMaxLength [$value]"); + function ShowStart() { echo $this->StartToString(); } + function ShowBody() { echo $this->BodyToString(); } + function ShowEnd() { echo $this->EndToString(); } + function Show() { echo $this->ToString(); } - $this->items_max_count = $value; - return 0; + function StartToString() + { + $res = $this->tag_start.'<'.$this->tagname; + foreach($this->options as $key => $value) + $res .= ' '.$key.'="'.$value.'"'; + $res .= ($this->paired=='yes') ? '>' : '/>'; + return $res; } - function Show() + function BodyToString() { - $this->ShowTagStart(); - $this->ShowTagBody(); - $this->ShowTagEnd(); + $res = $this->tag_body_start; + foreach($this->items as $item) + $res .= $item; + return $res; } - function SetTagName($value=NULL) - { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetTagName [$value]"); - } - $this->name=$value; - return 0; + function EndToString() + { + $res = ($this->paired=='yes') ? $this->tag_body_end.'</'.$this->tagname.'>' : ''; + $res .= $this->tag_end; + return $res; } - function SetName($value=NULL) + function ToString() { - if(is_null($value)) - return $this->DelOption("name");; - - if(!is_string($value)) - { - return $this->error("Incorrect value for SetClass [$value]"); - } - return $this->AddOption("name",$value); + $res = $this->StartToString(); + $res .= $this->BodyToString(); + $res .= $this->EndToString(); + return $res; } - function GetName() + function SetName($value) { - return $this->GetOption("name"); + $this->options['name'] = $value; } - function SetClass($value) + function GetName() { - if(is_null($value)) - return 0; - - if(!is_string($value)) - { - return $this->error("Incorrect value for SetClass [$value]"); - } - return $this->AddOption("class",$value); + if(isset($this->options['name'])) + return $this->options['name']; + return NULL; } - function SetPaired($value='no') + function SetClass($value) { - if($value == 'no') $this->paired=$value; - elseif($value == 'yes') $this->paired=$value; - else - { - return $this->error("Incorrect value for SetPaired [$value]"); - } - return 0; + return $this->options['class'] = $value; } function DelOption($name) { - if(!is_string($name)) - { - return $this->error("Incorrect value for DelOption [$value]"); - } unset($this->options[$name]); - return 0; } function &GetOption($name) { $ret = NULL; - if(is_string($name)) - if(isset($this->options[$name])) - $ret =& $this->options[$name]; + if(isset($this->options[$name])) + $ret =& $this->options[$name]; return $ret; } function AddOption($name, $value) { - if(!is_string($name)) - { - return $this->error("Incorrect name for AddOption [$name]"); - } - if(!is_string($value) && !is_int($value) && !is_float($value)) - { - return $this->error("Incorrect value for AddOption [$name] [$value]"); - } - $this->options[$name] = htmlspecialchars(strval($value)); - return 0; } function CleanItems() { $this->items = array(); } - function GetItemsCount() + function ItemsCount() { return count($this->items); } function AddItem($value) { - if(is_null($value)) - { - return 1; - } - elseif(is_array($value)) + if(is_array($value)) { foreach($value as $item) { - if($this->items_max_count > 0) - if(count($this->items) >= $this->items_max_count) - return $this->error("Maximal tag lenght '".$this->items_max_count."' is achived"); - array_push($this->items,$item); + array_push($this->items,unpack_object($item)); } } - else + elseif(!is_null($value)) { - if($this->items_max_count > 0) - if(count($this->items) >= $this->items_max_count) - return $this->error("Maximal tag lenght '".$this->items_max_count."' is achived"); - - array_push($this->items,$value); + array_push($this->items,unpack_object($value)); } - return 0; } -/* protected */ - function ShowTagStart() + function SetEnabled($value='yes') { - echo $this->tag_start; - echo "<".$this->name; - foreach($this->options as $key => $value) + if((is_string($value) && ($value == 'yes' || $value == 'enabled' || $value=='on') || $value=='1') + || (is_int($value) && $value<>0)) { - echo " $key=\"$value\""; + unset($this->options['disabled']); } - - if($this->paired=='yes') - echo ">"; - else - echo "/>"; - - echo $this->tag_body_start; - } - function ShowTagItem(&$item) - { - if(is_null($item)) return; - elseif(is_object($item))$item->Show(); - elseif(is_array($item)) { - foreach($item as $i) $this->ShowTagItem($i); // Attention, recursion !!! - } else echo strval($item); - } - function ShowTagBody() - { - foreach($this->items as $item) - $this->ShowTagItem($item); - } - function ShowTagEnd() - { - echo $this->tag_body_end; - - if($this->paired=='yes') + elseif((is_string($value) && ($value == 'no' || $value == 'disabled' || $value=='off') || $value=='0') + || (is_int($value) && $value==0)) { - echo "</".$this->name.">"; - echo $this->tag_end; + $this->options['disabled'] = 'disabled'; } } - function SetEnabled($value='yes') - { - if(is_null($value)) - return 0; - elseif((is_string($value) && - ($value == 'yes' || $value == 'enabled' || $value=='on') || $value=='1') - || (is_int($value) && $value<>0)) - return $this->DelOption('disabled'); - elseif((is_string($value) && - ($value == 'no' || $value == 'disabled' || $value=='off') || $value=='0') - || (is_int($value) && $value==0)) - return $this->AddOption('disabled','disabled'); - return $this->error("Incorrect value for SetEnabled [$value]"); - } function error($value) { - error("class(".get_class($this).") - ".$value); + error('class('.get_class($this).') - '.$value); return 1; } diff --git a/frontends/php/include/classes/ctextarea.inc.php b/frontends/php/include/classes/ctextarea.inc.php index 5ea51f70..af5b0127 100644 --- a/frontends/php/include/classes/ctextarea.inc.php +++ b/frontends/php/include/classes/ctextarea.inc.php @@ -21,82 +21,38 @@ <?php class CTextArea extends CTag { -/* private */ - var $caption; /* public */ - function CTextArea($name='textarea',$value="",$cols=77,$rows=7,$caption=NULL,$readonly='no') + function CTextArea($name='textarea',$value="",$cols=77,$rows=7,$readonly='no') { parent::CTag("textarea","yes"); - $this->SetClass("biginput"); - $this->AddOption('wrap','soft'); - $this->SetName($name); - $this->SetCols($cols); - $this->SetRows($rows); - $this->SetCaption($caption); - $this->SetValue($value); + $this->options['class'] = 'biginput'; + $this->options['wrap'] = 'soft'; + $this->options['name'] = $name; + $this->options['rows'] = $rows; + $this->options['cols'] = $cols; $this->SetReadonly($readonly); - } - function Show() - { - if(isset($this->caption)) - echo $this->caption." "; - parent::Show(); - } - function SetName($value='textarea') - { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetName [$value]"); - } - return $this->AddOption("name",$value); - } - function SetCaption($value=NULL) - { - if(is_null($value)) - unset($this->caption); - elseif(is_string($value)) - $this->caption = $value; - else - { - return $this->error("Incorrect value for SetCaption [$value]"); - } - return 0; + + $this->AddItem($value); } function SetReadonly($value='yes') { - if(is_string($value)) - { - if($value=='no') - return $this->DelOption("readonly"); - elseif($value=='yes') - return $this->AddOption("readonly",'readonly'); - } - return $this->error("Incorrect value for SetReadonly [$value]"); + if($value=='yes') + return $this->options['readonly'] = 'readonly'; + + $this->DelOption("readonly"); } function SetValue($value="") { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetValue [$value]"); - } return $this->AddItem($value); } function SetRows($value) { - if(!is_numeric($value)) - { - return $this->error("Incorrect value for SetRows [$value]"); - } - return $this->AddOption("rows",strval($value)); + return $this->options['rows'] = $value; } function SetCols($value) { - if(!is_numeric($value)) - { - return $this->error("Incorrect value for SetCols [$value]"); - } - return $this->AddOption("cols",strval($value)); + return $this->options['cols'] = $value; } } diff --git a/frontends/php/include/classes/ctextbox.inc.php b/frontends/php/include/classes/ctextbox.inc.php index 6345b342..b8faf48a 100644 --- a/frontends/php/include/classes/ctextbox.inc.php +++ b/frontends/php/include/classes/ctextbox.inc.php @@ -24,73 +24,41 @@ /* private */ var $caption; /* public */ - function CTextBox($name='textbox',$value="",$size=20,$caption=NULL,$readonly="no") + function CTextBox($name='textbox',$value="",$size=20,$readonly="no") { - parent::CTag("input","no"); - $this->SetClass("biginput"); - $this->SetName($name); - $this->SetSize($size); - $this->SetCaption($caption); - $this->SetValue($value); + parent::CTag('input','no'); + $this->options['class'] = 'biginput'; + $this->options['name'] = $name; + $this->options['size'] = $size; + $this->options['value'] = $value; $this->SetReadonly($readonly); } - function Show() - { - if(isset($this->caption)) - echo $this->caption." "; - parent::Show(); - } function SetReadonly($value='yes') { - if(is_string($value)) - { - if($value=='no') - return $this->DelOption("readonly"); - elseif($value=='yes') - return $this->AddOption("readonly",'readonly'); - } - return $this->error("Incorrect value for SetReadonly [$value]"); - } - function SetName($value='textbox') - { - if(!is_string($value)) - { - return $this->error("Incorrect value for SetName [$value]"); - } - return $this->AddOption("name",$value); - } - function SetCaption($value=NULL) - { - if(is_null($value)) - unset($this->caption); - elseif(is_string($value)) - $this->caption = $value; - else - { - return $this->error("Incorrect value for SetCaption [$value]"); - } - return 0; + if($value=='yes') + return $this->options['readonly'] = 'readonly'; + + $this->DelOption('readonly'); } function SetValue($value=NULL) { - if(is_null($value)) $value=""; - - if(is_numeric($value)) $value = strval($value); - - if(is_string($value)) - { - return $this->AddOption("value",$value); - } - return $this->error("Incorrect value for SetValue [$value]"); + $this->options['value'] = $value; } function SetSize($value) { - if(!is_numeric($value)) - { - return $this->error("Incorrect value for SetSize [$value]"); - } - return $this->AddOption("size",strval($value)); + $this->options['size'] = $value; } } + + class CPassBox extends CTextBox + { +/* public */ + function CPassBox($name='password',$value='',$size=20) + { + parent::CTextBox($name,$value,$size); + $this->options['type'] = 'password'; + } + } + ?> diff --git a/frontends/php/include/classes/cvar.inc.php b/frontends/php/include/classes/cvar.inc.php index fc823ce8..52dd4f8f 100644 --- a/frontends/php/include/classes/cvar.inc.php +++ b/frontends/php/include/classes/cvar.inc.php @@ -24,14 +24,14 @@ /* public */ function CVar($name="",$value="0") { - parent::CTag("input","no"); - $this->AddOption("type","hidden"); - $this->SetName($name); - $this->SetValue($value); + parent::CTag('input','no'); + $this->options['type'] = 'hidden'; + $this->options['name'] = $name; + $this->options['value'] = $value; } function SetValue($value) { - return $this->AddOption("value",$value); + $this->options['value'] = $value; } } ?> diff --git a/frontends/php/include/classes/graph.inc.php b/frontends/php/include/classes/graph.inc.php index 5b029bed..bf841bd0 100644 --- a/frontends/php/include/classes/graph.inc.php +++ b/frontends/php/include/classes/graph.inc.php @@ -818,8 +818,8 @@ // $this->im = imagecreate($this->sizeX+$this->shiftX+61,$this->sizeY+2*$this->shiftY+40); - Header( "Content-type: text/html"); -/* +// Header( "Content-type: text/html"); +//* Header( "Content-type: image/png"); Header( "Expires: Mon, 17 Aug 1998 12:51:50 GMT"); /**/ diff --git a/frontends/php/include/config.inc.php b/frontends/php/include/config.inc.php index 08f92c81..c1aef22b 100644 --- a/frontends/php/include/config.inc.php +++ b/frontends/php/include/config.inc.php @@ -845,7 +845,7 @@ function SDI($msg="SDI") { echo "DEBUG INFO: $msg ".BR; } // DEBUG INFO!!! { global $page; global $USER_DETAILS; -//COpt::profiling_start("page"); +COpt::profiling_start("page"); if($noauth==0) { @@ -1471,6 +1471,9 @@ function SDI($msg="SDI") { echo "DEBUG INFO: $msg ".BR; } // DEBUG INFO!!! delete_rights_by_userid($userid); delete_profiles_by_userid($userid); + // delete user permisions + DBexecute('delete from rights where name=\'User\' and id='.$userid); + $sql="delete from users_groups where userid=$userid"; DBexecute($sql); $sql="delete from users where userid=$userid"; @@ -1699,7 +1702,8 @@ function SDI($msg="SDI") { echo "DEBUG INFO: $msg ".BR; } // DEBUG INFO!!! )); $table->Show(); - COpt::profiling_stop("page"); +COpt::profiling_stop("page"); +COpt::profiling_stop("script"); echo "</body>\n"; echo "</html>\n"; @@ -1968,10 +1972,10 @@ function SDI($msg="SDI") { echo "DEBUG INFO: $msg ".BR; } // DEBUG INFO!!! { if(isset($id)&&($id!=0)) { - $host=get_graph_by_graphid($id); - $res=$host["name"]; + if($graph=get_graph_by_graphid($id)) + $res=$graph["name"]; } - else + elseif(!isset($id) || $id == 0) { $res="All graphs"; } @@ -1980,10 +1984,10 @@ function SDI($msg="SDI") { echo "DEBUG INFO: $msg ".BR; } // DEBUG INFO!!! { if(isset($id)&&($id!=0)) { - $host=get_host_by_hostid($id); - $res=$host["host"]; + if($host=get_host_by_hostid($id)) + $res=$host["host"]; } - else + elseif(!isset($id) || $id == 0) { $res="All hosts"; } @@ -1992,23 +1996,23 @@ function SDI($msg="SDI") { echo "DEBUG INFO: $msg ".BR; } // DEBUG INFO!!! { if(isset($id)&&($id!=0)) { - $screen=get_screen_by_screenid($id); - $res=$screen["name"]; + if($screen=get_screen_by_screenid($id)) + $res=$screen["name"]; } - else + elseif(!isset($id) || $id == 0) { - $res="All hosts"; + $res="All screens"; } } else if($permission=="Item") { if(isset($id)&&($id!=0)) { - $item=get_item_by_itemid($id); - $host=get_host_by_hostid($item["hostid"]); - $res=$host["host"].":".$item["description"]; + if($item=get_item_by_itemid($id)) + if($host=get_host_by_hostid($item["hostid"])) + $res=$host["host"].":".$item["description"]; } - else + elseif(!isset($id) || $id == 0) { $res="All items"; } @@ -2017,10 +2021,10 @@ function SDI($msg="SDI") { echo "DEBUG INFO: $msg ".BR; } // DEBUG INFO!!! { if(isset($id)&&($id!=0)) { - $user=get_user_by_userid($id); - $res=$user["alias"]; + if($user=get_user_by_userid($id)) + $res=$user["alias"]; } - else + elseif(!isset($id) || $id == 0) { $res="All users"; } @@ -2029,26 +2033,42 @@ function SDI($msg="SDI") { echo "DEBUG INFO: $msg ".BR; } // DEBUG INFO!!! { if(isset($id)&&($id!=0)) { - $user=get_map_by_sysmapid($id); - $res=$user["name"]; + if($user=get_sysmap_by_sysmapid($id)) + $res=$user["name"]; } - else + elseif(!isset($id) || $id == 0) { $res="All maps"; } } else if($permission=="Application") { - if(isset($id)&&($id!=0)) + if(isset($id)&&($id > 0)) { - $app = get_application_by_applicationid($id); - $res = $app["name"]; + if($app = get_application_by_applicationid($id)) + $res = $app["name"]; } - else + elseif(!isset($id) || $id == 0) { $res="All applications"; } } + else if($permission=="Service") + { + if(isset($id)&&($id > 0)) + { + if($service = get_service_by_serviceid($id)) + $res = $service["name"]; + } + elseif(!isset($id) || $id == 0) + { + $res="All services"; + } + } + + if($res == '-' && isset($id) && ($id > 0)) + $res = $id; + return $res; } diff --git a/frontends/php/include/copt.lib.php b/frontends/php/include/copt.lib.php index ce1b3b05..98d65fd1 100644 --- a/frontends/php/include/copt.lib.php +++ b/frontends/php/include/copt.lib.php @@ -86,40 +86,121 @@ ** Eugene Grigorjev (eugene.grigorjev@zabbix.com) **/ - define("USE_PROFILING",1); +// define("USE_PROFILING",1); + define("USE_TIME_PROF",1); + define("USE_MEM_PROF",1); + define("USE_SQLREQUEST_PROF",1); +// define("SHOW_SQLREQUEST_DETAILS",1); if(defined('USE_PROFILING')) { - $starttime[]=array(); + $starttime=array(); + $memorystamp=array(); + $sqlrequests=array(); + $sqlmark = array(); class COpt { /* protected static $starttime[]=array(); */ + /* protected static */ function getmicrotime() { - list($usec, $sec) = explode(" ",microtime()); + list($usec, $sec) = explode(' ',microtime()); return ((float)$usec + (float)$sec); } + + /* protected static */ function getmemoryusage() + { + return memory_get_usage('memory_limit'); + } + + /* protected static */ function mem2str($size) + { + $prefix = 'B'; + if($size > 1048576) { $size = $size/1048576; $prefix = 'M'; } + elseif($size > 1024) { $size = $size/1024; $prefix = 'K'; } + return round($size, 6).$prefix; + } + /* public static */ function profiling_start($type=NULL) { global $starttime; - if(is_null($type)) $type="global"; + global $memorystamp; + global $sqlmark; + global $sqlrequests; + + if(is_null($type)) $type='global'; +if(defined('USE_TIME_PROF')) +{ $starttime[$type] = COpt::getmicrotime(); +} +if(defined('USE_MEM_PROF')) +{ + $memorystamp[$type] = COpt::getmemoryusage(); +} +if(defined('USE_SQLREQUEST_PROF')) +{ + $sqlmark[$type] = count($sqlrequests); +} } + + /* public static */ function savesqlrequest($sql) + { +if(defined('USE_SQLREQUEST_PROF')) +{ + global $sqlrequests; + array_push($sqlrequests, $sql); +} + } + /* public static */ function profiling_stop($type=NULL) { global $starttime; + global $memorystamp; + global $sqlrequests; + global $sqlmark; $endtime = COpt::getmicrotime(); + $memory = COpt::getmemoryusage(); - if(is_null($type)) $type="global"; -// echo "<br/>\nTime to execute (".$type."): ". bcsub($endtime,$starttime[$type],6)." seconds!\n<br/>"; - echo "<br/>\nTime to execute (".$type."): ".($endtime-$starttime[$type])." seconds!\n<br/>"; + if(is_null($type)) $type='global'; + + echo "<br>\n"; +if(defined('USE_TIME_PROF')) +{ + echo "(".$type.") Time to execute: ".round($endtime - $starttime[$type],6)." seconds!\n<br>\n"; +} +if(defined('USE_MEM_PROF')) +{ + echo "(".$type.") Memory limit : ".ini_get('memory_limit')."<br>\n"; + echo "(".$type.") Memory usage : ".COpt::mem2str($memorystamp[$type])." - ".COpt::mem2str($memory)."\n<br>\n"; + echo "(".$type.") Memory leak : ".COpt::mem2str($memory - $memorystamp[$type])."\n<br>\n"; +} +if(defined('USE_SQLREQUEST_PROF')) +{ + $requests_cnt = count($sqlrequests); + echo "(".$type.") SQL requests count: ".($requests_cnt - $sqlmark[$type])."<br>\n"; + if(defined('SHOW_SQLREQUEST_DETAILS')) + { + for($i = $sqlmark[$type]; $i < $requests_cnt; $i++) + { + echo "(".$type.") SQL request : ".$sqlrequests[$i]."<br>\n";; + } + } +} + } + + + /* public static */ function set_memory_limit($limit='8M') + { + ini_set('memory_limit',$limit); } } - COpt::profiling_start("page"); + + COpt::set_memory_limit('8M'); + COpt::profiling_start("script"); } else { @@ -127,6 +208,7 @@ else { /* public static */ function profiling_start($type=NULL) {} /* public static */ function profiling_stop($type=NULL) {} + /* public static */ function savesqlrequest($sql) {} } } diff --git a/frontends/php/include/db.inc.php b/frontends/php/include/db.inc.php index c6f34cd0..2b3b337e 100644 --- a/frontends/php/include/db.inc.php +++ b/frontends/php/include/db.inc.php @@ -23,16 +23,15 @@ // DATABASE CONFIGURATION // $DB_TYPE ="POSTGRESQL"; - $DB_TYPE ="ORACLE"; + $DB_TYPE ="MYSQL"; +// $DB_TYPE ="ORACLE"; $DB_SERVER ="localhost"; // $DB_DATABASE ="zabbix"; // $DB_DATABASE ="osmiy"; -// $DB_DATABASE ="zabbix"; - $DB_DATABASE ="osmiy"; -// $DB_DATABASE ="demo"; + $DB_DATABASE ="demo"; // $DB_DATABASE ="martinsj"; - $DB_USER ="scott"; - $DB_PASSWORD ="tiger"; + $DB_USER ="root"; + $DB_PASSWORD =""; // END OF DATABASE CONFIGURATION // $USER_DETAILS =""; @@ -68,13 +67,27 @@ } } + /* NOTE: + LIMIT and OFFSET records + + Example: select 6-15 row. + MySQL: + SELECT a FROM tbl LIMIT 5,10 + SELECT a FROM tbl LIMIT 10 OFFSET 5 + PostgreSQL: + SELECT a FROM tbl LIMIT 10 OFFSET 5 + Oracle: + SELECT a FROM tbe WHERE ROWNUM < 15 // ONLY < 15 + SELECT * FROM (SELECT ROWNUM as RN, * FROM tbl) WHERE RN BETWEEN 6 AND 15 + */ function DBselect($query) { global $DB,$DB_TYPE; // echo $query,"<br>"; +COpt::savesqlrequest($query); if($DB_TYPE == "MYSQL") { @@ -113,6 +126,7 @@ global $DB,$DB_TYPE; // echo $query,"<br>"; +COpt::savesqlrequest($query); $result = FALSE; diff --git a/frontends/php/include/events.inc.php b/frontends/php/include/events.inc.php index 90d0c18e..7587f0a6 100644 --- a/frontends/php/include/events.inc.php +++ b/frontends/php/include/events.inc.php @@ -19,6 +19,7 @@ **/ ?> <?php + function get_history_of_events($start,$num, $groupid=0, $hostid=0) { if($hostid > 0) diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php index 878b5a8a..57403509 100644 --- a/frontends/php/include/forms.inc.php +++ b/frontends/php/include/forms.inc.php @@ -91,7 +91,7 @@ } $frmUser = new CFormTable($frm_title); - $frmUser->SetHelp("web.users.users.php"); + $frmUser->SetHelp("web.users.php"); $frmUser->AddVar("config",get_request("config",0)); if($profile==0) @@ -146,7 +146,7 @@ global $_REQUEST; $frmPerm = new CFormTable("New permission","users.php"); - $frmPerm->SetHelp("web.users.users.php"); + $frmPerm->SetHelp("web.users.php"); $frmPerm->AddVar("userid",$_REQUEST["userid"]); $frmPerm->AddVar("config",get_request("config",0)); @@ -222,11 +222,13 @@ while($db_user=DBfetch($db_users)) { array_push($form_row, - new CCheckBox("users[]", - in_array($db_user["userid"],$users) ? 'yes' : 'no', - $db_user["alias"], /* caption */ - NULL, /* action */ - $db_user["userid"]), /* value */ + array( + new CCheckBox("users[]", + in_array($db_user["userid"],$users) ? 'yes' : 'no', + NULL, /* action */ + $db_user["userid"]), /* value */ + $db_user["alias"] + ), BR); } $frmUserG->AddRow(S_USERS,$form_row); @@ -642,11 +644,10 @@ /* dependences */ foreach($dependences as $val){ array_push($dep_el, - new CCheckBox("rem_dependence[]", - 'no' - ,expand_trigger_description($val), - NULL, - strval($val)), + array( + new CCheckBox("rem_dependence[]", 'no', NULL, strval($val)), + expand_trigger_description($val) + ), BR); $frmTrig->AddVar("dependences[]",strval($val)); } @@ -757,8 +758,8 @@ $frmGraph->AddRow(S_NAME,new CTextBox("name",$name,32)); $frmGraph->AddRow(S_WIDTH,new CTextBox("width",$width,5)); $frmGraph->AddRow(S_HEIGHT,new CTextBox("height",$height,5)); - $frmGraph->AddRow(S_SHOW_WORKING_TIME,new CCheckBox("showworkperiod",$showworkperiod,NULL,NULL,1)); - $frmGraph->AddRow(S_SHOW_TRIGGERS,new CCheckBox("showtriggers",$showtriggers,NULL,NULL,1)); + $frmGraph->AddRow(S_SHOW_WORKING_TIME,new CCheckBox("showworkperiod",$showworkperiod,NULL,1)); + $frmGraph->AddRow(S_SHOW_TRIGGERS,new CCheckBox("showtriggers",$showtriggers,NULL,1)); $cmbYType = new CComboBox("yaxistype",$yaxistype,"submit()"); $cmbYType->AddItem(GRAPH_YAXIS_TYPE_CALCULATED,S_CALCULATED); @@ -937,7 +938,7 @@ $frmAutoReg->AddRow(S_PATTERN,new CTextBox("pattern",$pattern,64)); $frmAutoReg->AddRow(S_PRIORITY,new CTextBox("priority",$priority,4)); $frmAutoReg->AddRow(S_HOST,array( - new CTextBox("host",$host,32,NULL,'yes'), + new CTextBox("host",$host,32,'yes'), new CButton("btn1",S_SELECT, "return PopUp('popup.php?dstfrm=".$frmAutoReg->GetName(). "&dstfld1=hostid&dstfld2=host&srctbl=hosts&srcfld1=hostid&srcfld2=host','new_win',". @@ -1004,10 +1005,10 @@ foreach($valuemap as $value) { array_push($valuemap_el, - new CCheckBox("rem_value[]", 'no', - $value["value"].SPACE.RARR.SPACE.$value["newvalue"], - NULL, - $i), + array( + new CCheckBox("rem_value[]", 'no', NULL, $i), + $value["value"].SPACE.RARR.SPACE.$value["newvalue"] + ), BR); $frmValmap->AddVar("valuemap[$i][value]",$value["value"]); $frmValmap->AddVar("valuemap[$i][newvalue]",$value["newvalue"]); @@ -1134,15 +1135,16 @@ $i=0; foreach($conditions as $val) { - array_push($cond_el, new CCheckBox( - "rem_condition[]", 'no', + array_push($cond_el, + array( + new CCheckBox("rem_condition[]", 'no', NULL,$i), get_condition_desc( $val["type"], $val["operator"], $val["value"] - ), - NULL,$i),BR - ); + ) + ), + BR); $frmAction->AddVar("conditions[$i][type]", $val["type"]); $frmAction->AddVar("conditions[$i][operator]", $val["operator"]); $frmAction->AddVar("conditions[$i][value]", $val["value"]); @@ -1865,12 +1867,14 @@ $frm_row = array(); for($i=0; $i<=5; $i++){ array_push($frm_row, - new CCheckBox( - "severity[]", - in_array($i,$severity)?'yes':'no', - $label[$i], /* label */ - NULL, /* action */ - $i), /* value */ + array( + new CCheckBox( + "severity[]", + in_array($i,$severity)?'yes':'no', + NULL, /* action */ + $i), /* value */ + $label[$i] + ), BR); } $frmMedia->AddRow(S_USE_IF_SEVERITY,$frm_row); @@ -2035,12 +2039,14 @@ while($db_group=DBfetch($db_groups)) { array_push($frm_row, - new CCheckBox("groups[]", - in_array($db_group["groupid"],$groups) ? 'yes' : 'no', - $db_group["name"], - NULL, - $db_group["groupid"] - ), + array( + new CCheckBox("groups[]", + in_array($db_group["groupid"],$groups) ? 'yes' : 'no', + NULL, + $db_group["groupid"] + ), + $db_group["name"] + ), BR); } $frmHost->AddRow(S_GROUPS,$frm_row); @@ -2055,7 +2061,7 @@ } else { - $frmHost->AddRow(S_USE_IP_ADDRESS,new CCheckBox("useip",$useip,NULL,"submit()")); + $frmHost->AddRow(S_USE_IP_ADDRESS,new CCheckBox("useip",$useip,"submit()")); } if($useip=="yes") @@ -2103,7 +2109,7 @@ } else { - $frmHost->AddRow(S_USE_PROFILE,new CCheckBox("useprofile",$useprofile,NULL,"submit()")); + $frmHost->AddRow(S_USE_PROFILE,new CCheckBox("useprofile",$useprofile,"submit()")); } if($useprofile=="yes") { @@ -2240,17 +2246,17 @@ $location=$row["location"]; $notes=$row["notes"]; - $frmHostP->AddRow(S_DEVICE_TYPE,new CTextBox("devicetype",$devicetype,61,NULL,'yes')); - $frmHostP->AddRow(S_NAME,new CTextBox("name",$name,61,NULL,'yes')); - $frmHostP->AddRow(S_OS,new CTextBox("os",$os,61,NULL,'yes')); - $frmHostP->AddRow(S_SERIALNO,new CTextBox("serialno",$serialno,61,NULL,'yes')); - $frmHostP->AddRow(S_TAG,new CTextBox("tag",$tag,61,NULL,'yes')); - $frmHostP->AddRow(S_MACADDRESS,new CTextBox("macaddress",$macaddress,61,NULL,'yes')); - $frmHostP->AddRow(S_HARDWARE,new CTextArea("hardware",$hardware,60,4,NULL,'yes')); - $frmHostP->AddRow(S_SOFTWARE,new CTextArea("software",$software,60,4,NULL,'yes')); - $frmHostP->AddRow(S_CONTACT,new CTextArea("contact",$contact,60,4,NULL,'yes')); - $frmHostP->AddRow(S_LOCATION,new CTextArea("location",$location,60,4,NULL,'yes')); - $frmHostP->AddRow(S_NOTES,new CTextArea("notes",$notes,60,4,NULL,'yes')); + $frmHostP->AddRow(S_DEVICE_TYPE,new CTextBox("devicetype",$devicetype,61,'yes')); + $frmHostP->AddRow(S_NAME,new CTextBox("name",$name,61,'yes')); + $frmHostP->AddRow(S_OS,new CTextBox("os",$os,61,'yes')); + $frmHostP->AddRow(S_SERIALNO,new CTextBox("serialno",$serialno,61,'yes')); + $frmHostP->AddRow(S_TAG,new CTextBox("tag",$tag,61,'yes')); + $frmHostP->AddRow(S_MACADDRESS,new CTextBox("macaddress",$macaddress,61,'yes')); + $frmHostP->AddRow(S_HARDWARE,new CTextArea("hardware",$hardware,60,4,'yes')); + $frmHostP->AddRow(S_SOFTWARE,new CTextArea("software",$software,60,4,'yes')); + $frmHostP->AddRow(S_CONTACT,new CTextArea("contact",$contact,60,4,'yes')); + $frmHostP->AddRow(S_LOCATION,new CTextArea("location",$location,60,4,'yes')); + $frmHostP->AddRow(S_NOTES,new CTextArea("notes",$notes,60,4,'yes')); } else { @@ -2306,7 +2312,7 @@ if(!isset($_REQUEST["applicationid"])) { // anly new application can select host $frmApp->AddRow(S_HOST,array( - new CTextBox("apphost",$apphost,32,NULL,'yes'), + new CTextBox("apphost",$apphost,32,'yes'), new CButton("btn1",S_SELECT, "return PopUp('popup.php?dstfrm=".$frmApp->GetName(). "&dstfld1=apphostid&dstfld2=apphost&srctbl=hosts&srcfld1=hostid&srcfld2=host','new_win',". @@ -2495,7 +2501,7 @@ $frmEl->AddVar("elementid",$elementid); $frmEl->AddRow(S_HOST, array( - new CTextBox("host",$host,32,NULL,'yes'), + new CTextBox("host",$host,32,'yes'), new CButton("btn1",S_SELECT,"return PopUp('popup.php?dstfrm=".$frmEl->GetName(). "&dstfld1=elementid&dstfld2=host&srctbl=hosts&srcfld1=hostid&srcfld2=host','new_win',". "'width=450,height=450,resizable=1,scrollbars=1');","T") @@ -2591,7 +2597,8 @@ } /* START comboboxes preparations */ - $cmbElements = new CComboBox("selementid1",$selementid1); + $cmbElements1 = new CComboBox("selementid1",$selementid1); + $cmbElements2 = new CComboBox("selementid2",$selementid2); $db_selements = DBselect("select selementid,label,elementid,elementtype from sysmaps_elements". " where sysmapid=".$_REQUEST["sysmapid"]); while($db_selement = DBfetch($db_selements)) @@ -2614,35 +2621,32 @@ $label .= ":".expand_trigger_description($db_selement["elementid"]); } } - $cmbElements->AddItem($db_selement["selementid"],$label); + $cmbElements1->AddItem($db_selement["selementid"],$label); + $cmbElements2->AddItem($db_selement["selementid"],$label); } - $cmbType = new CComboBox("drawtype_off",$drawtype_off); - $cmbType->AddItem(0,get_drawtype_description(0)); - $cmbType->AddItem(1,get_drawtype_description(1)); - $cmbType->AddItem(2,get_drawtype_description(2)); - $cmbType->AddItem(3,get_drawtype_description(3)); - $cmbType->AddItem(4,get_drawtype_description(4)); - - $cmbColor = new CComboBox("color_off",$color_off); - $cmbColor->AddItem('Black',"Black"); - $cmbColor->AddItem('Blue',"Blue"); - $cmbColor->AddItem('Cyan',"Cyan"); - $cmbColor->AddItem('Dark Blue',"Dark Blue"); - $cmbColor->AddItem('Dark Green',"Dark Green"); - $cmbColor->AddItem('Dark Red',"Dark Red"); - $cmbColor->AddItem('Dark Yellow',"Dark Yellow"); - $cmbColor->AddItem('Green',"Green"); - $cmbColor->AddItem('Red',"Red"); - $cmbColor->AddItem('White',"White"); - $cmbColor->AddItem('Yellow',"Yellow"); -/* END preparation */ + $cmbType_off = new CComboBox("drawtype_off",$drawtype_off); + $cmbType_on = new CComboBox("drawtype_on",$drawtype_on); + for($i=0; $i < 5; ++$i) + { + $value = get_drawtype_description($i); + $cmbType_off->AddItem($i, $value); + $cmbType_on->AddItem($i, $value); + } - $frmCnct->AddRow("Element 1",$cmbElements); + + $cmbColor_off = new CComboBox("color_off",$color_off); + $cmbColor_on = new CComboBox("color_on",$color_on); + foreach(array('Black','Blue','Cyan','Dark Blue','Dark Green', + 'Dark Red','Dark Yellow','Green','Red','White','Yellow') as $value) + { + $cmbColor_off->AddItem($value, $value); + $cmbColor_on->AddItem($value, $value); + } +/* END preparation */ - $cmbElements->SetName("selementid2"); // rename without recreation - $cmbElements->SetValue($selementid2); // rename without recreation - $frmCnct->AddRow("Element 2",$cmbElements); + $frmCnct->AddRow("Element 1",$cmbElements1); + $frmCnct->AddRow("Element 2",$cmbElements2); $frmCnct->AddVar('triggerid',$triggerid); @@ -2661,16 +2665,11 @@ $btnSelect->SetAccessKey('T'); $frmCnct->AddRow("Link status indicator",array($txtTrigger, $btnSelect)); - $frmCnct->AddRow("Type (OFF)",$cmbType); - $frmCnct->AddRow("Color (OFF)",$cmbColor); - - $cmbType->SetName("drawtype_on"); // rename without recreation - $cmbType->SetValue($drawtype_on); // rename without recreation - $frmCnct->AddRow("Type (ON)",$cmbType); + $frmCnct->AddRow("Type (OFF)",$cmbType_off); + $frmCnct->AddRow("Color (OFF)",$cmbColor_off); - $cmbColor->SetName("color_on"); // rename without recreation - $cmbColor->SetValue($color_on); // rename without recreation - $frmCnct->AddRow("Color (ON)",$cmbColor); + $frmCnct->AddRow("Type (ON)",$cmbType_on); + $frmCnct->AddRow("Color (ON)",$cmbColor_on); $frmCnct->AddItemToBottomRow(new CButton("save_link",S_SAVE)); if(isset($_REQUEST["linkid"])) diff --git a/frontends/php/include/graphs.inc.php b/frontends/php/include/graphs.inc.php index 065f1b33..9abdf176 100644 --- a/frontends/php/include/graphs.inc.php +++ b/frontends/php/include/graphs.inc.php @@ -87,7 +87,7 @@ return $row; } error("No graph with graphid=[$graphid]"); - return $result; + return false; } function get_graphs_by_templateid($templateid) @@ -178,6 +178,10 @@ if($result) { info("Graph '".$graph["name"]."' deleted"); + + // delete graph permisions + DBexecute('delete from rights where name=\'Graph\' and id='.$graphid); + } return $result; } diff --git a/frontends/php/include/hosts.inc.php b/frontends/php/include/hosts.inc.php index abe8d003..3943a005 100644 --- a/frontends/php/include/hosts.inc.php +++ b/frontends/php/include/hosts.inc.php @@ -303,6 +303,9 @@ // delete host profile delete_host_profile($hostid); + // delete host permisions + DBexecute('delete from rights where name=\'Host\' and id='.$hostid); + // delete host return DBexecute("delete from hosts where hostid=$hostid"); } @@ -654,6 +657,9 @@ $result = DBexecute("delete from applications where applicationid=$applicationid"); if($result) { + // delete application permisions + DBexecute('delete from rights where name=\'Application\' and id='.$applicationid); + info("Application '".$host["host"].":".$app["name"]."' deleted"); } return $result; diff --git a/frontends/php/include/items.inc.php b/frontends/php/include/items.inc.php index 79d56bae..f70a4ea4 100644 --- a/frontends/php/include/items.inc.php +++ b/frontends/php/include/items.inc.php @@ -483,6 +483,9 @@ $result = DBexecute("delete from items where itemid=$itemid"); if($result) { + // delete item permisions + DBexecute('delete from rights where name=\'Item\' and id='.$itemid); + info("Item '".$host["host"].":".$item["key_"]."' deleted"); } return $result; @@ -537,79 +540,76 @@ $group_where = " where"; } - $header=array(new CCol(S_ITEMS,"center")); +COpt::profiling_start('prepare data'); + $result = DBselect('select distinct h.hostid, h.host,i.itemid, i.value_type, i.lastvalue, i.units, i.description'. + ' from hosts h,items i '.$group_where. + ' h.status='.HOST_STATUS_MONITORED.' and h.hostid=i.hostid and i.status='.ITEM_STATUS_ACTIVE. + ' order by i.description'); - $hosts=array(); - $result=DBselect("select distinct h.hostid,h.host from hosts h,items i $group_where". - " h.status=".HOST_STATUS_MONITORED." and h.hostid=i.hostid and i.status=".ITEM_STATUS_ACTIVE. - " group by h.host,h.hostid order by h.host"); - while($row=DBfetch($result)) + unset($items); + unset($hosts); + while($row = DBfetch($result)) { - if(!check_right("Host","R",$row["hostid"])) continue; + if(!check_right("Item","R",$row["itemid"])) continue; + if(!check_right('Host','R',$row['hostid'])) continue; - array_push($header,new CImg("vtext.php?text=".$row["host"])); - array_push($hosts,$row["hostid"]); - } - $table->SetHeader($header,"vertical_header"); + $access = 1; + $db_applications = get_applications_by_itemid($row["itemid"]); - $db_items = DBselect("select distinct i.description from hosts h,items i $group_where". - " h.status=".HOST_STATUS_MONITORED." and h.hostid=i.hostid and i.status=".ITEM_STATUS_ACTIVE. - " order by 1"); - while($item = DBfetch($db_items)) - { - $table_row = array(nbsp($item["description"])); - $hosts_added = 0; - foreach($hosts as $hostid) + while($db_app = DBfetch($db_applications)) { - $db_host_items = DBselect("select itemid,value_type,lastvalue,units from items where". - " hostid=$hostid and status=".ITEM_STATUS_ACTIVE." and description=".zbx_dbstr($item["description"])); - $host_item = DBfetch($db_host_items); - if(!$host_item) + if(check_right("Application","R",$db_app["applicationid"])) { - array_push($table_row,"-"); - continue; + $access = 1; + break; } - - if(!check_right("Item","R",$host_item["itemid"])) continue; - $access = 0; - $db_applications = get_applications_by_itemid($host_item["itemid"]); - while($db_app = DBfetch($db_applications)) - { - if(!check_right("Application","R",$db_app["applicationid"])) - $access |= 1; - else - $access |= 2; - } - if($access == 1) + } + if($access == 0) continue; + + $hosts[$row['host']] = $row['host']; + $items[$row['description']][$row['host']] = array( + 'itemid' => $row['itemid'], + 'value_type' => $row['value_type'], + 'lastvalue' => $row['lastvalue'], + 'units' => $row['units'], + 'description' => $row['description']); + } + sort($hosts); +COpt::profiling_stop('prepare data'); +COpt::profiling_start('prepare table'); + $header=array(new CCol(S_TRIGGERS,'center')); + 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) + { + $table_row = array(nbsp($descr)); + foreach($hosts as $hostname) + { + $style = NULL; + $value = '-'; + if(isset($ithosts[$hostname])) { - array_push($table_row,"-"); - continue; - } - - $hosts_added++; // exist item in host + $db_item_triggers = DBselect('select t.triggerid from triggers t, items i, functions f where'. + ' i.itemid='.$ithosts[$hostname]['itemid'].' and i.itemid=f.itemid'. + ' and t.priority>1 and t.triggerid=f.triggerid and t.value='.TRIGGER_VALUE_TRUE); + if(DBfetch($db_item_triggers)) $style = "high"; - if(!isset($host_item["lastvalue"])) - { - array_push($table_row,"-"); - continue; + if($ithosts[$hostname]["value_type"] == 0) + $value = convert_units($ithosts[$hostname]["lastvalue"],$ithosts[$hostname]["units"]); + else + $value = htmlspecialchars(substr($ithosts[$hostname]["lastvalue"],0,20)." ..."); } - $db_item_triggers = DBselect("select t.triggerid from triggers t, items i, functions f where". - " i.hostid=$hostid and i.itemid=".$host_item["itemid"]." and i.itemid=f.itemid". - " and t.priority>1 and t.triggerid=f.triggerid and t.value=".TRIGGER_VALUE_TRUE); - if(DBfetch($db_item_triggers)) $style = "high"; - else $style = NULL; - - if($host_item["value_type"] == 0) - $value = convert_units($host_item["lastvalue"],$host_item["units"]); - else - $value = htmlspecialchars(substr($host_item["lastvalue"],0,20)." ..."); - - array_push($table_row,new CCol(nbsp($value),$style)); + array_push($table_row,new CCol($value,$style)); } - - if($hosts_added > 0) $table->AddRow($table_row); + $table->AddRow($table_row); } +COpt::profiling_stop('prepare table'); + return $table; } diff --git a/frontends/php/include/maps.inc.php b/frontends/php/include/maps.inc.php index 9517927d..cb394fe8 100644 --- a/frontends/php/include/maps.inc.php +++ b/frontends/php/include/maps.inc.php @@ -28,11 +28,8 @@ { return $row; } - else - { - error("No system map with sysmapid=[$sysmapid]"); - } - return $result; + error("No system map with sysmapid=[$sysmapid]"); + return false; } function get_sysmaps_element_by_selementid($selementid) @@ -64,6 +61,9 @@ $result = DBexecute("delete from sysmaps_elements where sysmapid=$sysmapid"); if(!$result) return $result; + // delete map permisions + DBexecute('delete from rights where name=\'Network map\' and id='.$sysmapid); + return DBexecute("delete from sysmaps where sysmapid=$sysmapid"); } @@ -251,8 +251,8 @@ { global $colors; - $info = ""; $count = 0; + $info = "OK"; $color= $colors["Dark Green"]; $db_element = get_sysmaps_element_by_selementid($selementid); @@ -300,8 +300,8 @@ if($count==0) { - $out_info = S_OK_BIG; - $out_color = $colors["Dark Green"]; + $info = S_OK_BIG; + $color = $colors["Dark Green"]; } } elseif($db_element["elementtype"]==SYSMAP_ELEMENT_TYPE_IMAGE) diff --git a/frontends/php/include/screens.inc.php b/frontends/php/include/screens.inc.php index 6c1ab827..6629de67 100644 --- a/frontends/php/include/screens.inc.php +++ b/frontends/php/include/screens.inc.php @@ -51,6 +51,9 @@ $result=DBexecute("delete from screens_items where resourceid=$screenid and resource=".SCREEN_RESOURCE_SCREEN); if(!$result) return $result; + // delete screen permisions + DBexecute('delete from rights where name=\'Screen\' and id='.$screenid); + return DBexecute("delete from screens where screenid=$screenid"); } @@ -85,12 +88,8 @@ { return $row; } - else - { - info("No screen with screenid=[$screenid]"); - return FALSE; - } - return $result; + error("No screen with screenid=[$screenid]"); + return FALSE; } function check_screen_recursion($mother_screenid, $child_screenid) diff --git a/frontends/php/include/services.inc.php b/frontends/php/include/services.inc.php index 84362b3a..62fb69a3 100644 --- a/frontends/php/include/services.inc.php +++ b/frontends/php/include/services.inc.php @@ -79,6 +79,9 @@ { return $result; } + // delete service permisions + DBexecute('delete from rights where name=\'Service\' and id='.$serviceid); + $sql="delete from services where serviceid=$serviceid"; return DBexecute($sql); } @@ -314,29 +317,25 @@ { $sql="select * from services where serviceid=$serviceid"; $result=DBselect($sql); - if(Dbnum_rows($result) == 1) - { - return DBfetch($result); - } - else + $res = DBfetch($result); + if(!$res) { error("No service with serviceid=[$serviceid]"); + return FALSE; } - return FALSE; + return $res; } function get_services_links_by_linkid($linkid) { $result=DBselect("select * from services_links where linkid=$linkid"); - if(Dbnum_rows($result) == 1) - { - return DBfetch($result); - } - else + $res = DBfetch($result); + if(!$res) { error("No service linkage with linkid=[$linkid]"); + return FALSE; } - return FALSE; + return $res; } function algorithm2str($algorithm) diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php index 20449515..5a7aafd4 100644 --- a/frontends/php/include/triggers.inc.php +++ b/frontends/php/include/triggers.inc.php @@ -744,6 +744,9 @@ if($result) { + // delete trigger permisions + DBexecute('delete from rights where name=\'Trigger comment\' and id='.$triggerid); + $msg = "Trigger '".$trigger["description"]."' deleted"; $trig_host = DBfetch($trig_hosts); if($trig_host) @@ -1009,56 +1012,52 @@ function get_triggers_overview($groupid) { $table = new CTableInfo(); - if($groupid > 0) { - $group_where = ",hosts_groups hg where hg.groupid=$groupid and hg.hostid=h.hostid and"; + $group_where = ',hosts_groups hg where hg.groupid='.$groupid.' and hg.hostid=h.hostid and'; } else { - $group_where = " where"; + $group_where = ' where'; } - $header=array(new CCol(S_TRIGGERS,"center")); + $result=DBselect('select distinct t.description,t.value,t.lastchange,h.hostid,h.host'. + ' from hosts h,items i,triggers t, functions f '.$group_where. + ' h.status='.HOST_STATUS_MONITORED.' and h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=t.triggerid'. + ' and t.status='.TRIGGER_STATUS_ENABLED. + ' order by t.description'); + unset($triggers); + unset($hosts); + while($row = DBfetch($result)) + { + if(!check_right('Host','R',$row['hostid'])) continue; + $hosts[$row['host']] = $row['host']; + $triggers[$row['description']][$row['host']] = array('value' => $row['value'], 'lastchange' => $row['lastchange']); + } + sort($hosts); - $hosts=array(); - $result=DBselect("select h.hostid,h.host from hosts h,items i,triggers t, functions f $group_where". - " h.status=".HOST_STATUS_MONITORED." and h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=t.triggerid". - " and t.status=".TRIGGER_STATUS_ENABLED. - " group by h.host,h.hostid order by h.host"); - while($row=DBfetch($result)) + $header=array(new CCol(S_TRIGGERS,'center')); + foreach($hosts as $hostname) { - if(!check_right("Host","R",$row["hostid"])) continue; - $header=array_merge($header,array(new CImg("vtext.php?text=".$row["host"]))); - $hosts=array_merge($hosts,array($row["hostid"])); + $header=array_merge($header,array(new CImg('vtext.php?text='.$hostname))); } - $table->SetHeader($header,"vertical_header"); - + $table->SetHeader($header,'vertical_header'); - $db_triggers = DBselect("select distinct t.description from hosts h,items i,triggers t,functions f $group_where". - " h.status=".HOST_STATUS_MONITORED." and h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=t.triggerid". - " and t.status=".TRIGGER_STATUS_ENABLED); - while($triggers = DBfetch($db_triggers)) + foreach($triggers as $descr => $trhosts) { - $table_row = array(nbsp($triggers["description"])); - foreach($hosts as $hostid) + $table_row = array(nbsp($descr)); + foreach($hosts as $hostname) { $style = NULL; - $db_host_triggers = DBselect("select distinct t.value,t.lastchange from triggers t,functions f,items i". - " where f.triggerid=t.triggerid and i.itemid=f.itemid and t.status=".TRIGGER_STATUS_ENABLED. - " and i.hostid=$hostid and t.description=".zbx_dbstr($triggers["description"])); - $host_trigger = DBfetch($db_host_triggers); - if($host_trigger) + if(isset($trhosts[$hostname])) { + if($trhosts[$hostname]['value'] == TRIGGER_VALUE_FALSE) $style = 'normal'; + elseif($trhosts[$hostname]['value'] == TRIGGER_VALUE_UNKNOWN) $style = 'unknown_trigger'; + else $style = 'high'; - if($host_trigger["value"] == TRIGGER_VALUE_FALSE) $style = "normal"; - elseif($host_trigger["value"] == TRIGGER_VALUE_UNKNOWN) $style = "unknown_trigger"; - else $style = "high"; - - if((time(NULL)-$host_trigger["lastchange"])<300) $style .= "_blink1"; - elseif((time(NULL)-$host_trigger["lastchange"])<900) $style .= "_blink2"; + if((time(NULL)-$trhosts[$hostname]['lastchange'])<300) $style .= '_blink1'; + elseif((time(NULL)-$trhosts[$hostname]['lastchange'])<900) $style .= '_blink2'; } array_push($table_row,new CCol(SPACE,$style)); } - $table->AddRow($table_row); } return $table; diff --git a/frontends/php/include/users.inc.php b/frontends/php/include/users.inc.php index 26ea84d1..19ea4281 100644 --- a/frontends/php/include/users.inc.php +++ b/frontends/php/include/users.inc.php @@ -135,11 +135,8 @@ { return $row; } - else - { - error("No user with itemid=[$userid]"); - } - return $result; + error("No user with itemid=[$userid]"); + return false; } function add_user_group($name,$users=array()) diff --git a/frontends/php/items.php b/frontends/php/items.php index c6b27944..6a2b30f8 100644 --- a/frontends/php/items.php +++ b/frontends/php/items.php @@ -378,7 +378,7 @@ $table = new CTableInfo(); $table->setHeader(array( - array( new CCheckBox("all_items",NULL,NULL, + array( new CCheckBox("all_items",NULL, "CheckAll('".$form->GetName()."','all_items');"), S_ID), S_DESCRIPTION,S_KEY,nbsp(S_UPDATE_INTERVAL), @@ -467,7 +467,7 @@ $table->AddRow(array( array( - new CCheckBox("group_itemid[]",NULL,NULL,NULL,$db_item["itemid"]), + new CCheckBox("group_itemid[]",NULL,NULL,$db_item["itemid"]), $db_item["itemid"] ), $description, diff --git a/frontends/php/latest.php b/frontends/php/latest.php index 68e01142..39735fb5 100644 --- a/frontends/php/latest.php +++ b/frontends/php/latest.php @@ -56,7 +56,7 @@ ?> <?php - if(!check_right("Host","R",$_REQUEST["hostid"])) + if($_REQUEST["hostid"] > 0 && !check_right("Host","R",$_REQUEST["hostid"])) { show_table_header("<font color=\"AA0000\">".S_NO_PERMISSIONS."</font>"); show_page_footer(); @@ -165,10 +165,11 @@ <?php $table=new CTableInfo(); - $header=array( + $table->SetHeader(array( $_REQUEST["hostid"] ==0 ? S_HOST : NULL, - S_DESCRIPTION,S_LAST_CHECK,S_LAST_VALUE,S_CHANGE,S_HISTORY); - $table->SetHeader($header); + S_DESCRIPTION,S_LAST_CHECK,S_LAST_VALUE,S_CHANGE,S_HISTORY)); + $table->ShowStart(); + $table->ShowBody(); if($_REQUEST["select"] != "") $compare_description = " and i.description like ".zbx_dbstr("%".$_REQUEST["select"]."%"); @@ -180,6 +181,8 @@ else $compare_host = ""; + $any_app_exist = false; + $db_applications = DBselect("select h.host,h.hostid,a.* from applications a,hosts h where a.hostid=h.hostid".$compare_host. " order by a.name,a.applicationid,h.host"); while($db_app = DBfetch($db_applications)) @@ -193,8 +196,8 @@ " order by i.description"; $db_items = DBselect($sql); - - $currAppID = -1; + $app_rows = array(); + $item_cnt = 0; while($db_item = DBfetch($db_items)) { if(!check_right("Item","R",$db_item["itemid"])) @@ -205,30 +208,9 @@ { continue; } - - if($currAppID != $db_app["applicationid"]) - { - $currAppID = $db_app["applicationid"]; - - if(in_array($db_app["applicationid"],$_REQUEST["applications"])) - $link = new CLink(new CImg("images/general/opened.gif"), - "latest.php?close=1&applicationid=".$db_app["applicationid"]. - url_param("groupid").url_param("hostid").url_param("applications"). - url_param("select")); - else - $link = new CLink(new CImg("images/general/closed.gif"), - "latest.php?open=1&applicationid=".$db_app["applicationid"]. - url_param("groupid").url_param("hostid").url_param("applications"). - url_param("select")); - - $col = new CCol(array($link,SPACE,bold($db_app["name"]), - SPACE."(".DBnum_rows($db_items).SPACE.S_ITEMS.")")); - $col->SetColSpan(5); - $table->AddRow(array($_REQUEST["hostid"] > 0 ? NULL : $db_app["host"], $col)); - - if(!in_array($db_app["applicationid"],$_REQUEST["applications"])) break; - } + ++$item_cnt; + if(!in_array($db_app["applicationid"],$_REQUEST["applications"])) continue; if(isset($db_item["lastclock"])) $lastclock=date(S_DATE_FORMAT_YMDHMS,$db_item["lastclock"]); @@ -279,30 +261,48 @@ $actions=new CLink(S_HISTORY,"history.php?action=showvalues&period=3600&itemid=".$db_item["itemid"],"action"); } - $table->AddRow(array( + array_push($app_rows, new CRow(array( $_REQUEST["hostid"] > 0 ? NULL : SPACE, str_repeat(SPACE,6).item_description($db_item["description"],$db_item["key_"]), $lastclock, $lastvalue, $change, $actions - )); + ))); } + if($item_cnt > 0) + { + if(in_array($db_app["applicationid"],$_REQUEST["applications"])) + $link = new CLink(new CImg("images/general/opened.gif"), + "latest.php?close=1&applicationid=".$db_app["applicationid"]. + url_param("groupid").url_param("hostid").url_param("applications"). + url_param("select")); + else + $link = new CLink(new CImg("images/general/closed.gif"), + "latest.php?open=1&applicationid=".$db_app["applicationid"]. + url_param("groupid").url_param("hostid").url_param("applications"). + url_param("select")); - } + $col = new CCol(array($link,SPACE,bold($db_app["name"]), + SPACE."(".$item_cnt.SPACE.S_ITEMS.")")); + $col->SetColSpan(5); - $show_group_other = $table->GetNumRows() > 0 ? TRUE : FALSE; - $space = ""; + $table->ShowRow(array($_REQUEST["hostid"] > 0 ? NULL : $db_app["host"], $col)); + $any_app_exist = true; + + foreach($app_rows as $row) + $table->ShowRow($row); + } + } $sql="select h.host,h.hostid,i.* from hosts h, items i LEFT JOIN items_applications ia ON ia.itemid=i.itemid". " where ia.itemid is NULL and h.hostid=i.hostid and h.status=".HOST_STATUS_MONITORED." and i.status=".ITEM_STATUS_ACTIVE. $compare_description.$compare_host. " order by i.description,h.host"; - $db_items = DBselect($sql); - $currAppID = -1; - $appID = 0; + $app_rows = array(); + $item_cnt = 0; while($db_item = DBfetch($db_items)) { if(!check_right("Host","R",$db_item["hostid"])) @@ -313,30 +313,10 @@ { continue; } - if($currAppID != $appID && $show_group_other) - { - $currAppID = $appID; - - if(in_array($appID,$_REQUEST["applications"])) - $link = new CLink(new CImg("images/general/opened.gif"), - "latest.php?close=1&applicationid=".$appID. - url_param("groupid").url_param("hostid").url_param("applications"). - url_param("select")); - else - $link = new CLink(new CImg("images/general/closed.gif"), - "latest.php?open=1&applicationid=".$appID. - url_param("groupid").url_param("hostid").url_param("applications"). - url_param("select")); - $col = new CCol(array($link,SPACE,bold(S_MINUS_OTHER_MINUS), - SPACE."(".DBnum_rows($db_items).SPACE.S_ITEMS.")")); - $col->SetColSpan(5); - - $table->AddRow(array($_REQUEST["hostid"] > 0 ? NULL : SPACE, $col)); + ++$item_cnt; + if(!in_array(0,$_REQUEST["applications"]) && $any_app_exist) continue; - if(!in_array($appID,$_REQUEST["applications"])) break; - $space = str_repeat(SPACE,6); - } if(isset($db_item["lastclock"])) $lastclock=date(S_DATE_FORMAT_YMDHMS,$db_item["lastclock"]); @@ -387,16 +367,42 @@ $actions=new CLink(S_HISTORY,"history.php?action=showvalues&period=3600&itemid=".$db_item["itemid"],"action"); } - $table->AddRow(array( + array_push($app_rows, new CRow(array( $_REQUEST["hostid"] > 0 ? NULL : $db_item["host"], - $space.item_description($db_item["description"],$db_item["key_"]), + str_repeat(SPACE, ($any_app_exist ? 6 : 0)).item_description($db_item["description"],$db_item["key_"]), $lastclock, $lastvalue, $change, $actions - )); + ))); + } + + if($item_cnt > 0) + { + if($any_app_exist) + { + if(in_array(0,$_REQUEST["applications"])) + $link = new CLink(new CImg("images/general/opened.gif"), + "latest.php?close=1&applicationid=0". + url_param("groupid").url_param("hostid").url_param("applications"). + url_param("select")); + else + $link = new CLink(new CImg("images/general/closed.gif"), + "latest.php?open=1&applicationid=0". + url_param("groupid").url_param("hostid").url_param("applications"). + url_param("select")); + + $col = new CCol(array($link,SPACE,bold(S_MINUS_OTHER_MINUS), + SPACE."(".$item_cnt.SPACE.S_ITEMS.")")); + $col->SetColSpan(5); + + $table->ShowRow(array($_REQUEST["hostid"] > 0 ? NULL : SPACE, $col)); + } + foreach($app_rows as $row) + $table->ShowRow($row); } - $table->show(); + + $table->ShowEnd(); ?> <?php diff --git a/frontends/php/overview.php b/frontends/php/overview.php index dfc6cca2..9c80f6be 100644 --- a/frontends/php/overview.php +++ b/frontends/php/overview.php @@ -103,13 +103,19 @@ <?php if($_REQUEST["type"]==SHOW_DATA) { +COpt::profiling_start("get_items_data_overview"); $table = get_items_data_overview($_REQUEST["groupid"]); +COpt::profiling_stop("get_items_data_overview"); $table->Show(); + unset($table); } elseif($_REQUEST["type"]==SHOW_TRIGGERS) { +COpt::profiling_start("get_triggers_overview"); $table = get_triggers_overview($_REQUEST["groupid"]); +COpt::profiling_stop("get_triggers_overview"); $table->Show(); + unset($table); } ?> diff --git a/frontends/php/popup.php b/frontends/php/popup.php index 8cb34df9..412bbe14 100644 --- a/frontends/php/popup.php +++ b/frontends/php/popup.php @@ -99,6 +99,7 @@ $sql .= ",hosts_groups hg where h.hostid=hg.hostid and hg.groupid=$groupid"; else $cmbHosts->AddItem(0,S_ALL_SMALL); + $first_hostid = 0; $db_hosts = DBselect($sql); while($host = DBfetch($db_hosts)) @@ -110,7 +111,6 @@ } if(!isset($correct_host) && isset($groupid)){ $hostid = $first_hostid; - $cmbHosts->SetValue($hostid); } $frmTitle->AddItem(array(SPACE,S_HOST,SPACE,$cmbHosts)); update_profile("web.popup.hostid",$hostid); @@ -119,8 +119,8 @@ if(in_array($srctbl,array("triggers","hosts"))) { - $btnEmpty = new CButton("empty",S_EMPTY,"window.opener.document.forms[\"$dstfrm\"].$dstfld1.value=\"0\";". - " window.opener.document.forms[\"$dstfrm\"].$dstfld2.value=\"\";". + $btnEmpty = new CButton("empty",S_EMPTY,"window.opener.document.forms['".$dstfrm."'].".$dstfld1.".value='0';". + " window.opener.document.forms['".$dstfrm."'].".$dstfld2.".value='';". " window.close();"); $frmTitle->AddItem(array(SPACE,$btnEmpty)); @@ -145,8 +145,8 @@ if(!check_right("Host","R",$host["hostid"])) continue; $name = new CLink($host["host"],"#","action"); $name->SetAction( - "window.opener.document.forms[\"$dstfrm\"].$dstfld1.value=\"".$host[$srcfld1]."\";". - " window.opener.document.forms[\"$dstfrm\"].$dstfld2.value=\"".$host[$srcfld2]."\";". + "window.opener.document.forms['".$dstfrm."'].".$dstfld1.".value='".$host[$srcfld1]."';". + " window.opener.document.forms['".$dstfrm."'].".$dstfld2.".value='".$host[$srcfld2]."';". " window.close();"); if($host["status"] == HOST_STATUS_MONITORED) @@ -207,8 +207,8 @@ $exp_desc = expand_trigger_description($row["triggerid"]); $description = new CLink($exp_desc,"#","action"); $description->SetAction( - "window.opener.document.forms[\"$dstfrm\"].$dstfld1.value=\"".$row[$srcfld1]."\";". - " window.opener.document.forms[\"$dstfrm\"].$dstfld2.value=\"$exp_desc\";". + "window.opener.document.forms['".$dstfrm."'].".$dstfld1.".value='".$row[$srcfld1]."';". + " window.opener.document.forms['".$dstfrm."'].".$dstfld2.".value='".$exp_desc."';". " window.close();"); //add dependences diff --git a/frontends/php/screens.php b/frontends/php/screens.php index 85404168..7b79d994 100644 --- a/frontends/php/screens.php +++ b/frontends/php/screens.php @@ -90,11 +90,9 @@ if($screen_correct == 0 && $first_screen != 0) { $_REQUEST["screenid"] = $first_screen; - $cmbScreens->SetValue($first_screen); } $form->AddItem($cmbScreens); - show_header2($text,$form); ?> diff --git a/frontends/php/services.php b/frontends/php/services.php index 2a11ceb1..f9afb4d2 100644 --- a/frontends/php/services.php +++ b/frontends/php/services.php @@ -122,7 +122,7 @@ $table = new CTableInfo(); $table->SetHeader(array( - array(new CCheckBox("all_services",NULL,NULL, + array(new CCheckBox("all_services",NULL, "CheckAll('".$form->GetName()."','all_services');"), S_ID), S_SERVICE, @@ -147,7 +147,7 @@ $table->AddRow(array( array( - new CCheckBox("group_serviceid[]",NULL,NULL,NULL,$_REQUEST["serviceid"]), + new CCheckBox("group_serviceid[]",NULL,NULL,$_REQUEST["serviceid"]), $_REQUEST["serviceid"] ), new CLink(new CSpan($service["name"]." [$childs]","bold"),"services.php?serviceid=".$_REQUEST["parentid"]."#form"), @@ -185,7 +185,7 @@ $parrent = get_request("serviceid",0); $table->AddRow(array( - array(new CCheckBox("group_serviceid[]",NULL,NULL,NULL,$service["serviceid"]),$service["serviceid"]), + array(new CCheckBox("group_serviceid[]",NULL,NULL,$service["serviceid"]),$service["serviceid"]), array($prefix, new CLink($service["name"]." [$childs]", "services.php?serviceid=".$service["serviceid"]."&parentid=$parrent#form")), algorithm2str($service["algorithm"]), @@ -211,7 +211,7 @@ $table = new CTableInfo(); $table->SetHeader(array( - array(new CCheckBox("all_services",NULL,NULL, + array(new CCheckBox("all_services",NULL, "CheckAll('".$form->GetName()."','all_services');"), S_LINK), S_SERVICE_1, @@ -229,7 +229,7 @@ { $table->AddRow(array( array( - new CCheckBox("group_linkid[]",NULL,NULL,NULL,$row["linkid"]), + new CCheckBox("group_linkid[]",NULL,NULL,$row["linkid"]), new CLink(S_LINK.SPACE.$i++, "services.php?form=update&linkid=".$row["linkid"].url_param("serviceid"), "action"), @@ -295,14 +295,14 @@ $cmbAlg->AddItem(2,S_MIN_BIG); $frmService->AddRow(S_STATUS_CALCULATION_ALGORITHM, $cmbAlg); - $frmService->AddRow(S_SHOW_SLA, new CCheckBox("showsla",$showsla,NULL,'submit();')); + $frmService->AddRow(S_SHOW_SLA, new CCheckBox("showsla",$showsla,'submit();')); if($showsla) $frmService->AddRow(S_ACCEPTABLE_SLA_IN_PERCENT,new CTextBox("goodsla",$goodsla,6)); else $frmService->AddVar("goodsla",$goodsla); - $frmService->AddRow(S_LINK_TO_TRIGGER_Q, new CCheckBox("linktrigger",$linktrigger,NULL,"submit();")); + $frmService->AddRow(S_LINK_TO_TRIGGER_Q, new CCheckBox("linktrigger",$linktrigger,"submit();")); if($linktrigger == 'yes') { @@ -312,7 +312,7 @@ $trigger = ""; $frmService->AddRow(S_TRIGGER,array( - new CTextBox("trigger",$trigger,32,NULL,'yes'), + new CTextBox("trigger",$trigger,32,'yes'), new CButton("btn1",S_SELECT, "return PopUp('popup.php?". "dstfrm=".$frmService->GetName()."&dstfld1=triggerid&dstfld2=trigger". @@ -371,7 +371,7 @@ $name = $service["name"]; if(isset($service["triggerid"])) $name .= ": ".expand_trigger_description($service["triggerid"]); - $frmLink->AddRow(S_SERVICE_1, new CTextBox("service",$name,60,NULL,'yes')); + $frmLink->AddRow(S_SERVICE_1, new CTextBox("service",$name,60,'yes')); $cmbServices = new CComboBox("servicedownid",$servicedownid); $result=DBselect("select serviceid,triggerid,name from services where serviceid<>$serviceupid order by name"); diff --git a/frontends/php/tr_status.php b/frontends/php/tr_status.php index ceeab22e..b5712710 100644 --- a/frontends/php/tr_status.php +++ b/frontends/php/tr_status.php @@ -103,7 +103,7 @@ show_page_footer(); exit; } - if(!check_right("Host","R",$_REQUEST["hostid"])) + if($_REQUEST["hostid"] > 0 && !check_right("Host","R",$_REQUEST["hostid"])) { show_table_header("<font color=\"AA0000\">".S_NO_PERMISSIONS."</font>"); show_page_footer(); diff --git a/frontends/php/triggers.php b/frontends/php/triggers.php index 29742e69..85cded18 100644 --- a/frontends/php/triggers.php +++ b/frontends/php/triggers.php @@ -269,7 +269,7 @@ $table = new CTableInfo(S_NO_TRIGGERS_DEFINED); $table->setHeader(array( $_REQUEST["hostid"] > 0 ? NULL : S_HOST, - array( new CCheckBox("all_triggers",NULL,NULL, + array( new CCheckBox("all_triggers",NULL, "CheckAll('".$form->GetName()."','all_triggers');") ,S_NAME ), @@ -296,7 +296,6 @@ new CCheckBox( "g_triggerid[]", /* name */ NULL, /* checked */ - NULL, /* caption */ NULL, /* action */ $row["triggerid"]), /* value */ SPACE |