NPE catched, command class added, beter coding practice applied:
[core.git] / inc / classes / main / commands / web / class_WebConfirmCommand.php
index b04565633743b1af6b2d81ba9e2c8f7ef26463a5..220ae5ce60d3aaae0965fb85b137d678f0f5ca23 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007 - 2009 Roland Haeder, this is free software
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.ship-simu.org
  *
@@ -99,11 +99,20 @@ class WebConfirmCommand extends BaseCommand implements Commandable {
                $templateInstance->assignVariable('title', $this->getLanguageInstance()->getMessage('page_confirm_link_title'));
 
                // Get user instance
-               $userInstance = Registry::getRegistry()->getInstance('user');
+               try {
+                       $userInstance = Registry::getRegistry()->getInstance('user');
+               } catch (NullPointerException $e) {
+                       // Not found user, e.g. when the user is somehow invalid
+                       $responseInstance->redirectToConfiguredUrl('web_cmd_user_is_null');
+               }
 
                // Set username
                $templateInstance->assignVariable('username', $userInstance->getField(UserDatabaseWrapper::DB_COLUMN_USERNAME));
 
+               // Construct the menu in every command. We could do this in BaseCommand class. But this means
+               // *every* command has a navigation system and that is want we don't want.
+               $menuInstance = ObjectFactory::createObjectByConfiguredName('confirm_menu_class', array($appInstance));
+
                // ... and all variables. This should be merged together in a pattern
                // to make things easier. A cache mechanism should be added between
                // these two calls to cache compiled templates.