diff options
author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-06-02 12:35:38 +0000 |
---|---|---|
committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-06-02 12:35:38 +0000 |
commit | 914ff5a4f37c2bf999ab92baaa06964a2b963972 (patch) | |
tree | b788a59ea4830ba4ce19b869648a333b38f2b08f /frontends/php/include/forms.inc.php | |
parent | cfcce2e48100db5d067703120c4aa131f712c991 (diff) | |
download | zabbix-914ff5a4f37c2bf999ab92baaa06964a2b963972.tar.gz zabbix-914ff5a4f37c2bf999ab92baaa06964a2b963972.tar.xz zabbix-914ff5a4f37c2bf999ab92baaa06964a2b963972.zip |
- [DEV-171] added support of notification escalations on frontend side (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5740 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include/forms.inc.php')
-rw-r--r-- | frontends/php/include/forms.inc.php | 1222 |
1 files changed, 799 insertions, 423 deletions
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php index ddb612a2..80c36eed 100644 --- a/frontends/php/include/forms.inc.php +++ b/frontends/php/include/forms.inc.php @@ -2782,13 +2782,12 @@ ),'new'); $frmValmap->AddItemToBottomRow(new CButton('save',S_SAVE)); - if(isset($_REQUEST["valuemapid"])) - { + if(isset($_REQUEST["valuemapid"])){ $frmValmap->AddItemToBottomRow(SPACE); $frmValmap->AddItemToBottomRow(new CButtonDelete("Delete selected value mapping?", url_param("form").url_param("valuemapid").url_param("config"))); - - } else { + } + else { } $frmValmap->AddItemToBottomRow(SPACE); $frmValmap->AddItemToBottomRow(new CButtonCancel(url_param("config"))); @@ -2796,36 +2795,126 @@ $frmValmap->Show(); } - function insert_action_form(){ - include_once 'include/discovery.inc.php'; + function get_act_action_form($action=null){ + $tblAct = new CTable('','nowrap'); + + if(isset($_REQUEST['actionid']) && empty($action)){ + $action = get_action_by_actionid($_REQUEST['actionid']); + } + + if(isset($_REQUEST['actionid']) && !isset($_REQUEST['form_refresh'])){ + $name = $action['name']; + $eventsource = $action['eventsource']; + $esc_period = $action['esc_period']; + $status = $action['status']; + + $def_shortdata = $action['def_shortdata']; + $def_longdata = $action['def_longdata']; + + $recovery_msg = $action['recovery_msg']; + $r_shortdata = $action['r_shortdata']; + $r_longdata = $action['r_longdata']; + } + else{ + $name = get_request('name'); + $eventsource = get_request('eventsource'); + $esc_period = get_request('esc_period',0); + $status = get_request('status'); + + $def_shortdata = get_request('def_shortdata',''); + $def_longdata = get_request('def_longdata',''); - $uid=null; + $recovery_msg = get_request('recovery_msg',0); + $r_shortdata = get_request('r_shortdata',''); + $r_longdata = get_request('r_longdata',''); + } - $frmAction = new CFormTable(S_ACTION,'actionconf.php','post'); - $frmAction->SetHelp('config_actions.php'); + $tblAct->AddRow(array(S_NAME, new CTextBox('name', $name, 50))); - if(isset($_REQUEST['actionid'])) - { + /* form row generation */ + + $cmbSource = new CComboBox('eventsource', $eventsource, 'submit()'); + $cmbSource->AddItem(EVENT_SOURCE_TRIGGERS, S_TRIGGERS); + $cmbSource->AddItem(EVENT_SOURCE_DISCOVERY, S_DISCOVERY); + $tblAct->AddRow(array(S_EVENT_SOURCE, $cmbSource)); + + if(EVENT_SOURCE_TRIGGERS == $eventsource){ + $period_box = new CNumericBox('esc_period', $esc_period, 6, 'no'); + $period_box->AddAction('onchange','javascript: '.$period_box->GetOption('onchange').'submit();'); + + $tblAct->AddRow(array(S_PERIOD.' ('.S_SECONDS_SMALL.')', $period_box)); + } + else{ + $_REQUEST['esc_period'] = 0; + $tblAct->AddItem(new CVar('esc_period',0)); + unset($_REQUEST['new_opcondition']); + } + + $tblAct->AddRow(array(S_DEFAULT_SUBJECT, new CTextBox('def_shortdata', $def_shortdata, 50))); + $tblAct->AddRow(array(S_DEFAULT_MESSAGE, new CTextArea('def_longdata', $def_longdata,50,5))); + + if(EVENT_SOURCE_TRIGGERS == $eventsource){ + $tblAct->AddRow(array(S_RECOVERY_MESSAGE, new CCheckBox('recovery_msg',$recovery_msg,'javascript: submit();',1))); + if($recovery_msg){ + $tblAct->AddRow(array(S_RECOVERY_SUBJECT, new CTextBox('r_shortdata', $r_shortdata, 50))); + $tblAct->AddRow(array(S_RECOVERY_MESSAGE, new CTextArea('r_longdata', $r_longdata,50,5))); + } + } + else{ + unset($_REQUEST['recovery_msg']); + $tblAct->AddItem(new CVar('r_shortdata', '')); + $tblAct->AddItem(new CVar('r_longdata','')); + } + + $cmbStatus = new CComboBox('status',$status); + $cmbStatus->AddItem(ACTION_STATUS_ENABLED,S_ENABLED); + $cmbStatus->AddItem(ACTION_STATUS_DISABLED,S_DISABLED); + $tblAct->AddRow(array(S_STATUS, $cmbStatus)); + + $tblAction = new CTableInfo(); + $tblAction->AddOption('style','background-color: #CCC;'); + + $tblAction->AddRow($tblAct); + + $td = new CCol(array(new CButton('save',S_SAVE))); + $td->AddOption('colspan','2'); + $td->AddOption('style','text-align: right;'); + + if(isset($_REQUEST["actionid"])){ + + $td->AddItem(SPACE); + $td->AddItem(new CButton('clone',S_CLONE)); + $td->AddItem(SPACE); + $td->AddItem(new CButtonDelete(S_DELETE_SELECTED_ACTION_Q, + url_param('form').url_param('eventsource'). + url_param('actionid'))); + + } + $td->AddItem(SPACE); + $td->AddItem(new CButtonCancel(url_param("actiontype"))); + + $tblAction->SetFooter($td); + return $tblAction; + } + + function get_act_condition_form($action=null){ + $tblCond = new CTable('','nowrap'); + + if(isset($_REQUEST['actionid']) && empty($action)){ $action = get_action_by_actionid($_REQUEST['actionid']); - $frmAction->AddVar('actionid',$_REQUEST['actionid']); } $conditions = get_request('conditions',array()); - $operations = get_request("operations",array()); - - if(isset($_REQUEST['actionid']) && !isset($_REQUEST['form_refresh'])) - { - $name = $action['name']; + + if(isset($_REQUEST['actionid']) && !isset($_REQUEST['form_refresh'])){ $eventsource = $action['eventsource']; $evaltype = $action['evaltype']; - $status = $action['status']; - + /* prepare conditions */ $db_conditions = DBselect('select conditiontype, operator, value FROM conditions'. ' WHERE actionid='.$_REQUEST['actionid'].' order by conditiontype,conditionid'); - while($condition_data = DBfetch($db_conditions)) - { + while($condition_data = DBfetch($db_conditions)){ $condition_data = array( 'type' => $condition_data['conditiontype'], 'operator' => $condition_data['operator'], @@ -2835,64 +2924,13 @@ array_push($conditions, $condition_data); } unset($condition_data, $db_conditions); - - /* prepate operations */ - $db_operations = DBselect('select operationtype,object,objectid,shortdata,longdata FROM operations'. - ' WHERE actionid='.$_REQUEST['actionid'].' order by operationtype,object,operationid'); - - while($operation_data = DBfetch($db_operations)) - { - $operation_data = array( - 'operationtype' => $operation_data['operationtype'], - 'object' => $operation_data['object'], - 'objectid' => $operation_data['objectid'], - 'shortdata' => $operation_data['shortdata'], - 'longdata' => $operation_data['longdata']); - - if(str_in_array($operation_data, $operations)) continue; - array_push($operations, $operation_data); - } - unset($db_operations, $operation_data); } - else - { - $name = get_request('name'); - $eventsource = get_request('eventsource'); + else{ $evaltype = get_request('evaltype'); - $status = get_request('status'); + $eventsource = get_request('eventsource'); } $allowed_conditions = get_conditions_by_eventsource($eventsource); - $allowed_operations = get_operations_by_eventsource($eventsource); - - /* init new_condition variable */ - $new_condition = get_request('new_condition', array()); - if( !is_array($new_condition) ) $new_condition = array(); - - if( !isset($new_condition['type']) ) $new_condition['type'] = CONDITION_TYPE_TRIGGER_NAME; - if( !isset($new_condition['operator'])) $new_condition['operator'] = CONDITION_OPERATOR_LIKE; - if( !isset($new_condition['value']) ) $new_condition['value'] = ''; - - if( !str_in_array($new_condition['type'], $allowed_conditions) ) - $new_condition['type'] = $allowed_conditions[0]; - - /* init new_operation variable */ - $new_operation = get_request('new_operation', array()); - if( !is_array($new_operation) ) $new_operation = array(); - - if( !isset($new_operation['operationtype'])) $new_operation['operationtype'] = OPERATION_TYPE_MESSAGE; - if( !isset($new_operation['object'])) $new_operation['object'] = OPERATION_OBJECT_GROUP; - if( !isset($new_operation['objectid'])) $new_operation['objectid'] = 0; - if( !isset($new_operation['shortdata'])) $new_operation['shortdata'] = '{TRIGGER.NAME}: {STATUS}'; - if( !isset($new_operation['longdata'])) $new_operation['longdata'] = '{TRIGGER.NAME}: {STATUS}'; - - $frmAction->AddRow(S_NAME, new CTextBox('name', $name, 50)); - - /* form row generation */ - $cmbSource = new CComboBox('eventsource', $eventsource, 'submit()'); - $cmbSource->AddItem(EVENT_SOURCE_TRIGGERS, S_TRIGGERS); - $cmbSource->AddItem(EVENT_SOURCE_DISCOVERY, S_DISCOVERY); - $frmAction->AddRow(S_EVENT_SOURCE, $cmbSource); // show CONDITION LIST zbx_rksort($conditions); @@ -2901,8 +2939,8 @@ $grouped_conditions = array(); $cond_el = new CTable(S_NO_CONDITIONS_DEFINED); $i=0; - foreach($conditions as $val) - { + + foreach($conditions as $val){ if( !isset($val['type']) ) $val['type'] = 0; if( !isset($val['operator']) ) $val['operator'] = 0; if( !isset($val['value']) ) $val['value'] = 0; @@ -2915,9 +2953,9 @@ get_condition_desc($val["type"], $val["operator"], $val["value"])) )); - $frmAction->AddVar("conditions[$i][type]", $val["type"]); - $frmAction->AddVar("conditions[$i][operator]", $val["operator"]); - $frmAction->AddVar("conditions[$i][value]", $val["value"]); + $tblCond->AddItem(new CVar("conditions[$i][type]", $val["type"])); + $tblCond->AddItem(new CVar("conditions[$i][operator]", $val["operator"])); + $tblCond->AddItem(new CVar("conditions[$i][value]", $val["value"])); $grouped_conditions[$val["type"]][] = $label; @@ -2927,19 +2965,15 @@ $cond_buttons = array(); - if(!isset($_REQUEST['new_condition'])) - { + if(!isset($_REQUEST['new_condition'])){ $cond_buttons[] = new CButton('new_condition',S_NEW); } - if($cond_el->ItemsCount() > 0) - { - if($cond_el->ItemsCount() > 1) - { + if($cond_el->ItemsCount() > 0){ + if($cond_el->ItemsCount() > 1){ /* prepare condition calcuation type selector */ - switch($evaltype) - { + switch($evaltype){ case ACTION_EVAL_TYPE_AND: $group_op = $glog_op = S_AND; break; case ACTION_EVAL_TYPE_OR: $group_op = $glog_op = S_OR; break; default: $group_op = S_OR; $glog_op = S_AND; break; @@ -2954,400 +2988,744 @@ $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_AND_OR, S_AND_OR_BIG); $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_AND, S_AND_BIG); $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_OR, S_OR_BIG); - $frmAction->AddRow(S_TYPE_OF_CALCULATION, - array($cmb_calc_type, new CTextBox('preview', $grouped_conditions, 60,'yes'))); + $tblCond->AddRow(array(S_TYPE_OF_CALCULATION, array($cmb_calc_type, new CTextBox('preview', $grouped_conditions, 60,'yes')))); unset($cmb_calc_type, $group_op, $glog_op); /* end of calcuation type selector */ } - else - { - $frmAction->AddVar('evaltype', ACTION_EVAL_TYPE_AND_OR); + else{ + $tblCond->AddItem(new CVar('evaltype', ACTION_EVAL_TYPE_AND_OR)); } $cond_buttons[] = new CButton('del_condition',S_DELETE_SELECTED); } - else - { - $frmAction->AddVar('evaltype', ACTION_EVAL_TYPE_AND_OR); + else{ + $tblCond->AddItem(new CVar('evaltype', ACTION_EVAL_TYPE_AND_OR)); } + + $tblCond->AddRow(array(S_CONDITIONS, $cond_el)); + + $tblConditions = new CTableInfo(); + $tblConditions->AddOption('style','background-color: #CCC;'); + + $tblConditions->AddRow($tblCond); - $frmAction->AddRow(S_CONDITIONS, array($cond_el, $cond_buttons)); + $td = new CCol($cond_buttons); + $td->AddOption('colspan','2'); + $td->AddOption('style','text-align: right;'); + + $tblConditions->SetFooter($td); unset($grouped_conditions,$cond_el,$cond_buttons); +// end of CONDITION LIST + return $tblConditions; + } + + function get_act_new_cond_form($action=null){ + $tblCond = new CTable('','nowrap'); + $tblCond->AddOption('style','background-color: #CCC;'); -// end of CONDITION LIST + if(isset($_REQUEST['actionid']) && empty($action)){ + $action = get_action_by_actionid($_REQUEST['actionid']); + } + + if(isset($_REQUEST['actionid']) && !isset($_REQUEST['form_refresh'])){ + $eventsource = $action['eventsource']; + $evaltype = $action['evaltype']; + } + else{ + $evaltype = get_request('evaltype'); + $eventsource = get_request('eventsource'); + } + + $allowed_conditions = get_conditions_by_eventsource($eventsource); + /* init new_condition variable */ + $new_condition = get_request('new_condition', array()); + if( !is_array($new_condition) ) $new_condition = array(); + if( !isset($new_condition['type']) ) $new_condition['type'] = CONDITION_TYPE_TRIGGER_NAME; + if( !isset($new_condition['operator'])) $new_condition['operator'] = CONDITION_OPERATOR_LIKE; + if( !isset($new_condition['value']) ) $new_condition['value'] = ''; + + if( !str_in_array($new_condition['type'], $allowed_conditions) ) + $new_condition['type'] = $allowed_conditions[0]; + // NEW CONDITION - if(isset($_REQUEST['new_condition'])) - { - $rowCondition=array(); - // add condition type - $cmbCondType = new CComboBox('new_condition[type]',$new_condition['type'],'submit()'); - foreach($allowed_conditions as $cond) - $cmbCondType->AddItem($cond, condition_type2str($cond)); + $rowCondition=array(); - array_push($rowCondition,$cmbCondType); +// add condition type + $cmbCondType = new CComboBox('new_condition[type]',$new_condition['type'],'submit()'); + foreach($allowed_conditions as $cond) + $cmbCondType->AddItem($cond, condition_type2str($cond)); - // add condition operation - $cmbCondOp = new CComboBox('new_condition[operator]'); - foreach(get_operators_by_conditiontype($new_condition['type']) as $op) - $cmbCondOp->AddItem($op, condition_operator2str($op)); + array_push($rowCondition,$cmbCondType); - array_push($rowCondition,$cmbCondOp); +// add condition operation + $cmbCondOp = new CComboBox('new_condition[operator]'); + foreach(get_operators_by_conditiontype($new_condition['type']) as $op) + $cmbCondOp->AddItem($op, condition_operator2str($op)); + array_push($rowCondition,$cmbCondOp); - // add condition value - switch($new_condition['type']) - { - case CONDITION_TYPE_HOST_GROUP: - $frmAction->AddVar('new_condition[value]','0'); - $rowCondition[] = array( - new CTextBox('group','',20,'yes'), - new CButton('btn1',S_SELECT, - "return PopUp('popup.php?dstfrm=".$frmAction->GetName(). - "&dstfld1=new_condition%5Bvalue%5D&dstfld2=group&srctbl=host_group". - "&srcfld1=groupid&srcfld2=name',450,450);", - 'T') - ); - break; - case CONDITION_TYPE_HOST_TEMPLATE: - $frmAction->AddVar('new_condition[value]','0'); - $rowCondition[] = array( - new CTextBox('host','',20,'yes'), - new CButton('btn1',S_SELECT, - "return PopUp('popup.php?dstfrm=".$frmAction->GetName(). - "&dstfld1=new_condition%5Bvalue%5D&dstfld2=host&srctbl=host_templates". - "&srcfld1=hostid&srcfld2=host',450,450);", - 'T') - ); - break; - case CONDITION_TYPE_HOST: - $frmAction->AddVar('new_condition[value]','0'); - $rowCondition[] = array( - new CTextBox('host','',20,'yes'), - new CButton('btn1',S_SELECT, - "return PopUp('popup.php?dstfrm=".$frmAction->GetName(). - "&dstfld1=new_condition%5Bvalue%5D&dstfld2=host&srctbl=hosts". - "&srcfld1=hostid&srcfld2=host',450,450);", - 'T') - ); - break; - case CONDITION_TYPE_TRIGGER: - $frmAction->AddVar('new_condition[value]','0'); - $rowCondition[] = array( - new CTextBox('trigger','',20,'yes'), - new CButton('btn1',S_SELECT, - "return PopUp('popup.php?dstfrm=".$frmAction->GetName(). - "&dstfld1=new_condition%5Bvalue%5D&dstfld2=trigger&srctbl=triggers". - "&srcfld1=triggerid&srcfld2=description');", - 'T') - ); - break; - case CONDITION_TYPE_TRIGGER_NAME: - $rowCondition[] = new CTextBox('new_condition[value]', "", 40); - break; - case CONDITION_TYPE_TRIGGER_VALUE: - $cmbCondVal = new CComboBox('new_condition[value]'); - foreach(array(TRIGGER_VALUE_FALSE, TRIGGER_VALUE_TRUE) as $tr_val) - $cmbCondVal->AddItem($tr_val, trigger_value2str($tr_val)); - $rowCondition[] = $cmbCondVal; - break; - case CONDITION_TYPE_TIME_PERIOD: - $rowCondition[] = new CTextBox('new_condition[value]', "1-7,00:00-23:59", 40); - break; - case CONDITION_TYPE_TRIGGER_SEVERITY: - $cmbCondVal = new CComboBox('new_condition[value]'); - foreach(array(TRIGGER_SEVERITY_INFORMATION, - TRIGGER_SEVERITY_WARNING, - TRIGGER_SEVERITY_AVERAGE, - TRIGGER_SEVERITY_HIGH, - TRIGGER_SEVERITY_DISASTER) as $id) - $cmbCondVal->AddItem($id,get_severity_description($id)); - - $rowCondition[] = $cmbCondVal; - break; - case CONDITION_TYPE_DHOST_IP: - $rowCondition[] = new CTextBox('new_condition[value]', '192.168.0.1-127,192.168.2.1', 50); - break; - case CONDITION_TYPE_DSERVICE_TYPE: - $cmbCondVal = new CComboBox('new_condition[value]'); - foreach(array(SVC_SSH, SVC_LDAP, SVC_SMTP, SVC_FTP, SVC_HTTP, - SVC_POP, SVC_NNTP, SVC_IMAP, SVC_TCP,SVC_AGENT,SVC_SNMPv1,SVC_SNMPv2, - SVC_ICMPPING) as $svc) - $cmbCondVal->AddItem($svc,discovery_check_type2str($svc)); - - $rowCondition[] = $cmbCondVal; - break; - case CONDITION_TYPE_DSERVICE_PORT: - $rowCondition[] = new CTextBox('new_condition[value]', '0-1023,1024-49151', 40); - break; - case CONDITION_TYPE_DSTATUS: - $cmbCondVal = new CComboBox('new_condition[value]'); - foreach(array(DOBJECT_STATUS_UP, DOBJECT_STATUS_DOWN, DOBJECT_STATUS_DISCOVER, - DOBJECT_STATUS_LOST) as $stat) - $cmbCondVal->AddItem($stat,discovery_object_status2str($stat)); +// add condition value + switch($new_condition['type']){ + case CONDITION_TYPE_HOST_GROUP: + $tblCond->AddItem(new CVar('new_condition[value]','0')); + $rowCondition[] = array( + new CTextBox('group','',20,'yes'), + new CButton('btn1',S_SELECT, + "return PopUp('popup.php?dstfrm=".$tblCond->GetName(). + "&dstfld1=new_condition%5Bvalue%5D&dstfld2=group&srctbl=host_group". + "&srcfld1=groupid&srcfld2=name',450,450);", + 'T') + ); + break; + case CONDITION_TYPE_HOST_TEMPLATE: + $tblCond->AddItem(new CVar('new_condition[value]','0')); + $rowCondition[] = array( + new CTextBox('host','',20,'yes'), + new CButton('btn1',S_SELECT, + "return PopUp('popup.php?dstfrm=".$tblCond->GetName(). + "&dstfld1=new_condition%5Bvalue%5D&dstfld2=host&srctbl=host_templates". + "&srcfld1=hostid&srcfld2=host',450,450);", + 'T') + ); + break; + case CONDITION_TYPE_HOST: + $tblCond->AddItem(new CVar('new_condition[value]','0')); + $rowCondition[] = array( + new CTextBox('host','',20,'yes'), + new CButton('btn1',S_SELECT, + "return PopUp('popup.php?dstfrm=".$tblCond->GetName(). + "&dstfld1=new_condition%5Bvalue%5D&dstfld2=host&srctbl=hosts". + "&srcfld1=hostid&srcfld2=host',450,450);", + 'T') + ); + break; + case CONDITION_TYPE_TRIGGER: + $tblCond->AddItem(new CVar('new_condition[value]','0')); + $rowCondition[] = array( + new CTextBox('trigger','',20,'yes'), + new CButton('btn1',S_SELECT, + "return PopUp('popup.php?dstfrm=".$tblCond->GetName(). + "&dstfld1=new_condition%5Bvalue%5D&dstfld2=trigger&srctbl=triggers". + "&srcfld1=triggerid&srcfld2=description');", + 'T') + ); + break; + case CONDITION_TYPE_TRIGGER_NAME: + $rowCondition[] = new CTextBox('new_condition[value]', "", 40); + break; + case CONDITION_TYPE_TRIGGER_VALUE: + $cmbCondVal = new CComboBox('new_condition[value]'); + foreach(array(TRIGGER_VALUE_FALSE, TRIGGER_VALUE_TRUE) as $tr_val) + $cmbCondVal->AddItem($tr_val, trigger_value2str($tr_val)); - $rowCondition[] = $cmbCondVal; - break; - case CONDITION_TYPE_DUPTIME: - $rowCondition[] = new CNumericBox('new_condition[value]','600',15); - break; - case CONDITION_TYPE_DVALUE: - $rowCondition[] = new CTextBox('new_condition[value]', "", 40); - break; - } + $rowCondition[] = $cmbCondVal; + break; + case CONDITION_TYPE_TIME_PERIOD: + $rowCondition[] = new CTextBox('new_condition[value]', "1-7,00:00-23:59", 40); + break; + case CONDITION_TYPE_TRIGGER_SEVERITY: + $cmbCondVal = new CComboBox('new_condition[value]'); + foreach(array(TRIGGER_SEVERITY_INFORMATION, + TRIGGER_SEVERITY_WARNING, + TRIGGER_SEVERITY_AVERAGE, + TRIGGER_SEVERITY_HIGH, + TRIGGER_SEVERITY_DISASTER) as $id) + $cmbCondVal->AddItem($id,get_severity_description($id)); + + $rowCondition[] = $cmbCondVal; + break; + case CONDITION_TYPE_DHOST_IP: + $rowCondition[] = new CTextBox('new_condition[value]', '192.168.0.1-127,192.168.2.1', 50); + break; + case CONDITION_TYPE_DSERVICE_TYPE: + $cmbCondVal = new CComboBox('new_condition[value]'); + foreach(array(SVC_SSH, SVC_LDAP, SVC_SMTP, SVC_FTP, SVC_HTTP, + SVC_POP, SVC_NNTP, SVC_IMAP, SVC_TCP,SVC_AGENT,SVC_SNMPv1,SVC_SNMPv2, + SVC_ICMPPING) as $svc) + $cmbCondVal->AddItem($svc,discovery_check_type2str($svc)); + + $rowCondition[] = $cmbCondVal; + break; + case CONDITION_TYPE_DSERVICE_PORT: + $rowCondition[] = new CTextBox('new_condition[value]', '0-1023,1024-49151', 40); + break; + case CONDITION_TYPE_DSTATUS: + $cmbCondVal = new CComboBox('new_condition[value]'); + foreach(array(DOBJECT_STATUS_UP, DOBJECT_STATUS_DOWN, DOBJECT_STATUS_DISCOVER, + DOBJECT_STATUS_LOST) as $stat) + $cmbCondVal->AddItem($stat,discovery_object_status2str($stat)); + + $rowCondition[] = $cmbCondVal; + break; + case CONDITION_TYPE_DUPTIME: + $rowCondition[] = new CNumericBox('new_condition[value]','600',15); + break; + case CONDITION_TYPE_DVALUE: + $rowCondition[] = new CTextBox('new_condition[value]', "", 40); + break; + } + + $tblCond->AddRow($rowCondition); + + $tblConditions = new CTableInfo(); + $tblConditions->AddOption('style','background-color: #CCC;'); + + $tblConditions->AddRow($tblCond); - $frmAction->AddRow(S_NEW_CONDITION, array( - $rowCondition, - BR(), - new CButton('add_condition',S_ADD), - new CButton('cancel_new_condition',S_CANCEL)), - 'new'); + $td = new CCol(array(new CButton('add_condition',S_ADD),new CButton('cancel_new_condition',S_CANCEL))); + $td->AddOption('colspan','3'); + $td->AddOption('style','text-align: right;'); + + $tblConditions->SetFooter($td); + unset($grouped_conditions,$cond_el,$cond_buttons); // end of NEW CONDITION + return $tblConditions; + } + + function get_act_operations_form($action=null){ + $tblOper = new CTableInfo(S_NO_OPERATIONS_DEFINED); + $tblOper->AddOption('style','background-color: #CCC;'); + + if(isset($_REQUEST['actionid']) && empty($action)){ + $action = get_action_by_actionid($_REQUEST['actionid']); } - zbx_rksort($operations); + $operations = get_request('operations',array()); - $oper_el = new CTable(S_NO_OPERATIONS_DEFINED); - foreach($operations as $id => $val) - { + if(isset($_REQUEST['actionid']) && !isset($_REQUEST['form_refresh'])){ + $eventsource = $action['eventsource']; + $evaltype = $action['evaltype']; + $esc_period = $action['esc_period']; + + + /* prepate operations */ + $db_operations = DBselect('SELECT * '. + ' FROM operations'. + ' WHERE actionid='.$_REQUEST['actionid']. + ' ORDER BY operationtype,object,operationid'); + + while($operation_data = DBfetch($db_operations)){ + $operation_data = array( + 'operationtype' => $operation_data['operationtype'], + 'operationid' => $operation_data['operationid'], + 'object' => $operation_data['object'], + 'objectid' => $operation_data['objectid'], + 'shortdata' => $operation_data['shortdata'], + 'longdata' => $operation_data['longdata'], + 'esc_period' => $operation_data['esc_period'], + 'esc_step_from' => $operation_data['esc_step_from'], + 'esc_step_to' => $operation_data['esc_step_to'], + 'default_msg' => $operation_data['default_msg'], + 'evaltype' => $operation_data['evaltype']); + + $operation_data['opconditions'] = array(); + $sql = 'SELECT * FROM opconditions WHERE operationid='.$operation_data['operationid']; + + $db_opconds = DBselect($sql); + while($db_opcond = DBfetch($db_opconds)){ + + $operation_data['opconditions'][] = $db_opcond; + } + + if(str_in_array($operation_data, $operations)) continue; + array_push($operations, $operation_data); + } + unset($db_operations, $operation_data); + } + else{ + $eventsource = get_request('eventsource'); + $evaltype = get_request('evaltype'); + $esc_period = get_request('esc_period'); + } + + $tblOper->SetHeader(array( + new CCheckBox('all_operations',null,'CheckAll("'.S_ACTION.'","all_operations","g_operationid");'), + $esc_period?S_STEPS:null, + S_DETAILS, + $esc_period?S_PERIOD.' ('.S_SEC_SMALL.')':null, + $esc_period?S_DELAY:null, + S_ACTION + )); + + $allowed_operations = get_operations_by_eventsource($eventsource); + + zbx_rksort($operations); + + $delay = 0; + foreach($operations as $id => $val){ if( !str_in_array($val['operationtype'], $allowed_operations) ) continue; + + if(!isset($val['default_msg'])) $val['default_msg'] = 0; + if(!isset($val['opconditions'])) $val['opconditions'] = array(); $oper_details = new CSpan(get_operation_desc(SHORT_DESCRITION, $val)); $oper_details->SetHint(nl2br(get_operation_desc(LONG_DESCRITION, $val))); - $oper_el->AddRow(array( - new CCol(array( - new CCheckBox("g_operationid[]", 'no', null,$id), - $oper_details)), - new CButton('edit_operationid['.$id.']',S_EDIT) + $esc_steps_txt = null; + $esc_period_txt = null; + $esc_delay_txt = null; + + if($esc_period){ + $esc_steps_txt = $val['esc_step_from'].' - '.$val['esc_step_to']; + $esc_period_txt = $val['esc_period']?$val['esc_period']:S_DEFAULT; + $esc_delay_txt = $delay?convert_units($delay,'uptime'):S_AT_MOMENT; + + $delay_period = $val['esc_period']?$val['esc_period']:$esc_period; + $delay += $delay_period*abs($val['esc_step_from']-$val['esc_step_to']); + } + + $tblOper->AddRow(array( + new CCheckBox("g_operationid[]", 'no', null,$id), + $esc_steps_txt, + $oper_details, + $esc_period_txt, + $esc_delay_txt, + new CButton('edit_operationid['.$id.']',S_EDIT) )); - $frmAction->AddVar('operations['.$id.'][operationtype]' ,$val['operationtype'] ); - $frmAction->AddVar('operations['.$id.'][object]' ,$val['object'] ); - $frmAction->AddVar('operations['.$id.'][objectid]' ,$val['objectid'] ); - $frmAction->AddVar('operations['.$id.'][shortdata]' ,$val['shortdata'] ); - $frmAction->AddVar('operations['.$id.'][longdata]' ,$val['longdata'] ); + $tblOper->AddItem(new CVar('operations['.$id.'][operationtype]' ,$val['operationtype'])); + $tblOper->AddItem(new CVar('operations['.$id.'][object]' ,$val['object'] )); + $tblOper->AddItem(new CVar('operations['.$id.'][objectid]' ,$val['objectid'])); + $tblOper->AddItem(new CVar('operations['.$id.'][shortdata]' ,$val['shortdata'])); + $tblOper->AddItem(new CVar('operations['.$id.'][longdata]' ,$val['longdata'])); + $tblOper->AddItem(new CVar('operations['.$id.'][esc_period]' ,$val['esc_period'] )); + $tblOper->AddItem(new CVar('operations['.$id.'][esc_step_from]' ,$val['esc_step_from'])); + $tblOper->AddItem(new CVar('operations['.$id.'][esc_step_to]' ,$val['esc_step_to'])); + $tblOper->AddItem(new CVar('operations['.$id.'][default_msg]' ,$val['default_msg'])); + $tblOper->AddItem(new CVar('operations['.$id.'][evaltype]' ,$val['evaltype'])); + + foreach($val['opconditions'] as $opcondid => $opcond){ + foreach($opcond as $field => $value) + $tblOper->AddItem(new CVar('operations['.$id.'][opconditions]['.$opcondid.']['.$field.']',$value)); + } } unset($operations); $oper_buttons = array(); - if(!isset($_REQUEST['new_operation'])) - { + if(!isset($_REQUEST['new_operation'])){ $oper_buttons[] = new CButton('new_operation',S_NEW); } - if($oper_el->ItemsCount() > 0 ) - { - $oper_buttons[] =new CButton('del_operation',S_DELETE_SELECTED); + if($tblOper->ItemsCount() > 0 ){ + $oper_buttons[] = new CButton('del_operation',S_DELETE_SELECTED); } + $td = new CCol($oper_buttons); + $td->AddOption('colspan',$esc_period?6:3); + $td->AddOption('style','text-align: right;'); + + $tblOper->SetFooter($td); // end of condition list preparation + return $tblOper; + } + + function get_act_new_oper_form($action=null){ + $tblOper = new CTableInfo(); + $tblOper->AddOption('style','background-color: #CCC;'); - $frmAction->AddRow(S_OPERATIONS, array($oper_el, $oper_buttons)); - unset($oper_el, $oper_buttons); + if(isset($_REQUEST['actionid']) && empty($action)){ + $action = get_action_by_actionid($_REQUEST['actionid']); + } - if(isset($_REQUEST['new_operation'])) - { - unset($update_mode); - if(isset($new_operation['id'])) - { - $frmAction->AddVar('new_operation[id]', $new_operation['id']); - $update_mode = true; - } + $operations = get_request("operations",array()); + + if(isset($_REQUEST['actionid']) && !isset($_REQUEST['form_refresh'])){ + $eventsource = $action['eventsource']; + } + else{ + $eventsource = get_request('eventsource'); + } - $tblNewOperation = new CTable(null,'nowrap'); + $allowed_operations = get_operations_by_eventsource($eventsource); + + /* init new_operation variable */ + $new_operation = get_request('new_operation', array()); + if( !is_array($new_operation) ) $new_operation = array(); - $cmbOpType = new CComboBox('new_operation[operationtype]', $new_operation['operationtype'],'submit()'); - foreach($allowed_operations as $oper) - $cmbOpType->AddItem($oper, operation_type2str($oper)); - $tblNewOperation->AddRow(array(S_OPERATION_TYPE, $cmbOpType)); + if(!isset($new_operation['operationtype'])) $new_operation['operationtype'] = OPERATION_TYPE_MESSAGE; + if(!isset($new_operation['object'])) $new_operation['object'] = OPERATION_OBJECT_GROUP; + if(!isset($new_operation['objectid'])) $new_operation['objectid'] = 0; + if(!isset($new_operation['shortdata'])) $new_operation['shortdata'] = '{TRIGGER.NAME}: {STATUS}'; + if(!isset($new_operation['longdata'])) $new_operation['longdata'] = '{TRIGGER.NAME}: {STATUS}'; + if(!isset($new_operation['esc_step_from'])) $new_operation['esc_step_from'] = 1; + if(!isset($new_operation['esc_step_to'])) $new_operation['esc_step_to'] = 1; + if(!isset($new_operation['esc_period'])) $new_operation['esc_period'] = 0; + + if(!isset($new_operation['evaltype'])) $new_operation['evaltype'] = 0; + if(!isset($new_operation['opconditions'])) $new_operation['opconditions'] = array(); + if(!isset($new_operation['default_msg'])) $new_operation['default_msg'] = 0; + - switch($new_operation['operationtype']) - { - case OPERATION_TYPE_MESSAGE: - if( $new_operation['object'] == OPERATION_OBJECT_GROUP) - { - $object_srctbl = 'usrgrp'; - $object_srcfld1 = 'usrgrpid'; - $object_name = get_group_by_usrgrpid($new_operation['objectid']); - $display_name = 'name'; - } - else - { - $object_srctbl = 'users'; - $object_srcfld1 = 'userid'; - $object_name = get_user_by_userid($new_operation['objectid']); - $display_name = 'alias'; - } + unset($update_mode); + + $evaltype = $new_operation['evaltype']; + + if(isset($new_operation['id'])){ + $tblOper->AddItem(new CVar('new_operation[id]', $new_operation['id'])); + $update_mode = true; + } - $frmAction->AddVar('new_operation[objectid]', $new_operation['objectid']); - - if($object_name) $object_name = $object_name[$display_name]; - - $cmbObject = new CComboBox('new_operation[object]', $new_operation['object'],'submit()'); - $cmbObject->AddItem(OPERATION_OBJECT_USER,S_SINGLE_USER); - $cmbObject->AddItem(OPERATION_OBJECT_GROUP,S_USER_GROUP); - - $tblNewOperation->AddRow(array(S_SEND_MESSAGE_TO, array( - $cmbObject, - new CTextBox('object_name', $object_name, 40, 'yes'), - new CButton('select_object',S_SELECT, - 'return PopUp("popup.php?dstfrm='.$frmAction->GetName(). - '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. - '&srctbl='.$object_srctbl.'&srcfld1='.$object_srcfld1.'&srcfld2='.$display_name. - '",450,450)', - 'T') - ))); - - $tblNewOperation->AddRow(array(S_SUBJECT, - new CTextBox('new_operation[shortdata]', $new_operation['shortdata'],77))); - $tblNewOperation->AddRow(array(S_MESSAGE, - new CTextArea('new_operation[longdata]', $new_operation['longdata'],77,7))); - break; - case OPERATION_TYPE_COMMAND: - $frmAction->AddVar('new_operation[object]',0); - $frmAction->AddVar('new_operation[objectid]',0); - $frmAction->AddVar('new_operation[shortdata]',''); + $tblNewOperation = new CTable(null,'nowrap'); + + if(isset($_REQUEST['esc_period']) && ($_REQUEST['esc_period']>0)){ + $tblStep = new CTable(null,'nowrap'); + + $tblStep->AddRow(array(S_FROM, new CNumericBox('new_operation[esc_step_from]', $new_operation['esc_step_from'],5))); + $tblStep->AddRow(array( + S_TO, + new CCol(array( + new CNumericBox('new_operation[esc_step_to]', $new_operation['esc_step_to'],5), + ' [0-'.S_INFINITY.']')) + )); + + $tblStep->AddRow(array( + S_PERIOD, + new CCol(array( + new CNumericBox('new_operation[esc_period]', $new_operation['esc_period'],5), + ' [0-'.S_DEFAULT.']')) + )); - $tblNewOperation->AddRow(array(S_REMOTE_COMMAND, - new CTextArea('new_operation[longdata]', $new_operation['longdata'],77,7))); - break; - case OPERATION_TYPE_HOST_ADD: - $frmAction->AddVar('new_operation[object]',0); - $frmAction->AddVar('new_operation[objectid]',0); - $frmAction->AddVar('new_operation[shortdata]',''); - $frmAction->AddVar('new_operation[longdata]',''); - break; - case OPERATION_TYPE_HOST_REMOVE: - $frmAction->AddVar('new_operation[object]',0); - $frmAction->AddVar('new_operation[objectid]',0); - $frmAction->AddVar('new_operation[shortdata]',''); - $frmAction->AddVar('new_operation[longdata]',''); - break; - case OPERATION_TYPE_GROUP_ADD: - $frmAction->AddVar('new_operation[object]',0); - $frmAction->AddVar('new_operation[objectid]',$new_operation['objectid']); - $frmAction->AddVar('new_operation[shortdata]',''); - $frmAction->AddVar('new_operation[longdata]',''); + $tblNewOperation->AddRow(array(S_STEP,$tblStep)); + } + else{ + $tblOper->AddItem(new CVar('new_operation[esc_period]' , $new_operation['esc_period'])); + $tblOper->AddItem(new CVar('new_operation[esc_step_from]', $new_operation['esc_step_from'])); + $tblOper->AddItem(new CVar('new_operation[esc_step_to]', $new_operation['esc_step_to'])); + + $tblOper->AddItem(new CVar('new_operation[evaltype]', $new_operation['evaltype'])); + } + + $cmbOpType = new CComboBox('new_operation[operationtype]', $new_operation['operationtype'],'submit()'); + foreach($allowed_operations as $oper) + $cmbOpType->AddItem($oper, operation_type2str($oper)); + $tblNewOperation->AddRow(array(S_OPERATION_TYPE, $cmbOpType)); + + switch($new_operation['operationtype']){ + case OPERATION_TYPE_MESSAGE: + if( $new_operation['object'] == OPERATION_OBJECT_GROUP){ + $object_srctbl = 'usrgrp'; + $object_srcfld1 = 'usrgrpid'; + $object_name = get_group_by_usrgrpid($new_operation['objectid']); + $display_name = 'name'; + } + else{ + $object_srctbl = 'users'; + $object_srcfld1 = 'userid'; + $object_name = get_user_by_userid($new_operation['objectid']); + $display_name = 'alias'; + } - if($object_name= DBfetch(DBselect('select name FROM groups WHERE groupid='.$new_operation['objectid']))) - { - $object_name = $object_name['name']; - } - $tblNewOperation->AddRow(array(S_GROUP, array( - new CTextBox('object_name', $object_name, 40, 'yes'), - new CButton('select_object',S_SELECT, - 'return PopUp("popup.php?dstfrm='.$frmAction->GetName(). - '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. - '&srctbl=host_group&srcfld1=groupid&srcfld2=name'. - '",450,450)', - 'T') - ))); - break; - case OPERATION_TYPE_GROUP_REMOVE: - $frmAction->AddVar('new_operation[object]',0); - $frmAction->AddVar('new_operation[objectid]',$new_operation['objectid']); - $frmAction->AddVar('new_operation[shortdata]',''); - $frmAction->AddVar('new_operation[longdata]',''); + $tblOper->AddItem(new CVar('new_operation[objectid]', $new_operation['objectid'])); - if($object_name= DBfetch(DBselect('select name FROM groups WHERE groupid='.$new_operation['objectid']))) - { - $object_name = $object_name['name']; - } - $tblNewOperation->AddRow(array(S_GROUP, array( - new CTextBox('object_name', $object_name, 40, 'yes'), - new CButton('select_object',S_SELECT, - 'return PopUp("popup.php?dstfrm='.$frmAction->GetName(). - '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. - '&srctbl=host_group&srcfld1=groupid&srcfld2=name'. - '",450,450)', - 'T') - ))); - break; - case OPERATION_TYPE_TEMPLATE_ADD: - $frmAction->AddVar('new_operation[object]',0); - $frmAction->AddVar('new_operation[objectid]',$new_operation['objectid']); - $frmAction->AddVar('new_operation[shortdata]',''); - $frmAction->AddVar('new_operation[longdata]',''); - - if($object_name= DBfetch(DBselect('select host FROM hosts '. - ' WHERE status='.HOST_STATUS_TEMPLATE.' AND hostid='.$new_operation['objectid']))) - { - $object_name = $object_name['host']; - } - $tblNewOperation->AddRow(array(S_TEMPLATE, array( - new CTextBox('object_name', $object_name, 40, 'yes'), - new CButton('select_object',S_SELECT, - 'return PopUp("popup.php?dstfrm='.$frmAction->GetName(). - '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. - '&srctbl=host_templates&srcfld1=hostid&srcfld2=host'. - '",450,450)', - 'T') - ))); - break; - case OPERATION_TYPE_TEMPLATE_REMOVE: - $frmAction->AddVar('new_operation[object]',0); - $frmAction->AddVar('new_operation[objectid]',$new_operation['objectid']); - $frmAction->AddVar('new_operation[shortdata]',''); - $frmAction->AddVar('new_operation[longdata]',''); - - if($object_name= DBfetch(DBselect('select host FROM hosts '. - ' WHERE status='.HOST_STATUS_TEMPLATE.' AND hostid='.$new_operation['objectid']))) - { - $object_name = $object_name['host']; - } - $tblNewOperation->AddRow(array(S_TEMPLATE, array( - new CTextBox('object_name', $object_name, 40, 'yes'), - new CButton('select_object',S_SELECT, - 'return PopUp("popup.php?dstfrm='.$frmAction->GetName(). - '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. - '&srctbl=host_templates&srcfld1=hostid&srcfld2=host'. - '",450,450)', - 'T') - ))); - break; - } + if($object_name) $object_name = $object_name[$display_name]; - $tblNewOperation->AddRow(new CCol(array( - new CButton('add_operation', isset($update_mode) ? S_SAVE : S_ADD ), - SPACE, - new CButton('cancel_new_operation',S_CANCEL) - ))); + $cmbObject = new CComboBox('new_operation[object]', $new_operation['object'],'submit()'); + $cmbObject->AddItem(OPERATION_OBJECT_USER,S_SINGLE_USER); + $cmbObject->AddItem(OPERATION_OBJECT_GROUP,S_USER_GROUP); - $frmAction->AddRow( - isset($update_mode) ? S_EDIT_OPERATION : S_NEW_OPERATION, - $tblNewOperation, - isset($update_mode) ? 'edit' : 'new' - ); + $tblNewOperation->AddRow(array(S_SEND_MESSAGE_TO, array( + $cmbObject, + new CTextBox('object_name', $object_name, 40, 'yes'), + new CButton('select_object',S_SELECT, + 'return PopUp("popup.php?dstfrm='.S_ACTION. + '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. + '&srctbl='.$object_srctbl.'&srcfld1='.$object_srcfld1.'&srcfld2='.$display_name. + '",450,450)', + 'T') + ))); + + $tblNewOperation->AddRow(array(S_DEFAULT_MESSAGE, new CCheckBox('new_operation[default_msg]', $new_operation['default_msg'], 'javascript: submit();',1))); + + if(!$new_operation['default_msg']){ + $tblNewOperation->AddRow(array(S_SUBJECT, new CTextBox('new_operation[shortdata]', $new_operation['shortdata'], 77))); + $tblNewOperation->AddRow(array(S_MESSAGE, new CTextArea('new_operation[longdata]', $new_operation['longdata'],77,7))); + } + else{ + $tblOper->AddItem(new CVar('new_operation[shortdata]','')); + $tblOper->AddItem(new CVar('new_operation[longdata]','')); + } + break; + case OPERATION_TYPE_COMMAND: + $tblOper->AddItem(new CVar('new_operation[object]',0)); + $tblOper->AddItem(new CVar('new_operation[objectid]',0)); + $tblOper->AddItem(new CVar('new_operation[shortdata]','')); + + $tblNewOperation->AddRow(array(S_REMOTE_COMMAND, + new CTextArea('new_operation[longdata]', $new_operation['longdata'],77,7))); + break; + case OPERATION_TYPE_HOST_ADD: + $tblOper->AddItem(new CVar('new_operation[object]',0)); + $tblOper->AddItem(new CVar('new_operation[objectid]',0)); + $tblOper->AddItem(new CVar('new_operation[shortdata]','')); + $tblOper->AddItem(new CVar('new_operation[longdata]','')); + break; + case OPERATION_TYPE_HOST_REMOVE: + $tblOper->AddItem(new CVar('new_operation[object]',0)); + $tblOper->AddItem(new CVar('new_operation[objectid]',0)); + $tblOper->AddItem(new CVar('new_operation[shortdata]','')); + $tblOper->AddItem(new CVar('new_operation[longdata]','')); + break; + case OPERATION_TYPE_GROUP_ADD: + $tblOper->AddItem(new CVar('new_operation[object]',0)); + $tblOper->AddItem(new CVar('new_operation[objectid]',$new_operation['objectid'])); + $tblOper->AddItem(new CVar('new_operation[shortdata]','')); + $tblOper->AddItem(new CVar('new_operation[longdata]','')); + + if($object_name= DBfetch(DBselect('select name FROM groups WHERE groupid='.$new_operation['objectid']))){ + $object_name = $object_name['name']; + } + $tblNewOperation->AddRow(array(S_GROUP, array( + new CTextBox('object_name', $object_name, 40, 'yes'), + new CButton('select_object',S_SELECT, + 'return PopUp("popup.php?dstfrm='.S_ACTION. + '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. + '&srctbl=host_group&srcfld1=groupid&srcfld2=name'. + '",450,450)', + 'T') + ))); + break; + case OPERATION_TYPE_GROUP_REMOVE: + $tblOper->AddItem(new CVar('new_operation[object]',0)); + $tblOper->AddItem(new CVar('new_operation[objectid]',$new_operation['objectid'])); + $tblOper->AddItem(new CVar('new_operation[shortdata]','')); + $tblOper->AddItem(new CVar('new_operation[longdata]','')); + + if($object_name= DBfetch(DBselect('select name FROM groups WHERE groupid='.$new_operation['objectid']))){ + $object_name = $object_name['name']; + } + $tblNewOperation->AddRow(array(S_GROUP, array( + new CTextBox('object_name', $object_name, 40, 'yes'), + new CButton('select_object',S_SELECT, + 'return PopUp("popup.php?dstfrm='.S_ACTION. + '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. + '&srctbl=host_group&srcfld1=groupid&srcfld2=name'. + '",450,450)', + 'T') + ))); + break; + case OPERATION_TYPE_TEMPLATE_ADD: + $tblOper->AddItem(new CVar('new_operation[object]',0)); + $tblOper->AddItem(new CVar('new_operation[objectid]',$new_operation['objectid'])); + $tblOper->AddItem(new CVar('new_operation[shortdata]','')); + $tblOper->AddItem(new CVar('new_operation[longdata]','')); + + if($object_name= DBfetch(DBselect('SELECT host FROM hosts '. + ' WHERE status='.HOST_STATUS_TEMPLATE.' AND hostid='.$new_operation['objectid']))) + { + $object_name = $object_name['host']; + } + $tblNewOperation->AddRow(array(S_TEMPLATE, array( + new CTextBox('object_name', $object_name, 40, 'yes'), + new CButton('select_object',S_SELECT, + 'return PopUp("popup.php?dstfrm='.S_ACTION. + '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. + '&srctbl=host_templates&srcfld1=hostid&srcfld2=host'. + '",450,450)', + 'T') + ))); + break; + case OPERATION_TYPE_TEMPLATE_REMOVE: + $tblOper->AddItem(new CVar('new_operation[object]',0)); + $tblOper->AddItem(new CVar('new_operation[objectid]',$new_operation['objectid'])); + $tblOper->AddItem(new CVar('new_operation[shortdata]','')); + $tblOper->AddItem(new CVar('new_operation[longdata]','')); + + if($object_name= DBfetch(DBselect('SELECT host FROM hosts '. + ' WHERE status='.HOST_STATUS_TEMPLATE.' AND hostid='.$new_operation['objectid']))) + { + $object_name = $object_name['host']; + } + $tblNewOperation->AddRow(array(S_TEMPLATE, array( + new CTextBox('object_name', $object_name, 40, 'yes'), + new CButton('select_object',S_SELECT, + 'return PopUp("popup.php?dstfrm='.S_ACTION. + '&dstfld1=new_operation%5Bobjectid%5D&dstfld2=object_name'. + '&srctbl=host_templates&srcfld1=hostid&srcfld2=host'. + '",450,450)', + 'T') + ))); + break; } - $cmbStatus = new CComboBox('status',$status); - $cmbStatus->AddItem(ACTION_STATUS_ENABLED,S_ENABLED); - $cmbStatus->AddItem(ACTION_STATUS_DISABLED,S_DISABLED); - $frmAction->AddRow(S_STATUS, $cmbStatus); +// new Operation conditions + if(isset($_REQUEST['esc_period']) && ($_REQUEST['esc_period']>0)){ + $tblCond = new CTable(); - $frmAction->AddItemToBottomRow(new CButton('save',S_SAVE)); - if(isset($_REQUEST["actionid"])) - { - $frmAction->AddItemToBottomRow(SPACE); - $frmAction->AddItemToBottomRow(new CButton('clone',S_CLONE)); - $frmAction->AddItemToBottomRow(SPACE); - $frmAction->AddItemToBottomRow(new CButtonDelete(S_DELETE_SELECTED_ACTION_Q, - url_param('form').url_param('eventsource'). - url_param('actionid'))); + $opconditions = $new_operation['opconditions']; + $allowed_opconditions = get_opconditions_by_eventsource($eventsource); + +// show opcondition LIST + zbx_rksort($opconditions); + + /* group opconditions by type */ + $grouped_opconditions = array(); + $cond_el = new CTable(S_NO_CONDITIONS_DEFINED); + $i=0; + + foreach($opconditions as $val){ + if( !isset($val['conditiontype']) ) $val['conditiontype'] = 0; + if( !isset($val['operator']) ) $val['operator'] = 0; + if( !isset($val['value']) ) $val['value'] = 0; + + if( !str_in_array($val["conditiontype"], $allowed_opconditions) ) continue; + + $label = chr(ord('A') + $i); + $cond_el->AddRow(array('('.$label.')',array( + new CCheckBox("g_opconditionid[]", 'no', null,$i), + get_condition_desc($val["conditiontype"], $val["operator"], $val["value"])) + )); + $tblCond->AddItem(new CVar("new_operation[opconditions][$i][conditiontype]", $val["conditiontype"])); + $tblCond->AddItem(new CVar("new_operation[opconditions][$i][operator]", $val["operator"])); + $tblCond->AddItem(new CVar("new_operation[opconditions][$i][value]", $val["value"])); + + $grouped_opconditions[$val["conditiontype"]][] = $label; + + $i++; + } + unset($opconditions); + + $cond_buttons = array(); + + if(!isset($_REQUEST['new_opcondition'])){ + $cond_buttons[] = new CButton('new_opcondition',S_NEW); + } + + if($cond_el->ItemsCount() > 0){ + if($cond_el->ItemsCount() > 1){ + + /* prepare opcondition calcuation type selector */ + switch($evaltype){ + case ACTION_EVAL_TYPE_AND: $group_op = $glog_op = S_AND; break; + case ACTION_EVAL_TYPE_OR: $group_op = $glog_op = S_OR; break; + default: $group_op = S_OR; $glog_op = S_AND; break; + } + + foreach($grouped_opconditions as $id => $val) + $grouped_opconditions[$id] = '('.implode(' '.$group_op.' ', $val).')'; + + $grouped_opconditions = implode(' '.$glog_op.' ', $grouped_opconditions); + + $cmb_calc_type = new CComboBox('new_operation[evaltype]', $evaltype, 'submit()'); + $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_AND_OR, S_AND_OR_BIG); + $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_AND, S_AND_BIG); + $cmb_calc_type->AddItem(ACTION_EVAL_TYPE_OR, S_OR_BIG); + + $tblNewOperation->AddRow(array(S_TYPE_OF_CALCULATION, new CCol(array($cmb_calc_type,new CTextBox('preview', $grouped_opconditions, 60,'yes'))))); + + unset($cmb_calc_type, $group_op, $glog_op); + /* end of calcuation type selector */ + } + else{ + $tblCond->AddItem(new CVar('new_operation[evaltype]', ACTION_EVAL_TYPE_AND_OR)); + } + $cond_buttons[] = new CButton('del_opcondition',S_DELETE_SELECTED); + } + else{ + $tblCond->AddItem(new CVar('new_operation[evaltype]', ACTION_EVAL_TYPE_AND_OR)); + } + + $tblCond->AddRow($cond_el); + $tblCond->AddRow(new CCol($cond_buttons)); + +// end of opcondition LIST + $tblNewOperation->AddRow(array(S_CONDITIONS, $tblCond)); + unset($grouped_opconditions,$cond_el,$cond_buttons,$tblCond); } - $frmAction->AddItemToBottomRow(SPACE); - $frmAction->AddItemToBottomRow(new CButtonCancel(url_param("actiontype"))); + + $tblOper->AddRow($tblNewOperation); + + $td = new CCol(array( + new CButton('add_operation', isset($update_mode)?S_SAVE:S_ADD), + SPACE, + new CButton('cancel_new_operation',S_CANCEL) + )); + + $td->AddOption('colspan','3'); + $td->AddOption('style','text-align: right;'); + + $tblOper->SetFooter($td); + + return $tblOper; + } - $frmAction->Show(); + function get_oper_new_cond_form($action=null){ + $tblCond = new CTable('','nowrap'); + $tblCond->AddOption('style','background-color: #CCC;'); + + if(isset($_REQUEST['actionid']) && empty($action)){ + $action = get_action_by_actionid($_REQUEST['actionid']); + } + + if(isset($_REQUEST['actionid']) && !isset($_REQUEST['form_refresh'])){ + $eventsource = $action['eventsource']; + $evaltype = $action['evaltype']; + } + else{ + $evaltype = get_request('evaltype'); + $eventsource = get_request('eventsource'); + } + + $allowed_conditions = get_opconditions_by_eventsource($eventsource); + /* init new_condition variable */ + $new_opcondition = get_request('new_opcondition', array()); + if( !is_array($new_opcondition) ) $new_opcondition = array(); + + if( !isset($new_opcondition['conditiontype']) ) $new_opcondition['conditiontype'] = CONDITION_TYPE_EVENT_ACKNOWLEDGED; + if( !isset($new_opcondition['operator'])) $new_opcondition['operator'] = CONDITION_OPERATOR_LIKE; + if( !isset($new_opcondition['value']) ) $new_opcondition['value'] = 0; + + if( !str_in_array($new_opcondition['conditiontype'], $allowed_conditions) ) + $new_opcondition['conditiontype'] = $allowed_conditions[0]; + +// NEW CONDITION + $rowCondition=array(); + +// add condition type + $cmbCondType = new CComboBox('new_opcondition[conditiontype]',$new_opcondition['conditiontype'],'submit()'); + foreach($allowed_conditions as $cond) + $cmbCondType->AddItem($cond, condition_type2str($cond)); + + array_push($rowCondition,$cmbCondType); + +// add condition operation + $cmbCondOp = new CComboBox('new_opcondition[operator]'); + foreach(get_operators_by_conditiontype($new_opcondition['conditiontype']) as $op) + $cmbCondOp->AddItem($op, condition_operator2str($op)); + + array_push($rowCondition,$cmbCondOp); + +// add condition value + switch($new_opcondition['conditiontype']){ + case CONDITION_TYPE_EVENT_ACKNOWLEDGED: + $cmbCondVal = new CComboBox('new_opcondition[value]',$new_opcondition['value']); + $cmbCondVal->AddItem(0, S_NOT_ACK); + $cmbCondVal->AddItem(1, S_ACK); + $rowCondition[] = $cmbCondVal; + break; + } + + $tblCond->AddRow($rowCondition); + + $tblConditions = new CTableInfo(); + $tblConditions->AddOption('style','background-color: #CCC;'); + + $tblConditions->AddRow($tblCond); + + $td = new CCol(array(new CButton('add_opcondition',S_ADD),new CButton('cancel_new_opcondition',S_CANCEL))); + $td->AddOption('colspan','3'); + $td->AddOption('style','text-align: right;'); + + $tblConditions->SetFooter($td); + unset($grouped_conditions,$cond_el,$cond_buttons); +// end of NEW CONDITION + return $tblConditions; } - function insert_media_type_form() - { - global $_REQUEST; + function insert_media_type_form(){ $type = get_request("type",0); $description = get_request("description",""); @@ -3359,8 +3737,7 @@ $username = get_request("username","user@server"); $password = get_request("password",""); - if(isset($_REQUEST["mediatypeid"]) && !isset($_REQUEST["form_refresh"])) - { + if(isset($_REQUEST["mediatypeid"]) && !isset($_REQUEST["form_refresh"])){ $result = DBselect("select * FROM media_type WHERE mediatypeid=".$_REQUEST["mediatypeid"]); $row = DBfetch($result); @@ -3379,8 +3756,7 @@ $frmMeadia = new CFormTable(S_MEDIA); $frmMeadia->SetHelp("web.config.medias.php"); - if(isset($_REQUEST["mediatypeid"])) - { + if(isset($_REQUEST["mediatypeid"])){ $frmMeadia->AddVar("mediatypeid",$_REQUEST["mediatypeid"]); } |