Example #1
0
 /**
  * Applies any validators that were defined in the schema to the specified columns.
  *
  * @param      string $dbName The name of the database
  * @param      string $tableName The name of the table
  * @param      array $columns Array of column names as key and column values as value.
  */
 public static function doValidate($dbName, $tableName, $columns)
 {
     $dbMap = Propel::getDatabaseMap($dbName);
     $tableMap = $dbMap->getTable($tableName);
     $failureMap = array();
     // map of ValidationFailed objects
     foreach ($columns as $colName => $colValue) {
         if ($tableMap->containsColumn($colName)) {
             $col = $tableMap->getColumn($colName);
             foreach ($col->getValidators() as $validatorMap) {
                 $validator = BasePeer::getValidator($validatorMap->getClass());
                 if ($validator && ($col->isNotNull() || $colValue !== null) && $validator->isValid($validatorMap, $colValue) === false) {
                     if (!isset($failureMap[$colName])) {
                         // for now we do one ValidationFailed per column, not per rule
                         $failureMap[$colName] = new ValidationFailed($colName, $validatorMap->getMessage(), $validator);
                     }
                 }
             }
         }
     }
     return !empty($failureMap) ? $failureMap : true;
 }