1<?php 2/********************************************************************* 3 filters.php 4 5 Email Filters 6 7 Peter Rotich <peter@osticket.com> 8 Copyright (c) 2006-2013 osTicket 9 http://www.osticket.com 10 11 Released under the GNU General Public License WITHOUT ANY WARRANTY. 12 See LICENSE.TXT for details. 13 14 vim: expandtab sw=4 ts=4 sts=4: 15**********************************************************************/ 16require('admin.inc.php'); 17include_once(INCLUDE_DIR.'class.filter.php'); 18require_once(INCLUDE_DIR.'class.canned.php'); 19 20$filter=null; 21if($_REQUEST['id'] && !($filter=Filter::lookup($_REQUEST['id']))) 22 $errors['err']=sprintf(__('%s: Unknown or invalid'), __('ticket filter')); 23 24/* NOTE: Banlist has its own interface*/ 25if($filter && $filter->isSystemBanlist()) 26 Http::redirect('banlist.php'); 27 28if($_POST){ 29 switch(strtolower($_POST['do'])){ 30 case 'update': 31 if(!$filter){ 32 $errors['err']=sprintf(__('%s: Unknown or invalid'), __('ticket filter')); 33 }elseif($filter->update($_POST,$errors)){ 34 $msg=sprintf(__('Successfully updated %s.'), __('this ticket filter')); 35 }elseif(!$errors['err']){ 36 $errors['err']=sprintf('%s %s', 37 sprintf(__('Unable to update %s.'), __('this ticket filter')), 38 __('Correct any errors below and try again.')); 39 } 40 break; 41 case 'add': 42 $filter = new Filter(); 43 if ($filter->update($_POST, $errors)) { 44 $msg=sprintf(__('Successfully updated %s.'), __('this ticket filter')); 45 $type = array('type' => 'created'); 46 Signal::send('object.created', $filter, $type); 47 $_REQUEST['a']=null; 48 }elseif(!$errors['err']){ 49 $errors['err'] = sprintf('%s %s', 50 sprintf(__('Unable to add %s.'), __('this ticket filter')), 51 __('Correct any errors below and try again.')); 52 } 53 break; 54 case 'mass_process': 55 if(!$_POST['ids'] || !is_array($_POST['ids']) || !count($_POST['ids'])) { 56 $errors['err'] = sprintf(__('You must select at least %s to process.'), 57 __('one ticket filter')); 58 } else { 59 $count=count($_POST['ids']); 60 switch(strtolower($_POST['a'])) { 61 case 'enable': 62 $num = 0; 63 foreach (Filter::objects()->filter([ 64 'id__in' => $_POST['ids'], 65 ]) as $F) { 66 $F->isactive = 1; 67 if ($F->save()) 68 $num++; 69 } 70 71 if ($num) { 72 if($num==$count) 73 $msg = sprintf(__('Successfully enabled %s'), 74 _N('selected ticket filter', 'selected ticket filters', $count)); 75 else 76 $warn = sprintf(__('%1$d of %2$d %3$s enabled'), $num, $count, 77 _N('selected ticket filter', 'selected ticket filters', $count)); 78 } else { 79 $errors['err'] = sprintf(__('Unable to enable %s'), 80 _N('selected ticket filter', 'selected ticket filters', $count)); 81 } 82 break; 83 case 'disable': 84 $num = 0; 85 foreach (Filter::objects()->filter([ 86 'id__in' => $_POST['ids'], 87 ]) as $F) { 88 $F->isactive = 0; 89 if ($F->save()) 90 $num++; 91 } 92 93 if ($num) { 94 if($num==$count) 95 $msg = sprintf(__('Successfully disabled %s'), 96 _N('selected ticket filter', 'selected ticket filters', $count)); 97 else 98 $warn = sprintf(__('%1$d of %2$d %3$s disabled'), $num, $count, 99 _N('selected ticket filter', 'selected ticket filters', $count)); 100 } else { 101 $errors['err'] = sprintf(__('Unable to disable %s'), 102 _N('selected ticket filter', 'selected ticket filters', $count)); 103 } 104 break; 105 case 'delete': 106 $i=0; 107 foreach($_POST['ids'] as $k=>$v) { 108 if(($f=Filter::lookup($v)) && !$f->isSystemBanlist() && $f->delete()) 109 $i++; 110 } 111 112 if($i && $i==$count) 113 $msg = sprintf(__('Successfully deleted %s.'), 114 _N('selected ticket filter', 'selected ticket filters', $count)); 115 elseif($i>0) 116 $warn = sprintf(__('%1$d of %2$d %3$s deleted'), $i, $count, 117 _N('selected ticket filter', 'selected ticket filters', $count)); 118 elseif(!$errors['err']) 119 $errors['err'] = sprintf(__('Unable to delete %s.'), 120 _N('selected ticket filter', 'selected ticket filters', $count)); 121 break; 122 default: 123 $errors['err']=sprintf('%s - %s', __('Unknown action'), __('Get technical help!')); 124 } 125 } 126 break; 127 default: 128 $errors['err']=__('Unknown action'); 129 break; 130 } 131} 132 133$page='filters.inc.php'; 134$tip_namespace = 'manage.filter'; 135if($filter || ($_REQUEST['a'] && !strcasecmp($_REQUEST['a'],'add'))) { 136 if($filter) { 137 foreach ($filter->getActions() as $A) { 138 $config = JsonDataParser::parse($A->configuration); 139 if($A->type == 'dept') 140 $dept = Dept::lookup($config['dept_id']); 141 142 if($A->type == 'topic') 143 $topic = Topic::lookup($config['topic_id']); 144 } 145 } 146 147 if($dept && !$dept->isActive()) 148 $warn = sprintf(__('%s is assigned a %s that is not active.'), __('Ticket Filter'), __('Department')); 149 150 if($topic && !$topic->isActive()) 151 $warn = sprintf(__('%s is assigned a %s that is not active.'), __('Ticket Filter'), __('Help Topic')); 152 153 $page='filter.inc.php'; 154} 155 156$nav->setTabActive('manage'); 157$ost->addExtraHeader('<meta name="tip-namespace" content="' . $tip_namespace . '" />', 158 "$('#content').data('tipNamespace', '".$tip_namespace."');"); 159require(STAFFINC_DIR.'header.inc.php'); 160require(STAFFINC_DIR.$page); 161include(STAFFINC_DIR.'footer.inc.php'); 162?> 163