set_focus('tab', 'fields', null); if (!can_perform('canadminbugs')) { admin_login(); } // ################################################################### if (empty($_REQUEST['do'])) { $_REQUEST['do'] = 'modify'; } // ################################################################### if ($_REQUEST['do'] == 'kill') { $action = new AutomationAPI(); $action->set('actionid', $input->in['actionid']); $action->set_condition(); $action->delete(); $admin->redirect('automation.php?do=modify'); } // ################################################################### if ($_REQUEST['do'] == 'delete') { $admin->page_confirm(T('Are you sure you want to delete this automation?'), 'automation.php', 'kill', array('actionid' => $input->in['actionid'])); } // ################################################################### if ($_POST['do'] == 'insert' OR $_POST['do'] == 'update') { $deltas = array('builtin' => array(), 'custom' => array()); if (is_array($input->in['fields'])) { foreach ($input->in['fields'] AS $key => $value) { if (!empty($value) AND $value != -1 AND !is_array($value)) { $deltas['builtin']["$key"] = $value; } } } if (is_array($input->in['fields']['custom'])) { foreach ($input->in['fields']['custom'] AS $key => $value) { if ($value != '' AND $value != -1) { $deltas['custom']["$key"] = $value; } } } $action = new AutomationAPI(); $action->set('name', $input->in['name']); $action->set('description', $input->in['description']); $action->set('fieldchanges', $deltas); $action->set('comment', $input->in['comment']); if ($_POST['do'] == 'insert') { $action->insert(); $admin->redirect('automation.php'); } else { $action->set('actionid', $input->in['actionid']); $action->set_condition(); $action->update(); $admin->redirect('automation.php'); } } // ################################################################### if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit') { $add = ($_REQUEST['do'] == 'add'); $edit = !$add; if ($edit) { NavLinks::automationsEdit($input->in['actionid']); $navigator->set_focus('link', 'fields-pages-automations', 'fields-pages'); $action = new AutomationAPI(); $action->set('actionid', $input->in['actionid']); $action->set_condition(); $action->fetch(); $action->record['fields'] = unserialize($action->record['fieldchanges']); } else { NavLinks::automationsAdd(); $navigator->set_focus('link', 'automations-add', 'automations'); } $admin->page_start(($add ? T('New Automation') : T('Edit Automation'))); $admin->form_start('automation.php', ($add ? 'insert' : 'update')); if ($edit) { $admin->form_hidden_field('actionid', $action->record['actionid']); } $admin->table_start(); $admin->table_head(($add ? T('New Automation') : T('Edit Automation'))); $admin->row_input(T('Name'), 'name', $action->record['name']); $admin->row_textarea(T('Description'), 'description', $action->record['description']); $admin->row_textarea(T('Add Comment'), 'comment', $action->record['comment']); $admin->row_span(T('Field Changes'), 'thead', 'center'); // ------------------------------------------------------------------- // built-in fields construct_datastore_select('severity', 'severity', 'severityid', $action->record['fields']['builtin']['severity'], true, true); $admin->row_list(T('Severity'), 'fields[severity]'); construct_datastore_select('priority', 'priority', 'priorityid', $action->record['fields']['builtin']['priority'], true, true); $admin->row_list(T('Priority'), 'fields[priority]'); construct_datastore_select('status', 'status', 'statusid', $action->record['fields']['builtin']['status'], true, true); $admin->row_list(T('Status'), 'fields[status]'); construct_datastore_select('resolution', 'resolution', 'resolutionid', $action->record['fields']['builtin']['resolution'], true, true); $admin->row_list(T('Resolution'), 'fields[resolution]'); $admin->row_span('', 'tcat', 'center'); // ------------------------------------------------------------------- // custom fields $fields_fetch = $db->query("SELECT * FROM " . TABLE_PREFIX . "bugfield ORDER BY fieldid ASC"); foreach ($fields_fetch as $field) { switch ($field['type']) { case 'input_text': $admin->row_input($field['name'], "fields[custom][$field[fieldid]]", $action->record['fields']['custom']["$field[fieldid]"]); break; case 'input_checkbox': $admin->list_item('', -1, (!$action->record['fields']['custom']["$field[fieldid]"] OR $action->record['fields']['custom']["$field[fieldid]"] == -1)); $admin->list_item(T('Checked'), 1, ($action->record['fields']['custom']["$field[fieldid]"] == 1)); $admin->list_item(T('Un-Checked'), 0, (isset($action->record['fields']['custom']["$field[fieldid]"]) AND $action->record['fields']['custom']["$field[fieldid]"] == 0)); $admin->row_list($field['name'], "fields[custom][$field[fieldid]]"); break; case 'select_single': $selectopts = unserialize($field['selects']); $admin->list_item('', -1, (!isset($action->record['fields']['custom']["$field[fieldid]"]) OR $action->record['fields']['custom']["$field[fieldid]"] == -1)); foreach ($selectopts AS $id => $select) { $admin->list_item(stripslashes($select), $id, (isset($action->record['fields']['custom']["$field[fieldid]"]) AND $action->record['fields']['custom']["$field[fieldid]"] == $id)); } $admin->row_list($field['name'], "fields[custom][$field[fieldid]]"); break; } } unset($select); $admin->row_submit(); $admin->table_end(); $admin->form_end(); $admin->page_end(); } // ################################################################### if ($_REQUEST['do'] == 'modify') { NavLinks::automationsAdd(); $navigator->set_focus('link', 'fields-pages-automations', 'fields-pages'); $admin->page_start(T('Automations')); $admin->table_start(); $admin->table_head(T('Automations')); $actions = $db->query("SELECT * FROM " . TABLE_PREFIX . "automation ORDER BY name ASC"); foreach ($actions as $action) { $admin->row_text($action['name'] . "\n
$action[description]
", "[" . T('Edit') . "] [" . T('Delete') . "]"); } $admin->table_end(); $admin->page_end(); } ?>