More renamed
[shipsimu.git] / application / ship-simu / main / filter / verifier / class_BirthdayVerifierFilter.php
index cc159894063f67372b9fc8ff56e351d33c9d1ebe..51bb4db7c568110cf217d386fddfd4bd4e8ceb26 100644 (file)
@@ -2,11 +2,11 @@
 /**
  * A verifier filter for birthday data
  *
- * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, this is free software
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu Developer Team
  * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
+ * @link               http://www.shipsimu.org
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-class BirthdayVerifierFilter extends BaseFilter implements Filterable {
+class BirthdayVerifierFilter extends BaseShipSimuFilter implements Filterable {
        /**
         * Protected constructor
         *
@@ -35,9 +35,9 @@ class BirthdayVerifierFilter extends BaseFilter implements Filterable {
        /**
         * Creates an instance of this filter class
         *
-        * @return      $filterInstance         An instance of this filter class
+        * @return      $filterInstance                 An instance of this filter class
         */
-       public final static function createBirthdayVerifierFilter () {
+       public static final function createBirthdayVerifierFilter () {
                // Get a new instance
                $filterInstance = new BirthdayVerifierFilter();
 
@@ -51,11 +51,65 @@ class BirthdayVerifierFilter extends BaseFilter implements Filterable {
         * @param       $requestInstance        An instance of a class with an Requestable interface
         * @param       $responseInstance       An instance of a class with an Responseable interface
         * @return      void
-        * @todo        0% done
         */
        public function execute (Requestable $requestInstance, Responseable $responseInstance) {
-               // Implement this!
-               $this->partialStub("Please implement this method.");
+               // Execute the parent execute method
+               parent::execute($requestInstance, $responseInstance);
+
+               // Day of birth set?
+               if (!$requestInstance->isRequestElementSet('birth_day')) {
+                       // Day of birth isn't set
+                       $requestInstance->requestIsValid(false);
+
+                       // Add a message to the response
+                       $responseInstance->addFatalMessage('day_of_birth_unset');
+               } // END - if
+
+               // Month of birth set?
+               if (!$requestInstance->isRequestElementSet('birth_month')) {
+                       // Month of birth isn't set
+                       $requestInstance->requestIsValid(false);
+
+                       // Add a message to the response
+                       $responseInstance->addFatalMessage('month_of_birth_unset');
+               } // END - if
+
+               // Year of birth set?
+               if (!$requestInstance->isRequestElementSet('birth_year')) {
+                       // Year of birth isn't set
+                       $requestInstance->requestIsValid(false);
+
+                       // Add a message to the response
+                       $responseInstance->addFatalMessage('year_of_birth_unset');
+               } // END - if
+
+               // Is the request still valid?
+               if (!$requestInstance->isRequestValid()) {
+                       // Abort here
+                       throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED);
+               } // END - if
+
+               // Now comes the final check
+               $birthCheck = mktime(
+                       0,
+                       0,
+                       0,
+                       $requestInstance->getRequestElement('birth_day'),
+                       $requestInstance->getRequestElement('birth_month'),
+                       $requestInstance->getRequestElement('birth_year')
+               );
+
+               // Is there a number or such? (we don't care about the value itself here)
+               if (empty($birthCheck)) {
+                       // Validation has failed
+                       $requestInstance->requestIsValid(false);
+
+                       // Add a message to the response
+                       $responseInstance->addFatalMessage('birthday_invalid');
+
+                       // Abort here
+                       throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED);
+               } // END - if
        }
 }