Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ticket not escalate after given time #100

Open
sunnystark opened this issue Feb 3, 2018 · 1 comment
Open

ticket not escalate after given time #100

sunnystark opened this issue Feb 3, 2018 · 1 comment

Comments

@sunnystark
Copy link

1- Manage Departments->Allow escalation ->Escalate To->select department ->Escalate Wait Time-> here i mention 1 hour ...

put only numeric vale in this field ,

after wait 1 hour .. ticket did't escalate to higher department ..

i wish if my ticket auto escalate to another stuff .. i dont want manual assign.. to staff ..

solution please

There is code ..

ifthd->member['acp']['manage_depart'] ) { $this->ifthd->skin->error('no_perm'); } $this->ifthd->skin->set_section( 'Ticket Control' ); $this->ifthd->skin->set_description( 'Manage your tickets, departments, custom department fields and canned replies.' ); switch( $this->ifthd->input['code'] ) { case 'list': $this->list_departs(); break; case 'reorder': $this->reorder_departs(); break; case 'add': $this->add_depart(); break; case 'edit': $this->edit_depart(); break; case 'delete': $this->delete_depart(); break; case 'doreorder': $this->do_reorder(); break; case 'doadd': $this->do_create(); break; case 'doedit': $this->do_edit(); break; case 'dodel': $this->do_delete(); break; default: $this->list_departs(); break; } } #======================================= # @ List Departmenets # Show a list of departmenets. #======================================= function list_departs($error='', $alert='') { #============================= # Grab Departments #============================= $this->ifthd->core->db->construct( array( 'select' => 'all', 'from' => 'departments', 'order' => array( 'position' => 'asc' ), ) ); $this->ifthd->core->db->execute(); $depart_rows = ""; // Initialize for Security $row_count = 0; // Initialize for Security if ( $this->ifthd->core->db->get_num_rows() ) { while( $d = $this->ifthd->core->db->fetch_row() ) { $row_count ++; ( $row_count & 1 ) ? $row_class = 'option1-med' : $row_class = 'option2-med'; #============================= # Fix Up Information #============================= $d['description'] = $this->ifthd->shorten_str( $d['description'], 80, 1 ); $depart_rows .= " {$d['id']} {$d['name']} {$d['description']} {$d['tickets']} Edit Delete "; } } #============================= # Do Output #============================= if ( $error ) { $error = "
{$error}
"; } elseif ( $alert ) { $error = "
{$alert}
"; } $this->output = "{$error}
Reorder
Department List
". $depart_rows ."
ID Name Description Tickets Edit Delete
"; $this->ifthd->skin->add_output( $this->output ); $this->nav = array( "Management", "Departments", "List Departments", ); $this->ifthd->skin->do_output( array( 'nav' => $this->nav, 'title' => 'Manage Departments' ) ); } #======================================= # @ Add Department # Show add department form. #======================================= function add_depart($error="") { #============================= # Security Checks #============================= if ( ! $this->ifthd->member['acp']['manage_depart_add'] ) { $this->ifthd->skin->error('no_perm'); } if ( file_exists( HD_SRC .'pop3.php' ) ) { $pop3 = 1; } #============================= # Do Output #============================= if ( $error ) { $error = "
{$error}
"; } $this->output = "<script type='text/javascript'> function validate_form(form) { if ( ! form.name.value ) { alert('Please enter a name.'); form.name.focus(); return false; } if ( ! form.description.value ) { alert('Please enter a description.'); form.description.focus(); return false; } } </script> {$error}
Adding Department
"; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } if ( $pop3 ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= "
Name
Description <textarea name='description' id='description' cols='50' rows='2'>{$this->ifthd->input['description']}</textarea>
Auto Assign No one". $this->ifthd->build_staff_drop( $this->ifthd->input['auto_assign'] ) ."
+ Toggle information
Tickets submitted to this department will automatically be assigned to the above user.
Allow Escalation ". $this->ifthd->skin->yes_no_radio( 'can_escalate', $this->ifthd->input['can_escalate'] ) ."
+ Toggle information
Escalation places the ticket in a higher priority status and can also be moved to another department (see more options below).
Escalate To None". $this->ifthd->build_dprt_drop( $this->ifthd->input['escalate_depart'], 0, 1 ) ." (Optional)
+ Toggle information
When a ticket is escalated, you can also place it in another department, regardless of the department's group permissions. Select a department to escalate ticket to, or select None to leave the ticket in its current department.
Escalate Wait Time (Hours)
+ Toggle information
This is the amount of time that must have passed since ticket submission before a ticket can be escalated.
Auto Close Wait Time (Hours) (Leave blank to disable)
+ Toggle information
Tickets can be automatically closed when in the Awaiting Client Action status. Enter the amount of hours that must pass before a ticket is automatically closed. Leave blank or enter 0 to disable.
Enable Email Piping ". $this->ifthd->skin->yes_no_radio( 'email_pipe', $this->ifthd->input['email_pipe'] ) ."
+ Toggle information
If set to yes, tickets can be submitted and replied to by sending an email to the specified email address below. This requires additional setup with email forwarders.
Incoming Email
+ Toggle information
This is the email address that tickets and replies will be sent to for email piping.
Enable POP3 Checking ". $this->ifthd->skin->yes_no_radio( 'email_pop3', $this->ifthd->input['email_pop3'] ) ."
Mail Server Address *
Username *
Password *
Enable Guest Emails ". $this->ifthd->skin->yes_no_radio( 'guest_pipe', $this->ifthd->input['guest_pipe'] ) ."
+ Toggle information
If set to yes, guests (users who's email address is not registered) will be allowed to create tickets via email piping. Guests must also have permission to this department (see below).
Can Close Own Tickets ". $this->ifthd->skin->yes_no_radio( 'ticket_own_close', $this->ifthd->input['ticket_own_close'] ) ."
Can Reopen Own Tickets ". $this->ifthd->skin->yes_no_radio( 'ticket_own_reopen', $this->ifthd->input['ticket_own_reopen'] ) ."
Require Close Reason ". $this->ifthd->skin->yes_no_radio( 'close_reason', $this->ifthd->input['close_reason'] ) ."
+ Toggle information
If set to yes, a reason must be entered for the closing of each ticket. The close reason will be displayed on the view ticket page.
Allow Attachments ". $this->ifthd->skin->yes_no_radio( 'can_attach', $his->ifthd->input['can_attach'] ) ."
Group Permissions ". $this->ifthd->build_group_drop( $this->ifthd->input['group_perm'] ) ."
+ Toggle information
Select the groups that has permission to create tickets in this department. This only applies for ticket creation. If a ticket is moved to a department in which the ticket owner does not have permission to, they will still be able to access the ticket.
"; if ( $pop3 ) $this->output .= "
* Only applies when POP3 is enabled.
"; $this->output .= ""; $this->ifthd->skin->add_output( $this->output ); $this->nav = array( "Management", "Departments", "Add Department", ); $this->ifthd->skin->do_output( array( 'nav' => $this->nav, 'title' => 'Manage Departments' ) ); } #======================================= # @ Edit Department # Show edit department form. #======================================= function edit_depart($error="") { #============================= # Security Checks #============================= $this->ifthd->input['id'] = intval( $this->ifthd->input['id'] ); if ( ! $this->ifthd->member['acp']['manage_depart_edit'] ) { $this->ifthd->skin->error('no_perm'); } if ( file_exists( HD_SRC .'pop3.php' ) ) { $pop3 = 1; } $this->ifthd->core->db->construct( array( 'select' => 'all', 'from' => 'departments', 'where' => array( 'id', '=', $this->ifthd->input['id'] ), 'limit' => array( 0,1 ), ) ); $this->ifthd->core->db->execute(); if ( ! $this->ifthd->core->db->get_num_rows() ) { $this->ifthd->skin->error('no_department'); } $d = $this->ifthd->core->db->fetch_row(); #============================= # Do Output #============================= if ( $error ) { $error = "
{$error}
"; $name = $this->ifthd->input['name']; $description = $this->ifthd->input['description']; $can_escalate = $this->ifthd->input['can_escalate']; $escalate_depart = $this->ifthd->input['escalate_depart']; $escalate_wait = $this->ifthd->input['escalate_wait']; $auto_close = $this->ifthd->input['auto_close']; $email_pipe = $this->ifthd->input['email_pipe']; $guest_pipe = $this->ifthd->input['guest_pipe']; $incoming_email = $this->ifthd->input['incoming_email']; $email_pop3 = $this->ifthd->input['email_pop3']; $pop3_host = $this->ifthd->input['pop3_host']; $pop3_user = $this->ifthd->input['pop3_user']; $pop3_pass = $this->ifthd->input['pop3_pass']; $ticket_own_close = $this->ifthd->input['ticket_own_close']; $ticket_own_reopen = $this->ifthd->input['ticket_own_reopen']; $close_reason = $this->ifthd->input['close_reason']; $can_attach = $this->ifthd->input['can_attach']; $auto_assign = $this->ifthd->input['auto_assign']; $group_perm = $this->ifthd->input['group_perm']; } else { $name = $d['name']; $description = $d['description']; $can_escalate = $d['can_escalate']; $escalate_depart = $d['escalate_depart']; $escalate_wait = $d['escalate_wait']; $auto_close = $d['auto_close']; $email_pipe = $d['email_pipe']; $guest_pipe = $d['guest_pipe']; $incoming_email = $d['incoming_email']; $email_pop3 = $d['email_pop3']; $pop3_host = $d['pop3_host']; $pop3_user = $d['pop3_user']; $pop3_pass = $d['pop3_pass']; $ticket_own_close = $d['ticket_own_close']; $ticket_own_reopen = $d['ticket_own_reopen']; $close_reason = $d['close_reason']; $can_attach = $d['can_attach']; $auto_assign = $d['auto_assign']; $this->ifthd->core->db->construct( array( 'select' => array( 'g_id', 'g_m_depart_perm' ), 'from' => 'groups', ) ); $this->ifthd->core->db->execute(); if ( $this->ifthd->core->db->get_num_rows() ) { while ( $g = $this->ifthd->core->db->fetch_row() ) { $g_temp_perm = unserialize( $g['g_m_depart_perm'] ); if ( $g_temp_perm[ $d['id'] ] ) { $group_perm[] = $g['g_id']; } } } } $this->output = "<script type='text/javascript'> function validate_form(form) { if ( ! form.name.value ) { alert('Please enter a name.'); form.name.focus(); return false; } if ( ! form.description.value ) { alert('Please enter a description.'); form.description.focus(); return false; } } </script> {$error}
Editing Department: {$d['name']}
"; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } if ( $pop3 ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= ""; if ( ACP_HELP ) { $this->output .= ""; } $this->output .= "
Name
Description <textarea name='description' id='description' cols='50' rows='2'>{$description}</textarea>
Auto Assign No one". $this->ifthd->build_staff_drop( $auto_assign ) ."
+ Toggle information
Tickets submitted to this department will automatically be assigned to the above user.
Allow Escalation ". $this->ifthd->skin->yes_no_radio( 'can_escalate', $can_escalate ) ."
+ Toggle information
Escalation places the ticket in a higher priority status and can also be moved to another department (see more options below).
Escalate To None". $this->ifthd->build_dprt_drop( $escalate_depart, $d['id'], 1 ) ." (Optional)
+ Toggle information
When a ticket is escalated, you can also place it in another department, regardless of the department's group permissions. Select a department to escalate ticket to, or select None to leave the ticket in its current department.
Escalate Wait Time (Hours)
+ Toggle information
This is the amount of time that must have passed since ticket submission before a ticket can be escalated.
Auto Close Wait Time (Hours) (Leave blank to disable)
+ Toggle information
Tickets can be automatically closed when in the Awaiting Client Action status. Enter the amount of hours that must pass before a ticket is automatically closed. Leave blank or enter 0 to disable.
Enable Email Piping ". $this->ifthd->skin->yes_no_radio( 'email_pipe', $email_pipe ) ."
+ Toggle information
If set to yes, tickets can be submitted and replied to by sending an email to the specified email address below. This requires additional setup with email forwarders.
Incoming Email
+ Toggle information
This is the email address that tickets and replies will be sent to for email piping.
Enable POP3 Checking ". $this->ifthd->skin->yes_no_radio( 'email_pop3', $email_pop3 ) ."
Mail Server Address *
Username *
Password *
Enable Guest Emails ". $this->ifthd->skin->yes_no_radio( 'guest_pipe', $guest_pipe ) ."
+ Toggle information
If set to yes, guests (users who's email address is not registered) will be allowed to create tickets via email piping. Guests must also have permission to this department (see below).
Can Close Own Tickets ". $this->ifthd->skin->yes_no_radio( 'ticket_own_close', $ticket_own_close ) ."
Can Reopen Own Tickets ". $this->ifthd->skin->yes_no_radio( 'ticket_own_reopen', $ticket_own_reopen ) ."
Require Close Reason ". $this->ifthd->skin->yes_no_radio( 'close_reason', $close_reason ) ."
+ Toggle information
If set to yes, a reason must be entered for the closing of each ticket. The close reason will be displayed on the view ticket page.
Allow Attachments ". $this->ifthd->skin->yes_no_radio( 'can_attach', $can_attach ) ."
Group Permissions ". $this->ifthd->build_group_drop( $group_perm ) ."
+ Toggle information
Select the groups that has permission to create tickets in this department. This only applies for ticket creation. If a ticket is moved to a department in which the ticket owner does not have permission to, they will still be able to access the ticket.
"; if ( $pop3 ) $this->output .= "
* Only applies when POP3 is enabled.
"; $this->output .= ""; $this->ifthd->skin->add_output( $this->output ); $this->nav = array( "Management", "Departments", "Edit Department", ); $this->ifthd->skin->do_output( array( 'nav' => $this->nav, 'title' => 'Manage Departments' ) ); } #======================================= # @ Delete Department # Show delete department form. #======================================= function delete_depart() { #============================= # Security Checks #============================= $this->ifthd->input['id'] = intval( $this->ifthd->input['id'] ); if ( ! $this->ifthd->member['acp']['manage_depart_delete'] ) { $this->ifthd->skin->error('no_perm'); } $this->ifthd->core->db->construct( array( 'select' => 'all', 'from' => 'departments', 'where' => array( 'id', '=', $this->ifthd->input['id'] ), 'limit' => array( 0,1 ), ) ); $this->ifthd->core->db->execute(); if ( ! $this->ifthd->core->db->get_num_rows() ) { $this->ifthd->skin->error('no_department'); } $d = $this->ifthd->core->db->fetch_row(); #============================= # Do Output #============================= $depart_drop = $this->ifthd->build_dprt_drop( 0, $d['id'], 1 ); $this->output = "
Deleting Department: {$d['name']}
What would you like to do with the tickets in this department?
Move the tickets to this department: {$depart_drop}
Delete the tickets
"; $this->ifthd->skin->add_output( $this->output ); $this->nav = array( "Management", "Departments", "Delete Department", ); $this->ifthd->skin->do_output( array( 'nav' => $this->nav, 'title' => 'Manage Departments' ) ); } #======================================= # @ Do Create # Create a new department. #======================================= function do_create() { #============================= # Security Checks #============================= if ( file_exists( HD_SRC .'pop3.php' ) ) { $pop3 = 1; } if ( ! $this->ifthd->member['acp']['manage_depart_add'] ) { $this->ifthd->skin->error('no_perm'); } if ( ! $this->ifthd->input['name'] ) { $this->add_depart('Please enter a name.'); } if ( ! $this->ifthd->input['description'] ) { $this->add_depart('Please enter a description.'); } if ( ! is_array( $this->ifthd->input['group_perm'] ) ) { $this->add_depart('Please select some group permissions.'); } if ( $this->ifthd->input['email_pipe'] ) { if ( ! $this->ifthd->validate_email( $this->ifthd->input['incoming_email'] ) ) { $this->add_depart('Please enter a valid incoming email address.'); } $this->ifthd->core->db->construct( array( 'select' => array( 'id' ), 'from' => 'departments', 'where' => array( 'incoming_email', '=', $this->ifthd->input['incoming_email'] ), 'limit' => array( 0,1 ), ) ); $this->ifthd->core->db->execute(); if ( $this->ifthd->core->db->get_num_rows() ) { $this->add_depart('That incoming email address is already used for another department. Please choose a different email.'); } } #============================= # Add Department #============================= $db_array = array( 'name' => $this->ifthd->input['name'], 'description' => $this->ifthd->input['description'], 'can_escalate' => $this->ifthd->input['can_escalate'], 'escalate_depart' => $this->ifthd->input['escalate_depart'], 'escalate_wait' => $this->ifthd->input['escalate_wait'], 'auto_close' => $this->ifthd->input['auto_close'], 'ticket_own_close' => $this->ifthd->input['ticket_own_close'], 'ticket_own_reopen' => $this->ifthd->input['ticket_own_reopen'], 'close_reason' => $this->ifthd->input['close_reason'], 'can_attach' => $this->ifthd->input['can_attach'], 'email_pipe' => $this->ifthd->input['email_pipe'], 'guest_pipe' => $this->ifthd->input['guest_pipe'], 'incoming_email' => $this->ifthd->input['incoming_email'], 'auto_assign' => $this->ifthd->input['auto_assign'], ); if ( $pop3 ) { $db_array['email_pop3'] = $this->ifthd->input['email_pop3']; $db_array['pop3_host'] = $this->ifthd->input['pop3_host']; $db_array['pop3_user'] = $this->ifthd->input['pop3_user']; $db_array['pop3_pass'] = $this->ifthd->input['pop3_pass']; } $this->ifthd->core->db->construct( array( 'insert' => 'departments', 'set' => $db_array, ) ); $this->ifthd->core->db->execute(); $depart_id = $this->ifthd->core->db->get_insert_id(); $this->ifthd->log( 'admin', "Department Added '". $this->ifthd->input['name'] ."'", 1, $depart_id ); #============================= # Generate Permissions #============================= $this->ifthd->core->db->construct( array( 'select' => array( 'g_id', 'g_m_depart_perm' ), 'from' => 'groups', 'where' => array( 'g_id', 'in', $this->ifthd->input['group_perm'] ), ) ); $this->ifthd->core->db->execute(); if ( $this->ifthd->core->db->get_num_rows() ) { while ( $g = $this->ifthd->core->db->fetch_row() ) { $temp_perm[ $g['g_id'] ] = unserialize( $g['g_m_depart_perm'] ); $temp_perm[ $g['g_id'] ][ $depart_id ] = 1; } } while ( list( $gid, $g_perm ) = each( $temp_perm ) ) { $this->ifthd->core->db->construct( array( 'update' => 'groups', 'set' => array( 'g_m_depart_perm' => serialize($g_perm) ), 'where' => array( 'g_id', '=', $gid ), ) ); $this->ifthd->core->db->execute(); } #============================= # Rebuild Cache #============================= $this->ifthd->rebuild_dprt_cache(); $this->ifthd->rebuild_group_cache(); #============================= # Redirect #============================= #$this->ifthd->skin->redirect( '?section=manage&act=depart&code=list', 'add_depart_success' ); $this->list_departs( '', 'The department has been successfully added.' ); } #======================================= # @ Do Edit # Edit a department. #======================================= function do_edit() { #============================= # Security Checks #============================= if ( file_exists( HD_SRC .'pop3.php' ) ) { $pop3 = 1; } $this->ifthd->input['id'] = intval( $this->ifthd->input['id'] ); if ( ! $this->ifthd->member['acp']['manage_depart_edit'] ) { $this->ifthd->skin->error('no_perm'); } $this->ifthd->core->db->construct( array( 'select' => 'all', 'from' => 'departments', 'where' => array( 'id', '=', $this->ifthd->input['id'] ), 'limit' => array( 0,1 ), ) ); $this->ifthd->core->db->execute(); if ( ! $this->ifthd->core->db->get_num_rows() ) { $this->ifthd->skin->error('no_department'); } if ( ! $this->ifthd->input['name'] ) { $this->edit_depart('Please enter a name.'); } if ( ! $this->ifthd->input['description'] ) { $this->edit_depart('Please enter a description.'); } if ( ! is_array( $this->ifthd->input['group_perm'] ) ) { $this->edit_depart('Please select some group permissions.'); } if ( $this->ifthd->input['email_pipe'] ) { if ( ! $this->ifthd->validate_email( $this->ifthd->input['incoming_email'] ) ) { $this->edit_depart('Please enter a valid incoming email address.'); } $this->ifthd->core->db->construct( array( 'select' => array( 'id' ), 'from' => 'departments', 'where' => array( array( 'incoming_email', '=', $this->ifthd->input['incoming_email'] ), array( 'id', '!=', $this->ifthd->input['id'], 'and' ) ), 'limit' => array( 0,1 ), ) ); $this->ifthd->core->db->execute(); if ( $this->ifthd->core->db->get_num_rows() ) { $this->edit_depart('That incoming email address is already used for another department. Please choose a different email.'); } } #============================= # Edit Department #============================= $db_array = array( 'name' => $this->ifthd->input['name'], 'description' => $this->ifthd->input['description'], 'can_escalate' => $this->ifthd->input['can_escalate'], 'escalate_depart' => $this->ifthd->input['escalate_depart'], 'escalate_wait' => $this->ifthd->input['escalate_wait'], 'auto_close' => $this->ifthd->input['auto_close'], 'ticket_own_close' => $this->ifthd->input['ticket_own_close'], 'ticket_own_reopen' => $this->ifthd->input['ticket_own_reopen'], 'close_reason' => $this->ifthd->input['close_reason'], 'can_attach' => $this->ifthd->input['can_attach'], 'email_pipe' => $this->ifthd->input['email_pipe'], 'guest_pipe' => $this->ifthd->input['guest_pipe'], 'incoming_email' => $this->ifthd->input['incoming_email'], 'auto_assign' => $this->ifthd->input['auto_assign'], ); if ( $pop3 ) { $db_array['email_pop3'] = $this->ifthd->input['email_pop3']; $db_array['pop3_host'] = $this->ifthd->input['pop3_host']; $db_array['pop3_user'] = $this->ifthd->input['pop3_user']; $db_array['pop3_pass'] = $this->ifthd->input['pop3_pass']; } $this->ifthd->core->db->construct( array( 'update' => 'departments', 'set' => $db_array, 'where' => array( 'id', '=', $this->ifthd->input['id'] ), ) ); $this->ifthd->core->db->execute(); $this->ifthd->log( 'admin', "Department Edited '". $this->ifthd->input['name'] ."'", 1, $this->ifthd->input['id'] ); #============================= # Generate Permissions #============================= if ( is_array( $this->ifthd->input['group_perm'] ) ) { while ( list( , $mdperm ) = each( $this->ifthd->input['group_perm'] ) ) { $m_depart_perm[ $mdperm ] = 1; } } $this->ifthd->core->db->construct( array( 'select' => array( 'g_id', 'g_m_depart_perm' ), 'from' => 'groups', ) ); $this->ifthd->core->db->execute(); if ( $this->ifthd->core->db->get_num_rows() ) { while ( $g = $this->ifthd->core->db->fetch_row() ) { $temp_perm[ $g['g_id'] ] = unserialize( $g['g_m_depart_perm'] ); } } while ( list( $gid, $g_perm ) = each( $temp_perm ) ) { if ( $m_depart_perm[ $gid ] ) { $g_perm[ $this->ifthd->input['id'] ] = 1; } else { $g_perm[ $this->ifthd->input['id'] ] = 0; } $this->ifthd->core->db->construct( array( 'update' => 'groups', 'set' => array( 'g_m_depart_perm' => serialize($g_perm) ), 'where' => array( 'g_id', '=', $gid ), ) ); $this->ifthd->core->db->execute(); } #============================= # Rebuild Cache #============================= $this->ifthd->rebuild_dprt_cache(); $this->ifthd->rebuild_group_cache(); #============================= # Redirect #============================= #$this->ifthd->skin->redirect( '?section=manage&act=depart&code=list', 'edit_depart_success' ); $this->list_departs( '', 'The department has been successfully updated.' ); } #======================================= # @ Do Delete # Delete a department. #======================================= function do_delete() { #============================= # Security Checks #============================= $this->ifthd->input['id'] = intval( $this->ifthd->input['id'] ); if ( ! $this->ifthd->member['acp']['manage_depart_delete'] ) { $this->ifthd->skin->error('no_perm'); } $this->ifthd->core->db->construct( array( 'select' => 'all', 'from' => 'departments', 'where' => array( 'id', '=', $this->ifthd->input['id'] ), 'limit' => array( 0,1 ), ) ); $this->ifthd->core->db->execute(); if ( ! $this->ifthd->core->db->get_num_rows() ) { $this->ifthd->skin->error('no_department'); } $da = $this->ifthd->core->db->fetch_row(); #============================= # Perform Our Action #============================= if ( $this->ifthd->input['action'] == 1 ) { $this->ifthd->core->db->construct( array( 'select' => 'all', 'from' => 'departments', 'where' => array( 'id', '=', $da['id'] ), 'limit' => array( 0,1 ), ) ); $this->ifthd->core->db->execute(); if ( ! $this->ifthd->core->db->get_num_rows() ) { $this->ifthd->skin->error('no_department'); } $d = $this->ifthd->core->db->fetch_row(); $this->ifthd->core->db->construct( array( 'update' => 'tickets', 'set' => array( 'did' => $d['id'], 'dname' => $d['name'] ), 'where' => array( 'did', '=', $da['id'] ), ) ); $this->ifthd->core->db->execute(); } elseif ( $this->ifthd->input['action'] == 2 ) { $this->ifthd->core->db->construct( array( 'delete' => 'tickets', 'where' => array( 'did', '=', $da['id'] ), ) ); $this->ifthd->core->db->execute(); } #============================= # Delete Department #============================= $this->ifthd->core->db->construct( array( 'delete' => 'departments', 'where' => array( 'id', '=', $da['id'] ), 'limit' => array( 1 ), ) ); $this->ifthd->core->db->execute(); $this->ifthd->log( 'admin', "Department Deleted '". $da['name'] ."'", 2, $da['id'] ); #============================= # Rebuild Cache #============================= $this->ifthd->rebuild_dprt_cache(); #============================= # Redirect #============================= #$this->ifthd->skin->redirect( '?section=manage&act=depart&code=list', 'delete_depart_success' ); $this->list_departs( 'The department has been successfully deleted.' ); } #======================================= # @ Reorder Departmenets # Show reoarder departments form. #======================================= function reorder_departs() { #============================= # Security Checks #============================= if ( ! $this->ifthd->member['acp']['manage_depart_reorder'] ) { $this->ifthd->skin->error('no_perm'); } #============================= # Grab Departments #============================= $this->ifthd->core->db->construct( array( 'select' => 'all', 'from' => 'departments', 'order' => array( 'position' => 'asc' ), ) ); $this->ifthd->core->db->execute(); $depart_rows = ""; // Initialize for Security $row_count = 0; // Initialize for Security if ( $this->ifthd->core->db->get_num_rows() ) { while( $d = $this->ifthd->core->db->fetch_row() ) { $row_count ++; ( $row_count & 1 ) ? $row_class = 'option1-med' : $row_class = 'option2-med'; #============================= # Fix Up Information #============================= $d['description'] = $this->ifthd->shorten_str( $d['description'], 80, 1 ); if ( $error ) { $cur_pos = $this->ifthd->input[ 'pos_'. $d['id'] ]; } else { $cur_pos = $d['position']; } $depart_rows .= "
{$d['name']} ({$d['description']})
"; } } #============================= # Do Output #============================= $this->output = "
Reordering Departments
To reorder departments, simply click and drag the department to the desired position.
". $depart_rows ."
<script type='text/javascript' language='javascript'> Sortable.create( 'draggable', {tag:'div',constraint:'vertical'} ) function get_order() { order = get_by_id('order'); order.value = Sortable.serialize('draggable'); } </script>"; $this->ifthd->skin->add_output( $this->output ); $this->nav = array( "Management", "Departments", "Reorder Departments", ); $this->ifthd->skin->do_output( array( 'nav' => $this->nav, 'title' => 'Manage Departments' ) ); } #======================================= # @ Do Reorder # Reorder departments. #======================================= function do_reorder() { #============================= # Security Checks #============================= if ( ! $this->ifthd->member['acp']['manage_depart_reorder'] ) { $this->ifthd->skin->error('no_perm'); } $raw_order = str_replace( '&', '&', $this->ifthd->input['order'] ); parse_str( $raw_order, $order ); $final_order = array(); // Initialize for Security $depart_count = 0; // Initialize for Security while( list( , $did ) = each( $order['draggable'] ) ) { $depart_count ++; $final_order[ $did ] = $depart_count; } #============================= # Reorder Departments #============================= $this->ifthd->core->db->construct( array( 'select' => 'all', 'from' => 'departments', 'order' => array( 'position' => 'asc' ), ) ); $sel_dep = $this->ifthd->core->db->execute(); $depart_rows = ""; // Initialize for Security if ( $this->ifthd->core->db->get_num_rows($sel_dep) ) { while( $d = $this->ifthd->core->db->fetch_row($sel_dep) ) { if ( $d['position'] != intval( $final_order[ $d['id'] ] ) ) { $this->ifthd->core->db->construct( array( 'update' => 'departments', 'set' => array( 'position' => intval( $final_order[ $d['id'] ] ) ), 'where' => array( 'id', '=', $d['id'] ), ) ); $this->ifthd->core->db->execute(); } } } $this->ifthd->log( 'admin', "Departments Reordered" ); #============================= # Rebuild Cache #============================= $this->ifthd->rebuild_dprt_cache(); #============================= # Redirect #============================= #$this->ifthd->skin->redirect( '?section=manage&act=depart&code=list', 'reorder_depart_success' ); $this->list_departs( '', 'The departments have been successfully reordered. '); } } ?>
@DanielRuf
Copy link

DanielRuf commented Feb 5, 2018

solution please

Sorry but TrellisDesk is not maintained and not developed anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants