~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/cron.php

  • Committer: William Grant
  • Date: 2009-04-28 05:06:00 UTC
  • Revision ID: grantw@unimelb.edu.au-20090428050600-hogd9d6wo7ksyqy8
ivle.database.get_store() now takes a configuration object.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php
2
 
/**
3
 
*
4
 
* @package phpBB3
5
 
* @version $Id: cron.php,v 1.21 2007/10/05 14:30:06 acydburn Exp $
6
 
* @copyright (c) 2005 phpBB Group
7
 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8
 
*
9
 
*/
10
 
 
11
 
/**
12
 
*/
13
 
define('IN_PHPBB', true);
14
 
define('IN_CRON', true);
15
 
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
16
 
$phpEx = substr(strrchr(__FILE__, '.'), 1);
17
 
include($phpbb_root_path . 'common.' . $phpEx);
18
 
 
19
 
// Do not update users last page entry
20
 
$user->session_begin(false);
21
 
$auth->acl($user->data);
22
 
 
23
 
$cron_type = request_var('cron_type', '');
24
 
$use_shutdown_function = (@function_exists('register_shutdown_function')) ? true : false;
25
 
 
26
 
// Output transparent gif
27
 
header('Cache-Control: no-cache');
28
 
header('Content-type: image/gif');
29
 
header('Content-length: 43');
30
 
 
31
 
echo base64_decode('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
32
 
 
33
 
// test without flush ;)
34
 
// flush();
35
 
 
36
 
//
37
 
if (!isset($config['cron_lock']))
38
 
{
39
 
        set_config('cron_lock', '0', true);
40
 
}
41
 
 
42
 
// make sure cron doesn't run multiple times in parallel
43
 
if ($config['cron_lock'])
44
 
{
45
 
        // if the other process is running more than an hour already we have to assume it
46
 
        // aborted without cleaning the lock
47
 
        $time = explode(' ', $config['cron_lock']);
48
 
        $time = $time[0];
49
 
 
50
 
        if ($time + 3600 >= time())
51
 
        {
52
 
                exit;
53
 
        }
54
 
}
55
 
 
56
 
define('CRON_ID', time() . ' ' . unique_id());
57
 
 
58
 
$sql = 'UPDATE ' . CONFIG_TABLE . "
59
 
        SET config_value = '" . $db->sql_escape(CRON_ID) . "'
60
 
        WHERE config_name = 'cron_lock' AND config_value = '" . $db->sql_escape($config['cron_lock']) . "'";
61
 
$db->sql_query($sql);
62
 
 
63
 
// another cron process altered the table between script start and UPDATE query so exit
64
 
if ($db->sql_affectedrows() != 1)
65
 
{
66
 
        exit;
67
 
}
68
 
 
69
 
/**
70
 
* Run cron-like action
71
 
* Real cron-based layer will be introduced in 3.2
72
 
*/
73
 
switch ($cron_type)
74
 
{
75
 
        case 'queue':
76
 
 
77
 
                if (time() - $config['queue_interval'] <= $config['last_queue_run'] || !file_exists($phpbb_root_path . 'cache/queue.' . $phpEx))
78
 
                {
79
 
                        break;
80
 
                }
81
 
 
82
 
                // A user reported using the mail() function while using shutdown does not work. We do not want to risk that.
83
 
                if ($use_shutdown_function && !$config['smtp_delivery'])
84
 
                {
85
 
                        $use_shutdown_function = false;
86
 
                }
87
 
 
88
 
                include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
89
 
                $queue = new queue();
90
 
 
91
 
                if ($use_shutdown_function)
92
 
                {
93
 
                        register_shutdown_function(array(&$queue, 'process'));
94
 
                }
95
 
                else
96
 
                {
97
 
                        $queue->process();
98
 
                }
99
 
 
100
 
        break;
101
 
 
102
 
        case 'tidy_cache':
103
 
 
104
 
                if (time() - $config['cache_gc'] <= $config['cache_last_gc'] || !method_exists($cache, 'tidy'))
105
 
                {
106
 
                        break;
107
 
                }
108
 
 
109
 
                if ($use_shutdown_function)
110
 
                {
111
 
                        register_shutdown_function(array(&$cache, 'tidy'));
112
 
                }
113
 
                else
114
 
                {
115
 
                        $cache->tidy();
116
 
                }
117
 
 
118
 
        break;
119
 
 
120
 
        case 'tidy_search':
121
 
                
122
 
                // Select the search method
123
 
                $search_type = basename($config['search_type']);
124
 
 
125
 
                if (time() - $config['search_gc'] <= $config['search_last_gc'] || !file_exists($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx))
126
 
                {
127
 
                        break;
128
 
                }
129
 
 
130
 
                include_once("{$phpbb_root_path}includes/search/$search_type.$phpEx");
131
 
 
132
 
                // We do some additional checks in the module to ensure it can actually be utilised
133
 
                $error = false;
134
 
                $search = new $search_type($error);
135
 
 
136
 
                if ($error)
137
 
                {
138
 
                        break;
139
 
                }
140
 
 
141
 
                if ($use_shutdown_function)
142
 
                {
143
 
                        register_shutdown_function(array(&$search, 'tidy'));
144
 
                }
145
 
                else
146
 
                {
147
 
                        $search->tidy();
148
 
                }
149
 
 
150
 
        break;
151
 
 
152
 
        case 'tidy_warnings':
153
 
 
154
 
                if (time() - $config['warnings_gc'] <= $config['warnings_last_gc'])
155
 
                {
156
 
                        break;
157
 
                }
158
 
 
159
 
                include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
160
 
 
161
 
                if ($use_shutdown_function)
162
 
                {
163
 
                        register_shutdown_function('tidy_warnings');
164
 
                }
165
 
                else
166
 
                {
167
 
                        tidy_warnings();
168
 
                }
169
 
 
170
 
        break;
171
 
 
172
 
        case 'tidy_database':
173
 
 
174
 
                if (time() - $config['database_gc'] <= $config['database_last_gc'])
175
 
                {
176
 
                        break;
177
 
                }
178
 
 
179
 
                include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
180
 
 
181
 
                if ($use_shutdown_function)
182
 
                {
183
 
                        register_shutdown_function('tidy_database');
184
 
                }
185
 
                else
186
 
                {
187
 
                        tidy_database();
188
 
                }
189
 
 
190
 
        break;
191
 
 
192
 
        case 'tidy_sessions':
193
 
 
194
 
                if (time() - $config['session_gc'] <= $config['session_last_gc'])
195
 
                {
196
 
                        break;
197
 
                }
198
 
 
199
 
                if ($use_shutdown_function)
200
 
                {
201
 
                        register_shutdown_function(array(&$user, 'session_gc'));
202
 
                }
203
 
                else
204
 
                {
205
 
                        $user->session_gc();
206
 
                }
207
 
 
208
 
        break;
209
 
 
210
 
        case 'prune_forum':
211
 
 
212
 
                $forum_id = request_var('f', 0);
213
 
 
214
 
                $sql = 'SELECT forum_id, prune_next, enable_prune, prune_days, prune_viewed, forum_flags, prune_freq
215
 
                        FROM ' . FORUMS_TABLE . "
216
 
                        WHERE forum_id = $forum_id";
217
 
                $result = $db->sql_query($sql);
218
 
                $row = $db->sql_fetchrow($result);
219
 
                $db->sql_freeresult($result);
220
 
 
221
 
                if (!$row)
222
 
                {
223
 
                        break;
224
 
                }
225
 
 
226
 
                // Do the forum Prune thang
227
 
                if ($row['prune_next'] < time() && $row['enable_prune'])
228
 
                {
229
 
                        include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
230
 
 
231
 
                        if ($row['prune_days'])
232
 
                        {
233
 
                                if ($use_shutdown_function)
234
 
                                {
235
 
                                        register_shutdown_function('auto_prune', $row['forum_id'], 'posted', $row['forum_flags'], $row['prune_days'], $row['prune_freq']);
236
 
                                }
237
 
                                else
238
 
                                {
239
 
                                        auto_prune($row['forum_id'], 'posted', $row['forum_flags'], $row['prune_days'], $row['prune_freq']);
240
 
                                }
241
 
                        }
242
 
 
243
 
                        if ($row['prune_viewed'])
244
 
                        {
245
 
                                if ($use_shutdown_function)
246
 
                                {
247
 
                                        register_shutdown_function('auto_prune', $row['forum_id'], 'viewed', $row['forum_flags'], $row['prune_viewed'], $row['prune_freq']);
248
 
                                }
249
 
                                else
250
 
                                {
251
 
                                        auto_prune($row['forum_id'], 'viewed', $row['forum_flags'], $row['prune_viewed'], $row['prune_freq']);
252
 
                                }
253
 
                        }
254
 
                }
255
 
 
256
 
        break;
257
 
}
258
 
 
259
 
// Unloading cache and closing db after having done the dirty work.
260
 
if ($use_shutdown_function)
261
 
{
262
 
        register_shutdown_function('unlock_cron');
263
 
        register_shutdown_function('garbage_collection');
264
 
}
265
 
else
266
 
{
267
 
        unlock_cron();
268
 
        garbage_collection();
269
 
}
270
 
 
271
 
exit;
272
 
 
273
 
 
274
 
/**
275
 
* Unlock cron script
276
 
*/
277
 
function unlock_cron()
278
 
{
279
 
        global $db;
280
 
 
281
 
        $sql = 'UPDATE ' . CONFIG_TABLE . "
282
 
                SET config_value = '0'
283
 
                WHERE config_name = 'cron_lock' AND config_value = '" . $db->sql_escape(CRON_ID) . "'";
284
 
        $db->sql_query($sql);
285
 
}
286
 
 
287
 
?>
 
 
b'\\ No newline at end of file'