summaryrefslogtreecommitdiffstats
path: root/frontends/php
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/php')
-rw-r--r--frontends/php/actionconf.php123
-rw-r--r--frontends/php/include/forms.inc.php98
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));