From 9a697c003416aa14d21f589d851cdbc70300f83d Mon Sep 17 00:00:00 2001 From: Dominique Fournier Date: Tue, 19 Jul 2016 13:28:37 +0000 Subject: [PATCH] dblayer : return all the verify errors in the same shot dblayer : allow to have external verifyOne and verifyAll functions git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@2911 bf3deb0d-5f1a-0410-827f-c0cc1f45334c --- dblayer.php | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/dblayer.php b/dblayer.php index 5d37963..62d649b 100644 --- a/dblayer.php +++ b/dblayer.php @@ -60,8 +60,10 @@ class dblayer /** Titles */ public $titles = array (); - public $verifyOne = array ("dblayer", "verifyOne"); - public $verifyAll = array ("dblayer", "verifyAll"); + /** Define the name of the method to use to verify each entry */ + public $verifyOneFunc; + /** Define the name of the method to use to verify all entries */ + public $verifyAllFunc; /** The verify unitary stack @param string $field The name of the field to test @@ -100,6 +102,9 @@ class dblayer public function __construct ($dsn, $username=null, $password=null, $driver_options=null) { + $this->verifyOneFunc = array ($this, "verifyOne"); + $this->verifyAllFunc = array ($this, "verifyAll"); + $driver = @explode (":", $dsn); if (! isset ($driver[0])) throw new Exception (dgettext("domframework", "No valid DSN provided"), @@ -298,7 +303,7 @@ class dblayer continue; // Verify the fields, if $verify is defined, before doing insertion - $verify = call_user_func ($this->verifyOne, $key, $data[$key]); + $verify = call_user_func ($this->verifyOneFunc, $key, $data[$key]); if (is_array ($verify) && count ($verify)) { $errors[$key] = array ($verify[0], $verify[1]); @@ -388,14 +393,14 @@ class dblayer } } - if (count ($errors) !== 0) - return $errors; - if ($this->debug) echo " verify inconsistency\n"; // Check for inconsistency - $verify = call_user_func ($this->verifyAll, $data); - if (count ($verify)) - return $verify; + $verify = call_user_func ($this->verifyAllFunc, $data); + if (is_null ($verify)) + $verify = array (); + $allErrors = array_merge ($errors, $verify); + if (count ($allErrors)) + return $allErrors; $dataOK = array (); foreach ($this->fields as $field=>$desc)