2014-03-23 16:03:30 -04:00
< ? php
/*******************************************************************************
2015-09-12 00:46:46 -04:00
* Title : Help Desk Software HESK
* Version : 2.6 . 5 from 28 th August 2015
* Author : Klemen Stirn
* Website : http :// www . hesk . com
********************************************************************************
* COPYRIGHT AND TRADEMARK NOTICE
* Copyright 2005 - 2015 Klemen Stirn . All Rights Reserved .
* HESK is a registered trademark of Klemen Stirn .
* The HESK may be used and modified free of charge by anyone
* AS LONG AS COPYRIGHT NOTICES AND ALL THE COMMENTS REMAIN INTACT .
* By using this code you agree to indemnify Klemen Stirn from any
* liability that might arise from it ' s use .
* Selling the code for this program , in part or full , without prior
* written consent is expressly forbidden .
* Using this code , in part or full , to create derivate work ,
* new scripts or products is expressly forbidden . Obtain permission
* before redistributing this software over the Internet or in
* any other medium . In all cases copyright and header must remain intact .
* This Copyright is in full effect in any country that has International
* Trade Agreements with the United States of America or
* with the European Union .
* Removing any of the copyright notices without purchasing a license
* is expressly forbidden . To remove HESK copyright notice you must purchase
* a license for this script . For more information on how to obtain
* a license please visit the page below :
* https :// www . hesk . com / buy . php
*******************************************************************************/
define ( 'IN_SCRIPT' , 1 );
define ( 'HESK_PATH' , '../' );
2015-09-28 22:01:14 -04:00
define ( 'VALIDATOR' , 1 );
2015-10-27 13:45:42 -04:00
define ( 'PAGE_TITLE' , 'ADMIN_CATEGORIES' );
2014-03-23 16:03:30 -04:00
/* Get all the required files and functions */
require ( HESK_PATH . 'hesk_settings.inc.php' );
require ( HESK_PATH . 'inc/common.inc.php' );
require ( HESK_PATH . 'inc/admin_functions.inc.php' );
hesk_load_database_functions ();
hesk_session_start ();
hesk_dbConnect ();
hesk_isLoggedIn ();
/* Check permissions for this feature */
hesk_checkPermission ( 'can_man_cat' );
2015-01-11 19:36:14 -05:00
// Possible priorities
$priorities = array (
2015-09-12 00:46:46 -04:00
3 => array ( 'value' => 3 , 'text' => $hesklang [ 'low' ], 'formatted' => $hesklang [ 'low' ]),
2 => array ( 'value' => 2 , 'text' => $hesklang [ 'medium' ], 'formatted' => '<font class="medium">' . $hesklang [ 'medium' ] . '</font>' ),
1 => array ( 'value' => 1 , 'text' => $hesklang [ 'high' ], 'formatted' => '<font class="important">' . $hesklang [ 'high' ] . '</font>' ),
0 => array ( 'value' => 0 , 'text' => $hesklang [ 'critical' ], 'formatted' => '<font class="critical">' . $hesklang [ 'critical' ] . '</font>' ),
2015-01-11 19:36:14 -05:00
);
2014-03-23 16:03:30 -04:00
/* What should we do? */
2015-09-12 00:46:46 -04:00
if ( $action = hesk_REQUEST ( 'a' )) {
if ( $action == 'linkcode' ) {
generate_link_code ();
} elseif ( defined ( 'HESK_DEMO' )) {
hesk_process_messages ( $hesklang [ 'ddemo' ], 'manage_categories.php' , 'NOTICE' );
} elseif ( $action == 'new' ) {
new_cat ();
} elseif ( $action == 'remove' ) {
remove ();
} elseif ( $action == 'order' ) {
order_cat ();
} elseif ( $action == 'autoassign' ) {
toggle_autoassign ();
} elseif ( $action == 'type' ) {
toggle_type ();
2016-02-15 21:11:50 -05:00
} elseif ( $action == 'edit' ) {
update_category ();
2015-09-12 00:46:46 -04:00
}
2014-03-23 16:03:30 -04:00
}
2015-09-03 21:58:05 -04:00
$modsForHesk_settings = mfh_getSettings ();
2014-03-23 16:03:30 -04:00
/* Print header */
require_once ( HESK_PATH . 'inc/headerAdmin.inc.php' );
/* Print main manage users page */
require_once ( HESK_PATH . 'inc/show_admin_nav.inc.php' );
?>
< script language = " Javascript " type = " text/javascript " ><!--
2015-09-12 00:46:46 -04:00
function confirm_delete () {
if ( confirm ( '<?php echo hesk_makeJsString($hesklang[' confirm_del_cat ']); ?>' )) {
return true ;
}
else {
return false ;
}
}
//-->
2014-03-23 16:03:30 -04:00
</ script >
2015-07-03 22:23:09 -04:00
< ? php
2015-09-12 00:46:46 -04:00
$orderBy = $modsForHesk_settings [ 'category_order_column' ];
$res = hesk_dbQuery ( " SELECT * FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` ORDER BY ` " . $orderBy . " ` ASC " );
$options = '' ;
while ( $mycat = hesk_dbFetchAssoc ( $res )) {
$options .= '<option value="' . $mycat [ 'id' ] . '" ' ;
$options .= ( isset ( $_SESSION [ 'selcat' ]) && $mycat [ 'id' ] == $_SESSION [ 'selcat' ]) ? ' selected="selected" ' : '' ;
$options .= '>' . $mycat [ 'name' ] . '</option>' ;
}
2014-03-23 16:03:30 -04:00
?>
2015-09-10 13:30:58 -04:00
< div class = " row move-down-20 " >
2014-08-09 16:06:02 -04:00
< div align = " left " class = " col-md-4 " >
2016-02-15 21:11:50 -05:00
< div class = " panel panel-default " >
< div class = " panel-heading " >
< ? php echo $hesklang [ 'add_cat' ]; ?>
</ div >
< div class = " panel-body " >
2015-09-28 22:01:14 -04:00
< form action = " manage_categories.php " method = " post " role = " form " class = " form-horizontal " data - toggle = " validator " >
2014-08-09 16:06:02 -04:00
< div class = " form-group " >
2015-09-12 00:46:46 -04:00
< p class = " col-sm-4 control-label " style = " font-size: .87em " >
2016-03-03 22:11:40 -05:00
< b >< ? php echo $hesklang [ 'cat_name' ]; ?> </b> (<?php echo $hesklang['max_chars']; ?>)</p>
2015-09-12 00:46:46 -04:00
2014-08-09 16:06:02 -04:00
< div class = " col-sm-8 " >
2015-09-12 00:46:46 -04:00
< input class = " form-control "
placeholder = " <?php echo htmlspecialchars( $hesklang['cat_name'] ); ?> " type = " text "
name = " name " size = " 40 " maxlength = " 40 "
2014-08-09 16:06:02 -04:00
< ? php
2015-09-12 00:46:46 -04:00
if ( isset ( $_SESSION [ 'catname' ])) {
echo ' value="' . hesk_input ( $_SESSION [ 'catname' ]) . '" ' ;
}
2014-08-09 16:06:02 -04:00
?>
2016-02-15 21:11:50 -05:00
data - error = " <?php echo htmlspecialchars( $hesklang['enter_cat_name'] ); ?> "
required >
2015-09-28 22:01:14 -04:00
< div class = " help-block with-errors " ></ div >
2015-09-12 00:46:46 -04:00
</ div >
2014-03-23 16:03:30 -04:00
</ div >
2015-01-11 19:36:14 -05:00
< div class = " form-group " >
2015-09-12 00:46:46 -04:00
< label for = " priority " class = " col-sm-4 control-label "
style = " font-size: .87em " >< ? php echo $hesklang [ 'def_pri' ]; ?> <a href="#"
onclick = " alert('<?php echo hesk_makeJsString( $hesklang['cat_pri'] ); ?>') " >< i
class = " fa fa-question-circle settingsquestionmark " ></ i > </ a > </ label >
2015-01-11 19:36:14 -05:00
< div class = " col-sm-8 " >
2015-09-12 00:46:46 -04:00
< select name = " priority " class = " form-control " >
< ? php
// Default priority: low
if ( ! isset ( $_SESSION [ 'cat_priority' ])) {
$_SESSION [ 'cat_priority' ] = 3 ;
}
// List possible priorities
foreach ( $priorities as $value => $info ) {
echo '<option value="' . $value . '"' . ( $_SESSION [ 'cat_priority' ] == $value ? ' selected="selected"' : '' ) . '>' . $info [ 'text' ] . '</option>' ;
}
?>
</ select ></ p >
2015-01-11 19:36:14 -05:00
</ div >
</ div >
2016-02-14 22:25:55 -05:00
< div class = " form-group " >
< label for = " color " class = " col-sm-4 control-label " >
2016-03-03 22:11:40 -05:00
< ? php echo $hesklang [ 'category_color' ]; ?>
2016-02-14 22:25:55 -05:00
< i class = " fa fa-question-circle settingsquestionmark " data - toggle = " popover "
title = " <?php echo htmlspecialchars( $hesklang['category_color'] ); ?> "
data - content = " <?php echo htmlspecialchars( $hesklang['category_color_help'] ); ?> " ></ i >
</ label >
< div class = " col-sm-8 " >
< input class = " form-control "
2016-02-15 21:11:50 -05:00
placeholder = " <?php echo htmlspecialchars( $hesklang['category_color'] ); ?> " type = " text "
name = " color " maxlength = " 7 " >
2016-02-14 22:25:55 -05:00
</ div >
</ div >
2014-08-09 16:06:02 -04:00
< div class = " form-group " >
2016-03-03 22:11:40 -05:00
< label for = " usage " class = " col-sm-4 control-label " > Usage </ label >
< div class = " col-sm-8 " >
< select name = " usage " class = " form-control " >
< option value = " 0 " > Tickets and events </ option >
< option value = " 1 " > Tickets only </ option >
< option value = " 2 " > Events only </ option >
</ select >
</ div >
</ div >
< div class = " form-group " >
< label for = " options " class = " col-sm-4 control-label " >< ? php echo $hesklang [ 'opt' ]; ?> </label>
2015-09-12 00:46:46 -04:00
2014-08-09 16:06:02 -04:00
< div class = " col-sm-8 " >
< ? php
2015-09-12 00:46:46 -04:00
if ( $hesk_settings [ 'autoassign' ]) {
2014-08-09 16:06:02 -04:00
?>
2015-09-12 00:46:46 -04:00
< div class = " checkbox " >
< label >< input type = " checkbox " name = " autoassign "
value = " Y " < ? php if ( ! isset ( $_SESSION [ 'cat_autoassign' ]) || $_SESSION [ 'cat_autoassign' ] == 1 ) {
echo 'checked="checked"' ;
} ?> /> <?php echo $hesklang['cat_aa']; ?></label><br/>
</ div >
2014-08-09 16:06:02 -04:00
< ? php
}
?>
< div class = " checkbox " >
2015-09-12 00:46:46 -04:00
< label >< input type = " checkbox " name = " type "
value = " Y " < ? php if ( isset ( $_SESSION [ 'cat_type' ]) && $_SESSION [ 'cat_type' ] == 1 ) {
echo 'checked="checked"' ;
} ?> /> <?php echo $hesklang['cat_type']; ?></label>
</ div >
</ div >
2014-03-23 16:03:30 -04:00
</ div >
2015-09-10 21:11:58 -04:00
< div class = " form-group text-center " >
2015-09-12 00:46:46 -04:00
< input type = " hidden " name = " a " value = " new " />
< input type = " hidden " name = " token " value = " <?php hesk_token_echo(); ?> " />
< input type = " submit " value = " <?php echo $hesklang['create_cat'] ; ?> " class = " btn btn-default " />
2014-08-09 16:06:02 -04:00
</ div >
</ form >
</ div >
</ div >
</ div >
< div class = " col-md-8 " >
2016-02-15 21:11:50 -05:00
< div class = " panel panel-default " >
< div class = " panel-heading " >
< ? php echo $hesklang [ 'manage_cat' ]; ?> <a href="javascript:void(0)"
onclick = " javascript:alert('<?php echo hesk_makeJsString( $hesklang['cat_intro'] ); ?>') " >< i
class = " fa fa-question-circle settingsquestionmark " ></ i ></ a >
</ div >
< div class = " panel-body " >
< ? php
/* This will handle error, success and notice messages */
hesk_handle_messages ();
2014-03-23 16:03:30 -04:00
2016-02-15 21:11:50 -05:00
if ( $hesk_settings [ 'cust_urgency' ]) {
hesk_show_notice ( $hesklang [ 'cat_pri_info' ] . ' ' . $hesklang [ 'cpri' ]);
2014-08-09 16:06:02 -04:00
}
2016-02-15 21:11:50 -05:00
?>
< table class = " table table-hover " >
< tr >
< th style = " display: none " >< ? php echo $hesklang [ 'id' ]; ?> </th>
< th >< ? php echo $hesklang [ 'cat_name' ]; ?> </th>
< th >< ? php echo $hesklang [ 'priority' ]; ?> </th>
< th >< ? php echo $hesklang [ 'not' ]; ?> </th>
< th >< ? php echo $hesklang [ 'graph' ]; ?> </th>
< th >< ? php echo $hesklang [ 'manager' ]; ?> </th>
< th >< ? php echo $hesklang [ 'opt' ]; ?> </th>
</ tr >
< ? php
/* Get number of tickets per category */
$tickets_all = array ();
$tickets_total = 0 ;
$res = hesk_dbQuery ( 'SELECT COUNT(*) AS `cnt`, `category` FROM `' . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . 'tickets` GROUP BY `category`' );
while ( $tmp = hesk_dbFetchAssoc ( $res )) {
$tickets_all [ $tmp [ 'category' ]] = $tmp [ 'cnt' ];
$tickets_total += $tmp [ 'cnt' ];
}
2014-08-09 16:06:02 -04:00
2016-02-15 21:11:50 -05:00
/* Get list of categories */
$res = hesk_dbQuery ( " SELECT * FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` ORDER BY ` " . $orderBy . " ` ASC " );
$usersRes = hesk_dbQuery ( " SELECT * FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " users` WHERE `isadmin` = '0' ORDER BY `name` ASC " );
$users = array ();
while ( $userRow = hesk_dbFetchAssoc ( $usersRes )) {
array_push ( $users , $userRow );
2014-03-23 16:03:30 -04:00
}
2016-02-15 21:11:50 -05:00
$i = 1 ;
$j = 0 ;
$num = hesk_dbNumRows ( $res );
while ( $mycat = hesk_dbFetchAssoc ( $res )) {
$j ++ ;
if ( isset ( $_SESSION [ 'selcat2' ]) && $mycat [ 'id' ] == $_SESSION [ 'selcat2' ]) {
$color = 'admin_green' ;
unset ( $_SESSION [ 'selcat2' ]);
} else {
$color = $i ? 'admin_white' : 'admin_gray' ;
}
$tmp = $i ? 'White' : 'Blue' ;
2016-02-17 22:03:33 -05:00
$style = '' ;
2016-02-15 21:11:50 -05:00
if ( $mycat [ 'color' ] == null ) {
2016-02-17 22:03:33 -05:00
$style .= 'color: black; border: solid 1px #000' ;
2016-02-15 21:11:50 -05:00
} else {
2016-02-17 22:03:33 -05:00
$style .= 'background: ' . $mycat [ 'color' ];
2016-02-15 21:11:50 -05:00
}
$i = $i ? 0 : 1 ;
/* Number of tickets and graph width */
$all = isset ( $tickets_all [ $mycat [ 'id' ]]) ? $tickets_all [ $mycat [ 'id' ]] : 0 ;
$width_all = 0 ;
if ( $tickets_total && $all ) {
$width_all = round (( $all / $tickets_total ) * 100 );
}
/* Deleting category with ID 1 (default category) is not allowed */
if ( $mycat [ 'id' ] == 1 ) {
$remove_code = ' <img src="../img/blank.gif" width="16" height="16" alt="" style="padding:3px;border:none;" />' ;
} else {
$remove_code = ' <a href="manage_categories.php?a=remove&catid=' . $mycat [ 'id' ] . '&token=' . hesk_token_echo ( 0 ) . '" onclick="return confirm_delete();"><i class="fa fa-times icon-link red" data-toggle="tooltip" data-placement="top" title="' . $hesklang [ 'delete' ] . '"></i></a>' ;
}
/* Is category private or public? */
if ( $mycat [ 'type' ]) {
$type_code = '<a href="manage_categories.php?a=type&s=0&catid=' . $mycat [ 'id' ] . '&token=' . hesk_token_echo ( 0 ) . '"><span class="glyphicon glyphicon-user gray" data-toggle="tooltip" data-placement="top" title="' . $hesklang [ 'cat_private' ] . '"></span></a>' ;
} else {
$type_code = '<a href="manage_categories.php?a=type&s=1&catid=' . $mycat [ 'id' ] . '&token=' . hesk_token_echo ( 0 ) . '"><span class="glyphicon glyphicon-user blue" data-toggle="tooltip" data-placement="top" title="' . $hesklang [ 'cat_public' ] . '"></span></a>' ;
}
/* Is auto assign enabled? */
if ( $hesk_settings [ 'autoassign' ]) {
if ( $mycat [ 'autoassign' ]) {
$autoassign_code = '<a href="manage_categories.php?a=autoassign&s=0&catid=' . $mycat [ 'id' ] . '&token=' . hesk_token_echo ( 0 ) . '"><i class="fa fa-bolt icon-link orange" data-toggle="tooltip" data-placement="top" title="' . $hesklang [ 'aaon' ] . '"></i></a>' ;
} else {
$autoassign_code = '<a href="manage_categories.php?a=autoassign&s=1&catid=' . $mycat [ 'id' ] . '&token=' . hesk_token_echo ( 0 ) . '"><i class="fa fa-bolt icon-link gray" data-toggle="tooltip" data-placement="top" title="' . $hesklang [ 'aaoff' ] . '"></i></a>' ;
}
} else {
$autoassign_code = '' ;
}
echo '
< tr data - category - id = " ' . $mycat['id'] . ' " data - name = " ' . htmlspecialchars( $mycat['name'] ) . ' "
data - color = " '. htmlspecialchars( $mycat['color'] ) . ' " data - priority = " ' . $mycat['priority'] . ' "
2016-03-03 22:11:40 -05:00
data - manager = " ' . $mycat['manager'] . ' " data - usage = " '. $mycat['usage'] .' " >
2016-02-15 21:11:50 -05:00
< td style = " display: none " > ' . $mycat[' id '] . ' </ td >
2016-02-17 22:03:33 -05:00
< td >< span class = " label background-volatile category-label " style = " '. $style .' " > ' . $mycat[' name '] . ' </ span ></ td >
2015-09-12 00:46:46 -04:00
< td width = " 1 " style = " white-space: nowrap; " > ' . $priorities[$mycat[' priority ']][' formatted '] . ' </ td >
< td >< a href = " show_tickets.php?category=' . $mycat['id'] . '&s_all=1&s_my=1&s_ot=1&s_un=1 " alt = " ' . $hesklang['list_tickets_cat'] . ' " title = " ' . $hesklang['list_tickets_cat'] . ' " > ' . $all . ' </ a ></ td >
2014-08-09 16:06:02 -04:00
< td >
2016-02-15 21:11:50 -05:00
< div class = " progress " style = " width: 160px; margin-bottom: 0 " title = " ' . sprintf( $hesklang['perat'] , $width_all . '%') . ' " data - toggle = " tooltip " >
< div class = " progress-bar progress-bar-success " role = " progressbar " aria - valuenow = " 40 " aria - valuemin = " 0 " aria - valuemax = " 100 " style = " width: ' . $width_all . '% " >
< span class = " sr-only " > 40 % Complete ( success ) </ span >
</ div >
2015-01-19 00:13:39 -05:00
</ div >
2014-08-09 16:06:02 -04:00
</ td >
2016-02-15 21:11:50 -05:00
< td > ' . get_manager($mycat[' manager '], $users) . ' </ td >
2014-08-09 16:06:02 -04:00
< td >
2015-09-12 00:46:46 -04:00
< a href = " Javascript:void(0) " onclick = " Javascript:hesk_window( \ 'manage_categories.php?a=linkcode&catid=' . $mycat['id'] . '&p=' . $mycat['type'] . ' \ ', \ '200 \ ', \ '500 \ ') " id = " tooltip " >< i class = " fa fa-code icon-link " style = " color: ' . ( $mycat['type'] ? 'gray' : 'green') . ' " data - toggle = " tooltip " data - placement = " top " title = " ' . $hesklang['geco'] . ' " ></ i ></ a >
2014-08-09 16:06:02 -04:00
' . $autoassign_code . '
' . $type_code . ' ' ;
2014-03-23 16:03:30 -04:00
2016-02-15 21:11:50 -05:00
if ( $orderBy != 'name' && $num > 1 ) {
if ( $j == 1 ) {
echo '<img src="../img/blank.gif" width="16" height="16" alt="" style="padding:3px;border:none;" /> <a href="manage_categories.php?a=order&catid=' . $mycat [ 'id' ] . '&move=15&token=' . hesk_token_echo ( 0 ) . '"><i class="fa fa-arrow-down icon-link green" data-toggle="tooltip" data-placement="top" title="' . $hesklang [ 'move_dn' ] . '"></i></a> ' ;
} elseif ( $j == $num ) {
echo '<a href="manage_categories.php?a=order&catid=' . $mycat [ 'id' ] . '&move=-15&token=' . hesk_token_echo ( 0 ) . '"><i class="fa fa-arrow-up icon-link green" data-toggle="tooltip" data-placement="top" title="' . $hesklang [ 'move_up' ] . '"></i></a> <img src="../img/blank.gif" width="16" height="16" alt="" style="padding:3px;border:none;" />' ;
} else {
echo '
2015-09-12 00:46:46 -04:00
< a href = " manage_categories.php?a=order&catid=' . $mycat['id'] . '&move=-15&token=' . hesk_token_echo(0) . ' " >< i class = " fa fa-arrow-up icon-link green " data - toggle = " tooltip " data - placement = " top " title = " ' . $hesklang['move_up'] . ' " ></ i ></ a >
< a href = " manage_categories.php?a=order&catid=' . $mycat['id'] . '&move=15&token=' . hesk_token_echo(0) . ' " >< i class = " fa fa-arrow-down icon-link green " data - toggle = " tooltip " data - placement = " top " title = " ' . $hesklang['move_dn'] . ' " ></ i ></ a >& nbsp ;
2014-08-09 16:06:02 -04:00
' ;
2016-02-15 21:11:50 -05:00
}
}
echo '<a href="javascript:;" class="category-modal-trigger" data-category-id="' . $mycat [ 'id' ] . '"><i class="fa fa-pencil icon-link orange" data-toggle="tooltip" title="Edit"></i></a>' ;
echo $remove_code . ' </ td >
2014-08-09 16:06:02 -04:00
</ tr >
' ;
2014-03-23 16:03:30 -04:00
2016-02-15 21:11:50 -05:00
} // End while
2014-08-09 16:06:02 -04:00
2016-02-15 21:11:50 -05:00
?>
</ table >
</ div >
</ div >
2015-09-12 00:46:46 -04:00
</ div >
2014-03-23 16:03:30 -04:00
</ div >
2016-02-15 21:11:50 -05:00
<!-- Edit category modal -->
< div class = " modal fade " id = " edit-category-modal " tabindex = " -1 " role = " dialog " style = " overflow: hidden " >
< div class = " modal-dialog modal-lg " role = " document " >
< div class = " modal-content " >
< div class = " modal-header " style = " cursor: move " >
< button type = " button " class = " close cancel-callback " data - dismiss = " modal " aria - label = " Close " >< span aria - hidden = " true " >& times ; </ span ></ button >
< h4 class = " modal-title " id = " myModalLabel " > Edit Category </ h4 >
</ div >
< form action = " manage_categories.php " class = " form-horizontal " data - toggle = " validator " method = " post " >
< div class = " modal-body " >
< div class = " row " >
< div class = " col-md-12 " >
< div class = " form-group " >
< label for = " name " class = " col-sm-3 control-label " > Name </ label >
< div class = " col-sm-9 " >
< input type = " text " name = " name " class = " form-control " placeholder = " Name "
data - error = " <?php echo htmlspecialchars( $hesklang['this_field_is_required'] ); ?> "
required >
< div class = " help-block with-errors " ></ div >
</ div >
</ div >
< div class = " form-group " >
< label for = " color " class = " col-sm-3 control-label " > Color </ label >
< div class = " col-sm-9 " >
< input type = " text " name = " color " class = " form-control " placeholder = " Color " >
< div class = " help-block with-errors " ></ div >
</ div >
</ div >
< div class = " form-group " >
< label for = " priority " class = " col-sm-3 control-label " > Priority </ label >
< div class = " col-sm-9 " >
< select name = " priority " class = " form-control " >
< ? php
// List possible priorities
foreach ( $priorities as $value => $info ) {
echo '<option value="' . $value . '">' . $info [ 'text' ] . '</option>' ;
}
?>
</ select >
< div class = " help-block with-errors " ></ div >
</ div >
</ div >
< div class = " form-group " >
< label for = " manager " class = " col-sm-3 control-label " >
Manager
</ label >
< div class = " col-sm-9 " >
< ? php echo output_user_dropdown ( $users ); ?>
< div class = " help-block with-errors " ></ div >
</ div >
</ div >
2016-03-03 22:11:40 -05:00
< div class = " form-group " >
< label for = " usage " class = " col-sm-3 control-label " >
Usage
</ label >
< div class = " col-sm-9 " >
< select name = " usage " class = " form-control " >
< option value = " 0 " > Tickets and events </ option >
< option value = " 1 " > Tickets only </ option >
< option value = " 2 " > Events only </ option >
</ select >
</ div >
</ div >
2016-02-15 21:11:50 -05:00
</ div >
</ div >
</ div >
< div class = " modal-footer " >
< input type = " hidden " name = " id " >
< input type = " hidden " name = " a " value = " edit " >
< input type = " hidden " name = " token " value = " <?php hesk_token_echo(); ?> " >
< div class = " btn-group " >
< button type = " button " class = " btn btn-default cancel-callback " data - dismiss = " modal " >
< i class = " fa fa-times-circle " ></ i >
< span > Cancel </ span >
</ button >
< button type = " submit " class = " btn btn-success callback-btn " >
< i class = " fa fa-check-circle " ></ i >
< span > Save </ span >
</ button >
</ div >
</ div >
</ form >
</ div >
</ div >
</ div >
< script >
$ ( document ) . ready ( function () {
$ ( '.category-modal-trigger' ) . click ( function () {
var $row = $ ( 'tr[data-category-id="' + $ ( this ) . attr ( 'data-category-id' ) + '"]' );
var name = $row . attr ( 'data-name' );
var id = $row . attr ( 'data-category-id' );
var color = $row . attr ( 'data-color' );
var priority = $row . attr ( 'data-priority' );
var manager = $row . attr ( 'data-manager' );
2016-03-03 22:11:40 -05:00
var usage = $row . attr ( 'data-usage' );
2016-02-15 21:11:50 -05:00
var $modal = $ ( '#edit-category-modal' );
$modal . find ( 'input[name="name"]' ) . val ( name ) . end ()
. find ( 'input[name="color"]' ) . val ( color ) . end ()
. find ( 'select[name="priority"]' ) . val ( priority ) . end ()
. find ( 'select[name="manager"]' ) . val ( manager ) . end ()
. find ( 'input[name="id"]' ) . val ( id ) . end ()
2016-03-03 22:11:40 -05:00
. find ( 'select[name="usage"]' ) . val ( usage ) . end ()
2016-02-15 21:11:50 -05:00
. modal ( 'show' );
});
});
</ script >
2014-03-23 16:03:30 -04:00
< ? php
require_once ( HESK_PATH . 'inc/footer.inc.php' );
exit ();
/*** START FUNCTIONS ***/
2015-01-11 19:36:14 -05:00
function change_priority ()
{
global $hesk_settings , $hesklang , $priorities ;
/* A security check */
hesk_token_check ( 'POST' );
2015-09-12 00:46:46 -04:00
$_SERVER [ 'PHP_SELF' ] = 'manage_categories.php?catid=' . intval ( hesk_POST ( 'catid' ));
2015-01-11 19:36:14 -05:00
2015-09-12 00:46:46 -04:00
$catid = hesk_isNumber ( hesk_POST ( 'catid' ), $hesklang [ 'choose_cat_ren' ], $_SERVER [ 'PHP_SELF' ]);
2015-01-11 19:36:14 -05:00
$_SESSION [ 'selcat' ] = $catid ;
$_SESSION [ 'selcat2' ] = $catid ;
2015-09-12 00:46:46 -04:00
$priority = intval ( hesk_POST ( 'priority' , 3 ));
if ( ! array_key_exists ( $priority , $priorities )) {
2015-01-11 19:36:14 -05:00
$priority = 3 ;
}
2015-09-12 00:46:46 -04:00
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` SET `priority`=' { $priority } ' WHERE `id`=' " . intval ( $catid ) . " ' LIMIT 1 " );
2015-01-11 19:36:14 -05:00
hesk_cleanSessionVars ( 'cat_ch_priority' );
2015-09-12 00:46:46 -04:00
hesk_process_messages ( $hesklang [ 'cat_pri_ch' ] . ' ' . $priorities [ $priority ][ 'formatted' ], $_SERVER [ 'PHP_SELF' ], 'SUCCESS' );
2015-01-11 19:36:14 -05:00
} // END change_priority()
2014-03-23 16:03:30 -04:00
function generate_link_code () {
global $hesk_settings , $hesklang ;
?>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML; 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " lang = " en " >
< head >
< title >< ? php echo $hesklang [ 'genl' ]; ?> </title>
< meta http - equiv = " Content-Type " content = " text/html;charset=<?php echo $hesklang['ENCODING'] ; ?> " />
< style type = " text/css " >
body
{
margin : 5 px 5 px ;
padding : 0 ;
background : #fff;
color : black ;
font : 68.8 %/ 1.5 Verdana , Geneva , Arial , Helvetica , sans - serif ;
}
p
{
color : black ;
font - family : Verdana , Geneva , Arial , Helvetica , sans - serif ;
font - size : 1.0 em ;
}
h3
{
color : #AF0000;
font - family : Verdana , Geneva , Arial , Helvetica , sans - serif ;
font - weight : bold ;
font - size : 1.0 em ;
}
</ style >
</ head >
< body >
2015-09-10 21:11:58 -04:00
< div class = " text-center " >
2014-03-23 16:03:30 -04:00
< h3 >< ? php echo $hesklang [ 'genl' ]; ?> </h3>
< ? php
if ( ! empty ( $_GET [ 'p' ]) )
{
echo '<p> <br />' . $hesklang [ 'cpric' ] . '<br /> </p>' ;
}
else
{
?>
< p >< i >< ? php echo $hesklang [ 'genl2' ]; ?> </i></p>
< textarea rows = " 3 " cols = " 50 " onfocus = " this.select() " >< ? php echo $hesk_settings [ 'hesk_url' ] . '/index.php?a=add&catid=' . intval ( hesk_GET ( 'catid' ) ); ?> </textarea>
< ? php
}
?>
< p align = " center " >< a href = " # " onclick = " Javascript:window.close() " >< ? php echo $hesklang [ 'cwin' ]; ?> </a></p>
</ div >
</ body >
</ html >
< ? php
exit ();
}
function new_cat ()
{
2015-09-12 00:46:46 -04:00
global $hesk_settings , $hesklang ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
/* A security check */
hesk_token_check ( 'POST' );
2014-03-23 16:03:30 -04:00
/* Options */
$_SESSION [ 'cat_autoassign' ] = hesk_POST ( 'autoassign' ) == 'Y' ? 1 : 0 ;
$_SESSION [ 'cat_type' ] = hesk_POST ( 'type' ) == 'Y' ? 1 : 0 ;
2015-01-11 19:36:14 -05:00
// Default priority
2015-09-12 00:46:46 -04:00
$_SESSION [ 'cat_priority' ] = intval ( hesk_POST ( 'priority' , 3 ));
if ( $_SESSION [ 'cat_priority' ] < 0 || $_SESSION [ 'cat_priority' ] > 3 ) {
2015-01-11 19:36:14 -05:00
$_SESSION [ 'cat_priority' ] = 3 ;
}
2014-03-23 16:03:30 -04:00
/* Category name */
2015-09-12 00:46:46 -04:00
$catname = hesk_input ( hesk_POST ( 'name' ), $hesklang [ 'enter_cat_name' ], 'manage_categories.php' );
2014-03-23 16:03:30 -04:00
2016-02-14 22:25:55 -05:00
$color = hesk_POST ( 'color' , null );
$color = str_replace ( '#' , '' , $color );
$color = $color != null ? " '# " . hesk_dbEscape ( $color ) . " ' " : 'NULL' ;
2016-03-03 22:11:40 -05:00
$usage = hesk_POST ( 'usage' , 0 );
2014-03-23 16:03:30 -04:00
/* Do we already have a category with this name? */
2015-09-12 00:46:46 -04:00
$res = hesk_dbQuery ( " SELECT `id` FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` WHERE `name` LIKE ' " . hesk_dbEscape ( hesk_dbLike ( $catname )) . " ' LIMIT 1 " );
if ( hesk_dbNumRows ( $res ) != 0 ) {
$_SESSION [ 'catname' ] = $catname ;
hesk_process_messages ( $hesklang [ 'cndupl' ], 'manage_categories.php' );
2014-03-23 16:03:30 -04:00
}
2015-09-12 00:46:46 -04:00
/* Get the latest cat_order */
$res = hesk_dbQuery ( " SELECT `cat_order` FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` ORDER BY `cat_order` DESC LIMIT 1 " );
$row = hesk_dbFetchRow ( $res );
$my_order = $row [ 0 ] + 10 ;
2014-03-23 16:03:30 -04:00
2016-03-03 22:11:40 -05:00
hesk_dbQuery ( " INSERT INTO ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` (`name`,`cat_order`,`autoassign`,`type`, `priority`, `color`, `usage`) VALUES (' " . hesk_dbEscape ( $catname ) . " ',' " . intval ( $my_order ) . " ',' " . intval ( $_SESSION [ 'cat_autoassign' ]) . " ',' " . intval ( $_SESSION [ 'cat_type' ]) . " ',' { $_SESSION [ 'cat_priority' ] } ', { $color } , " . intval ( $usage ) . " ) " );
2014-03-23 16:03:30 -04:00
hesk_cleanSessionVars ( 'catname' );
hesk_cleanSessionVars ( 'cat_autoassign' );
hesk_cleanSessionVars ( 'cat_type' );
2015-01-11 19:36:14 -05:00
hesk_cleanSessionVars ( 'cat_priority' );
2014-03-23 16:03:30 -04:00
$_SESSION [ 'selcat2' ] = hesk_dbInsertID ();
2015-09-12 00:46:46 -04:00
hesk_process_messages ( sprintf ( $hesklang [ 'cat_name_added' ], '<i>' . stripslashes ( $catname ) . '</i>' ), 'manage_categories.php' , 'SUCCESS' );
2014-03-23 16:03:30 -04:00
} // End new_cat()
2016-02-15 21:11:50 -05:00
function update_category ()
2014-03-23 16:03:30 -04:00
{
2015-09-12 00:46:46 -04:00
global $hesk_settings , $hesklang ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
/* A security check */
hesk_token_check ( 'POST' );
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
$_SERVER [ 'PHP_SELF' ] = 'manage_categories.php?catid=' . intval ( hesk_POST ( 'catid' ));
2014-03-23 16:03:30 -04:00
2016-02-15 21:11:50 -05:00
$catid = hesk_isNumber ( hesk_POST ( 'id' ), $hesklang [ 'choose_cat_ren' ], $_SERVER [ 'PHP_SELF' ]);
2015-09-12 00:46:46 -04:00
$_SESSION [ 'selcat' ] = $catid ;
2014-03-23 16:03:30 -04:00
$_SESSION [ 'selcat2' ] = $catid ;
2015-09-12 00:46:46 -04:00
$catname = hesk_input ( hesk_POST ( 'name' ), $hesklang [ 'cat_ren_name' ], $_SERVER [ 'PHP_SELF' ]);
2014-03-23 16:03:30 -04:00
$_SESSION [ 'catname2' ] = $catname ;
2016-02-15 21:11:50 -05:00
$color = hesk_POST ( 'color' , null );
$color = str_replace ( '#' , '' , $color );
$color = $color != null ? " '# " . hesk_dbEscape ( $color ) . " ' " : 'NULL' ;
$manager = hesk_POST ( 'manager' , 0 );
$priority = hesk_POST ( 'priority' , 0 );
2016-03-03 22:11:40 -05:00
$usage = hesk_POST ( 'usage' , 0 );
2014-03-23 16:03:30 -04:00
2016-02-15 21:11:50 -05:00
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` SET `name`=' " . hesk_dbEscape ( $catname ) . " ',
`priority` = '" . hesk_dbEscape($priority) . "' ,
`manager` = " . intval( $manager ) . " ,
2016-03-03 22:11:40 -05:00
`color` = " . $color . " ,
`usage` = " . intval( $usage ) . "
2016-02-15 21:11:50 -05:00
WHERE `id` = '" . intval($catid) . "' LIMIT 1 " );
2014-03-23 16:03:30 -04:00
unset ( $_SESSION [ 'selcat' ]);
unset ( $_SESSION [ 'catname2' ]);
2016-02-15 21:11:50 -05:00
hesk_process_messages ( sprintf ( $hesklang [ 'category_updated' ], stripslashes ( $catname )), $_SERVER [ 'PHP_SELF' ], 'SUCCESS' );
2014-03-23 16:03:30 -04:00
} // End rename_cat()
function remove ()
{
2015-09-12 00:46:46 -04:00
global $hesk_settings , $hesklang ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
/* A security check */
hesk_token_check ();
2014-03-23 16:03:30 -04:00
$_SERVER [ 'PHP_SELF' ] = 'manage_categories.php' ;
2015-09-12 00:46:46 -04:00
$mycat = intval ( hesk_GET ( 'catid' )) or hesk_error ( $hesklang [ 'no_cat_id' ]);
if ( $mycat == 1 ) {
hesk_process_messages ( $hesklang [ 'cant_del_default_cat' ], $_SERVER [ 'PHP_SELF' ]);
2014-03-23 16:03:30 -04:00
}
2015-09-12 00:46:46 -04:00
hesk_dbQuery ( " DELETE FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` WHERE `id`=' " . intval ( $mycat ) . " ' LIMIT 1 " );
if ( hesk_dbAffectedRows () != 1 ) {
hesk_error ( " $hesklang[int_error] : $hesklang[cat_not_found] . " );
2014-03-23 16:03:30 -04:00
}
2015-09-12 00:46:46 -04:00
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " tickets` SET `category`=1 WHERE `category`=' " . intval ( $mycat ) . " ' " );
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
hesk_process_messages ( $hesklang [ 'cat_removed_db' ], $_SERVER [ 'PHP_SELF' ], 'SUCCESS' );
2014-03-23 16:03:30 -04:00
} // End remove()
function order_cat ()
{
2015-09-12 00:46:46 -04:00
global $hesk_settings , $hesklang ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
/* A security check */
hesk_token_check ();
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
$catid = intval ( hesk_GET ( 'catid' )) or hesk_error ( $hesklang [ 'cat_move_id' ]);
$_SESSION [ 'selcat2' ] = $catid ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
$cat_move = intval ( hesk_GET ( 'move' ));
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` SET `cat_order`=`cat_order`+ " . intval ( $cat_move ) . " WHERE `id`=' " . intval ( $catid ) . " ' LIMIT 1 " );
if ( hesk_dbAffectedRows () != 1 ) {
hesk_error ( " $hesklang[int_error] : $hesklang[cat_not_found] . " );
2014-03-23 16:03:30 -04:00
}
2015-09-12 00:46:46 -04:00
/* Update all category fields with new order */
$res = hesk_dbQuery ( " SELECT `id` FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` ORDER BY `cat_order` ASC " );
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
$i = 10 ;
while ( $mycat = hesk_dbFetchAssoc ( $res )) {
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` SET `cat_order`= " . intval ( $i ) . " WHERE `id`=' " . intval ( $mycat [ 'id' ]) . " ' LIMIT 1 " );
$i += 10 ;
}
2014-03-23 16:03:30 -04:00
header ( 'Location: manage_categories.php' );
exit ();
} // End order_cat()
function toggle_autoassign ()
{
2015-09-12 00:46:46 -04:00
global $hesk_settings , $hesklang ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
/* A security check */
hesk_token_check ();
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
$catid = intval ( hesk_GET ( 'catid' )) or hesk_error ( $hesklang [ 'cat_move_id' ]);
$_SESSION [ 'selcat2' ] = $catid ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
if ( intval ( hesk_GET ( 's' ))) {
$autoassign = 1 ;
2014-03-23 16:03:30 -04:00
$tmp = $hesklang [ 'caaon' ];
2015-09-12 00:46:46 -04:00
} else {
2014-03-23 16:03:30 -04:00
$autoassign = 0 ;
$tmp = $hesklang [ 'caaoff' ];
}
2015-09-12 00:46:46 -04:00
/* Update auto-assign settings */
$res = hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` SET `autoassign`=' " . intval ( $autoassign ) . " ' WHERE `id`=' " . intval ( $catid ) . " ' LIMIT 1 " );
if ( hesk_dbAffectedRows () != 1 ) {
hesk_process_messages ( $hesklang [ 'int_error' ] . ': ' . $hesklang [ 'cat_not_found' ], './manage_categories.php' );
2014-03-23 16:03:30 -04:00
}
2015-09-12 00:46:46 -04:00
hesk_process_messages ( $tmp , './manage_categories.php' , 'SUCCESS' );
2014-03-23 16:03:30 -04:00
} // End toggle_autoassign()
function toggle_type ()
{
2015-09-12 00:46:46 -04:00
global $hesk_settings , $hesklang ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
/* A security check */
hesk_token_check ();
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
$catid = intval ( hesk_GET ( 'catid' )) or hesk_error ( $hesklang [ 'cat_move_id' ]);
$_SESSION [ 'selcat2' ] = $catid ;
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
if ( intval ( hesk_GET ( 's' ))) {
$type = 1 ;
2014-03-23 16:03:30 -04:00
$tmp = $hesklang [ 'cpriv' ];
2015-09-12 00:46:46 -04:00
} else {
2014-03-23 16:03:30 -04:00
$type = 0 ;
$tmp = $hesklang [ 'cpub' ];
}
2015-09-12 00:46:46 -04:00
/* Update auto-assign settings */
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " categories` SET `type`=' { $type } ' WHERE `id`=' " . intval ( $catid ) . " ' LIMIT 1 " );
if ( hesk_dbAffectedRows () != 1 ) {
hesk_process_messages ( $hesklang [ 'int_error' ] . ': ' . $hesklang [ 'cat_not_found' ], './manage_categories.php' );
2014-03-23 16:03:30 -04:00
}
2015-09-12 00:46:46 -04:00
hesk_process_messages ( $tmp , './manage_categories.php' , 'SUCCESS' );
2014-03-23 16:03:30 -04:00
} // End toggle_type()
2015-06-04 22:00:27 -04:00
2016-02-15 21:11:50 -05:00
function output_user_dropdown ( $userArray )
2015-09-12 00:46:46 -04:00
{
2015-06-04 22:00:27 -04:00
global $hesklang ;
2015-06-07 20:31:13 -04:00
if ( ! hesk_checkPermission ( 'can_set_manager' , 0 )) {
foreach ( $userArray as $user ) {
if ( $user [ 'id' ] == $selectId ) {
2016-02-15 21:11:50 -05:00
return '<p>' . $user [ 'name' ] . '</p><input type="hidden" name="manager">' ;
2015-06-07 20:31:13 -04:00
}
}
2016-02-15 21:11:50 -05:00
return '<p>' . $hesklang [ 'no_manager' ] . '</p><input type="hidden" name="manager">' ;
2015-06-07 20:31:13 -04:00
} else {
2016-02-15 21:11:50 -05:00
$dropdownMarkup = ' < select class = " form-control " name = " manager " >
2015-09-12 00:46:46 -04:00
< option value = " 0 " > ' . $hesklang[' no_manager '] . ' </ option > ' ;
2015-06-07 20:31:13 -04:00
foreach ( $userArray as $user ) {
2016-02-15 21:11:50 -05:00
$dropdownMarkup .= '<option value="' . $user [ 'id' ] . '">' . $user [ 'name' ] . '</option>' ;
2015-06-07 20:31:13 -04:00
}
$dropdownMarkup .= '</select>' ;
2015-06-04 22:00:27 -04:00
2016-02-15 21:11:50 -05:00
return $dropdownMarkup ;
2015-06-07 20:31:13 -04:00
}
2015-06-04 22:00:27 -04:00
}
2016-02-15 21:11:50 -05:00
function get_manager ( $user_id , $user_array ) {
global $hesklang ;
2015-06-04 22:00:27 -04:00
2016-02-15 21:11:50 -05:00
if ( $user_id == 0 ) {
return $hesklang [ 'no_manager' ];
2015-06-07 01:41:20 -04:00
}
2015-06-04 22:00:27 -04:00
2016-02-15 21:11:50 -05:00
foreach ( $user_array as $user ) {
if ( $user [ 'id' ] == $user_id ) {
return $user [ 'name' ];
}
}
2015-06-04 22:00:27 -04:00
}
2015-09-12 00:46:46 -04:00
2014-03-23 16:03:30 -04:00
?>