|
@@ -21,7 +21,7 @@
|
|
|
*/
|
|
|
|
|
|
define('SMF', 'BACKGROUND');
|
|
|
-define('FROM_CLI', defined('STDIN'));
|
|
|
+define('FROM_CLI', !isset($_SERVER['REQUEST_METHOD']));
|
|
|
define('WIRELESS', false);
|
|
|
|
|
|
|
|
@@ -78,12 +78,15 @@ if (version_compare(PHP_VERSION, '5.1', '<'))
|
|
|
$smcFunc = array();
|
|
|
|
|
|
|
|
|
+unset ($db_show_debug);
|
|
|
loadDatabase();
|
|
|
reloadSettings();
|
|
|
|
|
|
|
|
|
set_error_handler('error_handler_cron');
|
|
|
-$sc = 'n/a';
|
|
|
+$sc = '';
|
|
|
+$_SERVER['QUERY_STRING'] = '';
|
|
|
+$_SERVER['REQUEST_URL'] = FROM_CLI ? 'CLI cron.php' : $boardurl . '/cron.php';
|
|
|
|
|
|
|
|
|
cleanRequest_cron();
|
|
@@ -187,8 +190,8 @@ function perform_task($task_details)
|
|
|
|
|
|
elseif (class_exists($task_details['task_class']) && is_subclass_of($task_details['task_class'], 'SMF_BackgroundTask'))
|
|
|
{
|
|
|
- $bgtask = new $task_details['task_class'];
|
|
|
- $bgtask->setDetails($details);
|
|
|
+ $details = empty($task_details['task_data']) ? array() : unserialize($task_details['task_data']);
|
|
|
+ $bgtask = new $task_details['task_class']($details);
|
|
|
return $bgtask->execute();
|
|
|
}
|
|
|
else
|
|
@@ -245,9 +248,15 @@ function obExit_cron()
|
|
|
|
|
|
|
|
|
|
|
|
-interface SMF_BackgroundTask
|
|
|
+abstract class SMF_BackgroundTask
|
|
|
{
|
|
|
- public function setDetails($details);
|
|
|
- public function execute();
|
|
|
+ protected $_details;
|
|
|
+
|
|
|
+ public function __construct($details)
|
|
|
+ {
|
|
|
+ $this->_details = $details;
|
|
|
+ }
|
|
|
+
|
|
|
+ abstract public function execute();
|
|
|
}
|
|
|
?>
|