summaryrefslogtreecommitdiffstats
path: root/frontends/php/include/services.inc.php
diff options
context:
space:
mode:
authorartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-05-29 08:47:18 +0000
committerartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-05-29 08:47:18 +0000
commit0990cdce6c98be640a3c70bea413ac1f44865016 (patch)
tree97a9c36f69226f682f7326b668ee99b07ca6c684 /frontends/php/include/services.inc.php
parent3442ec61fa38eea4e68a3edea4ea3225ff78c8a0 (diff)
downloadzabbix-0990cdce6c98be640a3c70bea413ac1f44865016.tar.gz
zabbix-0990cdce6c98be640a3c70bea413ac1f44865016.tar.xz
zabbix-0990cdce6c98be640a3c70bea413ac1f44865016.zip
- changed IT Services interface (Artem)
- added class CTree - added Javascript class for Cookies management git-svn-id: svn://svn.zabbix.com/trunk@4188 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include/services.inc.php')
-rw-r--r--frontends/php/include/services.inc.php147
1 files changed, 126 insertions, 21 deletions
diff --git a/frontends/php/include/services.inc.php b/frontends/php/include/services.inc.php
index 6d671dd5..b36dacbf 100644
--- a/frontends/php/include/services.inc.php
+++ b/frontends/php/include/services.inc.php
@@ -19,16 +19,35 @@
**/
?>
<?php
- function add_service($name,$triggerid,$algorithm,$showsla,$goodsla,$sortorder,$service_times=array())
- {
+ function add_service($name,$triggerid,$algorithm,$showsla,$goodsla,$sortorder,$service_times=array(),$parentid,$childs){
+
+ foreach($childs as $id => $child){ //add childs
+ if($parentid == $child['serviceid']){
+ error('Service can\'t be parent and child in onetime.');
+ return FALSE;
+ }
+ }
+
if(is_null($triggerid) || $triggerid==0) $triggerid = 'NULL';
$serviceid=get_dbid("services","serviceid");
+
+ remove_service_links($serviceid); //removes all links with current serviceid
+
+ $result =($parentid != 0)?(add_service_link($serviceid,$parentid,0)):(true); //add parent
+
+ foreach($childs as $id => $child){ //add childs
+ if(!isset($child['soft']) || empty($child['soft'])) $child['soft'] = 0;
+ $result = add_service_link($child['serviceid'],$serviceid,$child['soft']);
+ }
+
+ if(!$result){
+ return FALSE;
+ }
$result=DBexecute("insert into services (serviceid,name,status,triggerid,algorithm,showsla,goodsla,sortorder)".
" values ($serviceid,".zbx_dbstr($name).",0,$triggerid,".zbx_dbstr($algorithm).",$showsla,".zbx_dbstr($goodsla).",$sortorder)");
- if(!$result)
- {
+ if(!$result){
return FALSE;
}
DBExecute('DELETE FROM services_times WHERE serviceid='.$serviceid);
@@ -47,8 +66,26 @@
return $serviceid;
}
- function update_service($serviceid,$name,$triggerid,$algorithm,$showsla,$goodsla,$sortorder,$service_times=array())
- {
+ function update_service($serviceid,$name,$triggerid,$algorithm,$showsla,$goodsla,$sortorder,$service_times=array(),$parentid,$childs){
+ foreach($childs as $id => $child){ //add childs
+ if($parentid == $child['serviceid']){
+ error('Service can\'t be parent and child in onetime.');
+ return FALSE;
+ }
+ }
+ remove_service_links($serviceid); //removes all links with current serviceid
+
+ $result =($parentid != 0)?(add_service_link($serviceid,$parentid,0)):(true); //add parent
+
+ foreach($childs as $id => $child){ //add childs
+ if(empty($child['soft']) || !isset($child['soft'])) $child['soft'] = 0;
+ $result = add_service_link($child['serviceid'],$serviceid,$child['soft']);
+ }
+
+ if(!$result){
+ return FALSE;
+ }
+
if(is_null($triggerid) || $triggerid==0) $triggerid = 'NULL';
$result = DBexecute("update services set name=".zbx_dbstr($name).",triggerid=$triggerid,status=0,algorithm=$algorithm,showsla=$showsla,goodsla=$goodsla,sortorder=$sortorder where serviceid=$serviceid");
@@ -162,16 +199,13 @@
return TRUE;
}
- function add_service_link($servicedownid,$serviceupid,$softlink)
- {
- if( ($softlink==0) && (is_service_hardlinked($servicedownid)==true) )
- {
+ function add_service_link($servicedownid,$serviceupid,$softlink){
+ if( ($softlink==0) && (is_service_hardlinked($servicedownid)==true) ){
error("cannot link hardlinked service.");
return false;
}
- if($servicedownid==$serviceupid)
- {
+ if($servicedownid==$serviceupid){
error("cannot link service to itself.");
return false;
}
@@ -186,15 +220,13 @@
return $linkid;
}
- function update_service_link($linkid,$servicedownid,$serviceupid,$softlink)
- {
- if( ($softlink==0) && (is_service_hardlinked($servicedownid)==true) )
- {
+
+ function update_service_link($linkid,$servicedownid,$serviceupid,$softlink){
+ if( ($softlink==0) && (is_service_hardlinked($servicedownid)==true) ){
return false;
}
- if($servicedownid==$serviceupid)
- {
+ if($servicedownid==$serviceupid){
error("cannot link service to itself.");
return false;
}
@@ -202,9 +234,17 @@
$sql="update services_links set servicedownid=$servicedownid, serviceupid=$serviceupid, soft=$softlink where linkid=$linkid";
return dbexecute($sql);
}
+
+ function remove_service_links($serviceid){
+ $query='DELETE
+ FROM services_links
+ WHERE serviceupid='.$serviceid.'
+ OR (servicedownid='.$serviceid.'
+ AND soft<>1)';
+ DBExecute($query);
+ }
- function get_last_service_value($serviceid,$clock)
- {
+ function get_last_service_value($serviceid,$clock){
$sql="select count(*) as cnt,max(clock) as maxx from service_alarms where serviceid=$serviceid and clock<=$clock";
// echo " $sql<br>";
@@ -517,7 +557,9 @@ $dt = 0;
}
function get_service_childs($serviceid,&$childs,$soft=0){
- $query = 'SELECT sl.servicedownid FROM services_links sl WHERE sl.serviceupid = '.$serviceid.(($soft == 1)?(''):(' AND sl.soft <> 1'));
+ $query = 'SELECT sl.servicedownid '.
+ ' FROM services_links sl '.
+ ' WHERE sl.serviceupid = '.$serviceid.(($soft == 1)?(''):(' AND sl.soft <> 1'));
$res = DBSelect($query);
while($row = DBFetch($res)){
@@ -525,4 +567,67 @@ $dt = 0;
get_service_childs($row['servicedownid'],$childs);
}
}
+
+ function createServiceTree(&$services,$id=0,&$temp=array(),$serviceupid=0,$parentid=0, $soft=0, $linkid=''){
+
+ //echo 'IN: id='.$id.' ,serviceupid='.$serviceupid.' ,paranetid='.$parentid.' ,soft='.$soft.BR;
+ $rows = $services[$id];
+ $rows['algorithm'] = algorithm2str($rows['algorithm']);
+
+ //---------------------------- if not leaf -----------------------------
+ $rows['parentid'] = $parentid;
+ if($soft == 0){
+ $rows['caption'] = new CLink($rows['caption'],'#',null,'javascript: call_menu(event, '.zbx_jsvalue($rows['serviceid']).','.zbx_jsvalue($rows['caption']).'); return false;');
+
+ $temp[$rows['serviceid']]=$rows;
+
+ if(isset($rows['childs'])){
+ foreach($rows['childs'] as $cid => $nodeid){
+ if(!isset($services[$nodeid['id']])){
+ continue;
+ }
+ createServiceTree($services,$nodeid['id'],$temp,$services[$nodeid['id']]['serviceupid'],$rows['serviceid'],$nodeid['soft'], $nodeid['linkid']);
+ }
+ }
+ } else {
+ $rows['caption'] = '<font style="color: #888888;">'.$rows['caption'].'</font>';
+ $temp[$rows['serviceid'].','.$linkid]=$rows;
+ }
+ return ;
+ }
+
+ function createShowServiceTree(&$services,$id=0,&$temp=array(),$serviceupid=0,$parentid=0, $soft=0, $linkid=''){
+
+ //echo 'IN: id='.$id.' ,serviceupid='.$serviceupid.' ,paranetid='.$parentid.' ,soft='.$soft.BR;
+ $rows = $services[$id];
+
+
+ //---------------------------- if not leaf -----------------------------
+ $rows['parentid'] = $parentid;
+ $rows['status'] = get_service_status_description($rows["status"]);
+
+ if($soft == 0){
+
+ $temp[$rows['serviceid']]=$rows;
+
+ if(isset($rows['childs'])){
+ foreach($rows['childs'] as $cid => $nodeid){
+ if(!isset($services[$nodeid['id']])){
+ continue;
+ }
+ createShowServiceTree($services,$nodeid['id'],$temp,$services[$nodeid['id']]['serviceupid'],$rows['serviceid'],$nodeid['soft'], $nodeid['linkid']);
+ }
+ }
+ } else {
+ $rows['caption'] = new CSpan($rows['caption']);
+ $rows['caption']->AddOption('style','color: #888888;');
+ $temp[$rows['serviceid'].','.$linkid]=$rows;
+ }
+ return ;
+ }
+
+ function closeform(){
+
+ zbx_add_post_js('closeform();');
+ }
?>