gruffen commited on 2011-06-09 07:25:29
Showing 2 changed files, with 19 additions and 8 deletions.
... | ... |
@@ -53,7 +53,7 @@ function shd_scheduled_close_tickets() |
53 | 53 |
|
54 | 54 |
// 1. Get the list of tickets. |
55 | 55 |
$query = $smcFunc['db_query']('', ' |
56 |
- SELECT hdt.id_ticket, hdt.subject, hdt.id_member_started, hdt.id_member_updated |
|
56 |
+ SELECT hdt.id_ticket, hdt.subject, hdt.id_member_started, hdt.id_member_updated, hdt.id_dept |
|
57 | 57 |
FROM {db_prefix}helpdesk_depts AS hdd |
58 | 58 |
INNER JOIN {db_prefix}helpdesk_tickets AS hdt ON (hdd.id_dept = hdt.id_dept) |
59 | 59 |
WHERE hdd.autoclose_days > 0 |
... | ... |
@@ -67,21 +67,24 @@ function shd_scheduled_close_tickets() |
67 | 67 |
$tickets = array(); |
68 | 68 |
$subjects = array(); |
69 | 69 |
$members = array(); |
70 |
+ $depts = array(); |
|
70 | 71 |
while ($row = $smcFunc['db_fetch_assoc']($query)) |
71 | 72 |
{ |
72 | 73 |
$tickets[$row['id_ticket']] = $row['id_ticket']; |
73 | 74 |
$subjects[$row['id_ticket']] = $row['subject']; |
74 | 75 |
$members[] = $row['id_member_started']; |
75 | 76 |
$members[] = $row['id_member_updated']; |
77 |
+ $depts[$row['id_dept']] = $row['id_dept']; |
|
76 | 78 |
} |
77 | 79 |
$smcFunc['db_free_result']($query); |
78 | 80 |
|
79 | 81 |
// Any to do? |
80 |
- if (empty($tickets)) |
|
81 |
- return; |
|
82 |
+ if (!empty($tickets)) |
|
83 |
+ { |
|
84 |
+ $time = time(); |
|
82 | 85 |
|
83 | 86 |
// 2. Update the tickets. |
84 |
- $query = $smcFunc['db_query']('', ' |
|
87 |
+ $smcFunc['db_query']('', ' |
|
85 | 88 |
UPDATE {db_prefix}helpdesk_tickets |
86 | 89 |
SET status = {int:closed}, |
87 | 90 |
last_updated = {int:time} |
... | ... |
@@ -89,7 +92,7 @@ function shd_scheduled_close_tickets() |
89 | 92 |
array( |
90 | 93 |
'closed' => 3, // TICKET_STATUS_CLOSED isn't defined here either. |
91 | 94 |
'tickets' => $tickets, |
92 |
- 'time' => time(), |
|
95 |
+ 'time' => $time, |
|
93 | 96 |
) |
94 | 97 |
); |
95 | 98 |
|
... | ... |
@@ -97,7 +100,6 @@ function shd_scheduled_close_tickets() |
97 | 100 |
if (empty($modSettings['shd_disable_action_log']) && !empty($modSettings['shd_logopt_autoclose'])) |
98 | 101 |
{ |
99 | 102 |
$rows = array(); |
100 |
- $time = time(); |
|
101 | 103 |
foreach ($tickets as $ticket) |
102 | 104 |
{ |
103 | 105 |
$rows[] = array( |
... | ... |
@@ -126,7 +128,10 @@ function shd_scheduled_close_tickets() |
126 | 128 |
|
127 | 129 |
// 4. If caching is enabled, make sure to purge the cache for members so their number of tickets will be recalculated. |
128 | 130 |
// No need to dump all SD cache items though, though we have to get all those whose tickets were affected, plus all staff. |
129 |
- shd_clear_active_tickets(); |
|
131 |
+ $depts = array_flip($depts); |
|
132 |
+ foreach ($depts as $dept) |
|
133 |
+ shd_clear_active_tickets($dept); |
|
134 |
+ } |
|
130 | 135 |
} |
131 | 136 |
|
132 | 137 |
function shd_scheduled_purge_tickets() |
... | ... |
@@ -359,15 +359,20 @@ function shd_get_active_tickets() |
359 | 359 |
function shd_clear_active_tickets($dept = 0) |
360 | 360 |
{ |
361 | 361 |
global $modSettings; |
362 |
+ static $done_all = false; |
|
362 | 363 |
|
363 | 364 |
// This isn't very nice, unfortunately. But it's the only way to ensure that caches are flushed as necessary and to prevent us having to query so much more on every page. |
364 | 365 |
// Firstly, the active ticket count. Needs to be for every person that can see this department. |
365 | 366 |
$members = shd_members_allowed_to('access_helpdesk', $dept); |
367 |
+ if (!$done_all) |
|
368 |
+ { |
|
366 | 369 |
foreach ($members as $member) |
367 | 370 |
{ |
368 | 371 |
cache_put_data('shd_active_tickets_' . $member, null, 120); |
369 | 372 |
cache_put_data('shd_ticket_count_' . $member, null, 120); |
370 | 373 |
} |
374 |
+ $done_all = true; |
|
375 |
+ } |
|
371 | 376 |
|
372 | 377 |
// This is going to hurt. |
373 | 378 |
if ($dept == 0) |
... | ... |
@@ -1571,7 +1576,8 @@ function scheduled_simpledesk() |
1571 | 1576 |
return; |
1572 | 1577 |
|
1573 | 1578 |
require($sourcedir . '/sd_source/SimpleDesk-Scheduled.php'); |
1574 |
- return shd_scheduled(); |
|
1579 |
+ shd_scheduled(); |
|
1580 |
+ return true; |
|
1575 | 1581 |
} |
1576 | 1582 |
|
1577 | 1583 |
/** |
1578 | 1584 |