From aef78a7e2a6f3aa9c25927a4fead453479d8442a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 1 Jun 2008 12:45:50 +0000 Subject: [PATCH] Email validator added (partly finished) --- .gitattributes | 1 + .../web/class_WebShipsimuRegisterCommand.php | 1 + .../validator/class_EmailValidatorFilter.php | 145 ++++++++++++++++++ .../class_UserNameValidatorFilter.php | 6 +- .../main/response/class_HttpResponse.php | 2 +- inc/config.php | 6 + 6 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 inc/classes/main/filter/validator/class_EmailValidatorFilter.php diff --git a/.gitattributes b/.gitattributes index 25f3a00..ec7d663 100644 --- a/.gitattributes +++ b/.gitattributes @@ -325,6 +325,7 @@ inc/classes/main/filter/class_ -text inc/classes/main/filter/class_AbstractFilterDecorator.php -text inc/classes/main/filter/class_FilterChain.php -text inc/classes/main/filter/validator/.htaccess -text +inc/classes/main/filter/validator/class_EmailValidatorFilter.php -text inc/classes/main/filter/validator/class_UserNameValidatorFilter.php -text inc/classes/main/helper/.htaccess -text inc/classes/main/helper/class_ -text diff --git a/application/ship-simu/main/commands/web/class_WebShipsimuRegisterCommand.php b/application/ship-simu/main/commands/web/class_WebShipsimuRegisterCommand.php index 3680159..7279053 100644 --- a/application/ship-simu/main/commands/web/class_WebShipsimuRegisterCommand.php +++ b/application/ship-simu/main/commands/web/class_WebShipsimuRegisterCommand.php @@ -60,6 +60,7 @@ class WebShipsimuRegisterCommand extends BaseCommand implements Commandable { // @TODO Add some more pre/post filters to the controller $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('username_validator')); + $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('email_validator')); // Return the prepared instance return $commandInstance; diff --git a/inc/classes/main/filter/validator/class_EmailValidatorFilter.php b/inc/classes/main/filter/validator/class_EmailValidatorFilter.php new file mode 100644 index 0000000..4b982b0 --- /dev/null +++ b/inc/classes/main/filter/validator/class_EmailValidatorFilter.php @@ -0,0 +1,145 @@ + + * @version 0.0.0 + * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class EmailValidatorFilter extends BaseFrameworkSystem implements Filterable { + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("A filter for Email validation"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeNumberFormaters(); + $this->removeSystemArray(); + } + + /** + * Creates an instance of this filter class + * + * @return $filterInstance An instance of this filter class + */ + public final static function createEmailValidatorFilter () { + // Get a new instance + $filterInstance = new EmailValidatorFilter(); + + // Return the instance + return $filterInstance; + } + + /** + * Executes the filter with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get Email from request + $email = $requestInstance->getRequestElement('email'); + + // Is the Email set? + if ((is_null($email)) || ($this->getConfigInstance()->readConfig('register_email_unique') == "Y")) { + // Try it again + $email1 = $requestInstance->getRequestElement('email1'); + $email2 = $requestInstance->getRequestElement('email2'); + + // Is the email still not set? + if ((is_null($email1)) || (is_null($email2))) { + // Not found in form so stop the filtering process + $requestInstance->requestIsValid(false); + + // Add a message to the response + $responseInstance->addFatalMessage('email_unset'); + + // Abort here + return false; + } elseif ((empty($email1)) || (empty($email2))) { + // Email is empty + $requestInstance->requestIsValid(false); + + // Is the email empty? + if (empty($email1)) { + // Add a message to the response + $responseInstance->addFatalMessage('email1_empty'); + } // END - if + + // Is the confirmation empty? + if (empty($email2)) { + // Add a message to the response + $responseInstance->addFatalMessage('email2_empty'); + } // END - if + + // Abort here + return false; + } elseif ($this->ifEmailIsTaken($email1)) { + // Email is already taken + $requestInstance->requestIsValid(false); + + // Add a message to the response + $responseInstance->addFatalMessage('email_taken'); + + // Abort here + return false; + } // END - elseif + } elseif (empty($email)) { + // Empty field! + $requestInstance->requestIsValid(false); + + // Add a message to the response + $responseInstance->addFatalMessage('email_empty'); + + // Abort here + return false; + } // END - elseif + } + + /** + * Check wether the email as already been taken + * + * @param $email Email to check for existence + * @return $alreadyTaken Wether the email has been taken + */ + private function ifEmailIsTaken ($email) { + // Default is already taken + $alreadyTaken = true; + $this->partialStub(sprintf("Email: %s", $email)); + + // Return the result + return $alreadyTaken; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/filter/validator/class_UserNameValidatorFilter.php b/inc/classes/main/filter/validator/class_UserNameValidatorFilter.php index 165a9ef..fab9eef 100644 --- a/inc/classes/main/filter/validator/class_UserNameValidatorFilter.php +++ b/inc/classes/main/filter/validator/class_UserNameValidatorFilter.php @@ -74,7 +74,7 @@ class UserNameValidatorFilter extends BaseFrameworkSystem implements Filterable // Not found in form so stop the filtering process $requestInstance->requestIsValid(false); - // Set a message for the response + // Add a message to the response $responseInstance->addFatalMessage('username_unset'); // Abort here @@ -83,7 +83,7 @@ class UserNameValidatorFilter extends BaseFrameworkSystem implements Filterable // Empty field! $requestInstance->requestIsValid(false); - // Set a message for the response + // Add a message to the response $responseInstance->addFatalMessage('username_empty'); // Abort here @@ -92,7 +92,7 @@ class UserNameValidatorFilter extends BaseFrameworkSystem implements Filterable // Username is already taken $requestInstance->requestIsValid(false); - // Set a message for the response + // Add a message to the response $responseInstance->addFatalMessage('username_taken'); // Abort here diff --git a/inc/classes/main/response/class_HttpResponse.php b/inc/classes/main/response/class_HttpResponse.php index 52ad2a7..26ddc88 100644 --- a/inc/classes/main/response/class_HttpResponse.php +++ b/inc/classes/main/response/class_HttpResponse.php @@ -167,7 +167,7 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { $this->addHeader('Pragma:', 'no-cache'); // HTTP/1.0 // Define the charset to be used - $this->addHeader('Content-Type:', 'text/html; charset=utf-8'); + $this->addHeader('Content-Type:', sprintf("text/html; charset=%s", $this->getConfigInstance()->readConfig('header_charset'))); foreach ($this->responseHeaders as $name=>$value) { header("{$name}: {$value}"); diff --git a/inc/config.php b/inc/config.php index 835e34e..0a92b9c 100644 --- a/inc/config.php +++ b/inc/config.php @@ -114,6 +114,9 @@ $cfg->setConfigEntry('tpl_selector_prefix', "selector"); // CFG: WEB-CONTENT-TYPE $cfg->setConfigEntry('web_content_type', "text/html"); +// CFG: HEADER-CHARSET +$cfg->setConfigEntry('header_charset', "utf-8"); + // CFG: VALID-TEMPLATE-VARIABLE $cfg->setConfigEntry('tpl_valid_var', "content"); @@ -165,5 +168,8 @@ $cfg->setConfigEntry('file_output_stream', "FileIoStream"); // CFG: USERNAME-VALIDATOR $cfg->setConfigEntry('username_validator', "UserNameValidatorFilter"); +// CFG: EMAIL-VALIDATOR +$cfg->setConfigEntry('email_validator', "EmailValidatorFilter"); + // [EOF] ?> -- 2.39.5