From 8286c7c37070c881b51241bcda56e5d68a8c60c5 Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Mon, 12 Jan 2015 09:11:51 -0600 Subject: [PATCH] filter: Move reject_ticket to become a filter action --- include/class.banlist.php | 10 +++++---- include/class.filter.php | 2 -- include/class.filter_action.php | 21 +++++++++++++++++++ include/class.forms.php | 17 ++++++++++----- include/staff/filter.inc.php | 10 --------- .../core/b26f29a6-00000000.cleanup.sql | 1 + .../streams/core/b26f29a6-00000000.patch.sql | 6 ++++++ setup/inc/streams/core/install-mysql.sql | 14 ------------- 8 files changed, 46 insertions(+), 35 deletions(-) diff --git a/include/class.banlist.php b/include/class.banlist.php index 939ae179b..ae7b89447 100644 --- a/include/class.banlist.php +++ b/include/class.banlist.php @@ -16,15 +16,15 @@ require_once "class.filter.php"; class Banlist { - + function add($email,$submitter='') { return self::getSystemBanList()->addRule('email','equal',$email); } - + function remove($email) { return self::getSystemBanList()->removeRule('email','equal',$email); } - + function isbanned($email) { return TicketFilter::isBanned($email); } @@ -49,7 +49,9 @@ class Banlist { 'name' => 'SYSTEM BAN LIST', 'isactive' => 1, 'match_all_rules' => false, - 'reject_ticket' => true, + 'actions' => array( + 'Nreject', + ), 'rules' => array(), 'notes' => __('Internal list for email banning. Do not remove') ), $errors); diff --git a/include/class.filter.php b/include/class.filter.php index bfd92285f..ad3f6c043 100644 --- a/include/class.filter.php +++ b/include/class.filter.php @@ -779,8 +779,6 @@ class TicketFilter { */ function apply(&$ticket) { foreach ($this->getMatchingFilterList() as $filter) { - if ($filter->rejectOnMatch()) - throw new RejectedException($filter, $ticket); $filter->apply($ticket, $this->vars); if ($filter->stopOnMatch()) break; } diff --git a/include/class.filter_action.php b/include/class.filter_action.php index 14b582a12..04dbcc16b 100644 --- a/include/class.filter_action.php +++ b/include/class.filter_action.php @@ -132,6 +132,27 @@ abstract class TriggerAction { abstract function getConfigurationOptions(); } +class FA_RejectTicket extends TriggerAction { + static $type = 'reject'; + static $name = /* trans */ 'Reject Ticket'; + + function apply(&$ticket, array $info) { + throw new RejectedException($filter, $ticket); + } + + function getConfigurationOptions() { + return array( + '' => new FreeTextField(array( + 'configuration' => array( + 'content' => sprintf('<span style="color:red"><b>%s</b></span>', + __('Reject Ticket')), + ) + )), + ); + } +} +FilterAction::register('FA_RejectTicket'); + class FA_UseReplyTo extends TriggerAction { static $type = 'replyto'; static $name = /* trans */ 'Reply-To Email'; diff --git a/include/class.forms.php b/include/class.forms.php index b101009c4..dfccf962c 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -2759,11 +2759,18 @@ class FreeTextField extends FormField { class FreeTextWidget extends Widget { function render($options=array()) { $config = $this->field->getConfiguration(); - ?><div class=""><h3><?php - echo Format::htmlchars($this->field->getLocal('label')); - ?></h3><em><?php - echo Format::htmlchars($this->field->getLocal('hint')); - ?></em><div><?php + ?><div class=""><?php + if ($label = $this->field->getLocal('label')) { ?> + <h3><?php + echo Format::htmlchars($label); + ?></h3><?php + } + if ($hint = $this->field->getLocal('hint')) { ?> + <em><?php + echo Format::htmlchars($hint); + ?></em><?php + } ?> + <div><?php echo Format::viewableImages($config['content']); ?></div> </div> <?php diff --git a/include/staff/filter.inc.php b/include/staff/filter.inc.php index 169b845e6..592289355 100644 --- a/include/staff/filter.inc.php +++ b/include/staff/filter.inc.php @@ -171,16 +171,6 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info); echo __('Can be overwridden by other filters depending on processing order.');?> </em> </th> </tr> - <tr> - <td width="180"> - <?php echo __('Reject Ticket');?>: - </td> - <td> - <input type="checkbox" name="reject_ticket" value="1" <?php echo $info['reject_ticket']?'checked="checked"':''; ?> > - <strong><font class="error"><?php echo __('Reject Ticket');?></font></strong> - <i class="help-tip icon-question-sign" href="#reject_ticket"></i> - </td> - </tr> </tbody> <tbody id="dynamic-actions"> <?php diff --git a/include/upgrader/streams/core/b26f29a6-00000000.cleanup.sql b/include/upgrader/streams/core/b26f29a6-00000000.cleanup.sql index d40218224..82a025fa7 100644 --- a/include/upgrader/streams/core/b26f29a6-00000000.cleanup.sql +++ b/include/upgrader/streams/core/b26f29a6-00000000.cleanup.sql @@ -1,4 +1,5 @@ ALTER TABLE `%TABLE_PREFIX%filter` + DROP `reject_ticket`, DROP `use_replyto_email`, DROP `disable_autoresponder`, DROP `canned_response_id`, diff --git a/include/upgrader/streams/core/b26f29a6-00000000.patch.sql b/include/upgrader/streams/core/b26f29a6-00000000.patch.sql index 821b2cbbe..aab8ff199 100644 --- a/include/upgrader/streams/core/b26f29a6-00000000.patch.sql +++ b/include/upgrader/streams/core/b26f29a6-00000000.patch.sql @@ -20,6 +20,12 @@ CREATE TABLE `%TABLE_PREFIX%filter_action` ( KEY `filter_id` (`filter_id`) ) DEFAULT CHARSET=utf8; +INSERT INTO `%TABLE_PREFIX%filter_action` + (`filter_id`, `type`, `configuration`, `updated`) + SELECT `id`, 'reject', '', `updated` + FROM `%TABLE_PREFIX%filter` + WHERE `reject_ticket` != 0; + INSERT INTO `%TABLE_PREFIX%filter_action` (`filter_id`, `type`, `configuration`, `updated`) SELECT `id`, 'replyto', '{"enable":true}', `updated` diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql index 669f071e1..d988d02b0 100644 --- a/setup/inc/streams/core/install-mysql.sql +++ b/setup/inc/streams/core/install-mysql.sql @@ -302,20 +302,6 @@ CREATE TABLE `%TABLE_PREFIX%filter` ( `status` int(11) unsigned NOT NULL DEFAULT '0', `match_all_rules` tinyint(1) unsigned NOT NULL default '0', `stop_onmatch` tinyint(1) unsigned NOT NULL default '0', - `reject_ticket` tinyint(1) unsigned NOT NULL default '0', - `use_replyto_email` tinyint(1) unsigned NOT NULL default '0', - `disable_autoresponder` tinyint(1) unsigned NOT NULL default '0', - `canned_response_id` int(11) unsigned NOT NULL default '0', - `email_id` int(10) unsigned NOT NULL default '0', - `status_id` int(10) unsigned NOT NULL default '0', - `priority_id` int(10) unsigned NOT NULL default '0', - `dept_id` int(10) unsigned NOT NULL default '0', - `staff_id` int(10) unsigned NOT NULL default '0', - `team_id` int(10) unsigned NOT NULL default '0', - `sla_id` int(10) unsigned NOT NULL default '0', - `form_id` int(11) unsigned NOT NULL default '0', - `topic_id` int(11) unsigned NOT NULL default '0', - `ext_id` varchar(11), `target` ENUM( 'Any', 'Web', 'Email', 'API' ) NOT NULL DEFAULT 'Any', `name` varchar(32) NOT NULL default '', `notes` text, -- GitLab