/** * constructor. * @param object $exporter instance of portfolio_exporter (will handle null case) * @param string $errorcode language string key * @param string $module language string module (optional, defaults to moodle) * @param string $continue url to continue to (optional, defaults to wwwroot) * @param mixed $a language string data (optional, defaults to null) */ public function __construct($exporter, $errorcode, $module = null, $continue = null, $a = null) { global $CFG; // This static variable is necessary because sometimes the code below // which tries to obtain a continue link can cause one of these // exceptions to be thrown. This would create an infinite loop (until // PHP hits its stack limit). Using this static lets us make the // nested constructor finish immediately without attempting to call // methods that might fail. static $inconstructor = false; if (!$inconstructor && !empty($exporter) && $exporter instanceof portfolio_exporter) { $inconstructor = true; try { if (empty($continue)) { $caller = $exporter->get('caller'); if (!empty($caller) && $caller instanceof portfolio_caller_base) { $continue = $exporter->get('caller')->get_return_url(); } } // this was previously only called if we were in cron, // but I think if there's always an exception, we should clean up // rather than force the user to resolve the export later. $exporter->process_stage_cleanup(); } catch (Exception $e) { // Ooops, we had an exception trying to get caller // information. Ignore it. } $inconstructor = false; } parent::__construct($errorcode, $module, $continue, $a); }
/** * constructor. * @param object $exporter instance of portfolio_exporter (will handle null case) * @param string $errorcode language string key * @param string $module language string module (optional, defaults to moodle) * @param string $continue url to continue to (optional, defaults to wwwroot) * @param mixed $a language string data (optional, defaults to null) */ public function __construct($exporter, $errorcode, $module = null, $continue = null, $a = null) { global $CFG; if (!empty($exporter) && $exporter instanceof portfolio_exporter) { if (empty($continue)) { $caller = $exporter->get('caller'); if (!empty($caller) && $caller instanceof portfolio_caller_base) { $continue = $exporter->get('caller')->get_return_url(); } } // this was previously only called if we were in cron, // but I think if there's always an exception, we should clean up // rather than force the user to resolve the export later. $exporter->process_stage_cleanup(); } else { global $SESSION; if (!empty($SESSION->portfolioexport)) { debugging(get_string('exportexceptionnoexporter', 'portfolio')); } } parent::__construct($errorcode, $module, $continue, $a); }