public function isValid() { global $cfg; $db = Database::getInstance($cfg['MVC']['dsn']); $rules = $db->getAll("SELECT vrclassname, description, fieldname, \r\n\t\t\tfieldvalidators.modulename FROM fieldvalidators, formfields \r\n\t\t\tWHERE formfields.ruleid = fieldvalidators.ruleid\r\n\t\t\tAND formname = '{$this->formName}'"); //This statement has been removed from the where clause: //modulename = '{$this->fieldData['moduleName']}' AND $invalidFields = array(); $sess = Session::getInstance(); // Validate the submitted fields foreach ($rules as $rule) { MVCUtils::includeValidator($rule['vrclassname'], $rule['modulename']); eval("\$validatorObj = new {$rule['vrclassname']}(\$this->fieldData);"); $vResult = $validatorObj->isValid($this->fieldData[$rule['fieldname']]); if ($vResult !== true) { //Put the errors: // a) straight into the errors array for backwards compatibility // b) into a sub array, whose key is the submitted value for // errorFormName, otherwise use the form name $invalidFields[$rule['fieldname']] = $vResult; if (!$this->errorFormName) { $invalidFields[$this->formName][$rule['fieldname']] = $vResult; } else { $invalidFields[$this->errorFormName][$rule['fieldname']] = $vResult; } } if ($sess->keyExists('auth_user')) { BasicLogger::logMessage($sess->getValue('auth_user'), self::module, "debug"); } } if (!checkdate($this->fieldData['month'], $this->fieldData['day'], $this->fieldData['year']) || !is_numeric($this->fieldData['month']) || !is_numeric($this->fieldData['day']) || !is_numeric($this->fieldData['year'])) { $invalidFields[$this->formName]['form'] = "Invalid Date"; } return $invalidFields; }
<?php /** * * @package FrontEnds * @subpackage Auth */ include_once $cfg['DBAL']['dir']['root'] . '/Database.class.php'; include_once $cfg['MVC']['dir']['root'] . '/MVCUtils.class.php'; MVCUtils::includeValidator('ValidatorRule', 'MVC'); /** * Check that a new username is unique * * */ class UniqueNewUsername extends ValidatorRule { public function isValid(&$data) { global $cfg; $out = true; $sql = 'SELECT COUNT(*) FROM users WHERE username = ?'; $db = Database::getInstance($cfg['Auth']['dsn']); $count = $db->getOne($sql, array($data)); if ($count == 0) { return true; } else { return "The username use chose is taken"; } } }