diff --git a/lib/classes/task/portfolio_cron_task.php b/lib/classes/task/portfolio_cron_task.php index b44d28d51ee..575adcac704 100644 --- a/lib/classes/task/portfolio_cron_task.php +++ b/lib/classes/task/portfolio_cron_task.php @@ -42,12 +42,37 @@ class portfolio_cron_task extends scheduled_task { * Throw exceptions on errors (the job will be retried). */ public function execute() { - global $CFG; + global $CFG, $DB; if ($CFG->enableportfolios) { require_once($CFG->libdir . '/portfoliolib.php'); - portfolio_cron(); + require_once($CFG->libdir . '/portfolio/exporter.php'); + if ($expired = $DB->get_records_select('portfolio_tempdata', 'expirytime < ?', [time()], '', 'id')) { + foreach ($expired as $tempdata) { + try { + $exporter = \portfolio_exporter::rewaken_object($tempdata->id); + $exporter->process_stage_cleanup(true); + } catch (\Exception $exception) { + mtrace('Exception thrown in portfolio cron while cleaning up ' . $tempdata->id . ': ' . + $exception->getMessage()); + } + } + } + + $process = $DB->get_records('portfolio_tempdata', ['queued' => 1], 'id ASC', 'id'); + foreach ($process as $tempdata) { + try { + $exporter = \portfolio_exporter::rewaken_object($tempdata->id); + $exporter->process_stage_package(); + $exporter->process_stage_send(); + $exporter->save(); + $exporter->process_stage_cleanup(); + } catch (\Exception $exception) { + // This will get probably retried in the next cron until it is discarded by the code above. + mtrace('Exception thrown in portfolio cron while processing ' . $tempdata->id . ': ' . + $exception->getMessage()); + } + } } } - } diff --git a/lib/portfoliolib.php b/lib/portfoliolib.php index f37d3a2138e..68d5fe500bf 100644 --- a/lib/portfoliolib.php +++ b/lib/portfoliolib.php @@ -935,40 +935,6 @@ function portfolio_report_insane($insane, $instances=false, $return=false) { echo $output; } -/** - * Main portfolio cronjob. - * Currently just cleans up expired transfer records. - */ -function portfolio_cron() { - global $DB, $CFG; - - require_once($CFG->libdir . '/portfolio/exporter.php'); - if ($expired = $DB->get_records_select('portfolio_tempdata', 'expirytime < ?', array(time()), '', 'id')) { - foreach ($expired as $d) { - try { - $e = portfolio_exporter::rewaken_object($d->id); - $e->process_stage_cleanup(true); - } catch (Exception $e) { - mtrace('Exception thrown in portfolio cron while cleaning up ' . $d->id . ': ' . $e->getMessage()); - } - } - } - - $process = $DB->get_records('portfolio_tempdata', array('queued' => 1), 'id ASC', 'id'); - foreach ($process as $d) { - try { - $exporter = portfolio_exporter::rewaken_object($d->id); - $exporter->process_stage_package(); - $exporter->process_stage_send(); - $exporter->save(); - $exporter->process_stage_cleanup(); - } catch (Exception $e) { - // This will get probably retried in the next cron until it is discarded by the code above. - mtrace('Exception thrown in portfolio cron while processing ' . $d->id . ': ' . $e->getMessage()); - } - } -} - /** * Helper function to rethrow a caught portfolio_exception as an export exception. * Used because when a portfolio_export exception is thrown the export is cancelled diff --git a/portfolio/upgrade.txt b/portfolio/upgrade.txt index 49d49937e6c..eda575d1465 100644 --- a/portfolio/upgrade.txt +++ b/portfolio/upgrade.txt @@ -1,6 +1,10 @@ This files describes API changes in /portfolio/ portfolio system, information provided here is intended especially for developers. +=== 3.7 === + +* The portfolio_cron() function has been removed. Please use portfolio_cron_task scheduled task instead. + === 3.1 === * The following functions, previously used (exclusively) by upgrade steps are not available