Deprecated: Assigning the return value of new by reference is deprecated in /home/bluestat/public_html/source/index.php on line 477
Bugdar - Blob - ViewGit - Blue Static
<?php
/*=====================================================================*\
|| ###################################################################
|| # Bugdar
|| # Copyright (c)2004-2009 Blue Static
|| #
|| # This program is free software; you can redistribute it and/or modify
|| # it under the terms of the GNU General Public License as published by
|| # the Free Software Foundation; version 2 of the License.
|| #
|| # This program is distributed in the hope that it will be useful, but
|| # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|| # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|| # more details.
|| #
|| # You should have received a copy of the GNU General Public License along
|| # with this program; if not, write to the Free Software Foundation, Inc.,
|| # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|| ###################################################################
\*=====================================================================*/

require_once('./global.php');
require_once('./includes/api_automation.php');

APIError(array(new API_Error_Handler($admin), 'admin_error'));

NavLinks::fieldsPages();
$navigator->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<div class=\"smallfont\">$action[description]</div>", "<a href=\"automation.php?do=edit&amp;actionid=$action[actionid]\">[" . T('Edit') . "]</a> <a href=\"automation.php?do=delete&amp;actionid=$action[actionid]\">[" . T('Delete') . "]</a>");
	}

	$admin->table_end();

	$admin->page_end();
}

?>