Merge pull request #251 from mkoch227/designate-category-manager
Designate category manager
This commit is contained in:
commit
4e02138e3c
@ -62,7 +62,9 @@ hesk_dbConnect();
|
||||
hesk_isLoggedIn();
|
||||
|
||||
/* Check permissions for this feature */
|
||||
hesk_checkPermission('can_reply_tickets');
|
||||
if (!isset($_REQUEST['isManager']) || !$_REQUEST['isManager']) {
|
||||
hesk_checkPermission('can_reply_tickets');
|
||||
}
|
||||
|
||||
/* A security check */
|
||||
# hesk_token_check('POST');
|
||||
@ -310,7 +312,7 @@ else
|
||||
$sql .= ",`time_worked` = ADDTIME(`time_worked`,'" . hesk_dbEscape($time_worked) . "') ";
|
||||
}
|
||||
|
||||
if ( ! empty($_POST['assign_self']) && hesk_checkPermission('can_assign_self',0))
|
||||
if ( ! empty($_POST['assign_self']) && (hesk_checkPermission('can_assign_self',0) || (isset($_REQUEST['isManager']) && $_REQUEST['isManager'])))
|
||||
{
|
||||
$revision = sprintf($hesklang['thist2'],hesk_date(),$_SESSION['name'].' ('.$_SESSION['user'].')',$_SESSION['name'].' ('.$_SESSION['user'].')');
|
||||
$sql .= " , `owner`=".intval($_SESSION['id']).", `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') ";
|
||||
|
@ -123,15 +123,21 @@ else
|
||||
}
|
||||
|
||||
/* Get category name and ID */
|
||||
$result = hesk_dbQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `id`='".intval($ticket['category'])."' LIMIT 1");
|
||||
$result = hesk_dbQuery("SELECT `id`, `name`, `manager` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `id`='".intval($ticket['category'])."' LIMIT 1");
|
||||
|
||||
/* If this category has been deleted use the default category with ID 1 */
|
||||
if (hesk_dbNumRows($result) != 1)
|
||||
{
|
||||
$result = hesk_dbQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `id`='1' LIMIT 1");
|
||||
$result = hesk_dbQuery("SELECT `id`, `name`, `manager` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `id`='1' LIMIT 1");
|
||||
}
|
||||
|
||||
$category = hesk_dbFetchAssoc($result);
|
||||
$managerRS = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'users` WHERE `id` = '.intval($_SESSION['id']));
|
||||
$managerRow = hesk_dbFetchAssoc($managerRS);
|
||||
$isManager = $managerRow['id'] == $category['manager'];
|
||||
if ($isManager) {
|
||||
$can_del_notes = $can_reply = $can_delete = $can_edit = $can_archive = $can_assign_self = $can_view_unassigned = $can_change_cat = true;
|
||||
}
|
||||
|
||||
/* Is this user allowed to view tickets inside this category? */
|
||||
hesk_okCategory($category['id']);
|
||||
@ -989,16 +995,17 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
|
||||
$isClosable = $isTicketClosedRow['Closable'] == 'yes' || $isTicketClosedRow['Closable'] == 'sonly';
|
||||
|
||||
echo '<div class="btn-group" role="group">';
|
||||
$mgr = $isManager ? '&isManager=1' : '';
|
||||
if ($isTicketClosed == 0 && $isClosable) // Ticket is still open
|
||||
{
|
||||
echo '<a
|
||||
class="btn btn-default btn-sm" href="change_status.php?track='.$trackingID.'&s='.$staffClosedOptionStatus['ID'].'&Refresh='.$random.'&token='.hesk_token_echo(0).'">
|
||||
class="btn btn-default btn-sm" href="change_status.php?track='.$trackingID.$mgr.'&s='.$staffClosedOptionStatus['ID'].'&Refresh='.$random.'&token='.hesk_token_echo(0).'">
|
||||
<i class="fa fa-check-circle"></i> '.$hesklang['close_action'].'</a>';
|
||||
}
|
||||
elseif ($isTicketClosed == 1)
|
||||
{
|
||||
echo '<a
|
||||
class="btn btn-default btn-sm" href="change_status.php?track='.$trackingID.'&s='.$staffReopenedStatus['ID'].'&Refresh='.$random.'&token='.hesk_token_echo(0).'">
|
||||
class="btn btn-default btn-sm" href="change_status.php?track='.$trackingID.$mgr.'&s='.$staffReopenedStatus['ID'].'&Refresh='.$random.'&token='.hesk_token_echo(0).'">
|
||||
<i class="fa fa-check-circle"></i> '.$hesklang['open_action'].'</a>';
|
||||
}
|
||||
|
||||
@ -1059,8 +1066,11 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
|
||||
</select>
|
||||
|
||||
<input type="submit" style="display: none" value="'.$hesklang['go'].'" /><input type="hidden" name="track" value="'.$trackingID.'" />
|
||||
<input type="hidden" name="token" value="'.hesk_token_echo(0).'" />
|
||||
</span>
|
||||
<input type="hidden" name="token" value="'.hesk_token_echo(0).'" />';
|
||||
if ($isManager) {
|
||||
echo '<input type="hidden" name="isManager" value="1">';
|
||||
}
|
||||
echo '</span>
|
||||
|
||||
</form>
|
||||
|
||||
@ -1083,13 +1093,16 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
|
||||
</select>
|
||||
|
||||
<input type="submit" style="display:none;" value="'.$hesklang['go'].'" class="btn btn-default" /><input type="hidden" name="track" value="'.$trackingID.'" />
|
||||
<input type="hidden" name="token" value="'.hesk_token_echo(0).'" />
|
||||
</span>
|
||||
<input type="hidden" name="token" value="'.hesk_token_echo(0).'" />';
|
||||
if ($isManager) {
|
||||
echo '<input type="hidden" name="isManager" value="1">';
|
||||
}
|
||||
echo '</span>
|
||||
</form>
|
||||
</div>';
|
||||
echo '<div class="col-md-3 col-sm-12 ticket-cell-admin"><p class="ticketPropertyTitle">'.$hesklang['owner'].'</p>';
|
||||
|
||||
if (hesk_checkPermission('can_assign_others',0))
|
||||
if (hesk_checkPermission('can_assign_others',0) || $isManager)
|
||||
{
|
||||
echo'
|
||||
<form style="margin-bottom:0;" id="changeOwnerForm" action="assign_owner.php" method="post">
|
||||
@ -1631,7 +1644,7 @@ function hesk_getFontAwesomeIconForFileExtension($fileExtension)
|
||||
|
||||
function hesk_getAdminButtons($reply=0,$white=1)
|
||||
{
|
||||
global $hesk_settings, $hesklang, $ticket, $reply, $trackingID, $can_edit, $can_archive, $can_delete;
|
||||
global $hesk_settings, $hesklang, $ticket, $reply, $trackingID, $can_edit, $can_archive, $can_delete, $isManager;
|
||||
|
||||
$options = '<div class="btn-group" style="width: 100%">';
|
||||
|
||||
@ -1680,7 +1693,8 @@ function hesk_getAdminButtons($reply=0,$white=1)
|
||||
if ($can_edit)
|
||||
{
|
||||
$tmp = $reply ? '&reply='.$reply['id'] : '';
|
||||
$options .= '<a class="btn btn-default" href="edit_post.php?track='.$trackingID.$tmp.'"><i class="fa fa-pencil"></i> '.$hesklang['edtt'].'</a> ';
|
||||
$mgr = $isManager ? '&isManager=true' : '';
|
||||
$options .= '<a class="btn btn-default" href="edit_post.php?track='.$trackingID.$tmp.$mgr.'"><i class="fa fa-pencil"></i> '.$hesklang['edtt'].'</a> ';
|
||||
}
|
||||
|
||||
|
||||
@ -1712,7 +1726,7 @@ function hesk_getAdminButtons($reply=0,$white=1)
|
||||
|
||||
function hesk_getAdminButtonsInTicket($reply=0,$white=1)
|
||||
{
|
||||
global $hesk_settings, $hesklang, $ticket, $reply, $trackingID, $can_edit, $can_archive, $can_delete;
|
||||
global $hesk_settings, $hesklang, $ticket, $reply, $trackingID, $can_edit, $can_archive, $can_delete, $isManager;
|
||||
|
||||
$options = '<div class="btn-group text-right" style="width: 70%; margin-left: auto; margin-right: auto">';
|
||||
|
||||
@ -1724,7 +1738,8 @@ function hesk_getAdminButtonsInTicket($reply=0,$white=1)
|
||||
if ($can_edit)
|
||||
{
|
||||
$tmp = $reply ? '&reply='.$reply['id'] : '';
|
||||
$options .= '<a class="btn btn-default" href="edit_post.php?track='.$trackingID.$tmp.'"><i class="fa fa-pencil"></i> '.$hesklang['edtt'].'</a> ';
|
||||
$mgr = $isManager ? '&isManager=true' : '';
|
||||
$options .= '<a class="btn btn-default" href="edit_post.php?track='.$trackingID.$tmp.$mgr.'"><i class="fa fa-pencil"></i> '.$hesklang['edtt'].'</a> ';
|
||||
}
|
||||
|
||||
|
||||
@ -1761,74 +1776,30 @@ function print_form()
|
||||
global $trackingID;
|
||||
|
||||
/* Print header */
|
||||
require_once(HESK_PATH . 'inc/header.inc.php');
|
||||
require_once(HESK_PATH . 'inc/headerAdmin.inc.php');
|
||||
|
||||
/* Print admin navigation */
|
||||
require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
|
||||
?>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<br />
|
||||
|
||||
<?php
|
||||
/* This will handle error, success and notice messages */
|
||||
hesk_handle_messages();
|
||||
?>
|
||||
|
||||
<div align="center">
|
||||
<table border="0" cellspacing="0" cellpadding="0" width="50%">
|
||||
<tr>
|
||||
<td width="7" height="7"><img src="../img/roundcornerslt.jpg" width="7" height="7" alt="" /></td>
|
||||
<td class="roundcornerstop"></td>
|
||||
<td><img src="../img/roundcornersrt.jpg" width="7" height="7" alt="" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="roundcornersleft"> </td>
|
||||
<td>
|
||||
|
||||
<form action="admin_ticket.php" method="get">
|
||||
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td width="1"><img src="../img/existingticket.png" alt="" width="60" height="60" /></td>
|
||||
<td>
|
||||
<p><b><?php echo $hesklang['view_existing']; ?></a></b></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1"> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1"> </td>
|
||||
<td>
|
||||
<?php echo $hesklang['ticket_trackID']; ?>: <br /><input type="text" name="track" maxlength="20" size="35" value="<?php echo $trackingID; ?>" /><br />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1"> </td>
|
||||
<td><input type="submit" value="<?php echo $hesklang['view_ticket']; ?>" class="orangebutton" onmouseover="hesk_btn(this,'orangebuttonover');" onmouseout="hesk_btn(this,'orangebutton');" /><input type="hidden" name="Refresh" value="<?php echo rand(10000,99999); ?>"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
</td>
|
||||
<td class="roundcornersright"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../img/roundcornerslb.jpg" width="7" height="7" alt="" /></td>
|
||||
<td class="roundcornersbottom"></td>
|
||||
<td width="7" height="7"><img src="../img/roundcornersrb.jpg" width="7" height="7" alt="" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="row">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<h3 align="left"><?php echo $hesklang['view_existing']; ?></a></h3>
|
||||
<form action="admin_ticket.php" method="get" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label for="track" class="control-label col-sm-3"><?php echo $hesklang['ticket_trackID']; ?></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="track" maxlength="20" size="35" value="<?php echo $trackingID; ?>"
|
||||
placeholder="<?php echo $hesklang['ticket_trackID']; ?>" class="form-control"><br>
|
||||
<input type="submit" value="<?php echo $hesklang['view_ticket']; ?>" class="btn btn-default">
|
||||
<input type="hidden" name="Refresh" value="<?php echo rand(10000,99999); ?>">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
<?php
|
||||
require_once(HESK_PATH . 'inc/footer.inc.php');
|
||||
exit();
|
||||
@ -1836,7 +1807,7 @@ function print_form()
|
||||
|
||||
|
||||
function hesk_printTicketReplies() {
|
||||
global $hesklang, $hesk_settings, $result, $reply;
|
||||
global $hesklang, $hesk_settings, $result, $reply, $isManager;
|
||||
|
||||
$i = $hesk_settings['new_top'] ? 0 : 1;
|
||||
|
||||
@ -1898,7 +1869,7 @@ function hesk_printTicketReplies() {
|
||||
|
||||
|
||||
function hesk_printReplyForm() {
|
||||
global $hesklang, $hesk_settings, $ticket, $admins, $can_options, $options, $can_assign_self;
|
||||
global $hesklang, $hesk_settings, $ticket, $admins, $can_options, $options, $can_assign_self, $isManager;
|
||||
?>
|
||||
<!-- START REPLY FORM -->
|
||||
|
||||
@ -2078,9 +2049,11 @@ function hesk_printReplyForm() {
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<input class="btn btn-default" type="submit" name="save_reply" value="<?php echo $hesklang['sacl']; ?>"
|
||||
<input class="btn btn-default" type="submit" name="save_reply" value="<?php echo $hesklang['sacl']; ?>">
|
||||
<?php if ($isManager): ?>
|
||||
<input type="hidden" name="isManager" value="1">
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div></div>
|
||||
</form>
|
||||
|
||||
<!-- END REPLY FORM -->
|
||||
|
@ -46,8 +46,10 @@ hesk_dbConnect();
|
||||
hesk_isLoggedIn();
|
||||
|
||||
/* Check permissions for this feature */
|
||||
hesk_checkPermission('can_view_tickets');
|
||||
hesk_checkPermission('can_reply_tickets');
|
||||
if (!isset($_REQUEST['isManager']) || !$_REQUEST['isManager']) {
|
||||
hesk_checkPermission('can_view_tickets');
|
||||
hesk_checkPermission('can_reply_tickets');
|
||||
}
|
||||
|
||||
/* A security check */
|
||||
hesk_token_check();
|
||||
|
@ -46,8 +46,10 @@ hesk_dbConnect();
|
||||
hesk_isLoggedIn();
|
||||
|
||||
/* Check permissions for this feature */
|
||||
hesk_checkPermission('can_view_tickets');
|
||||
hesk_checkPermission('can_edit_tickets');
|
||||
if (!isset($_REQUEST['isManager']) || !$_REQUEST['isManager']) {
|
||||
hesk_checkPermission('can_view_tickets');
|
||||
hesk_checkPermission('can_edit_tickets');
|
||||
}
|
||||
|
||||
/* Ticket ID */
|
||||
$trackingID = hesk_cleanID() or die($hesklang['int_error'].': '.$hesklang['no_trackID']);
|
||||
@ -70,7 +72,9 @@ if ( defined('HESK_DEMO') )
|
||||
}
|
||||
|
||||
/* Is this user allowed to view tickets inside this category? */
|
||||
hesk_okCategory($ticket['category']);
|
||||
if (!isset($_REQUEST['isManager']) || !$_REQUEST['isManager']) {
|
||||
hesk_okCategory($ticket['category']);
|
||||
}
|
||||
|
||||
if ( hesk_isREQUEST('reply') )
|
||||
{
|
||||
@ -466,6 +470,9 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
|
||||
</div>
|
||||
<div class="form-group" style="text-align: center">
|
||||
<input type="submit" value="<?php echo $hesklang['save_changes']; ?>" class="btn btn-default" />
|
||||
<?php if (isset($_REQUEST['isManager']) && $_REQUEST['isManager']): ?>
|
||||
<input type="hidden" name="isManager" value="1">
|
||||
<?php endif; ?>
|
||||
<a class="btn btn-default" href="javascript:history.go(-1)"><?php echo $hesklang['back']; ?></a>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -68,6 +68,7 @@ if ( $action = hesk_REQUEST('a') )
|
||||
elseif ($action == 'autoassign') {toggle_autoassign();}
|
||||
elseif ($action == 'type') {toggle_type();}
|
||||
elseif ($action == 'priority') {change_priority();}
|
||||
elseif ($action == 'manager') {change_manager();}
|
||||
}
|
||||
|
||||
/* Print header */
|
||||
@ -238,7 +239,6 @@ else {return false;}
|
||||
})
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<?php
|
||||
/* This will handle error, success and notice messages */
|
||||
@ -258,6 +258,7 @@ else {return false;}
|
||||
<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>
|
||||
|
||||
@ -275,6 +276,11 @@ else {return false;}
|
||||
|
||||
/* Get list of categories */
|
||||
$res = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` ORDER BY `cat_order` 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);
|
||||
}
|
||||
|
||||
$i=1;
|
||||
$j=0;
|
||||
@ -356,6 +362,7 @@ else {return false;}
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>'.output_user_dropdown($mycat['id'], $mycat['manager'], $users).'</td>
|
||||
<td>
|
||||
<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" style="font-size: 14px; color: '. ($mycat['type'] ? 'gray' : 'green') . '" data-toggle="tooltip" data-placement="top" title="'.$hesklang['geco'].'"></i></a>
|
||||
' . $autoassign_code . '
|
||||
@ -702,4 +709,58 @@ function toggle_type()
|
||||
hesk_process_messages($tmp,'./manage_categories.php','SUCCESS');
|
||||
|
||||
} // End toggle_type()
|
||||
|
||||
function output_user_dropdown($catId, $selectId, $userArray) {
|
||||
global $hesklang;
|
||||
|
||||
if (!hesk_checkPermission('can_set_manager', 0)) {
|
||||
foreach ($userArray as $user) {
|
||||
if ($user['id'] == $selectId) {
|
||||
return '<p>'.$user['name'].'</p>';
|
||||
}
|
||||
}
|
||||
return '<p>'.$hesklang['no_manager'].'</p>';
|
||||
} else {
|
||||
$dropdownMarkup = '<select class="form-control input-sm" name="managerid">
|
||||
<option value="0">'.$hesklang['no_manager'].'</option>';
|
||||
foreach ($userArray as $user) {
|
||||
$select = $selectId == $user['id'] ? 'selected' : '';
|
||||
$dropdownMarkup .= '<option value="'.$user['id'].'" '.$select.'>'.$user['name'].'</option>';
|
||||
}
|
||||
$dropdownMarkup .= '</select>';
|
||||
|
||||
|
||||
return '<form role="form" id="manager_form_'.$catId.'" action="manage_categories.php" method="post" class="form-inline" onchange="document.getElementById(\'manager_form_'.$catId.'\').submit();">
|
||||
<input type="hidden" name="a" value="manager">
|
||||
<input type="hidden" name="catid" value="'.$catId.'">
|
||||
'.$dropdownMarkup.'
|
||||
</form>';
|
||||
}
|
||||
}
|
||||
|
||||
function change_manager() {
|
||||
global $hesklang, $hesk_settings;
|
||||
|
||||
$catid = hesk_POST('catid');
|
||||
$newManagerId = hesk_POST('managerid');
|
||||
|
||||
hesk_dbQuery('UPDATE `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` SET `manager` = '.intval($newManagerId).' WHERE `id` = '.intval($catid));
|
||||
if (hesk_dbAffectedRows() != 1)
|
||||
{
|
||||
hesk_process_messages($hesklang['int_error'].': '.$hesklang['cat_not_found'],'./manage_categories.php');
|
||||
}
|
||||
if ($newManagerId == 0) {
|
||||
// There is no new manager.
|
||||
return;
|
||||
}
|
||||
// Add the category to the user's categories list, if not already present
|
||||
$currentCatRs = hesk_dbQuery('SELECT `categories` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'users` WHERE `id` = '.intval($newManagerId));
|
||||
$currentCategories = hesk_dbFetchAssoc($currentCatRs);
|
||||
$categories = explode(',', $currentCategories['categories']);
|
||||
if (!in_array($catid, $categories)) {
|
||||
hesk_dbQuery('UPDATE `'.hesk_dbEscape($hesk_settings['db_pfix']).'users` SET `categories` = \''.$currentCategories['categories'].','.$catid.'\' WHERE `id` = '.intval($newManagerId));
|
||||
}
|
||||
|
||||
hesk_process_messages($hesklang['manager_updated'],'./manage_categories.php','SUCCESS');
|
||||
}
|
||||
?>
|
||||
|
@ -79,6 +79,7 @@ $hesk_settings['features'] = array(
|
||||
'can_service_msg', /* User can manage service messages shown in customer interface */
|
||||
'can_man_email_tpl', /* User can manage email templates */
|
||||
'can_man_ticket_statuses', /* User can manage ticket statuses */
|
||||
'can_set_manager', /* User can set category managers */
|
||||
);
|
||||
|
||||
/* Set default values */
|
||||
@ -685,6 +686,31 @@ function update_user()
|
||||
hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` SET `owner`=0 WHERE `owner`='".intval($myuser['id'])."' AND `category` NOT IN (".$myuser['categories'].")");
|
||||
}
|
||||
|
||||
// Find the list of categories they are manager of. If they no longer have access to the category, revoke their manager permission.
|
||||
if ($myuser['isadmin']) {
|
||||
// Admins can't be managers
|
||||
hesk_dbQuery('UPDATE `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` SET `manager` = 0 WHERE `manager` = '.intval($myuser['id']));
|
||||
} else {
|
||||
$currentCatRs = hesk_dbQuery("SELECT `categories` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE `id` = '".intval($myuser['id'])."' LIMIT 1");
|
||||
$rowOfCategories = hesk_dbFetchAssoc($currentCatRs);
|
||||
$cats = $rowOfCategories['categories'];
|
||||
$currentCategories = explode(',', $cats);
|
||||
$newCategories = explode(',', $myuser['categories']);
|
||||
|
||||
// If any any elements are in current but not in new, add them to the revoke array
|
||||
$revokeCats = array();
|
||||
foreach ($currentCategories as $currentCategory) {
|
||||
if (!in_array($currentCategory, $newCategories) && $currentCategory != '') {
|
||||
array_push($revokeCats, $currentCategory);
|
||||
}
|
||||
}
|
||||
|
||||
if (count($revokeCats) > 0) {
|
||||
hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` SET `manager` = 0 WHERE `id` IN (" . implode(',', $revokeCats) . ")");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
hesk_dbQuery(
|
||||
"UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."users` SET
|
||||
`user`='".hesk_dbEscape($myuser['user'])."',
|
||||
@ -714,6 +740,13 @@ function update_user()
|
||||
`autorefresh`=".intval($myuser['autorefresh'])."
|
||||
WHERE `id`='".intval($myuser['id'])."' LIMIT 1");
|
||||
|
||||
// If they are now inactive, remove any manager rights
|
||||
if (!$myuser['active']) {
|
||||
hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` SET `manager` = 0 WHERE `manager` = ".intval($myuser['id']));
|
||||
}
|
||||
|
||||
|
||||
|
||||
unset($_SESSION['save_userdata']);
|
||||
unset($_SESSION['userdata']);
|
||||
|
||||
@ -892,6 +925,9 @@ function remove()
|
||||
hesk_process_messages($hesklang['cant_del_own'],'./manage_users.php');
|
||||
}
|
||||
|
||||
// Revoke manager rights
|
||||
hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` SET `manager` = 0 WHERE `manager` = ".intval($myuser));
|
||||
|
||||
/* Un-assign all tickets for this user */
|
||||
$res = hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` SET `owner`=0 WHERE `owner`='".intval($myuser)."'");
|
||||
|
||||
@ -962,9 +998,14 @@ function toggle_active()
|
||||
{
|
||||
$active = 0;
|
||||
$tmp = $hesklang['user_deactivated'];
|
||||
|
||||
// Revoke any manager rights
|
||||
hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` SET `manager` = 0 WHERE `manager` = ".intval($myuser));
|
||||
|
||||
$notificationSql = ", `autoassign` = 0, `notify_new_unassigned` = 0, `notify_new_my` = 0, `notify_reply_unassigned` = 0,
|
||||
`notify_reply_my` = 0, `notify_assigned` = 0, `notify_pm` = 0, `notify_note` = 0, `notify_note_unassigned` = 0";
|
||||
}
|
||||
|
||||
hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."users` SET `active` = '".$active."'".$notificationSql." WHERE `id` = '".intval($myuser)."'");
|
||||
|
||||
if (hesk_dbAffectedRows() != 1) {
|
||||
|
@ -452,6 +452,7 @@ function execute230Scripts() {
|
||||
executeQuery("ALTER TABLE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` ADD COLUMN `longitude` VARCHAR(100) NOT NULL DEFAULT 'E-0'");
|
||||
executeQuery("ALTER TABLE `".hesk_dbEscape($hesk_settings['db_pfix'])."stage_tickets` ADD COLUMN `latitude` VARCHAR(100) NOT NULL DEFAULT 'E-0'");
|
||||
executeQuery("ALTER TABLE `".hesk_dbEscape($hesk_settings['db_pfix'])."stage_tickets` ADD COLUMN `longitude` VARCHAR(100) NOT NULL DEFAULT 'E-0'");
|
||||
executeQuery("ALTER TABLE `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` ADD COLUMN `manager` INT NOT NULL DEFAULT 0");
|
||||
executeQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."settings` SET `Value` = '2.3.0' WHERE `Key` = 'modsForHeskVersion'");
|
||||
}
|
||||
|
||||
|
@ -66,6 +66,10 @@ $hesklang['your_current_location'] = 'Your location';
|
||||
$hesklang['requesting_location_ellipsis'] = 'Requesting location...';
|
||||
$hesklang['unable_to_determine_location'] = 'Unable to determine your location, or you declined to share it.';
|
||||
$hesklang['save_to_see_updated_address'] = 'Save the new location to see the updated address';
|
||||
$hesklang['manager'] = 'Manager';
|
||||
$hesklang['manager_updated'] = 'Category manager has been updated.';
|
||||
$hesklang['can_set_manager'] = 'Can set category managers';
|
||||
$hesklang['no_manager'] = 'No manager';
|
||||
|
||||
// ADDED OR MODIFIED IN Mods for HESK 2.2.1
|
||||
$hesklang['popart_no_colon']='Top Knowledgebase Articles'; // same as $hesklang['popart'] but without a colon (:)
|
||||
|
Loading…
x
Reference in New Issue
Block a user