public function webidregAction()
 {
     OntoWiki::getInstance()->getNavigation()->disableNavigation();
     // We render a template, that is also used for preferences.
     $this->_helper->viewRenderer->setScriptAction('webid');
     $this->view->placeholder('main.window.title')->set('Register User with FOAF+SSL');
     $this->view->formActionUrl = $this->_config->urlBase . 'application/webidreg';
     $this->view->formMethod = 'post';
     $this->view->formClass = 'simple-input input-justify-left';
     $this->view->formName = 'registeruser';
     // Fetch POST and GET of the request. One of them or both will be empty.
     $post = $this->_request->getPost();
     $get = $this->_request->getQuery();
     // Step 1: Fetch the WebID...
     if (empty($post) && empty($get)) {
         $redirectUrl = $this->_config->urlBase . 'application/webidreg';
         $adapter = new Erfurt_Auth_Adapter_FoafSsl(null, $redirectUrl);
         $webId = $adapter->fetchWebId();
         // We should not reach this point;
         return;
     } else {
         if (!empty($get)) {
             // Step 2: Check the web id and fetch foaf data
             $get['url'] = $this->_request->getRequestUri();
             $adapter = new Erfurt_Auth_Adapter_FoafSsl();
             try {
                 $valid = $adapter->verifyIdpResult($get);
                 if ($valid) {
                     $webId = $get['webid'];
                     $foafData = Erfurt_Auth_Adapter_FoafSsl::getFoafData($webId);
                     if ($foafData !== false) {
                         // Try to get a mbox and label...
                         if (isset($foafData[$webId]['http://xmlns.com/foaf/0.1/mbox'])) {
                             $email = $foafData[$webId]['http://xmlns.com/foaf/0.1/mbox'][0]['value'];
                         } else {
                             $email = '';
                         }
                         if (isset($foafData[$webId][EF_RDFS_LABEL])) {
                             $label = $foafData[$webId][EF_RDFS_LABEL][0]['value'];
                         } else {
                             $label = '';
                         }
                     } else {
                         $email = '';
                         $label = '';
                     }
                     $this->view->webid = $webId;
                     if ($webId != '') {
                         $this->view->checked = true;
                     }
                     if (null !== $email) {
                         $this->view->email = $email;
                     } else {
                         $this->view->email = '';
                     }
                     if (null !== $label) {
                         $this->view->label = $label;
                     } else {
                         $this->view->label = '';
                     }
                     $toolbar = $this->_owApp->toolbar;
                     $toolbar->appendButton(OntoWiki_Toolbar::SUBMIT, array('name' => 'Register'));
                     $this->view->placeholder('main.window.toolbar')->set($toolbar);
                     return;
                 } else {
                     // TODO Error message
                     $this->view->webid = '';
                     $this->view->email = '';
                     $this->view->label = '';
                     $this->_owApp->appendMessage(new OntoWiki_Message('No valid certificate found.', OntoWiki_Message::ERROR));
                     return;
                 }
             } catch (Exception $e) {
                 $this->view->webid = '';
                 $this->view->email = '';
                 $this->view->label = '';
                 $this->_owApp->appendMessage(new OntoWiki_Message('Something went wrong: ' . $e->getMessage(), OntoWiki_Message::ERROR));
                 return;
             }
         } else {
             if (!empty($post)) {
                 $webId = $post['webid_url'];
                 $label = $post['label'];
                 $email = $post['email'];
                 $emailValidator = new Zend_Validate_EmailAddress();
                 // Is register action allowed for current user?
                 if (!$this->_erfurt->isActionAllowed('RegisterNewUser') || !($actionConfig = $this->_erfurt->getActionConfig('RegisterNewUser'))) {
                     $message = 'Action not permitted for the current user.';
                     $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR));
                 } else {
                     if (empty($webId)) {
                         // openid_url field must not be empty
                         $message = 'No WebID was entered.';
                         $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR));
                     } else {
                         if (array_key_exists($webId, $this->_erfurt->getUsers())) {
                             // Does user already exist?
                             $message = 'A user with the given WebID is already registered.';
                             $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR));
                         } else {
                             if (!empty($email) && isset($actionConfig['mailvalidation']) && $actionConfig['mailvalidation'] === 'yes' && !$emailValidator->isValid($email)) {
                                 // If an (optional) email address is given, check whether it is valid.
                                 $message = 'Email address validation failed.';
                                 $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR));
                             } else {
                                 // Everything seems to be OK...
                                 $actionConfig = $this->_erfurt->getActionConfig('RegisterNewUser');
                                 $group = null;
                                 if (isset($actionConfig['defaultGroup'])) {
                                     $group = $actionConfig['defaultGroup'];
                                 }
                                 // Add the new user.
                                 if ($this->_erfurt->addOpenIdUser($webId, $email, $label, $group)) {
                                     $message = 'The user with the WebID "' . $webId . '" has been successfully registered.';
                                     $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::SUCCESS));
                                 } else {
                                     $message = 'A registration error occured. Please refer to the log entries.';
                                     $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR));
                                 }
                             }
                         }
                     }
                 }
                 // If we reach this section, something went wrong, so we reset the form and show the message.
                 $this->view->webid = '';
                 $this->view->email = '';
                 $this->view->label = '';
             }
         }
     }
 }