diff options
Diffstat (limited to 'frontends/php')
| -rw-r--r-- | frontends/php/actionconf.php | 123 | ||||
| -rw-r--r-- | frontends/php/include/forms.inc.php | 98 |
2 files changed, 129 insertions, 92 deletions
diff --git a/frontends/php/actionconf.php b/frontends/php/actionconf.php index 863b60fb..73c0507f 100644 --- a/frontends/php/actionconf.php +++ b/frontends/php/actionconf.php @@ -38,6 +38,50 @@ // exit; // } ?> +<?php +// VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION + $fields=array( + "actiontype"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1"), NULL), + + "actionid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, NULL), + "source"=> array(T_ZBX_INT, O_OPT, NULL, IN("0"), 'isset({save})'), + "recipient"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1"), 'isset({save})'), + "userid"=> array(T_ZBX_INT, O_OPT, NULL, DB_ID, 'isset({save})'), + "delay"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,65535),'isset({save})'), + "subject"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, 'isset({save})'), + "message"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, 'isset({save})'), + "repeat"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1"), 'isset({save})'), + + "maxrepeats"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,65535),'{repeat}==1&&isset({save})'), + "repeatdelay"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,65535),'{repeat}==1&&isset({save})'), + + "conditions"=> array(NULL, O_OPT, NULL, NULL, NULL), +// "conditions[i][type]"=> array(T_ZBX_INT, O_OPT, NULL, NULL, NULL), +// "conditions[i][operator]"=> array(T_ZBX_INT, O_OPT, NULL, NULL, NULL), +// "conditions[i][value]"=> array(NULL, O_OPT, NULL, NULL, NULL), + + "rem_condition"=> array(NULL, O_OPT, NULL, NULL, NULL), +// "rem_condition[i][type]"=> array(T_ZBX_INT, O_OPT, NULL, NULL, NULL); +// "rem_condition[i][operator]"=> array(T_ZBX_INT, O_OPT, NULL, NULL, NULL); +// "rem_condition[i][value]"=> array(NULL, O_OPT, NULL, NULL, NULL); + + "new_condition_type"=> array(T_ZBX_INT, O_OPT, NULL, NULL, 'isset({add_condition})'), + "new_condition_operator"=> array(T_ZBX_INT, O_OPT, NULL, NULL, 'isset({add_condition})'), + "new_condition_value"=> array(NULL, O_OPT, NULL, NULL, 'isset({add_condition})'), + +/* actions */ + "add_condition"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), + "del_condition"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), + "save"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), + "delete"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), + "cancel"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), +/* other */ + "form"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), + "form_refresh"=> array(T_ZBX_INT, O_OPT, NULL, NULL, NULL) + ); + + check_fields($fields); +?> <?php if(isset($_REQUEST["save"])) @@ -48,23 +92,18 @@ $_REQUEST["repeatdelay"]=600; } - if($_REQUEST['recipient'] == RECIPIENT_TYPE_USER) - $id = $_REQUEST['userid']; - else - $id = $_REQUEST['usrgrpid']; - if(isset($_REQUEST["actionid"])) { $actionid=$_REQUEST["actionid"]; - $result = update_action($actionid, $id, $_REQUEST["delay"], $_REQUEST["subject"], - $_REQUEST["message"],$_REQUEST["recipient"],$_REQUEST["maxrepeats"], - $_REQUEST["repeatdelay"]); + $result = update_action($actionid, $_REQUEST['userid'], $_REQUEST["delay"], + $_REQUEST["subject"], $_REQUEST["message"],$_REQUEST["recipient"], + $_REQUEST["maxrepeats"],$_REQUEST["repeatdelay"]); show_messages($result,S_ACTION_UPDATED,S_CANNOT_UPDATE_ACTION); } else { - $actionid=add_action($id, $_REQUEST["delay"], $_REQUEST["subject"], - $_REQUEST["message"],$_REQUEST["recipient"],$_REQUEST["maxrepeats"], - $_REQUEST["repeatdelay"]); + $actionid=add_action($_REQUEST['userid'], $_REQUEST["delay"], + $_REQUEST["subject"],$_REQUEST["message"],$_REQUEST["recipient"], + $_REQUEST["maxrepeats"],$_REQUEST["repeatdelay"]); $result=$actionid; show_messages($result,S_ACTION_ADDED,S_CANNOT_ADD_ACTION); @@ -76,12 +115,8 @@ { DBexecute("delete from conditions where actionid=$actionid"); - for($i=1;$i<=1000;$i++) - { - if(!isset($_REQUEST["conditiontype$i"])) continue; - add_action_condition($actionid,$_REQUEST["conditiontype$i"], - $_REQUEST["conditionop$i"], $_REQUEST["conditionvalue$i"]); - } + if(isset($_REQUEST["conditions"])) foreach($_REQUEST["conditions"] as $val) + add_action_condition($actionid,$val["type"],$val["operator"],$val["value"]); if(isset($_REQUEST["userid"])) { @@ -108,37 +143,26 @@ { add_audit(AUDIT_ACTION_DELETE,AUDIT_RESOURCE_ACTION, "Subject [".$_REQUEST["subject"]."]"); + unset($_REQUEST["form"]); + unset($_REQUEST["actionid"]); } - unset($_REQUEST["actionid"]); - unset($_REQUEST["form"]); } - elseif(isset($_REQUEST["register"])) + elseif(isset($_REQUEST["add_condition"])) { - if($_REQUEST["register"]=="add condition") - { - for($i=1;$i<=1000;$i++) - { - if(!isset($_REQUEST["conditiontype$i"])) - { - $num=$i; - break; - } - } - $_REQUEST["conditionop$num"]=$_REQUEST["operator"]; - $_REQUEST["conditiontype$num"]=$_REQUEST["conditiontype"]; - $_REQUEST["conditionvalue$num"]=$_REQUEST["value"]; - } - elseif($_REQUEST["register"]=="delete selected") - { - for($i=1;$i<=1000;$i++) - { - if(isset($_REQUEST["conditionchecked$i"])) - { - unset($_REQUEST["conditionop$i"]); - unset($_REQUEST["conditiontype$i"]); - unset($_REQUEST["conditionvalue$i"]); - } - } + $new_condition = array( + "type"=> $_REQUEST["new_condition_type"], + "operator"=> $_REQUEST["new_condition_operator"], + "value"=> $_REQUEST["new_condition_value"]); + + $_REQUEST["conditions"] = get_request("conditions",array()); + if(!in_array($new_condition,$_REQUEST["conditions"])) + array_push($_REQUEST["conditions"],$new_condition); + } + elseif(isset($_REQUEST["del_condition"])&&isset($_REQUEST["rem_condition"])) + { + $_REQUEST["conditions"] = get_request("conditions",array()); + foreach($_REQUEST["rem_condition"] as $val){ + unset($_REQUEST["conditions"][$val]); } } ?> @@ -166,7 +190,7 @@ /* table */ $tblActions = new CTableInfo(S_NO_ACTIONS_DEFINED); $tblActions->SetHeader(array(S_SOURCE,S_CONDITIONS,S_SEND_MESSAGE_TO, - S_DELAY,S_SUBJECT,S_REPEATS,S_ACTIONS)); + S_DELAY,S_SUBJECT,S_REPEATS)); if(isset($_REQUEST["actiontype"])&&($_REQUEST["actiontype"]==1)) { @@ -200,13 +224,14 @@ } $tblActions->AddRow(array( - get_source_description($row["source"]), + new CLink( + get_source_description($row["source"]), + "actionconf.php?form=update&actionid=".$row['actionid'],'action'), $conditions, $recipient, htmlspecialchars($row["delay"]), htmlspecialchars($row["subject"]), - $row["maxrepeats"] == 0 ? S_NO_REPEATS : $row["maxrepeats"], - new CLink(S_CHANGE,"actionconf.php?form=update&actionid=".$row['actionid']) + $row["maxrepeats"] == 0 ? S_NO_REPEATS : $row["maxrepeats"] )); } $tblActions->Show(); diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php index 06b5b98e..b2403311 100644 --- a/frontends/php/include/forms.inc.php +++ b/frontends/php/include/forms.inc.php @@ -995,7 +995,11 @@ $frmAction = new CFormTable(S_ACTION,'actionconf.php'); $frmAction->SetHelp('web.actions.action.php'); - $conditiontype = get_request("conditiontype",0); + $conditions = get_request("conditions",array()); + + $new_condition_type = get_request("new_condition_type", 0); + $new_condition_operator = get_request("new_condition_operator", 0); + $new_condition_value = get_request("new_condition_value", 0); if(isset($_REQUEST["actionid"])) { @@ -1029,13 +1033,16 @@ } $result=DBselect("select conditiontype, operator, value from conditions". " where actionid=".$_REQUEST["actionid"]." order by conditiontype"); - $i=1; + while($condition=DBfetch($result)) { - $_REQUEST["conditiontype$i"]=$condition["conditiontype"]; - $_REQUEST["conditionop$i"]=$condition["operator"]; - $_REQUEST["conditionvalue$i"]=$condition["value"]; - $i++; + $condition = array( + "type" => $condition["conditiontype"], + "operator" => $condition["operator"], + "value" => $condition["value"]); + + if(in_array($condition, $conditions)) continue; + array_push($conditions, $condition); } } else @@ -1057,31 +1064,33 @@ $uid = get_request("usrgrpid",NULL); else $uid = get_request("userid",NULL); - } + } // prepare condition list $cond_el=array(); - for($i=1; $i<=1000; $i++) + $i=0; + foreach($conditions as $val) { - if(!isset($_REQUEST["conditiontype$i"])) continue; array_push($cond_el, new CCheckBox( - "conditionchecked$i", 'no', + "rem_condition[]", 'no', get_condition_desc( - $_REQUEST["conditiontype$i"], - $_REQUEST["conditionop$i"], - $_REQUEST["conditionvalue$i"] - )),BR + $val["type"], + $val["operator"], + $val["value"] + ), + NULL,$i),BR ); - $frmAction->AddVar("conditiontype$i", $_REQUEST["conditiontype$i"]); - $frmAction->AddVar("conditionop$i", $_REQUEST["conditionop$i"]); - $frmAction->AddVar("conditionvalue$i", $_REQUEST["conditionvalue$i"]); + $frmAction->AddVar("conditions[$i][type]", $val["type"]); + $frmAction->AddVar("conditions[$i][operator]", $val["operator"]); + $frmAction->AddVar("conditions[$i][value]", $val["value"]); + $i++; } if(count($cond_el)==0) array_push($cond_el, S_NO_CONDITIONS_DEFINED); else - array_push($cond_el, new CButton('register','delete selected')); + array_push($cond_el, new CButton('del_condition','delete selected')); // end of condition list preparation $cmbSource = new CComboBox('source', $source); @@ -1094,7 +1103,7 @@ $rowCondition=array(); // add condition type - $cmbCondType = new CComboBox('conditiontype',$conditiontype,'submit()'); + $cmbCondType = new CComboBox('new_condition_type',$new_condition_type,'submit()'); $cmbCondType->AddItem(CONDITION_TYPE_GROUP, S_HOST_GROUP); $cmbCondType->AddItem(CONDITION_TYPE_HOST, S_HOST); $cmbCondType->AddItem(CONDITION_TYPE_TRIGGER, S_TRIGGER); @@ -1106,36 +1115,36 @@ array_push($rowCondition,$cmbCondType); // add condition operation - $cmbCondOp = new CComboBox('operator'); - if(in_array($conditiontype, array( + $cmbCondOp = new CComboBox('new_condition_operator'); + if(in_array($new_condition_type, array( CONDITION_TYPE_GROUP, CONDITION_TYPE_HOST, CONDITION_TYPE_TRIGGER, CONDITION_TYPE_TRIGGER_SEVERITY, CONDITION_TYPE_TRIGGER_VALUE))) $cmbCondOp->AddItem(CONDITION_OPERATOR_EQUAL, '='); - if(in_array($conditiontype,array( + if(in_array($new_condition_type,array( CONDITION_TYPE_GROUP, CONDITION_TYPE_HOST, CONDITION_TYPE_TRIGGER, CONDITION_TYPE_TRIGGER_SEVERITY))) $cmbCondOp->AddItem(CONDITION_OPERATOR_NOT_EQUAL, '<>'); - if(in_array($conditiontype,array(CONDITION_TYPE_TRIGGER_NAME))) + if(in_array($new_condition_type,array(CONDITION_TYPE_TRIGGER_NAME))) $cmbCondOp->AddItem(CONDITION_OPERATOR_LIKE, 'like'); - if(in_array($conditiontype,array(CONDITION_TYPE_TRIGGER_NAME))) + if(in_array($new_condition_type,array(CONDITION_TYPE_TRIGGER_NAME))) $cmbCondOp->AddItem(CONDITION_OPERATOR_NOT_LIKE, 'not like'); - if(in_array($conditiontype,array(CONDITION_TYPE_TIME_PERIOD))) + if(in_array($new_condition_type,array(CONDITION_TYPE_TIME_PERIOD))) $cmbCondOp->AddItem(CONDITION_OPERATOR_IN, 'in'); - if(in_array($conditiontype,array(CONDITION_TYPE_TRIGGER_SEVERITY))) + if(in_array($new_condition_type,array(CONDITION_TYPE_TRIGGER_SEVERITY))) $cmbCondOp->AddItem(CONDITION_OPERATOR_MORE_EQUAL, '>='); array_push($rowCondition,$cmbCondOp); // add condition value - if($conditiontype == CONDITION_TYPE_GROUP) + if($new_condition_type == CONDITION_TYPE_GROUP) { - $cmbCondVal = new CComboBox('value'); + $cmbCondVal = new CComboBox('new_condition_value'); $groups = DBselect("select groupid,name from groups order by name"); while($group = DBfetch($groups)) { @@ -1143,24 +1152,24 @@ } array_push($rowCondition,$cmbCondVal); } - else if($conditiontype == CONDITION_TYPE_HOST) + else if($new_condition_type == CONDITION_TYPE_HOST) { - $frmAction->AddVar('value','0'); + $frmAction->AddVar('new_condition_value','0'); $txtCondVal = new CTextBox('host','',20); $txtCondVal->SetReadonly('yes'); $btnSelect = new CButton('btn1','Select', "return PopUp('popup.php?form=".$frmAction->GetName(). - "&field1=value&field2=host','new_win',". + "&field1=new_condition_value&field2=host','new_win',". "'width=450,height=450,resizable=1,scrollbars=1');"); $btnSelect->SetAccessKey('T'); array_push($rowCondition, $txtCondVal, $btnSelect); } - else if($conditiontype == CONDITION_TYPE_TRIGGER) + else if($new_condition_type == CONDITION_TYPE_TRIGGER) { - $cmbCondVal = new CComboBox('value'); + $cmbCondVal = new CComboBox('new_condition_value'); $triggers = DBselect("select distinct h.host,t.triggerid,t.description". " from triggers t, functions f,items i, hosts h". " where t.triggerid=f.triggerid and f.itemid=i.itemid". @@ -1172,24 +1181,24 @@ } array_push($rowCondition,$cmbCondVal); } - else if($conditiontype == CONDITION_TYPE_TRIGGER_NAME) + else if($new_condition_type == CONDITION_TYPE_TRIGGER_NAME) { - array_push($rowCondition, new CTextBox('value', "", 40)); + array_push($rowCondition, new CTextBox('new_condition_value', "", 40)); } - else if($conditiontype == CONDITION_TYPE_TRIGGER_VALUE) + else if($new_condition_type == CONDITION_TYPE_TRIGGER_VALUE) { - $cmbCondVal = new CComboBox('value'); + $cmbCondVal = new CComboBox('new_condition_value'); $cmbCondVal->AddItem(0,"OFF"); $cmbCondVal->AddItem(1,"ON"); array_push($rowCondition,$cmbCondVal); } - else if($conditiontype == CONDITION_TYPE_TIME_PERIOD) + else if($new_condition_type == CONDITION_TYPE_TIME_PERIOD) { - array_push($rowCondition, new CTextBox('value', "1-7,00:00-23:59", 40)); + array_push($rowCondition, new CTextBox('new_condition_value', "1-7,00:00-23:59", 40)); } - else if($conditiontype == CONDITION_TYPE_TRIGGER_SEVERITY) + else if($new_condition_type == CONDITION_TYPE_TRIGGER_SEVERITY) { - $cmbCondVal = new CComboBox('value'); + $cmbCondVal = new CComboBox('new_condition_value'); $cmbCondVal->AddItem(0,S_NOT_CLASSIFIED); $cmbCondVal->AddItem(1,S_INFORMATION); $cmbCondVal->AddItem(2,S_WARNING); @@ -1199,7 +1208,7 @@ array_push($rowCondition,$cmbCondVal); } // add condition button - array_push($rowCondition,BR,new CButton('register','add condition')); + array_push($rowCondition,BR,new CButton('add_condition','add')); // end of new condition preparation $frmAction->AddRow(S_CONDITION, $rowCondition); @@ -1219,7 +1228,7 @@ if($recipient==RECIPIENT_TYPE_GROUP) { - $cmbGroups = new CComboBox('usrgrpid', $uid); + $cmbGroups = new CComboBox('userid', $uid); $sql="select usrgrpid,name from usrgrp order by name"; $groups=DBselect($sql); @@ -1257,6 +1266,9 @@ { $frmAction->AddRow(S_NUMBER_OF_REPEATS, new CTextBox('maxrepeats',$maxrepeats,2)); $frmAction->AddRow(S_DELAY_BETWEEN_REPEATS, new CTextBox('repeatdelay',$repeatdelay,2)); + } else { + $frmAction->AddVar("maxrepeats",$maxrepeats); + $frmAction->AddVar("repeatdelay",$repeatdelay); } $frmAction->AddItemToBottomRow(new CButton('save',S_SAVE)); |
