PageRenderTime 26ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/zabbix-2.0.1/frontends/php/acknow.php

#
PHP | 217 lines | 177 code | 19 blank | 21 comment | 35 complexity | f95d9a3bf4409903ccc93965727d0633 MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0
  1. <?php
  2. /*
  3. ** Zabbix
  4. ** Copyright (C) 2000-2011 Zabbix SIA
  5. **
  6. ** This program is free software; you can redistribute it and/or modify
  7. ** it under the terms of the GNU General Public License as published by
  8. ** the Free Software Foundation; either version 2 of the License, or
  9. ** (at your option) any later version.
  10. **
  11. ** This program is distributed in the hope that it will be useful,
  12. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. ** GNU General Public License for more details.
  15. **
  16. ** You should have received a copy of the GNU General Public License
  17. ** along with this program; if not, write to the Free Software
  18. ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. **/
  20. ?>
  21. <?php
  22. require_once dirname(__FILE__).'/include/config.inc.php';
  23. require_once dirname(__FILE__).'/include/acknow.inc.php';
  24. require_once dirname(__FILE__).'/include/triggers.inc.php';
  25. require_once dirname(__FILE__).'/include/forms.inc.php';
  26. $page['title'] = _('Acknowledges');
  27. $page['file'] = 'acknow.php';
  28. $page['hist_arg'] = array('eventid');
  29. ob_start();
  30. require_once dirname(__FILE__).'/include/page_header.php';
  31. ?>
  32. <?php
  33. $_REQUEST['go'] = get_request('go', null);
  34. $bulk = ($_REQUEST['go'] == 'bulkacknowledge');
  35. // VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION
  36. $fields = array(
  37. 'eventid' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null),
  38. 'triggers' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null),
  39. 'triggerid' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null),
  40. 'screenid' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null),
  41. 'events' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null),
  42. 'message' => array(T_ZBX_STR, O_OPT, null, $bulk ? null : NOT_EMPTY, 'isset({save})||isset({saveandreturn})'),
  43. 'backurl' => array(T_ZBX_STR, O_OPT, null, null, null),
  44. // actions
  45. 'go' => array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null),
  46. // form
  47. 'saveandreturn' => array(T_ZBX_STR, O_OPT, P_ACT|P_SYS, null, null),
  48. 'save' => array(T_ZBX_STR, O_OPT, P_ACT|P_SYS, null, null),
  49. 'cancel' => array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null)
  50. );
  51. check_fields($fields);
  52. $_REQUEST['backurl'] = get_request('backurl', 'tr_status.php');
  53. if (isset($_REQUEST['cancel'])) {
  54. ob_end_clean();
  55. if ($_REQUEST['backurl'] == 'tr_events.php') {
  56. redirect($_REQUEST['backurl'].'?eventid='.$_REQUEST['eventid'].'&triggerid='.$_REQUEST['triggerid']);
  57. }
  58. elseif ($_REQUEST['backurl'] == 'screenedit.php') {
  59. redirect($_REQUEST['backurl'].'?screenid='.$_REQUEST['screenid']);
  60. }
  61. elseif ($_REQUEST['backurl'] == 'screens.php') {
  62. redirect($_REQUEST['backurl'].'?elementid='.$_REQUEST['screenid']);
  63. }
  64. else {
  65. redirect($_REQUEST['backurl']);
  66. }
  67. }
  68. if (!isset($_REQUEST['events']) && !isset($_REQUEST['eventid']) && !isset($_REQUEST['triggers'])) {
  69. show_message(_('No events to acknowledge'));
  70. require_once dirname(__FILE__).'/include/page_footer.php';
  71. }
  72. $bulk = !isset($_REQUEST['eventid']);
  73. $_REQUEST['backurl'] = get_request('backurl', 'tr_status.php');
  74. ?>
  75. <?php
  76. if (!$bulk) {
  77. $options = array(
  78. 'output' => API_OUTPUT_EXTEND,
  79. 'selectTriggers' => API_OUTPUT_EXTEND,
  80. 'eventids' => $_REQUEST['eventid']
  81. );
  82. $events = API::Event()->get($options);
  83. $event = reset($events);
  84. $event_trigger = reset($event['triggers']);
  85. $event_acknowledged = $event['acknowledged'];
  86. $_REQUEST['events'] = $_REQUEST['eventid'];
  87. }
  88. if (isset($_REQUEST['save']) || isset($_REQUEST['saveandreturn'])) {
  89. if ($bulk) {
  90. $_REQUEST['message'] .= $_REQUEST['message'] == '' ? '' : "\n\r" . _('----[BULK ACKNOWLEDGE]----');
  91. }
  92. if (isset($_REQUEST['events'])) {
  93. $_REQUEST['events'] = zbx_toObject($_REQUEST['events'], 'eventid');
  94. }
  95. elseif (isset($_REQUEST['triggers'])) {
  96. $options = array(
  97. 'output' => API_OUTPUT_SHORTEN,
  98. 'acknowledged' => 0,
  99. 'triggerids' => $_REQUEST['triggers'],
  100. 'filter'=> array('value_changed' => TRIGGER_VALUE_CHANGED_YES)
  101. );
  102. $_REQUEST['events'] = API::Event()->get($options);
  103. }
  104. $eventsData = array(
  105. 'eventids' => zbx_objectValues($_REQUEST['events'], 'eventid'),
  106. 'message' => $_REQUEST['message']
  107. );
  108. $result = API::Event()->acknowledge($eventsData);
  109. show_messages($result, _('Event acknowledged'), _('Cannot acknowledge event'));
  110. if ($result) {
  111. $event_acknowledged = true;
  112. add_audit(AUDIT_ACTION_UPDATE, AUDIT_RESOURCE_TRIGGER, _('Acknowledge added').
  113. ' ['.($bulk) ? ' BULK ACKNOWLEDGE ' : (expand_trigger_description_by_data($event_trigger)).']'.
  114. ' ['.$_REQUEST['message'].']');
  115. }
  116. if (isset($_REQUEST['saveandreturn'])) {
  117. ob_end_clean();
  118. if ($_REQUEST['backurl'] == 'tr_events.php') {
  119. redirect($_REQUEST['backurl'].'?eventid='.$_REQUEST['eventid'].'&triggerid='.$_REQUEST['triggerid']);
  120. }
  121. elseif ($_REQUEST['backurl'] == 'screenedit.php') {
  122. redirect($_REQUEST['backurl'].'?screenid='.$_REQUEST['screenid']);
  123. }
  124. elseif ($_REQUEST['backurl'] == 'screens.php') {
  125. redirect($_REQUEST['backurl'].'?elementid='.$_REQUEST['screenid']);
  126. }
  127. else {
  128. redirect($_REQUEST['backurl']);
  129. }
  130. }
  131. }
  132. ob_end_flush();
  133. ?>
  134. <?php
  135. $msg = $bulk ? ' BULK ACKNOWLEDGE ' : expand_trigger_description_by_data($event_trigger);
  136. show_table_header(array(_('ALARM ACKNOWLEDGES').': ', $msg));
  137. echo SBR;
  138. if ($bulk) {
  139. $title = _('Acknowledge alarm by');
  140. $btn_txt2 = _('Acknowledge and return');
  141. }
  142. else {
  143. $db_acks = get_acknowledges_by_eventid($_REQUEST['eventid']);
  144. if ($db_acks) {
  145. $table = new CTable(null, 'ack_msgs');
  146. $table->setAlign('center');
  147. while ($db_ack = DBfetch($db_acks)) {
  148. $table->addRow(array(
  149. new CCol($db_ack['alias'], 'user'),
  150. new CCol(zbx_date2str(_('d M Y H:i:s'), $db_ack['clock']), 'time')),
  151. 'title'
  152. );
  153. $msgCol = new CCol(zbx_nl2br($db_ack['message']));
  154. $msgCol->setColspan(2);
  155. $table->addRow($msgCol, 'msg');
  156. }
  157. $table->Show();
  158. }
  159. if ($event_acknowledged) {
  160. $title = _('Add comment by');
  161. $btn_txt = _('Save');
  162. $btn_txt2 = _('Save and return');
  163. }
  164. else {
  165. $title = _('Acknowledge alarm by');
  166. $btn_txt = _('Acknowledge');
  167. $btn_txt2 = _('Acknowledge and return');
  168. }
  169. }
  170. $frmMsg = new CFormTable($title.' "'.$USER_DETAILS['alias'].'"');
  171. $frmMsg->addVar('backurl', $_REQUEST['backurl']);
  172. if ($_REQUEST['backurl'] == 'tr_events.php') {
  173. $frmMsg->addVar('eventid', $_REQUEST['eventid']);
  174. $frmMsg->addVar('triggerid', $_REQUEST['triggerid']);
  175. }
  176. elseif ($_REQUEST['backurl'] == 'screenedit.php' || $_REQUEST['backurl'] == 'screens.php') {
  177. $frmMsg->addVar('screenid', $_REQUEST['screenid']);
  178. }
  179. if (isset($_REQUEST['eventid'])) {
  180. $frmMsg->addVar('eventid', $_REQUEST['eventid']);
  181. }
  182. elseif (isset($_REQUEST['triggers'])) {
  183. foreach ($_REQUEST['triggers'] as $triggerid) {
  184. $frmMsg->addVar('triggers['.$triggerid.']', $triggerid);
  185. }
  186. }
  187. elseif (isset($_REQUEST['events'])) {
  188. foreach ($_REQUEST['events'] as $eventid) {
  189. $frmMsg->addVar('events['.$eventid.']', $eventid);
  190. }
  191. }
  192. $frmMsg->addRow(_('Message'), new CTextArea('message', '', ZBX_TEXTAREA_STANDARD_ROWS, ZBX_TEXTAREA_BIG_WIDTH));
  193. $frmMsg->addItemToBottomRow(new CSubmit('saveandreturn', $btn_txt2));
  194. $bulk ? '' : $frmMsg->addItemToBottomRow(new CSubmit('save', $btn_txt));
  195. $frmMsg->addItemToBottomRow(new CButtonCancel(url_param('backurl').url_param('eventid').url_param('triggerid').url_param('screenid')));
  196. $frmMsg->show(false);
  197. require_once dirname(__FILE__).'/include/page_footer.php';
  198. ?>