gruffen commited on 2011-05-27 03:59:03
Showing 7 changed files, with 33 additions and 17 deletions.
... | ... |
@@ -387,6 +387,8 @@ $txt['shd_admin_cannot_move_dept_down'] = 'You cannot move that department down; |
387 | 387 |
$txt['shd_dept_theme'] = 'Use a specific theme in this department?'; |
388 | 388 |
$txt['shd_dept_theme_note'] = 'You can set a theme for the helpdesk that differs to the main forum theme. This setting lets you override either the helpdesk or forum theme just within this department, for perhaps department specific branding.'; |
389 | 389 |
$txt['shd_dept_theme_use_default'] = 'Use the helpdesk/forum default theme'; |
390 |
+$txt['shd_dept_autoclose_days'] = 'Number of days after which to automatically close a ticket?'; |
|
391 |
+$txt['shd_dept_autoclose_days_note'] = 'Use 0 to indicate that tickets in this department should never be automatically marked closed, no matter how old they are.'; |
|
390 | 392 |
//@} |
391 | 393 |
|
392 | 394 |
//! Plugins |
... | ... |
@@ -571,7 +571,7 @@ function shd_modify_actionlog_options($return_config) |
571 | 571 |
array('check', 'shd_logopt_newposts', 'disabled' => !empty($modSettings['shd_disable_action_log'])), |
572 | 572 |
array('check', 'shd_logopt_editposts', 'disabled' => !empty($modSettings['shd_disable_action_log'])), |
573 | 573 |
array('check', 'shd_logopt_resolve', 'disabled' => !empty($modSettings['shd_disable_action_log'])), |
574 |
- array('check', 'shd_logopt_autoclose', 'disabled' => !empty($modSettings['shd_disable_action_log']) || empty($modSettings['shd_autoclose_tickets']) || empty($modSettings['shd_autoclose_tickets_days'])), |
|
574 |
+ array('check', 'shd_logopt_autoclose', 'disabled' => !empty($modSettings['shd_disable_action_log'])), |
|
575 | 575 |
array('checkall', 'shd_logopt_1', array('shd_logopt_newposts', 'shd_logopt_editposts', 'shd_logopt_resolve', 'shd_logopt_autoclose')), |
576 | 576 |
'', |
577 | 577 |
array('check', 'shd_logopt_assign', 'disabled' => !empty($modSettings['shd_disable_action_log'])), |
... | ... |
@@ -239,7 +239,7 @@ function shd_admin_edit_dept() |
239 | 239 |
|
240 | 240 |
// Get the current department |
241 | 241 |
$query = $smcFunc['db_query']('', ' |
242 |
- SELECT id_dept, dept_name, description, board_cat, before_after, dept_theme |
|
242 |
+ SELECT id_dept, dept_name, description, board_cat, before_after, dept_theme, autoclose_days |
|
243 | 243 |
FROM {db_prefix}helpdesk_depts |
244 | 244 |
WHERE id_dept = {int:dept}', |
245 | 245 |
array( |
... | ... |
@@ -426,6 +426,12 @@ function shd_admin_save_dept() |
426 | 426 |
shd_get_dept_theme_list(); |
427 | 427 |
$_POST['dept_theme'] = isset($_POST['dept_theme']) && isset($context['dept_theme_list'][$_POST['dept_theme']]) ? (int) $_POST['dept_theme'] : 0; |
428 | 428 |
|
429 |
+ $_POST['autoclose_days'] = isset($_POST['autoclose_days']) ? (int) $_POST['autoclose_days'] : 0; |
|
430 |
+ if ($_POST['autoclose_days'] < 0) |
|
431 |
+ $_POST['autoclose_days'] = 0; |
|
432 |
+ if ($_POST['autoclose_days'] > 9999) |
|
433 |
+ $_POST['autoclose_days'] = 9999; |
|
434 |
+ |
|
429 | 435 |
// 6. Commit that to DB. |
430 | 436 |
$smcFunc['db_query']('', ' |
431 | 437 |
UPDATE {db_prefix}helpdesk_depts |
... | ... |
@@ -433,7 +439,8 @@ function shd_admin_save_dept() |
433 | 439 |
description = {string:description}, |
434 | 440 |
board_cat = {int:board_cat}, |
435 | 441 |
before_after = {int:before_after}, |
436 |
- dept_theme = {int:dept_theme} |
|
442 |
+ dept_theme = {int:dept_theme}, |
|
443 |
+ autoclose_days = {int:autoclose_days} |
|
437 | 444 |
WHERE id_dept = {int:id_dept}', |
438 | 445 |
array( |
439 | 446 |
'id_dept' => $_REQUEST['dept'], |
... | ... |
@@ -442,6 +449,7 @@ function shd_admin_save_dept() |
442 | 449 |
'board_cat' => $_POST['dept_cat'], |
443 | 450 |
'before_after' => $_POST['dept_beforeafter'], |
444 | 451 |
'dept_theme' => $_POST['dept_theme'], |
452 |
+ 'autoclose_days' => $_POST['autoclose_days'], |
|
445 | 453 |
) |
446 | 454 |
); |
447 | 455 |
|
... | ... |
@@ -21,7 +21,7 @@ |
21 | 21 |
* This file handles the scheduled tasks that can come along. |
22 | 22 |
* |
23 | 23 |
* @package source |
24 |
- * @since 1.0 |
|
24 |
+ * @since 2.0 |
|
25 | 25 |
*/ |
26 | 26 |
|
27 | 27 |
if (!defined('SMF')) |
... | ... |
@@ -41,7 +41,7 @@ function shd_scheduled() |
41 | 41 |
global $smcFunc, $modSettings; |
42 | 42 |
|
43 | 43 |
shd_scheduled_close_tickets(); |
44 |
- shd_scheduled_purge_tickets(); |
|
44 |
+ //shd_scheduled_purge_tickets(); |
|
45 | 45 |
return true; |
46 | 46 |
} |
47 | 47 |
|
... | ... |
@@ -49,21 +49,19 @@ function shd_scheduled_close_tickets() |
49 | 49 |
{ |
50 | 50 |
global $modSettings, $smcFunc, $txt; |
51 | 51 |
|
52 |
- if (empty($modSettings['shd_autoclose_tickets']) || empty($modSettings['shd_autoclose_tickets_days'])) |
|
53 |
- return; |
|
54 |
- |
|
55 | 52 |
@set_time_limit(600); // Ten minutes. Is a big job, possibly. |
56 | 53 |
|
57 | 54 |
// 1. Get the list of tickets. |
58 | 55 |
$query = $smcFunc['db_query']('', ' |
59 |
- SELECT hdt.id_ticket, hdt.subject, hdt.id_member_started, hdt.id_member_updated, hdtr_last.poster_time |
|
60 |
- FROM {db_prefix}helpdesk_tickets AS hdt |
|
61 |
- INNER JOIN {db_prefix}helpdesk_ticket_replies AS hdtr_last ON (hdt.id_last_msg = hdtr_last.id_msg) |
|
62 |
- WHERE hdt.status IN ({array_int:open}) |
|
63 |
- AND poster_time <= {int:old_time}', |
|
56 |
+ SELECT hdt.id_ticket, hdt.subject, hdt.id_member_started, hdt.id_member_updated |
|
57 |
+ FROM {db_prefix}helpdesk_depts AS hdd |
|
58 |
+ INNER JOIN {db_prefix}helpdesk_tickets AS hdt ON (hdd.id_dept = hdt.id_dept) |
|
59 |
+ WHERE hdd.autoclose_days > 0 |
|
60 |
+ AND hdt.last_updated <= {int:time} - (86400 * hdd.autoclose_days) |
|
61 |
+ AND hdt.status IN ({array_int:open})', |
|
64 | 62 |
array( |
65 | 63 |
'open' => array(TICKET_STATUS_NEW, TICKET_STATUS_PENDING_STAFF, TICKET_STATUS_PENDING_USER), |
66 |
- 'old_time' => time() - 86400 * $modSettings['shd_autoclose_tickets_days'], |
|
64 |
+ 'time' => time(), |
|
67 | 65 |
) |
68 | 66 |
); |
69 | 67 |
$tickets = array(); |
... | ... |
@@ -85,11 +83,13 @@ function shd_scheduled_close_tickets() |
85 | 83 |
// 2. Update the tickets. |
86 | 84 |
$query = $smcFunc['db_query']('', ' |
87 | 85 |
UPDATE {db_prefix}helpdesk_tickets |
88 |
- SET status = {int:closed} |
|
86 |
+ SET status = {int:closed}, |
|
87 |
+ last_updated = {int:time} |
|
89 | 88 |
WHERE id_ticket IN ({array_int:tickets})', |
90 | 89 |
array( |
91 | 90 |
'closed' => TICKET_STATUS_CLOSED, |
92 | 91 |
'tickets' => $tickets, |
92 |
+ 'time' => time(), |
|
93 | 93 |
) |
94 | 94 |
); |
95 | 95 |
|
... | ... |
@@ -233,6 +233,13 @@ function template_shd_edit_dept() |
233 | 233 |
|
234 | 234 |
echo ' |
235 | 235 |
</dd> |
236 |
+ <dt> |
|
237 |
+ <strong>', $txt['shd_dept_autoclose_days'], '</strong> |
|
238 |
+ <div class="smalltext">', $txt['shd_dept_autoclose_days_note'], '</div> |
|
239 |
+ </dt> |
|
240 |
+ <dd> |
|
241 |
+ <input type="text" name="autoclose_days" id="autoclose_days" value="', $context['shd_dept']['autoclose_days'], '" class="input_text" size="5" /></dd> |
|
242 |
+ </dd> |
|
236 | 243 |
</dl> |
237 | 244 |
</div> |
238 | 245 |
</div> |