summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/SimpleSAML/Error/Error.php29
1 files changed, 19 insertions, 10 deletions
diff --git a/lib/SimpleSAML/Error/Error.php b/lib/SimpleSAML/Error/Error.php
index 7815607..796681c 100644
--- a/lib/SimpleSAML/Error/Error.php
+++ b/lib/SimpleSAML/Error/Error.php
@@ -145,29 +145,38 @@ class SimpleSAML_Error_Error extends SimpleSAML_Error_Exception {
$errorData = $this->saveError();
$config = SimpleSAML_Configuration::getInstance();
- $t = new SimpleSAML_XHTML_Template($config, 'error.php', 'errors');
- $t->data['showerrors'] = $config->getBoolean('showerrors', true);
- $t->data['error'] = $errorData;
- $t->data['errorCode'] = $this->errorCode;
- $t->data['parameters'] = $this->parameters;
+
+ $data['showerrors'] = $config->getBoolean('showerrors', true);
+ $data['error'] = $errorData;
+ $data['errorCode'] = $this->errorCode;
+ $data['parameters'] = $this->parameters;
/* Check if there is a valid technical contact email address. */
if($config->getString('technicalcontact_email', 'na@example.org') !== 'na@example.org') {
/* Enable error reporting. */
$baseurl = SimpleSAML_Utilities::getBaseURL();
- $t->data['errorReportAddress'] = $baseurl . 'errorreport.php';
+ $data['errorReportAddress'] = $baseurl . 'errorreport.php';
}
$session = SimpleSAML_Session::getInstance();
$attributes = $session->getAttributes();
if (is_array($attributes) && array_key_exists('mail', $attributes) && count($attributes['mail']) > 0) {
- $email = $attributes['mail'][0];
+ $data['email'] = $attributes['mail'][0];
+ } else {
+ $data['email'] = '';
+ }
+
+ $show_function = $config->getString('errors.show_function', NULL);
+ if (isset($show_function)) {
+ assert('is_callable($show_function)');
+ call_user_func($show_function, $config, $data);
+ assert('FALSE');
} else {
- $email = '';
+ $t = new SimpleSAML_XHTML_Template($config, 'error.php', 'errors');
+ $t->data = array_merge($t->data, $data);
+ $t->show();
}
- $t->data['email'] = $email;
- $t->show();
exit;
}